@@ -299,24 +299,20 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertRefSnapshotIDMismatch) {
299299
300300 auto status = requirement.Validate (base_metadata_.get ());
301301 EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
302- EXPECT_THAT (status, HasErrorMessage (" snapshot ID does not match " ));
302+ EXPECT_THAT (status, HasErrorMessage (" has changed " ));
303303}
304304
305305TEST_F (TableMetadataBuilderTest, TableRequirementAssertRefSnapshotIDRefMissing) {
306306 table::AssertRefSnapshotID requirement (" missing-ref" , 100 );
307307
308308 auto status = requirement.Validate (base_metadata_.get ());
309309 EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
310- EXPECT_THAT (status, HasErrorMessage (" missing in table metadata " ));
310+ EXPECT_THAT (status, HasErrorMessage (" is missing " ));
311311}
312312
313- TEST_F (TableMetadataBuilderTest, TableRequirementAssertRefSnapshotIDNullBase) {
314- table::AssertRefSnapshotID requirement (" main" , 100 );
315-
316- auto status = requirement.Validate (nullptr );
317- EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
318- EXPECT_THAT (status, HasErrorMessage (" metadata is missing" ));
319- }
313+ // Removed TableRequirementAssertRefSnapshotIDNullBase test
314+ // Java implementation doesn't check for null base, so passing nullptr would cause undefined behavior
315+ // This matches Java's assumption that base is never null when Validate is called
320316
321317TEST_F (TableMetadataBuilderTest, TableRequirementAssertRefSnapshotIDNulloptSuccess) {
322318 // Ref should not exist, and it doesn't
@@ -336,7 +332,7 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertRefSnapshotIDNulloptButEx
336332
337333 auto status = requirement.Validate (base_metadata_.get ());
338334 EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
339- EXPECT_THAT (status, HasErrorMessage (" should not exist " ));
335+ EXPECT_THAT (status, HasErrorMessage (" created concurrently " ));
340336}
341337
342338TEST_F (TableMetadataBuilderTest, TableRequirementAssertLastAssignedFieldIdSuccess) {
@@ -358,9 +354,8 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertLastAssignedFieldIdMismat
358354TEST_F (TableMetadataBuilderTest, TableRequirementAssertLastAssignedFieldIdNullBase) {
359355 table::AssertLastAssignedFieldId requirement (10 );
360356
361- auto status = requirement.Validate (nullptr );
362- EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
363- EXPECT_THAT (status, HasErrorMessage (" metadata is missing" ));
357+ // Null base is now allowed (for new tables) - should succeed
358+ ASSERT_THAT (requirement.Validate (nullptr ), IsOk ());
364359}
365360
366361TEST_F (TableMetadataBuilderTest, TableRequirementAssertLastAssignedPartitionIdSuccess) {
@@ -382,9 +377,8 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertLastAssignedPartitionIdMi
382377TEST_F (TableMetadataBuilderTest, TableRequirementAssertLastAssignedPartitionIdNullBase) {
383378 table::AssertLastAssignedPartitionId requirement (5 );
384379
385- auto status = requirement.Validate (nullptr );
386- EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
387- EXPECT_THAT (status, HasErrorMessage (" metadata is missing" ));
380+ // Null base is now allowed (for new tables) - should succeed
381+ ASSERT_THAT (requirement.Validate (nullptr ), IsOk ());
388382}
389383
390384TEST_F (TableMetadataBuilderTest, TableRequirementAssertDefaultSpecIDSuccess) {
@@ -400,16 +394,12 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertDefaultSpecIDMismatch) {
400394
401395 auto status = requirement.Validate (base_metadata_.get ());
402396 EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
403- EXPECT_THAT (status, HasErrorMessage (" default spec ID does not match " ));
397+ EXPECT_THAT (status, HasErrorMessage (" spec changed " ));
404398}
405399
406- TEST_F (TableMetadataBuilderTest, TableRequirementAssertDefaultSpecIDNullBase) {
407- table::AssertDefaultSpecID requirement (3 );
408-
409- auto status = requirement.Validate (nullptr );
410- EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
411- EXPECT_THAT (status, HasErrorMessage (" metadata is missing" ));
412- }
400+ // Removed TableRequirementAssertDefaultSpecIDNullBase test
401+ // Java implementation doesn't check for null base, so passing nullptr would cause undefined behavior
402+ // This matches Java's assumption that base is never null when Validate is called
413403
414404TEST_F (TableMetadataBuilderTest, TableRequirementAssertDefaultSortOrderIDSuccess) {
415405 base_metadata_->default_sort_order_id = 2 ;
@@ -424,16 +414,12 @@ TEST_F(TableMetadataBuilderTest, TableRequirementAssertDefaultSortOrderIDMismatc
424414
425415 auto status = requirement.Validate (base_metadata_.get ());
426416 EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
427- EXPECT_THAT (status, HasErrorMessage (" default sort order ID does not match " ));
417+ EXPECT_THAT (status, HasErrorMessage (" sort order changed " ));
428418}
429419
430- TEST_F (TableMetadataBuilderTest, TableRequirementAssertDefaultSortOrderIDNullBase) {
431- table::AssertDefaultSortOrderID requirement (2 );
432-
433- auto status = requirement.Validate (nullptr );
434- EXPECT_THAT (status, IsError (ErrorKind::kCommitFailed ));
435- EXPECT_THAT (status, HasErrorMessage (" metadata is missing" ));
436- }
420+ // Removed TableRequirementAssertDefaultSortOrderIDNullBase test
421+ // Java implementation doesn't check for null base, so passing nullptr would cause undefined behavior
422+ // This matches Java's assumption that base is never null when Validate is called
437423
438424// ============================================================================
439425// Integration Tests - End-to-End Workflow
0 commit comments