Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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")
Esempio n. 4
0
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")
Esempio n. 5
0
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")
Esempio n. 6
0
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")
Esempio n. 7
0
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)
Esempio n. 8
0
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")
Esempio n. 9
0
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()
Esempio n. 10
0
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)