예제 #1
0
def test_url_ssh_with_username_no_subfolder():
    """ Test Url Ssh With Username No SubFolder """
    remote = Remote()
    remote.url = "ssh://git@foo/"
    remote.parse_url()
    assert remote.prefix == "ssh://git@foo/"
    assert remote.username == "git"
예제 #2
0
def test_existing_path(tmpdir):
    """ Test Existing Path """
    remote = Remote()
    url = tmpdir.mkdir("srv").strpath
    remote.url = url
    remote.parse_url()
    assert remote.prefix == url + os.path.sep
예제 #3
0
def test_url_git():
    remote = Remote()
    remote.url = "git://example.com"
    remote.parse_url()
    assert remote.prefix == "git://example.com/"
    assert remote.protocol == "git"
    assert remote.server == "example.com"
예제 #4
0
def test_url_ssh_with_username_with_subfolder():
    remote = Remote()
    remote.url = "ssh://git@foo/bar/baz"
    remote.parse_url()
    assert remote.prefix == "ssh://git@foo/bar/baz/"
    assert remote.server == "foo"
    assert remote.username == "git"
예제 #5
0
def test_url_ssh_with_username_with_subfolder():
    remote = Remote()
    remote.url = "ssh://git@foo/bar/baz"
    remote.parse_url()
    assert remote.prefix == "ssh://git@foo/bar/baz/"
    assert remote.server == "foo"
    assert remote.username == "git"
예제 #6
0
def test_url_git():
    remote = Remote()
    remote.url = "git://example.com"
    remote.parse_url()
    assert remote.prefix == "git://example.com/"
    assert remote.protocol == "git"
    assert remote.server == "example.com"
예제 #7
0
def test_git_configs_are_persistent(git_worktree):
    """ Test Git Config Are Persistent """
    foo1 = git_worktree.create_git_project("foo")
    upstream = Remote()
    upstream.name = "upstream"
    upstream.url = "git@srv:bar.git"
    foo1.configure_remote(upstream)
    foo1.configure_branch("master", tracks="upstream")
    foo1.save_config()

    def check_config(foo_check):
        """ Check Condfig """
        assert len(foo_check.remotes) == 1
        upstream = foo_check.remotes[0]
        assert upstream.name == "upstream"
        assert upstream.url == "git@srv:bar.git"
        assert len(foo_check.branches) == 1
        master = foo_check.branches[0]
        assert master.name == "master"
        assert master.tracks == "upstream"

    check_config(foo1)
    wt2 = qisrc.worktree.GitWorkTree(git_worktree.worktree)
    foo2 = wt2.get_git_project("foo")
    check_config(foo2)
예제 #8
0
def test_url_filepath():
    """ Test Url FilePath """
    remote = Remote()
    remote.url = "file:///path/to/dir"
    remote.parse_url()
    assert remote.prefix == "file:///path/to/dir/"
    assert remote.protocol == "file"
예제 #9
0
def test_url_win_filepath():
    if not os.name == "nt":
        return
    remote = Remote()
    remote.url = r"file:///c:\path\to\foo"
    remote.parse_url()
    assert remote.prefix == r"file:///c:\path\to\foo" + "\\"
    assert remote.protocol == "file"
예제 #10
0
def test_url_http():
    remote = Remote()
    remote.url = "http://review.corp:8080"
    remote.parse_url()
    assert remote.prefix == "http://review.corp:8080/"
    assert remote.server == "review.corp"
    assert remote.port == 8080
    assert remote.protocol == "http"
예제 #11
0
def test_url_http():
    remote = Remote()
    remote.url = "http://review.corp:8080"
    remote.parse_url()
    assert remote.prefix == "http://review.corp:8080/"
    assert remote.server == "review.corp"
    assert remote.port == 8080
    assert remote.protocol == "http"
