def test_new_files_found(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) source_tree.write("a") with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") # Confirm add_new_files found the new files and ignored the old one. new_file_paths = [path for path in metadata.get().generated_files] assert ["code/b"] == new_file_paths
def test_gitignored_files_ignored(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") source_tree.write("code/c") source_tree.write(".gitignore", "code/c\n") # Confirm add_new_files found the new files and ignored one. new_file_paths = [new_file.path for new_file in metadata.get().new_files] assert [".gitignore", "code/b"] == new_file_paths
def test_old_file_ignored_by_git_not_removed( source_tree, preserve_track_obsolete_file_flag ): metadata.set_track_obsolete_files(True) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write(".bin") metadata.reset() with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write(".gitignore", ".bin") # Confirm remove_obsolete_files didn't remove the .bin file. assert os.path.exists(".bin")
def test_nothing_happens_when_disabled(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") source_tree.write("code/c") metadata.reset() time.sleep(1) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/c") metadata.set_track_obsolete_files(False) assert 0 == len(metadata.get().new_files) # Confirm no files were deleted. assert os.path.exists("code/b") assert os.path.exists("code/c")
def test_old_file_removed(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") source_tree.write("code/c") metadata.reset() time.sleep(1) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/c") assert 1 == len(metadata.get().new_files) assert "code/c" == metadata.get().new_files[0].path # Confirm remove_obsolete_files deletes b but not c. assert not os.path.exists("code/b") assert os.path.exists("code/c")
def test_excluded_file_not_removed(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) _tracked_paths.add(source_tree.tmpdir / "build") with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") source_tree.write("code/c") metadata.reset() # Create a second source tree and copy it into the first. with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): # exclude code/c from being copied should mean it doesn't get deleted. transforms.move(source_tree.tmpdir / "build", excludes=["code/c"]) # Confirm remove_obsolete_files deletes b but not c. assert not os.path.exists("code/b") assert os.path.exists("code/c")
def test_add_new_files_with_bad_file(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) metadata.reset() tmpdir = source_tree.tmpdir dne = "does-not-exist" source_tree.git_add(dne) time.sleep(1) # File systems have resolution of about 1 second. try: os.symlink(tmpdir / dne, tmpdir / "badlink") except OSError: # On Windows, creating a symlink requires Admin priveleges, which # should never be granted to test runners. assert "win32" == sys.platform return # Confirm this doesn't throw an exception. with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): pass # And a bad link does not exist and shouldn't be recorded as a new file. assert 0 == len(metadata.get().new_files)
def test_nothing_happens_when_exception(source_tree, preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(True) with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/b") source_tree.write("code/c") metadata.reset() try: with metadata.MetadataTrackerAndWriter(source_tree.tmpdir / "synth.metadata"): source_tree.write("code/c") raise "Exception!" except: # noqa: E722 pass assert 0 == len(metadata.get().new_files) # Confirm no files were deleted. assert os.path.exists("code/b") assert os.path.exists("code/c")
def test_set_track_obsolete_files(preserve_track_obsolete_file_flag): metadata.set_track_obsolete_files(False) assert not metadata.should_track_obsolete_files() metadata.set_track_obsolete_files(True) assert metadata.should_track_obsolete_files()
def preserve_track_obsolete_file_flag(): should_track_obselete_files = metadata.should_track_obsolete_files() yield should_track_obselete_files metadata.set_track_obsolete_files(should_track_obselete_files)