* Add exit codes to update and import command * Add tests for _import and _update exit codes
This commit is contained in:
		
							parent
							
								
									2e0a59b7d8
								
							
						
					
					
						commit
						18b5c1336e
					
				
							
								
								
									
										14
									
								
								elodie.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								elodie.py
									
									
									
									
									
								
							@ -87,6 +87,7 @@ def import_file(_file, destination, album_from_folder, trash, allow_duplicates):
 | 
				
			|||||||
def _import(destination, source, file, album_from_folder, trash, paths, allow_duplicates):
 | 
					def _import(destination, source, file, album_from_folder, trash, paths, allow_duplicates):
 | 
				
			||||||
    """Import files or directories by reading their EXIF and organizing them accordingly.
 | 
					    """Import files or directories by reading their EXIF and organizing them accordingly.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					    has_errors = False
 | 
				
			||||||
    result = Result()
 | 
					    result = Result()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    destination = _decode(destination)
 | 
					    destination = _decode(destination)
 | 
				
			||||||
@ -110,9 +111,13 @@ def _import(destination, source, file, album_from_folder, trash, paths, allow_du
 | 
				
			|||||||
        dest_path = import_file(current_file, destination, album_from_folder,
 | 
					        dest_path = import_file(current_file, destination, album_from_folder,
 | 
				
			||||||
                    trash, allow_duplicates)
 | 
					                    trash, allow_duplicates)
 | 
				
			||||||
        result.append((current_file, dest_path))
 | 
					        result.append((current_file, dest_path))
 | 
				
			||||||
 | 
					        has_errors = has_errors is True or not dest_path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    result.write()
 | 
					    result.write()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if has_errors:
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@click.command('generate-db')
 | 
					@click.command('generate-db')
 | 
				
			||||||
@click.option('--source', type=click.Path(file_okay=False),
 | 
					@click.option('--source', type=click.Path(file_okay=False),
 | 
				
			||||||
@ -209,6 +214,7 @@ def update_time(media, file_path, time_string):
 | 
				
			|||||||
def _update(album, location, time, title, paths):
 | 
					def _update(album, location, time, title, paths):
 | 
				
			||||||
    """Update a file's EXIF. Automatically modifies the file's location and file name accordingly.
 | 
					    """Update a file's EXIF. Automatically modifies the file's location and file name accordingly.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					    has_errors = False
 | 
				
			||||||
    result = Result()
 | 
					    result = Result()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    files = set()
 | 
					    files = set()
 | 
				
			||||||
@ -221,6 +227,8 @@ def _update(album, location, time, title, paths):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for current_file in files:
 | 
					    for current_file in files:
 | 
				
			||||||
        if not os.path.exists(current_file):
 | 
					        if not os.path.exists(current_file):
 | 
				
			||||||
 | 
					            has_errors = True
 | 
				
			||||||
 | 
					            result.append((current_file, False))
 | 
				
			||||||
            if constants.debug:
 | 
					            if constants.debug:
 | 
				
			||||||
                print('Could not find %s' % current_file)
 | 
					                print('Could not find %s' % current_file)
 | 
				
			||||||
            print('{"source":"%s", "error_msg":"Could not find %s"}' % \
 | 
					            print('{"source":"%s", "error_msg":"Could not find %s"}' % \
 | 
				
			||||||
@ -289,10 +297,16 @@ def _update(album, location, time, title, paths):
 | 
				
			|||||||
            FILESYSTEM.delete_directory_if_empty(
 | 
					            FILESYSTEM.delete_directory_if_empty(
 | 
				
			||||||
                os.path.dirname(os.path.dirname(current_file)))
 | 
					                os.path.dirname(os.path.dirname(current_file)))
 | 
				
			||||||
            result.append((current_file, dest_path))
 | 
					            result.append((current_file, dest_path))
 | 
				
			||||||
 | 
					            # Trip has_errors to False if it's already False or dest_path is.
 | 
				
			||||||
 | 
					            has_errors = has_errors is True or not dest_path
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
 | 
					            has_errors = False
 | 
				
			||||||
            result.append((current_file, False))
 | 
					            result.append((current_file, False))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    result.write()
 | 
					    result.write()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if has_errors:
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@click.group()
 | 
					@click.group()
 | 
				
			||||||
 | 
				
			|||||||
@ -210,6 +210,27 @@ def test_import_destination_in_source():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    assert dest_path is None, dest_path
 | 
					    assert dest_path is None, dest_path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_import_invalid_file_exit_code():
 | 
				
			||||||
 | 
					    temporary_folder, folder = helper.create_working_folder()
 | 
				
			||||||
 | 
					    temporary_folder_destination, folder_destination = helper.create_working_folder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # use a good and bad
 | 
				
			||||||
 | 
					    origin_invalid = '%s/invalid.jpg' % folder
 | 
				
			||||||
 | 
					    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    origin_valid = '%s/valid.jpg' % folder
 | 
				
			||||||
 | 
					    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    helper.reset_dbs()
 | 
				
			||||||
 | 
					    runner = CliRunner()
 | 
				
			||||||
 | 
					    result = runner.invoke(elodie._import, ['--destination', folder_destination, origin_invalid, origin_valid])
 | 
				
			||||||
 | 
					    helper.restore_dbs()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    shutil.rmtree(folder)
 | 
				
			||||||
 | 
					    shutil.rmtree(folder_destination)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert result.exit_code == 1, result.exit_code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_update_location_on_audio():
 | 
					def test_update_location_on_audio():
 | 
				
			||||||
    temporary_folder, folder = helper.create_working_folder()
 | 
					    temporary_folder, folder = helper.create_working_folder()
 | 
				
			||||||
    temporary_folder_destination, folder_destination = helper.create_working_folder()
 | 
					    temporary_folder_destination, folder_destination = helper.create_working_folder()
 | 
				
			||||||
@ -428,6 +449,27 @@ def test_update_with_directory_passed_in():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    assert updated_file_exists, updated_file_path
 | 
					    assert updated_file_exists, updated_file_path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_update_invalid_file_exit_code():
 | 
				
			||||||
 | 
					    temporary_folder, folder = helper.create_working_folder()
 | 
				
			||||||
 | 
					    temporary_folder_destination, folder_destination = helper.create_working_folder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # use a good and bad
 | 
				
			||||||
 | 
					    origin_invalid = '%s/invalid.jpg' % folder
 | 
				
			||||||
 | 
					    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    origin_valid = '%s/valid.jpg' % folder
 | 
				
			||||||
 | 
					    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    helper.reset_dbs()
 | 
				
			||||||
 | 
					    runner = CliRunner()
 | 
				
			||||||
 | 
					    result = runner.invoke(elodie._update, ['--album', 'test', origin_invalid, origin_valid])
 | 
				
			||||||
 | 
					    helper.restore_dbs()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    shutil.rmtree(folder)
 | 
				
			||||||
 | 
					    shutil.rmtree(folder_destination)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert result.exit_code == 1, result.exit_code
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_regenerate_db_invalid_source():
 | 
					def test_regenerate_db_invalid_source():
 | 
				
			||||||
    runner = CliRunner()
 | 
					    runner = CliRunner()
 | 
				
			||||||
    result = runner.invoke(elodie._generate_db, ['--source', '/invalid/path'])
 | 
					    result = runner.invoke(elodie._generate_db, ['--source', '/invalid/path'])
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user