Skip to content

Commit 155fc2d

Browse files
author
embs
committed
List empty dirs in gl status
So users can track them if they wish.
1 parent a9418ca commit 155fc2d

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

gitless/core.py

+8
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,14 @@ def status(self):
771771
yield self.FileStatus(
772772
fp, GL_STATUS_UNTRACKED, True, exists_in_wd, True, False)
773773

774+
# find untracked empty dirs
775+
for dirpath, dirs, files in os.walk('.', topdown=True):
776+
dirs[:] = [d for d in dirs if d not in ['.git'] and not
777+
self.path_is_ignored(d)]
778+
if not dirs and not files:
779+
yield self.FileStatus(dirpath, GL_STATUS_UNTRACKED, False, True, False,
780+
False)
781+
774782
def status_file(self, path):
775783
"""Return the status (see FileStatus) of the given path."""
776784
return self._status_file(path)[0]

gitless/tests/test_e2e.py

+22-4
Original file line numberDiff line numberDiff line change
@@ -685,17 +685,35 @@ def test_uncommitted_tracked_changes_that_conflict_append(self):
685685

686686
class TestEmptyDir(TestEndToEnd):
687687

688+
def test_empty_dir_status(self):
689+
untracked_empty_dir = self._mk_empty_dir('untracked_empty_dir')
690+
691+
out = utils.stdout(gl.status())
692+
693+
self.assertIn(untracked_empty_dir, out, 'Empty dir didn\'t appear in status')
694+
695+
def test_ignored_empty_dir_status(self):
696+
ignored_empty_dir = self._mk_empty_dir('ignored_empty_dir')
697+
utils.write_file(os.path.join(self.path, '.gitignore'), ignored_empty_dir)
698+
699+
out = utils.stdout(gl.status())
700+
701+
self.assertFalse(ignored_empty_dir in out,
702+
'Ignored empty dir was listed in status')
703+
688704
def test_track_empty_dir(self):
689-
dir_to_track = 'wanted_empty_dir'
690-
dir_to_track_path = os.path.join(self.path, dir_to_track)
691-
os.mkdir(dir_to_track_path)
705+
dir_to_track = self._mk_empty_dir('wanted_empty_dir')
692706
expected_out = 'Empty directory {0} is now a tracked directory'.format(
693707
os.path.join(dir_to_track, ''))
694708

695-
out = utils.stdout(gl.track(dir_to_track_path))
709+
out = utils.stdout(gl.track(dir_to_track))
696710

697711
self.assertIn(expected_out, out, 'Empty dir wasn\'t tracked')
698712

713+
def _mk_empty_dir(self, name):
714+
os.mkdir(os.path.join(self.path, name))
715+
return name
716+
699717

700718
class TestPerformance(TestEndToEnd):
701719

0 commit comments

Comments
 (0)