Ejemplo n.º 1
0
Archivo: tgit.py Proyecto: zzmjohn/bup
def test_new_commit():
    with no_lingering_errors():
        with test_tempdir(b'bup-tgit-') as tmpdir:
            environ[b'BUP_DIR'] = bupdir = tmpdir + b'/bup'
            git.init_repo(bupdir)
            git.verbose = 1

            w = git.PackWriter()
            tree = os.urandom(20)
            parent = os.urandom(20)
            author_name = b'Author'
            author_mail = b'author@somewhere'
            adate_sec = 1439657836
            cdate_sec = adate_sec + 1
            committer_name = b'Committer'
            committer_mail = b'committer@somewhere'
            adate_tz_sec = cdate_tz_sec = None
            commit = w.new_commit(tree, parent,
                                  b'%s <%s>' % (author_name, author_mail),
                                  adate_sec, adate_tz_sec,
                                  b'%s <%s>' % (committer_name, committer_mail),
                                  cdate_sec, cdate_tz_sec,
                                  b'There is a small mailbox here')
            adate_tz_sec = -60 * 60
            cdate_tz_sec = 120 * 60
            commit_off = w.new_commit(tree, parent,
                                      b'%s <%s>' % (author_name, author_mail),
                                      adate_sec, adate_tz_sec,
                                      b'%s <%s>' % (committer_name, committer_mail),
                                      cdate_sec, cdate_tz_sec,
                                      b'There is a small mailbox here')
            w.close()

            commit_items = git.get_commit_items(hexlify(commit), git.cp())
            local_author_offset = localtime(adate_sec).tm_gmtoff
            local_committer_offset = localtime(cdate_sec).tm_gmtoff
            WVPASSEQ(tree, unhexlify(commit_items.tree))
            WVPASSEQ(1, len(commit_items.parents))
            WVPASSEQ(parent, unhexlify(commit_items.parents[0]))
            WVPASSEQ(author_name, commit_items.author_name)
            WVPASSEQ(author_mail, commit_items.author_mail)
            WVPASSEQ(adate_sec, commit_items.author_sec)
            WVPASSEQ(local_author_offset, commit_items.author_offset)
            WVPASSEQ(committer_name, commit_items.committer_name)
            WVPASSEQ(committer_mail, commit_items.committer_mail)
            WVPASSEQ(cdate_sec, commit_items.committer_sec)
            WVPASSEQ(local_committer_offset, commit_items.committer_offset)

            commit_items = git.get_commit_items(hexlify(commit_off), git.cp())
            WVPASSEQ(tree, unhexlify(commit_items.tree))
            WVPASSEQ(1, len(commit_items.parents))
            WVPASSEQ(parent, unhexlify(commit_items.parents[0]))
            WVPASSEQ(author_name, commit_items.author_name)
            WVPASSEQ(author_mail, commit_items.author_mail)
            WVPASSEQ(adate_sec, commit_items.author_sec)
            WVPASSEQ(adate_tz_sec, commit_items.author_offset)
            WVPASSEQ(committer_name, commit_items.committer_name)
            WVPASSEQ(committer_mail, commit_items.committer_mail)
            WVPASSEQ(cdate_sec, commit_items.committer_sec)
            WVPASSEQ(cdate_tz_sec, commit_items.committer_offset)
