def test_using_carbon_copy(qisrc_action, git_server): foo_repo = git_server.create_repo("foo.git", review=True) qisrc_action("init", git_server.manifest_url) git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") foo_git = TestGit(foo_proj.path) # Need to fetch gerrit remote at least once for gerrit/master to exist foo_git.fetch("--all") foo_git.commit_file("a.txt", "a") with mock.patch.object(qisys.command, "call") as mocked_call: qisrc_action("push", "foo", "--cc", "jdoe") set_reviewers_args = mocked_call.call_args_list[2][0][0][7] assert "jdoe" in set_reviewers_args
def test_using_carbon_copy(qisrc_action, git_server): foo_repo = git_server.create_repo("foo.git", review=True) qisrc_action("init", git_server.manifest_url) git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") foo_git = TestGit(foo_proj.path) # Need to fetch gerrit remote at least once for gerrit/master to exist foo_git.fetch("--all") foo_git.commit_file("a.txt", "a") with mock.patch.object(qisys.command, "call") as mocked_call: qisrc_action("push", "--project", "foo", "--cc", "jdoe") set_reviewers_args = mocked_call.call_args_list[2][0][0][7] assert "jdoe" in set_reviewers_args
def test_happy_rebase(git_server, qisrc_action): git_server.create_repo("foo") git_server.switch_manifest_branch("devel") git_server.change_branch("foo", "devel") qisrc_action("init", git_server.manifest_url, "--branch", "devel") git_server.push_file("foo", "master.txt", "master") git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") git = TestGit(foo_proj.path) git.commit_file("devel.txt", "devel") git.push() git.fetch() qisrc_action("rebase", "--branch", "master", "--all") rc, out = git.log("--pretty=oneline", raises=False) assert len(out.splitlines()) == 3
def test_push_after_rebase(git_server, git_worktree, qisrc_action, interact): # pylint: disable=unused-argument git_server.create_repo("foo") git_server.switch_manifest_branch("devel") git_server.change_branch("foo", "devel") git_server.push_file("foo", "master.txt", "devel") qisrc_action("init", git_server.manifest_url, "--branch", "devel") git_server.push_file("foo", "master.txt", "master") git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") git = TestGit(foo_proj.path) git.commit_file("devel.txt", "devel") git.fetch() git.push("origin", "devel") interact.answers = [True] qisrc_action("rebase", "--branch", "master", "--push", "--force", "--all") local_sha1 = git.get_ref_sha1("refs/heads/devel") remote_sha1 = git.get_ref_sha1("refs/remotes/origin/devel") assert local_sha1 == remote_sha1
def test_push_after_rebase(git_server, git_worktree, qisrc_action, interact): git_server.create_repo("foo") git_server.switch_manifest_branch("devel") git_server.change_branch("foo", "devel") git_server.push_file("foo", "master.txt", "devel") qisrc_action("init", git_server.manifest_url, "--branch", "devel") git_server.push_file("foo", "master.txt", "master") git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") git = TestGit(foo_proj.path) git.commit_file("devel.txt", "devel") git.fetch() git.push("origin", "devel") interact.answers = [True] qisrc_action("rebase", "--branch", "master", "--push", "--force", "--all") local_sha1 = git.get_ref_sha1("refs/heads/devel") remote_sha1 = git.get_ref_sha1("refs/remotes/origin/devel") assert local_sha1 == remote_sha1
def test_alert_maintainers(qisrc_action, git_server): foo_repo = git_server.create_repo("foo.git", review=True) qiproject_xml = """\ <project version="3"> <maintainer email="*****@*****.**">John Doe</maintainer> </project>""" git_server.push_file("foo.git", "qiproject.xml", qiproject_xml) qisrc_action("init", git_server.manifest_url) git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") foo_git = TestGit(foo_proj.path) # Need to fetch gerrit remote at least once for gerrit/master to exist foo_git.fetch("--all") foo_git.commit_file("a.txt", "a") with mock.patch.object(qisys.command, "call") as mocked_call: qisrc_action("push", "foo") set_reviewers_args = mocked_call.call_args_list[3][0][0][7] assert "*****@*****.**" in set_reviewers_args
def test_rebase_conflict(git_server, qisrc_action): git_server.create_repo("foo") git_server.switch_manifest_branch("devel") git_server.change_branch("foo", "devel") qisrc_action("init", git_server.manifest_url, "--branch", "devel") git_server.push_file("foo", "foo.txt", "master") git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") git = TestGit(foo_proj.path) git.commit_file("foo.txt", "devel") git.push() _, before = git.call("show", raises=False) git.fetch() # pylint: disable-msg=E1101 with pytest.raises(Exception): qisrc_action("rebase", "--branch", "master", "--all") _, after = git.call("show", raises=False) assert after == before
def test_alert_maintainers(qisrc_action, git_server): foo_repo = git_server.create_repo("foo.git", review=True) qiproject_xml = """\ <project format="3"> <maintainer email="*****@*****.**">John Doe</maintainer> </project>""" git_server.push_file("foo.git", "qiproject.xml", qiproject_xml) qisrc_action("init", git_server.manifest_url) git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") foo_git = TestGit(foo_proj.path) # Need to fetch gerrit remote at least once for gerrit/master to exist foo_git.fetch("--all") foo_git.commit_file("a.txt", "a") with mock.patch.object(qisys.command, "call") as mocked_call: qisrc_action("push", "--project", "foo") set_reviewers_args = mocked_call.call_args_list[-1][0][0][-1] # Last argument of last command assert "jdoe" in set_reviewers_args assert not "@company.com" in set_reviewers_args
def test_orphaned_project(qisrc_action, git_server, record_messages): foo_repo = git_server.create_repo("foo.git", review=True) qiproject_xml = """\ <project version="3"> <maintainer>ORPHANED</maintainer> </project>""" git_server.push_file("foo.git", "qiproject.xml", qiproject_xml) qisrc_action("init", git_server.manifest_url) git_worktree = TestGitWorkTree() foo_proj = git_worktree.get_git_project("foo") foo_git = TestGit(foo_proj.path) # Need to fetch gerrit remote at least once for gerrit/master to exist foo_git.fetch("--all") foo_git.commit_file("a.txt", "a") record_messages.reset() qisrc_action("push", "--project", "foo") assert record_messages.find("Project is orphaned")