def test_process_existing_file_without_changes(): # gh-210 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) assert helper.path_tz_fix( os.path.join( '2015-12-Dec', 'Unknown Location', '2015-12-05_00-59-26-plain.jpg')) in destination, destination media_second = Photo(destination) destination_second = filesystem.process_file(destination, temporary_folder, media_second, allowDuplicate=True) assert destination_second is None, destination_second shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination)))
def test_process_twice_more_than_two_levels_of_directories(): with open('%s/config.ini-multiple-directories' % gettempdir(), 'w') as f: f.write(""" [Directory] year=%Y month=%m 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() 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', '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 shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination)))
def test_process_video_with_album_then_title(): if not can_edit_exif(): raise SkipTest('avmetareadwrite executable not found') filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'movie.mov') shutil.copyfile(helper.get_file('video.mov'), origin) origin_checksum = helper.checksum(origin) media = Video(origin) media.set_album('test_album') media.set_title('test_title') destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum 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
def test_process_file_validate_original_checksum(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder, 'photo.jpg') shutil.copyfile(helper.get_file('plain.jpg'), origin) origin_checksum_preprocess = helper.checksum(origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum_preprocess is not None, origin_checksum_preprocess assert origin_checksum is not None, origin_checksum assert destination_checksum is not None, destination_checksum assert origin_checksum_preprocess == origin_checksum, ( origin_checksum_preprocess, origin_checksum)
def test_process_file_with_title(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-title.jpg'), origin) origin_checksum_preprocess = helper.checksum(origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum_preprocess is not None assert origin_checksum is not None assert destination_checksum is not None assert origin_checksum_preprocess == origin_checksum assert helper.path_tz_fix( os.path.join('2015-12-Dec', 'Unknown Location', '2015-12-05_00-59-26-photo-some-title.jpg') ) in destination, destination
def test_process_file_with_plugin_runtime_error(): with open('%s/config.ini-plugin-runtime-error' % gettempdir(), 'w') as f: f.write(""" [Plugins] plugins=RuntimeError """) 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 '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-plain.jpg' in destination, destination
def test_process_file_with_plugin_throw_error(): with open('%s/config.ini-plugin-throw-error' % gettempdir(), 'w') as f: f.write(""" [Plugins] plugins=ThrowError """) 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 destination is None, destination
def test_process_video_with_album_then_title(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder, 'movie.mov') shutil.copyfile(helper.get_file('video.mov'), origin) origin_checksum = helper.checksum(origin) media = Video(origin) media.set_album('test_album') media.set_title('test_title') destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum 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
def test_process_file_with_album_and_title_and_location(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder, 'photo.jpg') shutil.copyfile(helper.get_file('with-album-and-title-and-location.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert helper.path_tz_fix( os.path.join('2015-12-Dec', 'Test Album', '2015-12-05_00-59-26-photo-some-title.jpg') ) in destination, destination
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)))
def test_process_file_invalid(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'photo.jpg') shutil.copyfile(helper.get_file('invalid.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) assert destination is None
def test_process_file_with_album_and_title_and_location(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album-and-title-and-location.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo-some-title.jpg' in destination, destination
def test_process_file_with_album(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo.jpg' in destination, destination
def test_process_file_plain(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-photo.jpg' in destination, destination
def test_process_file_with_album(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'photo.jpg') shutil.copyfile(helper.get_file('with-album.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert helper.path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo.jpg')) in destination, destination
def test_process_file_no_exif_date_is_correct_gh_330(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'photo.jpg') shutil.copyfile(helper.get_file('no-exif.jpg'), origin) atime = 1330712100 utime = 1330712900 os.utime(origin, (atime, utime)) media = Photo(origin) metadata = media.get_metadata() destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert '/2012-03-Mar/' in destination, destination assert '/2012-03-02_18-28-20' in destination, destination