Ejemplo n.º 2
0
Archivo: tgit.py Proyecto: 0xkag/bup
def test_new_commit():
    with no_lingering_errors(), test_tempdir('bup-tgit-') as tmpdir:
        os.environ['BUP_MAIN_EXE'] = bup_exe
        os.environ['BUP_DIR'] = bupdir = tmpdir + "/bup"
        git.init_repo(bupdir)
        git.verbose = 1

        w = git.PackWriter()
        tree = os.urandom(20)
        parent = os.urandom(20)
        author_name = 'Author'
        author_mail = 'author@somewhere'
        adate_sec = 1439657836
        cdate_sec = adate_sec + 1
        committer_name = 'Committer'
        committer_mail = 'committer@somewhere'
        adate_tz_sec = cdate_tz_sec = None
        commit = w.new_commit(tree, parent,
                              '%s <%s>' % (author_name, author_mail),
                              adate_sec, adate_tz_sec,
                              '%s <%s>' % (committer_name, committer_mail),
                              cdate_sec, cdate_tz_sec,
                              'There is a small mailbox here')
        adate_tz_sec = -60 * 60
        cdate_tz_sec = 120 * 60
        commit_off = w.new_commit(tree, parent,
                                  '%s <%s>' % (author_name, author_mail),
                                  adate_sec, adate_tz_sec,
                                  '%s <%s>' % (committer_name, committer_mail),
                                  cdate_sec, cdate_tz_sec,
                                  'There is a small mailbox here')
        w.close()

        commit_items = git.get_commit_items(commit.encode('hex'), git.cp())
        local_author_offset = localtime(adate_sec).tm_gmtoff
        local_committer_offset = localtime(cdate_sec).tm_gmtoff
        WVPASSEQ(tree, commit_items.tree.decode('hex'))
        WVPASSEQ(1, len(commit_items.parents))
        WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
        WVPASSEQ(author_name, commit_items.author_name)
        WVPASSEQ(author_mail, commit_items.author_mail)
        WVPASSEQ(adate_sec, commit_items.author_sec)
        WVPASSEQ(local_author_offset, commit_items.author_offset)
        WVPASSEQ(committer_name, commit_items.committer_name)
        WVPASSEQ(committer_mail, commit_items.committer_mail)
        WVPASSEQ(cdate_sec, commit_items.committer_sec)
        WVPASSEQ(local_committer_offset, commit_items.committer_offset)

        commit_items = git.get_commit_items(commit_off.encode('hex'), git.cp())
        WVPASSEQ(tree, commit_items.tree.decode('hex'))
        WVPASSEQ(1, len(commit_items.parents))
        WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
        WVPASSEQ(author_name, commit_items.author_name)
        WVPASSEQ(author_mail, commit_items.author_mail)
        WVPASSEQ(adate_sec, commit_items.author_sec)
        WVPASSEQ(adate_tz_sec, commit_items.author_offset)
        WVPASSEQ(committer_name, commit_items.committer_name)
        WVPASSEQ(committer_mail, commit_items.committer_mail)
        WVPASSEQ(cdate_sec, commit_items.committer_sec)
        WVPASSEQ(cdate_tz_sec, commit_items.committer_offset)
Ejemplo n.º 3
0
def test_new_commit():
    with no_lingering_errors(), test_tempdir('bup-tgit-') as tmpdir:
        os.environ['BUP_MAIN_EXE'] = bup_exe
        os.environ['BUP_DIR'] = bupdir = tmpdir + "/bup"
        git.init_repo(bupdir)
        git.verbose = 1

        w = git.PackWriter()
        tree = os.urandom(20)
        parent = os.urandom(20)
        author_name = 'Author'
        author_mail = 'author@somewhere'
        adate_sec = 1439657836
        cdate_sec = adate_sec + 1
        committer_name = 'Committer'
        committer_mail = 'committer@somewhere'
        adate_tz_sec = cdate_tz_sec = None
        commit = w.new_commit(tree, parent,
                              '%s <%s>' % (author_name, author_mail),
                              adate_sec, adate_tz_sec,
                              '%s <%s>' % (committer_name, committer_mail),
                              cdate_sec, cdate_tz_sec,
                              'There is a small mailbox here')
        adate_tz_sec = -60 * 60
        cdate_tz_sec = 120 * 60
        commit_off = w.new_commit(tree, parent,
                                  '%s <%s>' % (author_name, author_mail),
                                  adate_sec, adate_tz_sec,
                                  '%s <%s>' % (committer_name, committer_mail),
                                  cdate_sec, cdate_tz_sec,
                                  'There is a small mailbox here')
        w.close()

        commit_items = git.get_commit_items(commit.encode('hex'), git.cp())
        local_author_offset = localtime(adate_sec).tm_gmtoff
        local_committer_offset = localtime(cdate_sec).tm_gmtoff
        WVPASSEQ(tree, commit_items.tree.decode('hex'))
        WVPASSEQ(1, len(commit_items.parents))
        WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
        WVPASSEQ(author_name, commit_items.author_name)
        WVPASSEQ(author_mail, commit_items.author_mail)
        WVPASSEQ(adate_sec, commit_items.author_sec)
        WVPASSEQ(local_author_offset, commit_items.author_offset)
        WVPASSEQ(committer_name, commit_items.committer_name)
        WVPASSEQ(committer_mail, commit_items.committer_mail)
        WVPASSEQ(cdate_sec, commit_items.committer_sec)
        WVPASSEQ(local_committer_offset, commit_items.committer_offset)

        commit_items = git.get_commit_items(commit_off.encode('hex'), git.cp())
        WVPASSEQ(tree, commit_items.tree.decode('hex'))
        WVPASSEQ(1, len(commit_items.parents))
        WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
        WVPASSEQ(author_name, commit_items.author_name)
        WVPASSEQ(author_mail, commit_items.author_mail)
        WVPASSEQ(adate_sec, commit_items.author_sec)
        WVPASSEQ(adate_tz_sec, commit_items.author_offset)
        WVPASSEQ(committer_name, commit_items.committer_name)
        WVPASSEQ(committer_mail, commit_items.committer_mail)
        WVPASSEQ(cdate_sec, commit_items.committer_sec)
        WVPASSEQ(cdate_tz_sec, commit_items.committer_offset)
