Skip directory emptiness check for known tagtrees directories #55

This commit is contained in:
Lukas Haigner 2023-07-15 22:05:30 +02:00
parent ca87aaf067
commit 29555f4b77
No known key found for this signature in database
GPG key ID: 0A14F62711A25DD4
2 changed files with 72 additions and 4 deletions

View file

@ -2010,7 +2010,9 @@ def assert_empty_tagfilter_directory(directory):
@param directory: the directory to use as starting directory
"""
if options.tagtrees_directory and os.path.isdir(directory) and os.listdir(directory):
id = os.path.join(directory, '.filetags_tagtrees')
if not os.path.exists(id) and options.tagtrees_directory and os.path.exists(directory) and os.listdir(directory):
error_exit(13, 'The given tagtrees directory ' + directory +
' is not empty. Aborting here instead ' +
'of removing its content without asking. Please free it up yourself and try again.')
@ -2027,6 +2029,10 @@ def assert_empty_tagfilter_directory(directory):
shutil.rmtree(directory)
logging.debug('re-creating tagfilter directory "%s" ...' % str(directory))
os.makedirs(directory)
with open(id, 'w'):
pass
if not options.dryrun:
assert(os.path.isdir(directory))

View file

@ -755,7 +755,7 @@ class TestHierarchyWithFilesAndFolders(unittest.TestCase):
link_missing_mutual_tagged_items=False,
filtertags=None)
self.assertEqual(len(os.listdir(self.subdir2)), 4) # 4 entries in this directory
self.assertEqual(len(os.listdir(self.subdir2)), 5) # 5 entries in this directory
self.assertTrue(os.path.isdir(os.path.join(self.subdir2, 'bar')))
self.assertEqual(set(os.listdir(os.path.join(self.subdir2, 'bar'))),
@ -781,7 +781,7 @@ class TestHierarchyWithFilesAndFolders(unittest.TestCase):
link_missing_mutual_tagged_items=False,
filtertags=['teststring1'])
self.assertEqual(len(os.listdir(self.subdir2)), 3) # 3 entries in this directory
self.assertEqual(len(os.listdir(self.subdir2)), 4) # 4 entries in this directory
self.assertFalse(os.path.isdir(os.path.join(self.subdir2, 'bar')))
@ -806,7 +806,7 @@ class TestHierarchyWithFilesAndFolders(unittest.TestCase):
filtertags=['teststring1', 'baz'])
self.assertEqual(set(os.listdir(self.subdir2)),
set(['teststring1', 'baz', 'nontagged_items']))
set(['.filetags_tagtrees', 'teststring1', 'baz', 'nontagged_items']))
self.assertFalse(os.path.isdir(os.path.join(self.subdir2, 'bar')))
@ -819,6 +819,68 @@ class TestHierarchyWithFilesAndFolders(unittest.TestCase):
self.assertTrue(os.path.isdir(os.path.join(self.subdir2, 'nontagged_items')))
def test_tagtrees_overwrites_old_default_directory(self):
with open(os.path.join(self.subdir2, 'boring tagtrees data.txt'), 'w'):
pass
filetags.generate_tagtrees(directory=self.subdir2,
maxdepth=5,
ignore_nontagged=False,
nontagged_subdir='nontagged_items',
link_missing_mutual_tagged_items=False,
filtertags=None)
def test_tagtrees_overwrites_known_tagtrees(self):
filetags.options.tagtrees_directory = self.subdir2
with open(os.path.join(self.subdir2, '.filetags_tagtrees'), 'w'):
pass
filetags.generate_tagtrees(directory=self.subdir2,
maxdepth=5,
ignore_nontagged=False,
nontagged_subdir='nontagged_items',
link_missing_mutual_tagged_items=False,
filtertags=None)
filetags.options.tagtrees_directory = None
def test_tagtrees_overwrites_nonempty_foreign_directory(self):
filetags.options.tagtrees_directory = self.subdir2
with open(os.path.join(self.subdir2, 'critical data.txt'), 'w'):
pass
with self.assertRaises(SystemExit):
filetags.generate_tagtrees(directory=self.subdir2,
maxdepth=5,
ignore_nontagged=False,
nontagged_subdir='nontagged_items',
link_missing_mutual_tagged_items=False,
filtertags=None)
filetags.options.tagtrees_directory = None
def test_tagtrees_overwrites_empty_foreign_directory(self):
filetags.options.tagtrees_directory = self.subdir2
filetags.generate_tagtrees(directory=self.subdir2,
maxdepth=5,
ignore_nontagged=False,
nontagged_subdir='nontagged_items',
link_missing_mutual_tagged_items=False,
filtertags=None)
filetags.options.tagtrees_directory = None
def tearDown(self):
if platform.system() != 'Windows':