def dir_remotes(remoteloc):
    # Use 2 runner instances to checkout two clones and create merge conflicts
    loca = Runner(False)

    reponame = util.randrepo()
    os.mkdir(reponame)
    loca.cdrel(reponame)

    # Create repo in A
    loca.runcommand("gin", "init")
    loca.runcommand("gin", "add-remote", "--create", "--default", "origin",
                    f"dir:{remoteloc.name}")
    loca.runcommand("gin", "upload")
    loca.repositories[loca.cmdloc] = None

    # Init in B and download
    locb = Runner(False)
    os.mkdir(reponame)
    locb.cdrel(reponame)
    locb.runcommand("gin", "init")
    locb.runcommand("gin", "add-remote", "--default", "origin",
                    f"dir:{remoteloc.name}")
    locb.runcommand("gin", "download")
    locb.repositories[locb.cmdloc] = None

    return (loca, locb)
Exemple #2
0
def runner():
    r = Runner()

    reponame = util.randrepo()
    os.mkdir(reponame)
    r.cdrel(reponame)

    r.runcommand("gin", "init")
    r.repositories[r.cmdloc] = reponame

    yield r

    r.runcommand("gin", "annex", "uninit")
Exemple #3
0
def runner():
    r = Runner(True)
    r.login()

    reponame = util.randrepo()
    r.runcommand("gin", "create", reponame,
                 "Test repository for all states")
    r.cdrel(reponame)
    r.repositories[r.cmdloc] = reponame

    yield r

    r.cleanup()
    r.logout()
Exemple #4
0
def runner():
    r = Runner()
    r.login()

    reponame = util.randrepo()
    r.runcommand("gin", "create", reponame, "Test a minimal workflow")
    r.reponame = reponame
    r.cdrel(reponame)
    r.repositories[r.cmdloc] = reponame

    yield r

    r.cleanup()
    r.logout()
Exemple #5
0
def test_add_server_prompt(runner):
    r = runner
    r.runcommand("gin", "add-server", "srva", inp="\n".join(inpforma))
    r.runcommand("gin", "add-server", "srvb", inp="\n".join(inpformb))

    repo_srva = util.randrepo()
    repo_srvb = util.randrepo()

    def cleanup():
        r.runcommand("gin", "use-server", "srva")
        repopath = f"{r.username}/{repo_srva}"
        r.runcommand("gin", "delete", repopath, inp=repopath)

        r.runcommand("gin", "use-server", "srvb")
        repopath = f"{r.username}/{repo_srvb}"
        r.runcommand("gin", "delete", repopath, inp=repopath)

        r.runcommand("gin", "use-server", "srva")
        r.runcommand("gin", "logout")
        r.runcommand("gin", "use-server", "srvb")
        r.runcommand("gin", "logout")

        r.runcommand("gin", "remove-server", "srva")
        r.runcommand("gin", "rm-server", "srvb")

    r.cleanup = cleanup

    r.runcommand("gin", "use-server", "srvb")
    r.login()

    r.runcommand("gin", "create", repo_srvb,
                 "Test multiple servers")

    r.runcommand("gin", "use-server", "srva")
    r.login()
    r.runcommand("gin", "create", repo_srva,
                 "Test multiple servers")
def runner():
    r = Runner()
    r.login()

    reponame = util.randrepo()
    r.reponame = reponame

    localdir = f"{reponame}-local-clone"
    os.mkdir(localdir)
    r.cdrel(localdir)

    yield r

    r.cleanup()
    r.logout()
Exemple #7
0
def runner(request):
    offline = "offline" in request.node.keywords
    r = Runner(not offline)
    # create repo locally only
    reponame = util.randrepo()
    localdir = f"{reponame}"
    os.mkdir(localdir)
    r.cdrel(localdir)
    r.reponame = None if offline else reponame

    yield r

    # cleanup
    r.cleanup()
    r.logout()
Exemple #8
0
def runner():
    r = Runner()
    r.login()
    # create repo (remote and local) and cd into directory
    reponame = util.randrepo()
    print("Setting up test repository")
    r.runcommand("gin", "create", reponame,
                 "Test repository for cascading configurations")
    r.reponame = reponame
    r.cdrel(reponame)
    r.repositories[r.cmdloc] = reponame

    yield r

    r.cleanup()
    r.logout()