Ejemplo n.º 4
0
def test_commit_parsing():
    def showval(commit, val):
        return readpipe(['git', 'show', '-s',
                         '--pretty=format:%s' % val, commit]).strip()
    initial_failures = wvfailure_count()
    orig_cwd = os.getcwd()
    tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tgit-')
    workdir = tmpdir + "/work"
    repodir = workdir + '/.git'
    try:
        readpipe(['git', 'init', workdir])
        os.environ['GIT_DIR'] = os.environ['BUP_DIR'] = repodir
        git.check_repo_or_die(repodir)
        os.chdir(workdir)
        with open('foo', 'w') as f:
            print >> f, 'bar'
        readpipe(['git', 'add', '.'])
        readpipe(['git', 'commit', '-am', 'Do something',
                  '--author', 'Someone <someone@somewhere>',
                  '--date', 'Sat Oct 3 19:48:49 2009 -0400'])
        commit = readpipe(['git', 'show-ref', '-s', 'master']).strip()
        parents = showval(commit, '%P')
        tree = showval(commit, '%T')
        cname = showval(commit, '%cn')
        cmail = showval(commit, '%ce')
        cdate = showval(commit, '%ct')
        coffs = showval(commit, '%ci')
        coffs = coffs[-5:]
        coff = (int(coffs[-4:-2]) * 60 * 60) + (int(coffs[-2:]) * 60)
        if coffs[-5] == '-':
            coff = - coff
        commit_items = git.get_commit_items(commit, git.cp())
        WVPASSEQ(commit_items.parents, [])
        WVPASSEQ(commit_items.tree, tree)
        WVPASSEQ(commit_items.author_name, 'Someone')
        WVPASSEQ(commit_items.author_mail, 'someone@somewhere')
        WVPASSEQ(commit_items.author_sec, 1254613729)
        WVPASSEQ(commit_items.author_offset, -(4 * 60 * 60))
        WVPASSEQ(commit_items.committer_name, cname)
        WVPASSEQ(commit_items.committer_mail, cmail)
        WVPASSEQ(commit_items.committer_sec, int(cdate))
        WVPASSEQ(commit_items.committer_offset, coff)
        WVPASSEQ(commit_items.message, 'Do something\n')
        with open('bar', 'w') as f:
            print >> f, 'baz'
        readpipe(['git', 'add', '.'])
        readpipe(['git', 'commit', '-am', 'Do something else'])
        child = readpipe(['git', 'show-ref', '-s', 'master']).strip()
        parents = showval(child, '%P')
        commit_items = git.get_commit_items(child, git.cp())
        WVPASSEQ(commit_items.parents, [commit])
    finally:
        os.chdir(orig_cwd)
    if wvfailure_count() == initial_failures:
        subprocess.call(['rm', '-rf', tmpdir])
