From e5e811b215445a406dfd5d31a4fffca18045b9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ove=20Stavn=C3=A5s?= Date: Sun, 6 Aug 2017 23:26:28 +0200 Subject: [PATCH] Fix bug with fallback values in full_path variables in config.ini (#234) * Add test for gh-234 * Force flush of cached configs in test --- elodie/filesystem.py | 4 +--- elodie/tests/filesystem_test.py | 37 ++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/elodie/filesystem.py b/elodie/filesystem.py index fddaa44..55cab91 100644 --- a/elodie/filesystem.py +++ b/elodie/filesystem.py @@ -196,20 +196,18 @@ class FileSystem(object): self.cached_folder_path_definition = [] for part in path_parts: + part = part.replace('%', '') if part in config_directory: - part = part[1:] self.cached_folder_path_definition.append( [(part, config_directory[part])] ) elif part in self.default_parts: - part = part[1:] self.cached_folder_path_definition.append( [(part, '')] ) else: this_part = [] for p in part.split('|'): - p = p[1:] this_part.append( (p, config_directory[p] if p in config_directory else '') ) diff --git a/elodie/tests/filesystem_test.py b/elodie/tests/filesystem_test.py index 8c871d1..48ca096 100644 --- a/elodie/tests/filesystem_test.py +++ b/elodie/tests/filesystem_test.py @@ -588,6 +588,33 @@ def test_process_video_with_album_then_title(): assert origin_checksum != destination_checksum, destination_checksum assert helper.path_tz_fix(os.path.join('2015-01-Jan','test_album','2015-01-19_12-45-11-movie-test_title.mov')) in destination, destination +@mock.patch('elodie.config.config_file', '%s/config.ini-fallback-folder' % gettempdir()) +def test_process_file_fallback_folder(): + with open('%s/config.ini-fallback-folder' % gettempdir(), 'w') as f: + f.write(""" +[Directory] +date=%Y-%m +full_path=%date/%album|"fallback" + """) + + if hasattr(load_config, 'config'): + del load_config.config + filesystem = FileSystem() + temporary_folder, folder = helper.create_working_folder() + + origin = os.path.join(folder,'plain.jpg') + shutil.copyfile(helper.get_file('plain.jpg'), origin) + + media = Photo(origin) + destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + if hasattr(load_config, 'config'): + del load_config.config + + assert helper.path_tz_fix(os.path.join('2015-12', 'fallback', '2015-12-05_00-59-26-plain.jpg')) in destination, destination + + shutil.rmtree(folder) + shutil.rmtree(os.path.dirname(os.path.dirname(destination))) + @mock.patch('elodie.config.config_file', '%s/config.ini-multiple-directories' % gettempdir()) def test_process_twice_more_than_two_levels_of_directories(): with open('%s/config.ini-multiple-directories' % gettempdir(), 'w') as f: @@ -599,6 +626,8 @@ day=%d full_path=%year/%month/%day """) + if hasattr(load_config, 'config'): + del load_config.config filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() @@ -607,12 +636,18 @@ full_path=%year/%month/%day media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) + if hasattr(load_config, 'config'): + del load_config.config assert helper.path_tz_fix(os.path.join('2015','12','05', '2015-12-05_00-59-26-plain.jpg')) in destination, destination + if hasattr(load_config, 'config'): + del load_config.config media_second = Photo(destination) media_second.set_title('foo') destination_second = filesystem.process_file(destination, temporary_folder, media_second, allowDuplicate=True) + if hasattr(load_config, 'config'): + del load_config.config assert destination.replace('.jpg', '-foo.jpg') == destination_second, destination_second @@ -707,7 +742,7 @@ def test_get_folder_path_definition_default(): if hasattr(load_config, 'config'): del load_config.config - assert path_definition == [[('date', '%Y-%m-%b')], [('album', ''), ('location', '%city'), ('Unknown Location"', '')]], path_definition + assert path_definition == [[('date', '%Y-%m-%b')], [('album', ''), ('location', '%city'), ('"Unknown Location"', '')]], path_definition @mock.patch('elodie.config.config_file', '%s/config.ini-date-location' % gettempdir()) def test_get_folder_path_definition_date_location():