예제 #12
0
def test_ssh_url():
    remote = Remote()
    remote.url = "*****@*****.**"
    remote.parse_url()
    assert remote.prefix == "[email protected]:"
    assert remote.server == "example.com"
    assert remote.protocol == "ssh"
    assert not remote.port
예제 #13
0
def test_url_https_trailing_slash():
    remote = Remote()
    remote.url = "https://review.corp/"
    remote.parse_url()
    assert remote.prefix == "https://review.corp/"
    assert remote.server == "review.corp"
    assert remote.protocol == "https"
    assert not remote.port
예제 #14
0
def test_url_win_filepath():
    if not os.name == 'nt':
        return
    remote = Remote()
    remote.url = r"file:///c:\path\to\foo"
    remote.parse_url()
    assert remote.prefix == r"file:///c:\path\to\foo" + "\\"
    assert remote.protocol == "file"
예제 #15
0
def test_ssh_url():
    remote = Remote()
    remote.url = "*****@*****.**"
    remote.parse_url()
    assert remote.prefix == "[email protected]:"
    assert remote.server == "example.com"
    assert remote.protocol == "ssh"
    assert not remote.port
예제 #16
0
def test_url_https_trailing_slash():
    remote = Remote()
    remote.url = "https://review.corp/"
    remote.parse_url()
    assert remote.prefix == "https://review.corp/"
    assert remote.server == "review.corp"
    assert remote.protocol == "https"
    assert not remote.port
예제 #17
0
def test_url_win_filepath():
    """ Test Url Win FilePath """
    if not os.name == 'nt':
        return
    remote = Remote()
    remote.url = r"file:///c:\path\to\foo"
    remote.parse_url()
    assert remote.prefix == r"file:///c:\path\to\foo" + "\\"
    assert remote.protocol == "file"
예제 #18
0
def test_warn_on_default_change(git_worktree, record_messages):
    """ Test Warn on Default Change """
    foo1 = git_worktree.create_git_project("foo")
    gitorious = Remote()
    gitorious.name = "gitorious"
    gitorious.url = "git@gitorious:libfoo/libfoo.git"
    gitorious.default = True
    gitlab = Remote()
    gitlab.name = "gitlab"
    gitlab.url = "git@gitlab:foo/libfoo.git"
    foo_repo = RepoConfig()
    foo_repo.default_branch = "master"
    foo_repo.remotes = [gitlab, gitorious]
    foo1.read_remote_config(foo_repo)
    foo1.apply_config()
    assert foo1.default_remote.name == "gitorious"
    gitorious2 = copy.copy(gitorious)
    gitorious2.default = False
    gitlab2 = copy.copy(gitlab)
    gitlab2.default = True
    record_messages.reset()
    foo_repo = RepoConfig()
    foo_repo.remotes = [gitlab2, gitorious2]
    foo_repo.default_branch = "master"
    foo1.read_remote_config(foo_repo)
    foo1.apply_config()
    assert record_messages.find("Default remote changed")
    assert foo1.default_remote.name == "gitlab"
예제 #19
0
def test_url_ssh_no_username():
    with mock.patch("qisrc.review.get_gerrit_username") as get_username:
        get_username.return_value = "john"
        remote = Remote()
        remote.url = "ssh://review.corp:29418"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/"
        assert remote.server == "review.corp"
        assert remote.port == 29418
        assert remote.protocol == "ssh"
        assert remote.username == "john"
예제 #20
0
def test_url_ssh_no_username():
    with mock.patch("qisrc.review.get_gerrit_username") as get_username:
        get_username.return_value = "john"
        remote = Remote()
        remote.url = "ssh://review.corp:29418"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/"
        assert remote.server == "review.corp"
        assert remote.port == 29418
        assert remote.protocol == "ssh"
        assert remote.username == "john"