Ejemplo n.º 5
0
def test_commit_parsing():
    def showval(commit, val):
        return readpipe(['git', 'show', '-s',
                         '--pretty=format:%s' % val, commit]).strip()
    initial_failures = wvfailure_count()
    orig_cwd = os.getcwd()
    tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tgit-')
    workdir = tmpdir + "/work"
    repodir = workdir + '/.git'
    try:
        readpipe(['git', 'init', workdir])
        os.environ['GIT_DIR'] = os.environ['BUP_DIR'] = repodir
        git.check_repo_or_die(repodir)
        os.chdir(workdir)
        with open('foo', 'w') as f:
            print >> f, 'bar'
        readpipe(['git', 'add', '.'])
        readpipe(['git', 'commit', '-am', 'Do something',
                  '--author', 'Someone <someone@somewhere>',
                  '--date', 'Sat Oct 3 19:48:49 2009 -0400'])
        commit = readpipe(['git', 'show-ref', '-s', 'master']).strip()
        parents = showval(commit, '%P')
        tree = showval(commit, '%T')
        cname = showval(commit, '%cn')
        cmail = showval(commit, '%ce')
        cdate = showval(commit, '%ct')
        coffs = showval(commit, '%ci')
        coffs = coffs[-5:]
        coff = (int(coffs[-4:-2]) * 60 * 60) + (int(coffs[-2:]) * 60)
        if coffs[-5] == '-':
            coff = - coff
        commit_items = git.get_commit_items(commit, git.cp())
        WVPASSEQ(commit_items.parents, [])
        WVPASSEQ(commit_items.tree, tree)
        WVPASSEQ(commit_items.author_name, 'Someone')
        WVPASSEQ(commit_items.author_mail, 'someone@somewhere')
        WVPASSEQ(commit_items.author_sec, 1254613729)
        WVPASSEQ(commit_items.author_offset, -(4 * 60 * 60))
        WVPASSEQ(commit_items.committer_name, cname)
        WVPASSEQ(commit_items.committer_mail, cmail)
        WVPASSEQ(commit_items.committer_sec, int(cdate))
        WVPASSEQ(commit_items.committer_offset, coff)
        WVPASSEQ(commit_items.message, 'Do something\n')
        with open('bar', 'w') as f:
            print >> f, 'baz'
        readpipe(['git', 'add', '.'])
        readpipe(['git', 'commit', '-am', 'Do something else'])
        child = readpipe(['git', 'show-ref', '-s', 'master']).strip()
        parents = showval(child, '%P')
        commit_items = git.get_commit_items(child, git.cp())
        WVPASSEQ(commit_items.parents, [commit])
    finally:
        os.chdir(orig_cwd)
    if wvfailure_count() == initial_failures:
        subprocess.call(['rm', '-rf', tmpdir])
Ejemplo n.º 6
0
def append_commit(hash, parent, cp, writer):
    ci = get_commit_items(hash, cp)
    tree = ci.tree.decode('hex')
    author = '%s <%s>' % (ci.author_name, ci.author_mail)
    committer = '%s <%s>' % (ci.committer_name, ci.committer_mail)
    c = writer.new_commit(tree, parent, author, ci.author_sec,
                          ci.author_offset, committer, ci.committer_sec,
                          ci.committer_offset, ci.message)
    return c, tree
Ejemplo n.º 7
0
Archivo: rm.py Proyecto: kronenpj/bup
def append_commit(hash, parent, cp, writer):
    ci = get_commit_items(hash, cp)
    tree = ci.tree.decode('hex')
    author = '%s <%s>' % (ci.author_name, ci.author_mail)
    committer = '%s <%s>' % (ci.committer_name, ci.committer_mail)
    c = writer.new_commit(tree, parent,
                          author, ci.author_sec, ci.author_offset,
                          committer, ci.committer_sec, ci.committer_offset,
                          ci.message)
    return c, tree
