diff --git a/test/data/testrepo.zip b/test/data/testrepo.zip index aac9a62..92be5a7 100644 Binary files a/test/data/testrepo.zip and b/test/data/testrepo.zip differ diff --git a/test/test_index.py b/test/test_index.py index 9040f41..8dee69d 100644 --- a/test/test_index.py +++ b/test/test_index.py @@ -32,7 +32,6 @@ __author__ = 'jdavid@itaapy.com (J. David Ibáñez)' import unittest -import pygit2 import utils @@ -47,6 +46,50 @@ class IndexTest(utils.RepoTestCase): def test_index(self): self.assertNotEqual(None, self.repo.index) + def test_read(self): + index = self.repo.index + self.assertEqual(len(index), 0) + index.read() + self.assertEqual(len(index), 1) + + self.assertRaises(TypeError, lambda: index[()]) + self.assertRaisesWithArg(ValueError, -4, lambda: index[-4]) + self.assertRaisesWithArg(KeyError, 'abc', lambda: index['abc']) + + sha = '3b18e512dba79e4c8300dd08aeb37f8e728b8dad' + self.assertTrue('hello.txt' in index) + self.assertEqual(index['hello.txt'].sha, sha) + self.assertEqual(index[0].sha, sha) + + def test_add(self): + index = self.repo.index + index.read() + + sha = '0907563af06c7464d62a70cdd135a6ba7d2b41d8' + self.assertFalse('bye.txt' in index) + index.add('bye.txt', 0) + self.assertTrue('bye.txt' in index) + self.assertEqual(len(index), 2) + self.assertEqual(index['bye.txt'].sha, sha) + + def test_clear(self): + index = self.repo.index + index.read() + self.assertEqual(len(index), 1) + index.clear() + self.assertEqual(len(index), 0) + + def test_write(self): + index = self.repo.index + index.read() + index.add('bye.txt', 0) + index.write() + + index.clear() + self.assertFalse('bye.txt' in index) + index.read() + self.assertTrue('bye.txt' in index) + if __name__ == '__main__': unittest.main() diff --git a/test/utils.py b/test/utils.py index bf18579..57828f1 100644 --- a/test/utils.py +++ b/test/utils.py @@ -36,18 +36,7 @@ import zipfile import pygit2 -def open_repo(repo_dir): - repo_path = os.path.join(os.path.dirname(__file__), 'data', repo_dir) - temp_dir = tempfile.mkdtemp() - temp_repo_path = os.path.join(temp_dir, repo_dir) - shutil.copytree(repo_path, temp_repo_path) - return temp_dir, pygit2.Repository(temp_repo_path) - - -class BareRepoTestCase(unittest.TestCase): - - def setUp(self): - self._temp_dir, self.repo = open_repo('testrepo.git') +class BaseTestCase(unittest.TestCase): def tearDown(self): shutil.rmtree(self._temp_dir) @@ -61,7 +50,21 @@ class BareRepoTestCase(unittest.TestCase): self.fail('%s(%r) not raised' % (exc_class.__name__, arg)) -class RepoTestCase(unittest.TestCase): +def open_repo(repo_dir): + repo_path = os.path.join(os.path.dirname(__file__), 'data', repo_dir) + temp_dir = tempfile.mkdtemp() + temp_repo_path = os.path.join(temp_dir, repo_dir) + shutil.copytree(repo_path, temp_repo_path) + return temp_dir, pygit2.Repository(temp_repo_path) + + +class BareRepoTestCase(BaseTestCase): + + def setUp(self): + self._temp_dir, self.repo = open_repo('testrepo.git') + + +class RepoTestCase(BaseTestCase): def setUp(self): repo_dir = 'testrepo' @@ -73,6 +76,3 @@ class RepoTestCase(unittest.TestCase): self._temp_dir = temp_dir temp_repo_path = os.path.join(temp_dir, repo_dir, '.git') self.repo = pygit2.Repository(temp_repo_path) - - def tearDown(self): - shutil.rmtree(self._temp_dir)