예제 #21
0
def test_warn_on_default_change(git_worktree, record_messages):
    """ Test Warn on Default Change """
    foo1 = git_worktree.create_git_project("foo")
    gitorious = Remote()
    gitorious.name = "gitorious"
    gitorious.url = "git@gitorious:libfoo/libfoo.git"
    gitorious.default = True
    gitlab = Remote()
    gitlab.name = "gitlab"
    gitlab.url = "git@gitlab:foo/libfoo.git"
    foo_repo = RepoConfig()
    foo_repo.default_branch = "master"
    foo_repo.remotes = [gitlab, gitorious]
    foo1.read_remote_config(foo_repo)
    foo1.apply_config()
    assert foo1.default_remote.name == "gitorious"
    gitorious2 = copy.copy(gitorious)
    gitorious2.default = False
    gitlab2 = copy.copy(gitlab)
    gitlab2.default = True
    record_messages.reset()
    foo_repo = RepoConfig()
    foo_repo.remotes = [gitlab2, gitorious2]
    foo_repo.default_branch = "master"
    foo1.read_remote_config(foo_repo)
    foo1.apply_config()
    assert record_messages.find("Default remote changed")
    assert foo1.default_remote.name == "gitlab"
예제 #22
0
def test_apply_git_config(git_worktree):
    """ Test Appli Git Config """
    foo1 = git_worktree.create_git_project("foo")
    upstream = Remote()
    upstream.name = "upstream"
    upstream.url = "git@srv:bar.git"
    foo1.configure_remote(upstream)
    foo1.apply_config()
    git = qisrc.git.Git(foo1.path)
    assert git.get_config("remote.upstream.url") == "git@srv:bar.git"
    foo1.configure_branch("master", tracks="upstream")
    foo1.apply_config()
    assert git.get_tracking_branch("master") == "upstream/master"
    foo1.configure_branch("feature",
                          tracks="upstream",
                          remote_branch="remote_branch")
    foo1.apply_config()
    assert git.get_tracking_branch("feature") == "upstream/remote_branch"
예제 #23
0
def test_gerrit_url_ssh_subfolder():
    with mock.patch("qisrc.review.get_gerrit_username") as get_username:
        get_username.return_value = "john"
        remote = Remote()
        remote.url = "ssh://review.corp:29418/a/subfolder"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/a/subfolder/"
        assert remote.port == 29418
        remote.url = "ssh://review.corp:29418/a/subfolder/"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/a/subfolder/"
예제 #24
0
def test_apply_git_config(git_worktree):
    """ Test Appli Git Config """
    foo1 = git_worktree.create_git_project("foo")
    upstream = Remote()
    upstream.name = "upstream"
    upstream.url = "git@srv:bar.git"
    foo1.configure_remote(upstream)
    foo1.apply_config()
    git = qisrc.git.Git(foo1.path)
    assert git.get_config("remote.upstream.url") == "git@srv:bar.git"
    foo1.configure_branch("master", tracks="upstream")
    foo1.apply_config()
    assert git.get_tracking_branch("master") == "upstream/master"
    foo1.configure_branch(
        "feature", tracks="upstream",
        remote_branch="remote_branch"
    )
    foo1.apply_config()
    assert git.get_tracking_branch("feature") == "upstream/remote_branch"
예제 #25
0
def test_gerrit_url_ssh_subfolder():
    with mock.patch("qisrc.review.get_gerrit_username") as get_username:
        get_username.return_value = "john"
        remote = Remote()
        remote.url = "ssh://review.corp:29418/a/subfolder"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/a/subfolder/"
        assert remote.port == 29418
        remote.url = "ssh://review.corp:29418/a/subfolder/"
        remote.parse_url()
        assert remote.prefix == "ssh://[email protected]:29418/a/subfolder/"