Ejemplo n.º 8
0
def filter_branch(tip_commit_hex, exclude, writer):
    # May return None if everything is excluded.
    commits = [unhexlify(x) for x in git.rev_list(tip_commit_hex)]
    commits.reverse()
    last_c, tree = None, None
    # Rather than assert that we always find an exclusion here, we'll
    # just let the StopIteration signal the error.
    first_exclusion = next(i for i, c in enumerate(commits) if exclude(c))
    if first_exclusion != 0:
        last_c = commits[first_exclusion - 1]
        tree = unhexlify(get_commit_items(hexlify(last_c), git.cp()).tree)
        commits = commits[first_exclusion:]
    for c in commits:
        if exclude(c):
            continue
        last_c, tree = append_commit(hexlify(c), last_c, git.cp(), writer)
    return last_c
Ejemplo n.º 9
0
Archivo: rm.py Proyecto: kronenpj/bup
def filter_branch(tip_commit_hex, exclude, writer):
    # May return None if everything is excluded.
    commits = [c for _, c in git.rev_list(tip_commit_hex)]
    commits.reverse()
    last_c, tree = None, None
    # Rather than assert that we always find an exclusion here, we'll
    # just let the StopIteration signal the error.
    first_exclusion = next(i for i, c in enumerate(commits) if exclude(c))
    if first_exclusion != 0:
        last_c = commits[first_exclusion - 1]
        tree = get_commit_items(last_c.encode('hex'),
                                git.cp()).tree.decode('hex')
        commits = commits[first_exclusion:]
    for c in commits:
        if exclude(c):
            continue
        last_c, tree = append_commit(c.encode('hex'), last_c, git.cp(), writer)
    return last_c
Ejemplo n.º 10
0
def test_new_commit():
    initial_failures = wvfailure_count()
    tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tgit-')
    os.environ['BUP_MAIN_EXE'] = bup_exe
    os.environ['BUP_DIR'] = bupdir = tmpdir + "/bup"
    git.init_repo(bupdir)
    git.verbose = 1

    w = git.PackWriter()
    tree = os.urandom(20)
    parent = os.urandom(20)
    author_name = 'Author'
    author_mail = 'author@somewhere'
    adate_sec = 1439657836
    cdate_sec = adate_sec + 1
    committer_name = 'Committer'
    committer_mail = 'committer@somewhere'
    adate_tz_sec = cdate_tz_sec = None
    commit = w.new_commit(tree, parent, '%s <%s>' % (author_name, author_mail),
                          adate_sec, adate_tz_sec,
                          '%s <%s>' % (committer_name, committer_mail),
                          cdate_sec, cdate_tz_sec,
                          'There is a small mailbox here')
    adate_tz_sec = -60 * 60
    cdate_tz_sec = 120 * 60
    commit_off = w.new_commit(tree, parent,
                              '%s <%s>' % (author_name, author_mail),
                              adate_sec, adate_tz_sec,
                              '%s <%s>' % (committer_name, committer_mail),
                              cdate_sec, cdate_tz_sec,
                              'There is a small mailbox here')
    w.close()

    commit_items = git.get_commit_items(commit.encode('hex'), git.cp())
    local_author_offset = localtime(adate_sec).tm_gmtoff
    local_committer_offset = localtime(cdate_sec).tm_gmtoff
    WVPASSEQ(tree, commit_items.tree.decode('hex'))
    WVPASSEQ(1, len(commit_items.parents))
    WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
    WVPASSEQ(author_name, commit_items.author_name)
    WVPASSEQ(author_mail, commit_items.author_mail)
    WVPASSEQ(adate_sec, commit_items.author_sec)
    WVPASSEQ(local_author_offset, commit_items.author_offset)
    WVPASSEQ(committer_name, commit_items.committer_name)
    WVPASSEQ(committer_mail, commit_items.committer_mail)
    WVPASSEQ(cdate_sec, commit_items.committer_sec)
    WVPASSEQ(local_committer_offset, commit_items.committer_offset)

    commit_items = git.get_commit_items(commit_off.encode('hex'), git.cp())
    WVPASSEQ(tree, commit_items.tree.decode('hex'))
    WVPASSEQ(1, len(commit_items.parents))
    WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
    WVPASSEQ(author_name, commit_items.author_name)
    WVPASSEQ(author_mail, commit_items.author_mail)
    WVPASSEQ(adate_sec, commit_items.author_sec)
    WVPASSEQ(adate_tz_sec, commit_items.author_offset)
    WVPASSEQ(committer_name, commit_items.committer_name)
    WVPASSEQ(committer_mail, commit_items.committer_mail)
    WVPASSEQ(cdate_sec, commit_items.committer_sec)
    WVPASSEQ(cdate_tz_sec, commit_items.committer_offset)
    if wvfailure_count() == initial_failures:
        subprocess.call(['rm', '-rf', tmpdir])
