diff --git a/git/index/base.py b/git/index/base.py index 04a3934d6..9ca663f4a 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -569,6 +569,11 @@ def _preprocess_add_items(self, items): """ Split the items into two lists of path strings and BaseEntries. """ paths = [] entries = [] + # check if is iterable, else put in list + try: + test_item = iter(items) + except TypeError: + items = [items] for item in items: if isinstance(item, string_types): @@ -580,7 +585,7 @@ def _preprocess_add_items(self, items): else: raise TypeError("Invalid Type: %r" % item) # END for each item - return (paths, entries) + return paths, entries def _store_path(self, filepath, fprogress): """Store file at filepath in the database and return the base index entry @@ -801,6 +806,12 @@ def _items_to_rela_paths(self, items): """Returns a list of repo-relative paths from the given items which may be absolute or relative paths, entries or blobs""" paths = [] + # check if is iterable, else put in list + try: + test_item = iter(items) + except TypeError: + items = [items] + for item in items: if isinstance(item, (BaseIndexEntry, (Blob, Submodule))): paths.append(self._to_relative_path(item.path)) diff --git a/git/test/test_index.py b/git/test/test_index.py index a30d314b5..6195e76b4 100644 --- a/git/test/test_index.py +++ b/git/test/test_index.py @@ -772,7 +772,14 @@ def test_compare_write_tree(self, rw_repo): 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")