diff --git a/catcli/walker.py b/catcli/walker.py index f2db5bc..df738a9 100644 --- a/catcli/walker.py +++ b/catcli/walker.py @@ -78,7 +78,7 @@ class Walker: self._debug('\tskip file {}'.format(sub)) self.noder.flag(n) continue - Logger.out('- new file \"{}\"'.format(sub)) + Logger.out('- update catalag for \"{}\"'.format(sub)) n = self.noder.file_node(os.path.basename(f), sub, parent, storagepath) self.noder.flag(n) @@ -90,7 +90,7 @@ class Walker: treepath = os.path.join(storagepath, d) reindex, dummy = self._need_reindex(parent, sub, treepath) if reindex: - Logger.out('- new directory \"{}\"'.format(sub)) + Logger.out('- update catalog for \"{}\"'.format(sub)) dummy = self.noder.dir_node(base, sub, parent, storagepath) cnt += 1 self.noder.flag(dummy) @@ -124,7 +124,6 @@ class Walker: self._debug('\t{} has changed'.format(path)) self._debug('\tremoving node {} for {}'.format(cnode.name, path)) cnode.parent = None - Logger.out('- update \"{}\"'.format(path)) return True, cnode def _debug(self, string): diff --git a/tests/test_update.py b/tests/test_update.py index ea05b33..c881862 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -41,6 +41,7 @@ class TestIndexing(unittest.TestCase): d1f1 = create_rnd_file(d1, 'dir1file1') d1f2 = create_rnd_file(d1, 'dir1file2') d2f1 = create_rnd_file(d2, 'dir2file1') + d2f2 = create_rnd_file(d2, 'dir2file2') noder = Noder(debug=True) noder.set_hashing(True) @@ -52,6 +53,8 @@ class TestIndexing(unittest.TestCase): self.assertTrue(f4_md5) d1f1_md5 = md5sum(d1f1) self.assertTrue(d1f1_md5) + d2f2_md5 = md5sum(d2f2) + self.assertTrue(d2f2_md5) # create fake args tmpdirname = 'tmpdir' @@ -93,13 +96,22 @@ class TestIndexing(unittest.TestCase): maccess = os.path.getmtime(f4) EDIT = 'edited' edit_file(f4, EDIT) - # reset edit time os.utime(f4, (maccess, maccess)) f4_md5_new = md5sum(d1f1) self.assertTrue(f4_md5_new) self.assertTrue(f4_md5_new != f4_md5) + # change file without mtime + maccess = os.path.getmtime(d2f2) + EDIT = 'edited' + edit_file(d2f2, EDIT) + # reset edit time + os.utime(d2f2, (maccess, maccess)) + d2f2_md5_new = md5sum(d2f2) + self.assertTrue(d2f2_md5_new) + self.assertTrue(d2f2_md5_new != d2f2_md5) + # update storage cmd_update(args, noder, catalog, top, debug=True) @@ -128,6 +140,14 @@ class TestIndexing(unittest.TestCase): self.assertTrue(nod.md5 != f4_md5) self.assertTrue(nod.md5 == f4_md5_new) + # ensure d2f2 md5 sum has changed in catalog + nods = noder.find_name(top, os.path.basename(d2f2)) + self.assertTrue(len(nods) == 1) + nod = nods[0] + self.assertTrue(nod) + self.assertTrue(nod.md5 != d2f2_md5) + self.assertTrue(nod.md5 == d2f2_md5_new) + # ensures files and directories are in names = [node.name for node in anytree.PreOrderIter(storage)] print(names) @@ -150,7 +170,7 @@ class TestIndexing(unittest.TestCase): if node.name == os.path.basename(d1): self.assertTrue(len(node.children) == 3) elif node.name == os.path.basename(d2): - self.assertTrue(len(node.children) == 2) + self.assertTrue(len(node.children) == 3) elif node.name == os.path.basename(new3): self.assertTrue(len(node.children) == 0) elif node.name == os.path.basename(new4): @@ -172,11 +192,13 @@ class TestIndexing(unittest.TestCase): self.assertTrue(os.path.basename(f1) in names) self.assertTrue(os.path.basename(f2) in names) self.assertTrue(os.path.basename(f3) in names) + self.assertTrue(os.path.basename(f4) in names) self.assertTrue(os.path.basename(d1) in names) self.assertTrue(os.path.basename(d1f1) not in names) self.assertTrue(os.path.basename(d1f2) in names) self.assertTrue(os.path.basename(d2) not in names) self.assertTrue(os.path.basename(d2f1) not in names) + self.assertTrue(os.path.basename(d2f1) not in names) self.assertTrue(os.path.basename(new1) in names) self.assertTrue(os.path.basename(new2) not in names) self.assertTrue(os.path.basename(new3) in names)