Ejemplo n.º 11
0
Archivo: tgit.py Proyecto: zzmjohn/bup
def test_commit_parsing():

    def restore_env_var(name, val):
        if val is None:
            del environ[name]
        else:
            environ[name] = val

    def showval(commit, val):
        return readpipe([b'git', b'show', b'-s',
                         b'--pretty=format:%s' % val, commit]).strip()

    with no_lingering_errors():
        with test_tempdir(b'bup-tgit-') as tmpdir:
            orig_cwd = os.getcwd()
            workdir = tmpdir + b'/work'
            repodir = workdir + b'/.git'
            orig_author_name = environ.get(b'GIT_AUTHOR_NAME')
            orig_author_email = environ.get(b'GIT_AUTHOR_EMAIL')
            orig_committer_name = environ.get(b'GIT_COMMITTER_NAME')
            orig_committer_email = environ.get(b'GIT_COMMITTER_EMAIL')
            environ[b'GIT_AUTHOR_NAME'] = b'bup test'
            environ[b'GIT_COMMITTER_NAME'] = environ[b'GIT_AUTHOR_NAME']
            environ[b'GIT_AUTHOR_EMAIL'] = b'bup@a425bc70a02811e49bdf73ee56450e6f'
            environ[b'GIT_COMMITTER_EMAIL'] = environ[b'GIT_AUTHOR_EMAIL']
            try:
                readpipe([b'git', b'init', workdir])
                environ[b'GIT_DIR'] = environ[b'BUP_DIR'] = repodir
                git.check_repo_or_die(repodir)
                os.chdir(workdir)
                with open('foo', 'w') as f:
                    print('bar', file=f)
                readpipe([b'git', b'add', b'.'])
                readpipe([b'git', b'commit', b'-am', b'Do something',
                          b'--author', b'Someone <someone@somewhere>',
                          b'--date', b'Sat Oct 3 19:48:49 2009 -0400'])
                commit = readpipe([b'git', b'show-ref', b'-s', b'master']).strip()
                parents = showval(commit, b'%P')
                tree = showval(commit, b'%T')
                cname = showval(commit, b'%cn')
                cmail = showval(commit, b'%ce')
                cdate = showval(commit, b'%ct')
                coffs = showval(commit, b'%ci')
                coffs = coffs[-5:]
                coff = (int(coffs[-4:-2]) * 60 * 60) + (int(coffs[-2:]) * 60)
                if bytes_from_byte(coffs[-5]) == b'-':
                    coff = - coff
                commit_items = git.get_commit_items(commit, git.cp())
                WVPASSEQ(commit_items.parents, [])
                WVPASSEQ(commit_items.tree, tree)
                WVPASSEQ(commit_items.author_name, b'Someone')
                WVPASSEQ(commit_items.author_mail, b'someone@somewhere')
                WVPASSEQ(commit_items.author_sec, 1254613729)
                WVPASSEQ(commit_items.author_offset, -(4 * 60 * 60))
                WVPASSEQ(commit_items.committer_name, cname)
                WVPASSEQ(commit_items.committer_mail, cmail)
                WVPASSEQ(commit_items.committer_sec, int(cdate))
                WVPASSEQ(commit_items.committer_offset, coff)
                WVPASSEQ(commit_items.message, b'Do something\n')
                with open(b'bar', 'wb') as f:
                    f.write(b'baz\n')
                readpipe([b'git', b'add', '.'])
                readpipe([b'git', b'commit', b'-am', b'Do something else'])
                child = readpipe([b'git', b'show-ref', b'-s', b'master']).strip()
                parents = showval(child, b'%P')
                commit_items = git.get_commit_items(child, git.cp())
                WVPASSEQ(commit_items.parents, [commit])
            finally:
                os.chdir(orig_cwd)
                restore_env_var(b'GIT_AUTHOR_NAME', orig_author_name)
                restore_env_var(b'GIT_AUTHOR_EMAIL', orig_author_email)
                restore_env_var(b'GIT_COMMITTER_NAME', orig_committer_name)
                restore_env_var(b'GIT_COMMITTER_EMAIL', orig_committer_email)
