@@ -127,6 +127,30 @@ TEST_F(RewriteFilesTest, AddAndDelete) {
127127 EXPECT_EQ (std::stoll (snapshot->summary .at (SnapshotSummaryFields::kAddedDataFiles )), 1 );
128128}
129129
130+ TEST_F (RewriteFilesTest, DeleteDataFileCopiesCallerFile) {
131+ CommitFileA ();
132+
133+ const std::string original_path = file_a_->file_path ;
134+
135+ ICEBERG_UNWRAP_OR_FAIL (auto rw, NewRewriteFiles ());
136+ rw->DeleteDataFile (file_a_);
137+ rw->AddDataFile (rewritten_file_a_);
138+
139+ file_a_->file_path = file_b_->file_path ;
140+
141+ EXPECT_THAT (rw->Commit (), IsOk ());
142+ EXPECT_THAT (table_->Refresh (), IsOk ());
143+
144+ ICEBERG_UNWRAP_OR_FAIL (auto rw_missing_original, NewRewriteFiles ());
145+ auto missing_file = std::make_shared<DataFile>(*file_a_);
146+ missing_file->file_path = original_path;
147+ rw_missing_original->DeleteDataFile (missing_file);
148+ rw_missing_original->AddDataFile (file_b_);
149+ auto result = rw_missing_original->Commit ();
150+ EXPECT_THAT (result, IsError (ErrorKind::kValidationFailed ));
151+ EXPECT_THAT (result, HasErrorMessage (" Missing required files to delete" ));
152+ }
153+
130154// Rewrite one of several data files, verifying only the target is affected.
131155TEST_F (RewriteFilesTest, AddAndDeletePartialRewrite) {
132156 CommitFileA ();
0 commit comments