You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcpcfg/t/test_git.py

65 lines
2.0 KiB

#!/usr/bin/env py.test-3
import os
import pytest
import re
def test_add_file_to_default_repo(cli, gitrepo):
src = 'default-git-repository.tar.gz'
with gitrepo.from_archive(src) as git:
# configure git user
git.config('--local', 'user.email', 'me@example.com')
git.config('--local', 'user.name', 'pytest robot')
print('Using git {}'.format(git.version))
# git status
ex, out, err = git.status()
assert ex == 0
assert 'On branch' in out
# create new file
newfile = os.path.join(git.root, 'newfile')
with open(newfile, 'w') as fd:
fd.write('#!/bin/sh\necho "Hello World"\n')
# adding file to repository
assert git.branch == 'master'
git.add(newfile)
git.commit('-m', 'Adding a new file')
# checking log
ex, out, err = git.log()
assert ex == 0
assert 'Adding a new file' in out
@pytest.mark.tt_11776
def test_status_output(cli, gitrepo):
# we mock an existing repository by loading it from the default archive
with gitrepo.from_archive(gitrepo.default) as git:
# now we work with "existing" repository with path given in git.root
with gitrepo.in_folder(git.root) as git:
ex, out, err = git.status()
assert ex == 0
# git >=v2.9.3 uses "working tree",
# before it was "working directory"
regex = re.compile(r"nothing to commit, working (tree|directory)")
assert re.search(regex, out)
ex, out, error = git.status('--porcelain=v2')
assert out == ""
assert error == ""
assert ex == 0
# create new file
newfile = os.path.join(git.root, 'newfile')
with open(newfile, 'w') as fd:
fd.write('#!/bin/sh\necho "Hello World"\n')
ex, out, error = git.status('--porcelain=v2')
assert out == '''? newfile\n'''
assert error == ""
assert ex == 0