def runner():
    remoteloc = tempfile.TemporaryDirectory(prefix="gintest-remote")
    r = Runner(False)
    reponame = util.randrepo()
    os.mkdir(reponame)
    r.cdrel(reponame)
    r.runcommand("gin", "init")
    r.runcommand("gin", "add-remote", "--create", "--default", "origin",
                 f"dir:{remoteloc.name}")
    r.runcommand("gin", "upload")

    r.repositories[r.cmdloc] = None

    yield r

    r.cleanup()
Exemple #10
0
def runner():
    remoteloc = tempfile.TemporaryDirectory(prefix="gintest-remote")
    r = Runner(False)
    # create repo (remote and local) and cd into directory
    reponame = util.randrepo()
    print("Setting up test repository")
    os.mkdir(reponame)
    r.cdrel(reponame)
    r.runcommand("gin", "init")
    r.runcommand("gin", "add-remote", "--create", "--default", "origin",
                 f"dir:{remoteloc.name}")
    r.reponame = reponame
    r.repositories[r.cmdloc] = None

    r.hashes = dict()
    head, curhashes = util.hashtree(r)
    r.hashes[head] = curhashes

    # add files and compute their md5 hashes
    print("Creating files")
    create_files(r)
    out, err = r.runcommand("gin", "commit", ".")
    head, curhashes = util.hashtree(r)
    r.hashes[head] = curhashes
    r.commitcount = 2

    n = 10
    print(f"Modifying files {n} times")
    for _ in range(n):
        create_files(r)
        out, err = r.runcommand("gin", "commit", ".")
        head, curhashes = util.hashtree(r)
        r.hashes[head] = curhashes
        r.commitcount += 1

    # TODO: Add some symlinks to the directories (not Windows)

    # verify commit count before returning
    assert util.getrevcount(r) == r.commitcount

    yield r

    r.cleanup()
    r.logout()

    print("DONE!")
Exemple #11
0
def runner():
    r = Runner()
    r.login()
    # username = r.username
    # create repo (remote and local) and cd into directory
    reponame = util.randrepo()
    # repopath = f"{username}/{reponame}"
    r.runcommand("gin", "create", reponame,
                 "Test repository for error output. Created with test scripts")
    r.reponame = reponame
    r.repositories[r.cmdloc] = reponame

    r.cdrel(reponame)
    r.runcommand("gin", "upload")
    r.cdrel("..")

    yield r

    r.cleanup()
    r.logout()
def runner():
    r = Runner()
    # change config dir to some temporary directory with spaces in the name
    defaultconfdir = r.env["GIN_CONFIG_DIR"]
    conftemp = tempfile.TemporaryDirectory(prefix="conf place with spaces")
    spaceconfdir = os.path.join(conftemp.name, "conf")
    r.env["GIN_CONFIG_DIR"] = spaceconfdir
    shutil.copytree(defaultconfdir, spaceconfdir)
    r.login()
    # create repo (remote and local) and cd into directory
    reponame = util.randrepo()
    print("Setting up test repository")
    r.runcommand("gin", "create", reponame,
                 "Test repository for alt config path (with spaces)")
    r.cdrel(reponame)
    r.repositories[r.cmdloc] = reponame

    yield r

    r.cleanup()
    r.logout()
def runner():
    r = Runner(True)
    r.login()

    # manually set up repository with annex v5

    reponame = util.randrepo()
    r.runcommand("gin", "create", "--no-clone", reponame,
                 "Test repository for annex upgrade")
    os.mkdir(reponame)
    r.cdrel(reponame)
    r.runcommand("git", "init")
    r.runcommand("git", "annex", "init", "--version=5")
    r.runcommand("gin", "add-remote", "origin",
                 f"test:{r.username}/{reponame}")
    r.repositories[r.cmdloc] = reponame

    yield r

    r.cleanup()
    r.logout()
