diff options
author | Marcel <marcel.beining@gmail.com> | 2019-02-08 11:44:33 +0100 |
---|---|---|
committer | Sebastian Thiel <sebastian.thiel@icloud.com> | 2019-10-15 13:27:48 +0200 |
commit | 3face9018b70f1db82101bd5173c01e4d8d2b3bf (patch) | |
tree | 09d0f58875875753d14dadf8f1f02b0938ec1784 | |
parent | 23b83cd6a10403b5fe478932980bdd656280844d (diff) | |
download | gitpython-3face9018b70f1db82101bd5173c01e4d8d2b3bf.tar.gz |
allow calling index.add, index.move and index.remove with single items
added testing for it
closes #813
-rw-r--r-- | git/index/base.py | 46 | ||||
-rw-r--r-- | git/test/test_index.py | 9 |
2 files changed, 37 insertions, 18 deletions
diff --git a/git/index/base.py b/git/index/base.py index 04a3934d..c34fe78a 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -569,16 +569,23 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable): """ Split the items into two lists of path strings and BaseEntries. """ paths = [] entries = [] - - for item in items: - if isinstance(item, string_types): - paths.append(self._to_relative_path(item)) - elif isinstance(item, (Blob, Submodule)): - entries.append(BaseIndexEntry.from_blob(item)) - elif isinstance(item, BaseIndexEntry): - entries.append(item) - else: - raise TypeError("Invalid Type: %r" % item) + + if isinstance(items, string_types): + paths.append(self._to_relative_path(items)) + elif isinstance(items, (Blob, Submodule)): + entries.append(BaseIndexEntry.from_blob(items)) + elif isinstance(items, BaseIndexEntry): + entries.append(items) + else: + for item in items: + if isinstance(item, string_types): + paths.append(self._to_relative_path(item)) + elif isinstance(item, (Blob, Submodule)): + entries.append(BaseIndexEntry.from_blob(item)) + elif isinstance(item, BaseIndexEntry): + entries.append(item) + else: + raise TypeError("Invalid Type: %r" % item) # END for each item return (paths, entries) @@ -801,13 +808,18 @@ class IndexFile(LazyMixin, diff.Diffable, Serializable): """Returns a list of repo-relative paths from the given items which may be absolute or relative paths, entries or blobs""" paths = [] - for item in items: - if isinstance(item, (BaseIndexEntry, (Blob, Submodule))): - paths.append(self._to_relative_path(item.path)) - elif isinstance(item, string_types): - paths.append(self._to_relative_path(item)) - else: - raise TypeError("Invalid item type: %r" % item) + if isinstance(items, (BaseIndexEntry, (Blob, Submodule))): + paths.append(self._to_relative_path(items.path)) + elif isinstance(items, string_types): + paths.append(self._to_relative_path(items)) + else: + for item in items: + if isinstance(item, (BaseIndexEntry, (Blob, Submodule))): + paths.append(self._to_relative_path(item.path)) + elif isinstance(item, string_types): + paths.append(self._to_relative_path(item)) + else: + raise TypeError("Invalid item type: %r" % item) # END for each item return paths diff --git a/git/test/test_index.py b/git/test/test_index.py index 11009239..ee48bae6 100644 --- a/git/test/test_index.py +++ b/git/test/test_index.py @@ -772,7 +772,14 @@ class TestIndex(TestBase): orig_tree = commit.tree self.assertEqual(index.write_tree(), orig_tree) # END for each commit - + + @with_rw_repo('HEAD', bare=False) + def test_index_single_addremove(self, rw_repo): + path = osp.join('git', 'test', 'test_index.py') + self._assert_entries(rw_repo.index.add(path)) + deleted_files = rw_repo.index.remove(path) + assert deleted_files + def test_index_new(self): B = self.rorepo.tree("6d9b1f4f9fa8c9f030e3207e7deacc5d5f8bba4e") H = self.rorepo.tree("25dca42bac17d511b7e2ebdd9d1d679e7626db5f") |