Ejemplo n.º 12
0
def test_new_commit():
    initial_failures = wvfailure_count()
    tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tgit-')
    os.environ['BUP_MAIN_EXE'] = bup_exe
    os.environ['BUP_DIR'] = bupdir = tmpdir + "/bup"
    git.init_repo(bupdir)
    git.verbose = 1

    w = git.PackWriter()
    tree = os.urandom(20)
    parent = os.urandom(20)
    author_name = 'Author'
    author_mail = 'author@somewhere'
    adate_sec = 1439657836
    cdate_sec = adate_sec + 1
    committer_name = 'Committer'
    committer_mail = 'committer@somewhere'
    adate_tz_sec = cdate_tz_sec = None
    commit = w.new_commit(tree, parent,
                          '%s <%s>' % (author_name, author_mail),
                          adate_sec, adate_tz_sec,
                          '%s <%s>' % (committer_name, committer_mail),
                          cdate_sec, cdate_tz_sec,
                          'There is a small mailbox here')
    adate_tz_sec = -60 * 60
    cdate_tz_sec = 120 * 60
    commit_off = w.new_commit(tree, parent,
                              '%s <%s>' % (author_name, author_mail),
                              adate_sec, adate_tz_sec,
                              '%s <%s>' % (committer_name, committer_mail),
                              cdate_sec, cdate_tz_sec,
                              'There is a small mailbox here')
    w.close()

    commit_items = git.get_commit_items(commit.encode('hex'), git.cp())
    local_author_offset = localtime(adate_sec).tm_gmtoff
    local_committer_offset = localtime(cdate_sec).tm_gmtoff
    WVPASSEQ(tree, commit_items.tree.decode('hex'))
    WVPASSEQ(1, len(commit_items.parents))
    WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
    WVPASSEQ(author_name, commit_items.author_name)
    WVPASSEQ(author_mail, commit_items.author_mail)
    WVPASSEQ(adate_sec, commit_items.author_sec)
    WVPASSEQ(local_author_offset, commit_items.author_offset)
    WVPASSEQ(committer_name, commit_items.committer_name)
    WVPASSEQ(committer_mail, commit_items.committer_mail)
    WVPASSEQ(cdate_sec, commit_items.committer_sec)
    WVPASSEQ(local_committer_offset, commit_items.committer_offset)

    commit_items = git.get_commit_items(commit_off.encode('hex'), git.cp())
    WVPASSEQ(tree, commit_items.tree.decode('hex'))
    WVPASSEQ(1, len(commit_items.parents))
    WVPASSEQ(parent, commit_items.parents[0].decode('hex'))
    WVPASSEQ(author_name, commit_items.author_name)
    WVPASSEQ(author_mail, commit_items.author_mail)
    WVPASSEQ(adate_sec, commit_items.author_sec)
    WVPASSEQ(adate_tz_sec, commit_items.author_offset)
    WVPASSEQ(committer_name, commit_items.committer_name)
    WVPASSEQ(committer_mail, commit_items.committer_mail)
    WVPASSEQ(cdate_sec, commit_items.committer_sec)
    WVPASSEQ(cdate_tz_sec, commit_items.committer_offset)
    if wvfailure_count() == initial_failures:
        subprocess.call(['rm', '-rf', tmpdir])
