def test_sha1s_are_skipped_when_not_clean( tsrc_cli: CLI, git_server: GitServer, workspace_path: Path ) -> None: """Scenario: * Create a manifest with a foo repo, frozen at an initial revision * Initialize a workspace from this manifest * Push a new file to the foo repo * Configure the manifest so that foo is frozen at the new revision * Create an untracked file in the foo repo * Run `tsrc sync` * Check that `tsrc sync` fails and that foo is not updated """ git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) tsrc_cli.run("init", git_server.manifest_url) (workspace_path / "foo/untracked.txt").write_text("") git_server.push_file("foo", "new.txt") new_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", new_sha1) tsrc_cli.run_and_fail("sync") foo_path = workspace_path / "foo" assert not ( foo_path / "new.txt" ).exists(), "foo should not have been updated (untracked files)"
def test_sha1s_are_updated_when_clean( tsrc_cli: CLI, git_server: GitServer, workspace_path: Path ) -> None: """Scenario: * Create a manifest with a foo repo, frozen at an initial revision * Initialize a workspace from this manifest * Push a new file to the foo repo * Configure the manifest so that `foo` is frozen at the new revision * Run `tsrc sync` * Check that foo has been updated to the new revision """ git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) tsrc_cli.run("init", git_server.manifest_url) git_server.push_file("foo", "new.txt") new_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", new_sha1) tsrc_cli.run("sync") foo_path = workspace_path / "foo" assert ( foo_path / "new.txt" ).exists(), f"foo should have been updated to the {new_sha1} revision"
def test_sha1s_are_updated_when_clean(tsrc_cli: CLI, git_server: GitServer, workspace_path: Path) -> None: git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) tsrc_cli.run("init", git_server.manifest_url) git_server.push_file("foo", "new.txt") new_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", new_sha1) tsrc_cli.run("sync") foo_path = workspace_path / "foo" assert (foo_path / "new.txt").exists()
def test_sha1s_are_skipped_when_not_clean(tsrc_cli: CLI, git_server: GitServer, workspace_path: Path) -> None: git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) tsrc_cli.run("init", git_server.manifest_url) (workspace_path / "foo/untracked.txt").write_text("") git_server.push_file("foo", "new.txt") new_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", new_sha1) tsrc_cli.run("sync", expect_fail=True) foo_path = workspace_path / "foo" assert not (foo_path / "new.txt").exists()
def test_shallow_with_fix_ref(tsrc_cli: CLI, git_server: GitServer, workspace_path: Path, message_recorder: MessageRecorder) -> None: git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.push_file("foo", "one.c") git_server.manifest.set_repo_sha1("foo", initial_sha1) manifest_url = git_server.manifest_url tsrc_cli.run("init", "--shallow", manifest_url, expect_fail=True) assert message_recorder.find("Cannot use --shallow with a fixed sha1")
def test_resets_to_sha1(tsrc_cli: CLI, git_server: GitServer, workspace_path: Path) -> None: git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) git_server.push_file("foo", "2.txt", message="Working on v2") manifest_url = git_server.manifest_url tsrc_cli.run("init", manifest_url) foo_path = workspace_path / "foo" _, actual_ref = tsrc.git.run_captured(foo_path, "rev-parse", "HEAD") assert initial_sha1 == actual_ref
def test_sha1s_are_not_updated(tsrc_cli: CLI, git_server: GitServer, workspace_path: Path) -> None: """Scenario: * Create a manifest with a foo repo, frozen at a given revision * Initialize a workspace from this manifest * Push a new file to the foo repo * Run `tsrc sync` * Check that foo was not updated """ git_server.add_repo("foo") initial_sha1 = git_server.get_sha1("foo") git_server.manifest.set_repo_sha1("foo", initial_sha1) tsrc_cli.run("init", git_server.manifest_url) git_server.push_file("foo", "new.txt") tsrc_cli.run("sync") foo_path = workspace_path / "foo" assert not (foo_path / "new.txt").exists( ), f"foo should not have been updated (frozen at {initial_sha1})"
def test_git_server_get_sha1(workspace_path: Path, git_server: GitServer) -> None: git_server.add_repo("foo") actual = git_server.get_sha1("foo") assert type(actual) == str