Exemple #14
0
def drunner():
    remoteloc = tempfile.TemporaryDirectory(prefix="gin-cli-test")
    r = Runner(False)

    reponame = util.randrepo()
    r.reponame = reponame
    os.mkdir(reponame)
    r.cdrel(reponame)

    # Create repo in A
    r.runcommand("gin", "init")
    r.runcommand("gin", "add-remote", "--create", "--default", "origin",
                 f"dir:{remoteloc.name}")
    r.runcommand("gin", "upload")
    r.repositories[r.cmdloc] = None
    r.remotedir = remoteloc

    yield r

    util.set_rwx_recursive(remoteloc.name)
    r.cleanup()
def server_remotes():
    # Use 2 runner instances to checkout two clones and create merge conflicts
    loca = Runner()
    loca.login()
    locb = Runner()
    locb.env = loca.env  # share environments between the two users

    # create repo (remote and local) and cd into directory
    reponame = util.randrepo()
    repopath = f"{loca.username}/{reponame}"

    # Create repo in A
    loca.runcommand("gin", "create", reponame,
                    "Repository for testing merge conflicts")
    loca.cdrel(reponame)
    loca.repositories[loca.cmdloc] = reponame

    # Clone into B
    locb.runcommand("gin", "get", repopath)
    locb.cdrel(reponame)
    locb.repositories[locb.cmdloc] = None

    return (loca, locb)
Exemple #16
0
def test_use_server_create_repo(runner):
    r = runner

    r.runcommand(*srva, inp="yes")
    r.runcommand(*srvb, inp="yes")

    repo_srva = util.randrepo()
    repo_srvb = util.randrepo()

    def cleanup():
        r.runcommand("gin", "use-server", "srva")
        repopath = f"{r.username}/{repo_srva}"
        r.runcommand("gin", "delete", repopath, inp=repopath)

        r.runcommand("gin", "use-server", "srvb")
        repopath = f"{r.username}/{repo_srvb}"
        r.runcommand("gin", "delete", repopath, inp=repopath)

        r.runcommand("gin", "use-server", "srva")
        r.runcommand("gin", "logout")
        r.runcommand("gin", "use-server", "srvb")
        r.runcommand("gin", "logout")

        r.runcommand("gin", "remove-server", "srva")
        r.runcommand("gin", "rm-server", "srvb")

    r.cleanup = cleanup

    r.runcommand("gin", "use-server", "srvb")
    r.login()

    r.runcommand("gin", "create", repo_srvb,
                 "Test multiple servers (switching default)")

    out, err = r.runcommand("gin", "repos", "--json")
    repos = json.loads(out)
    # find repo_srvb
    for repo in repos:
        if repo["name"] == repo_srvb:
            break
    else:
        assert False, "Unable to find repository on server"

    # request repo_srvb explicitly
    out, err = r.runcommand("gin", "repoinfo", "--json",
                            f"{r.username}/{repo_srvb}")
    repoinfo = json.loads(out)
    assert repoinfo["name"] == repo_srvb

    # change server, check repos
    r.runcommand("gin", "use-server", "srva")
    r.login()

    out, err = r.runcommand("gin", "repos", "--json")
    if out:
        repos = json.loads(out)
        for repo in repos:
            assert repo["name"] != repo_srvb

    r.runcommand("gin", "create", repo_srva,
                 "Test multiple servers (switching default)")

    r.runcommand("gin", "use-server", "srvb")

    # TODO: Change when we get --json output for the server listing
    out, err = r.runcommand("gin", "servers")
    assert not err, "error getting 'gin servers' listing"
    servercount = len([line for line in out.splitlines()
                       if line.startswith("*")])
    assert servercount == 4, f"{servercount} servers configured; expected 3"

    r.runcommand("gin", "rm-server", "srva")
    out, err = r.runcommand("gin", "servers")
    assert not err, "error getting 'gin servers' listing"
    servercount = len([line for line in out.splitlines()
                       if line.startswith("*")])
    assert servercount == 3, f"{servercount} servers configured; expected 2"

    r.runcommand("gin", "rm-server", "srvb")
    out, err = r.runcommand("gin", "servers")
    assert not err, "error getting 'gin servers' listing"
    servercount = len([line for line in out.splitlines()
                       if line.startswith("*")])
    assert servercount == 2, f"{servercount} servers configured; expected 1"

    r.runcommand(*srva, inp="yes")
    r.runcommand(*srvb, inp="yes")