def test_folder_diff_from_commit(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs/recipes'] commit = list(folder.history)[1] diff = folder.diff(commit) assert isinstance(diff, pygit2.Diff) assert 'index 310e236..6026a23 100644' in diff.patch
def test_commit(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs/recipes'] commit = folder.last_commit assert isinstance(commit, pygit2.Commit) message = commit.message assert message.startswith('Fix indent error')
def test_repository_diff_between_commits(gitrepo): repo = gitdict.Repository(gitrepo) commit1 = list(repo.history)[1] commit2 = list(repo.history)[2] diff = repo.diff(commit1, commit2) assert isinstance(diff, pygit2.Diff) assert 'index 1fa6a72..0d96930 100644' in diff.patch
def test_file_diff_from_commit(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['docs/recipes/git-show.rst'] commit = list(gf.history)[1] diff = gf.diff(commit) assert isinstance(diff, pygit2.Patch) assert diff.line_stats == (15, 9, 2)
def test_folder_walk(gitrepo): repo = gitdict.Repository(gitrepo) walker = repo.walk() parent, folders, files = next(walker) assert parent == repo for f in folders: assert isinstance(f, gitdict.Folder) for f in files: assert isinstance(f, gitdict.File) paths = [f.git_path for f in folders] assert paths == ['docs', 'misc', 'pygit2', 'src', 'test'] paths = [f.git_path for f in files] expected = [ '.gitattributes', '.gitignore', '.mailmap', '.pep8', '.travis.sh', '.travis.yml', 'COPYING', 'README.rst', 'TODO.txt', 'setup.py' ] assert paths == expected folder1 = folders[0] parent2, folders, files = next(walker) assert parent2 == folder1 paths = [f.git_path for f in folders] assert paths == ['docs/_static', 'docs/_themes', 'docs/recipes'] paths = [f.git_path for f in files] expected = [ 'docs/Makefile', 'docs/blame.rst', 'docs/conf.py', 'docs/config.rst', 'docs/development.rst', 'docs/diff.rst', 'docs/features.rst', 'docs/general.rst', 'docs/index.rst', 'docs/install.rst', 'docs/log.rst', 'docs/merge.rst', 'docs/objects.rst', 'docs/oid.rst', 'docs/recipes.rst', 'docs/references.rst', 'docs/remotes.rst', 'docs/repository.rst', 'docs/revparse.rst', 'docs/settings.rst', 'docs/submodule.rst', 'docs/working-copy.rst' ] assert paths == expected
def test_folder_contains(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] assert 'recipes' in folder assert 'Makefile' in folder assert 'recipes/git-init.rst' in folder assert 'unknown' not in folder
def test_file_last_commit(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['README.rst'] commit = gf.last_commit assert isinstance(gf.last_commit, pygit2.Commit) message = commit.message assert message.startswith("Release 0.23.2")
def test_fodler_equals(gitrepo): repo = gitdict.Repository(gitrepo) folder1 = repo['docs'] folder2 = repo['docs'] assert id(folder1) != id(folder2) assert folder1 == folder2 assert ('x' == folder1) == False
def test_folder_values(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] content = docs_folder_content.copy() for object in folder.values(): cls = content.pop(object.__name__) assert isinstance(object, cls) assert len(content) == 0
def test_folder_items(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] content = docs_folder_content.copy() for name, object in folder.items(): cls = content.pop(name) assert isinstance(object, cls) assert len(content) == 0
def test_folder_diff_between_commits(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs/recipes'] commit1 = list(folder.history)[1] commit2 = list(folder.history)[3] diff = folder.diff(commit1, commit2) assert isinstance(diff, pygit2.Diff) assert 'index 0000000..f8ea5ca' in diff.patch
def test_file_diff_between_commits(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['docs/recipes/git-show.rst'] commit1 = list(gf.history)[1] commit2 = list(gf.history)[2] diff = gf.diff(commit1, commit2) assert isinstance(diff, pygit2.Patch) assert diff.line_stats == (14, 4, 4)
def test_file_init(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['README.rst'] assert gf.__name__ == 'README.rst' assert gf.__parent__ == repo assert gf._repository == repo assert isinstance(gf._pg2_blob, pygit2.Blob) assert str(gf._pg2_blob.id) == '4bdf2944e2188cdb8427749317c147239dc212c7'
def test_folder_init(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] assert folder.__name__ == 'docs' assert folder.__parent__ == repo assert folder._repository == repo assert isinstance(folder._pg2_tree, pygit2.Tree) assert str( folder._pg2_tree.id) == '67336d9821cdb3209177d38a198e20a51eef5cca'
def test_repository_initialization_bare_head(gitrepo): repo = gitdict.Repository(gitrepo) assert isinstance(repo._pg2_repo, pygit2.Repository) assert isinstance(repo.last_commit, pygit2.Commit) assert str( repo.last_commit.id) == '7a8474cd44e4aaaa52ad9163d7d1bf971255662f' assert isinstance(repo._pg2_tree, pygit2.Tree) assert str(repo._pg2_tree.id) == 'bfd1938cd1ee3c37b1cc3170c95821deac9ae0ce' assert repo.branch == 'master' assert os.path.realpath(repo.path) == os.path.realpath(gitrepo)
def test_file_iterator(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['docs/recipes/git-show.rst'] lines = [ '*' * 70, 'git-show', '*' * 70, '', '-' * 70, 'Showing a commit', '-' * 70, '', '.. code-block:: bash' ] expected = [l + '\n' for l in lines] result = [line for line in gf] assert result[:9] == expected
def test_file_history(gitrepo): repo = gitdict.Repository(gitrepo) gf = repo['docs/recipes/git-show.rst'] expected = [ 'git-show recipe: Add the easy Python 3 way', 'Clarify comments in git-show recipe', 'Correct git-show recipe', 'Update git-show recipe', 'restructured recipes' ] for i, commit in enumerate(gf.history): assert isinstance(commit, pygit2.Commit) assert commit.message.startswith(expected[i]) assert len(expected) == len(list(gf.history))
def test_history(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs/recipes'] expected = [ 'Fix indent error', 'Add a recipe for git clone --mirror', 'Cherry-pick recipe: clean up after picking', 'Add git-cherry-pick recipes', 'git-show recipe: Add the easy Python 3 way', 'Clarify comments in git-show recipe', 'Correct git-show recipe', 'Update git-show recipe', 'Remove obsolete git-branch recipe', 'docs: clarify git-init recipe', 'docs: adjust to recent changes', 'Doc fixes: change head.oid to head.target in examples', 'restructured recipes' ] for i, commit in enumerate(folder.history): assert isinstance(commit, pygit2.Commit) assert commit.message.startswith(expected[i]) assert len(list(folder.history)) == len(expected)
def test_folder_get_default_on_unknown_child(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] child = folder.get('unknown_child', 'default_value') assert not isinstance(child, gitdict.File) assert child == 'default_value'
def test_folder_get_path(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] child = folder.get('recipes/git-init.rst') assert isinstance(child, gitdict.File) assert child.__parent__ == folder['recipes']
def test_folder_get_file(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] child = folder.get('Makefile') assert isinstance(child, gitdict.File) assert child.__parent__ == folder
def test_folder_get_folder(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] child = folder.get('recipes') assert isinstance(child, gitdict.Folder) assert child.__parent__ == folder
def test_folder_git_path(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs']['recipes'] assert folder.git_path == 'docs/recipes'
def test_repository_history(gitrepo): repo = gitdict.Repository(gitrepo) history = repo.history for commit in history: assert isinstance(commit, pygit2.Commit) assert len(history) == 1242
def test_repository_diff_from_commit(gitrepo): repo = gitdict.Repository(gitrepo) commit = list(repo.history)[1] diff = repo.diff(commit) assert isinstance(diff, pygit2.Diff) assert 'index 94f7626..57dad00 100644' in diff.patch
def test_repository_diff_raises_error(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs/recipes'] gf = repo['docs/recipes/git-show.rst'] with pytest.raises(gitdict.GitDictError): assert folder.diff(gf)
def test_folder_keys(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] assert sorted(folder.keys()) == sorted(docs_folder_content.keys())
def test_folder_iter(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] names = [name for name in folder] assert sorted(names) == sorted(docs_folder_content.keys())
def test_folder_len(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] assert len(folder) == 25
def test_fodler_not_equals(gitrepo): repo = gitdict.Repository(gitrepo) folder = repo['docs'] assert folder != 'x' assert folder != repo assert folder != folder['recipes']