Ejemplo n.º 13
0
Archivo: tgit.py Proyecto: 0xkag/bup
def test_commit_parsing():

    def restore_env_var(name, val):
        if val is None:
            del os.environ[name]
        else:
            os.environ[name] = val

    def showval(commit, val):
        return readpipe(['git', 'show', '-s',
                         '--pretty=format:%s' % val, commit]).strip()

    with no_lingering_errors(), test_tempdir('bup-tgit-') as tmpdir:
        orig_cwd = os.getcwd()
        workdir = tmpdir + "/work"
        repodir = workdir + '/.git'
        orig_author_name = os.environ.get('GIT_AUTHOR_NAME')
        orig_author_email = os.environ.get('GIT_AUTHOR_EMAIL')
        orig_committer_name = os.environ.get('GIT_COMMITTER_NAME')
        orig_committer_email = os.environ.get('GIT_COMMITTER_EMAIL')
        os.environ['GIT_AUTHOR_NAME'] = 'bup test'
        os.environ['GIT_COMMITTER_NAME'] = os.environ['GIT_AUTHOR_NAME']
        os.environ['GIT_AUTHOR_EMAIL'] = 'bup@a425bc70a02811e49bdf73ee56450e6f'
        os.environ['GIT_COMMITTER_EMAIL'] = os.environ['GIT_AUTHOR_EMAIL']
        try:
            readpipe(['git', 'init', workdir])
            os.environ['GIT_DIR'] = os.environ['BUP_DIR'] = repodir
            git.check_repo_or_die(repodir)
            os.chdir(workdir)
            with open('foo', 'w') as f:
                print >> f, 'bar'
            readpipe(['git', 'add', '.'])
            readpipe(['git', 'commit', '-am', 'Do something',
                      '--author', 'Someone <someone@somewhere>',
                      '--date', 'Sat Oct 3 19:48:49 2009 -0400'])
            commit = readpipe(['git', 'show-ref', '-s', 'master']).strip()
            parents = showval(commit, '%P')
            tree = showval(commit, '%T')
            cname = showval(commit, '%cn')
            cmail = showval(commit, '%ce')
            cdate = showval(commit, '%ct')
            coffs = showval(commit, '%ci')
            coffs = coffs[-5:]
            coff = (int(coffs[-4:-2]) * 60 * 60) + (int(coffs[-2:]) * 60)
            if coffs[-5] == '-':
                coff = - coff
            commit_items = git.get_commit_items(commit, git.cp())
            WVPASSEQ(commit_items.parents, [])
            WVPASSEQ(commit_items.tree, tree)
            WVPASSEQ(commit_items.author_name, 'Someone')
            WVPASSEQ(commit_items.author_mail, 'someone@somewhere')
            WVPASSEQ(commit_items.author_sec, 1254613729)
            WVPASSEQ(commit_items.author_offset, -(4 * 60 * 60))
            WVPASSEQ(commit_items.committer_name, cname)
            WVPASSEQ(commit_items.committer_mail, cmail)
            WVPASSEQ(commit_items.committer_sec, int(cdate))
            WVPASSEQ(commit_items.committer_offset, coff)
            WVPASSEQ(commit_items.message, 'Do something\n')
            with open('bar', 'w') as f:
                print >> f, 'baz'
            readpipe(['git', 'add', '.'])
            readpipe(['git', 'commit', '-am', 'Do something else'])
            child = readpipe(['git', 'show-ref', '-s', 'master']).strip()
            parents = showval(child, '%P')
            commit_items = git.get_commit_items(child, git.cp())
            WVPASSEQ(commit_items.parents, [commit])
        finally:
            os.chdir(orig_cwd)
            restore_env_var('GIT_AUTHOR_NAME', orig_author_name)
            restore_env_var('GIT_AUTHOR_EMAIL', orig_author_email)
            restore_env_var('GIT_COMMITTER_NAME', orig_committer_name)
            restore_env_var('GIT_COMMITTER_EMAIL', orig_committer_email)