예제 #26
0
def test_apply_remote_config(git_worktree):
    foo = git_worktree.create_git_project("foo")
    origin = Remote()
    origin.name = "origin"
    origin.url = "git@git:foo.git"
    origin.default = True
    gerrit = Remote()
    gerrit.name = "gerrit"
    gerrit.url = "git@review:foo.git"
    gerrit.review = True
    foo_repo = RepoConfig()
    foo_repo.remotes = [origin, gerrit]
    foo_repo.default_branch = "master"
    foo.read_remote_config(foo_repo)
    foo.apply_config()
    foo.save_config()
    assert foo_repo.default_remote == origin
    assert foo.review_remote == gerrit
    # Check its persistent:
    git_worktree = TestGitWorkTree()
    foo2 = git_worktree.get_git_project("foo")
    assert foo2.default_remote == origin
    assert foo2.review_remote == gerrit
예제 #27
0
def test_warn_on_remote_change(git_worktree, record_messages):
    foo = git_worktree.create_git_project("foo")
    origin = Remote()
    origin.name = "origin"
    origin.url =  "git@srv:foo.git"
    foo.configure_remote(origin)
    foo.configure_branch("master", tracks="origin", default=True)
    origin2 = Remote()
    origin2.name = "origin"
    origin2.url =  "git@srv:libfoo.git"
    foo.configure_remote(origin2)
    assert record_messages.find("remote url changed")
    foo.configure_branch("next", default=True)
    assert record_messages.find("default branch changed")
    gerrit = Remote()
    gerrit.name = "gerrit"
    gerrit.url =  "http://gerrit/libfoo.git"
    foo.configure_remote(gerrit)
    foo.configure_branch("next", tracks="gerrit")
    assert record_messages.find("now tracks gerrit instead")
예제 #28
0
def test_apply_remote_config(git_worktree):
    foo = git_worktree.create_git_project("foo")
    origin = Remote()
    origin.name = "origin"
    origin.url = "git@git:foo.git"
    origin.default = True
    gerrit = Remote()
    gerrit.name = "gerrit"
    gerrit.url = "git@review:foo.git"
    gerrit.review = True
    foo_repo = RepoConfig()
    foo_repo.remotes = [origin, gerrit]
    foo_repo.default_branch = "master"
    foo.apply_remote_config(foo_repo)
    foo.save_config()
    assert foo_repo.default_remote == origin
    assert foo.review_remote == gerrit
    # Check its persistent:
    git_worktree = TestGitWorkTree()
    foo2 = git_worktree.get_git_project("foo")
    assert foo2.default_remote == origin
    assert foo2.review_remote == gerrit
예제 #29
0
def test_url_ssh_with_username_no_subfolder():
    remote = Remote()
    remote.url = "ssh://git@foo/"
    remote.parse_url()
    assert remote.prefix == "ssh://git@foo/"
    assert remote.username == "git"
예제 #30
0
import os
import mock
from qisrc.git_config import Remote
remote = Remote()
예제 #31
0
def test_warn_on_remote_change(git_worktree, record_messages):
    """ Test Warn On Remote Change """
    foo1 = git_worktree.create_git_project("foo")
    origin = Remote()
    origin.name = "origin"
    origin.url = "git@srv:foo.git"
    foo1.configure_remote(origin)
    foo1.configure_branch("master", tracks="origin", default=True)
    origin2 = Remote()
    origin2.name = "origin"
    origin2.url = "git@srv:libfoo.git"
    foo1.configure_remote(origin2)
    assert record_messages.find("remote url changed")
    foo1.configure_branch("next", default=True)
    assert record_messages.find("default branch changed")
    gerrit = Remote()
    gerrit.name = "gerrit"
    gerrit.url = "http://gerrit/libfoo.git"
    foo1.configure_remote(gerrit)
    foo1.configure_branch("next", tracks="gerrit")
    assert record_messages.find("now tracks gerrit instead")
예제 #32
0
def test_url_ssh_with_username_no_subfolder():
    remote = Remote()
    remote.url = "ssh://git@foo/"
    remote.parse_url()
    assert remote.prefix == "ssh://git@foo/"
    assert remote.username == "git"