def test_find_files_by_script_with_script_that_takes_multiple_files(): with TempFile('.xcf') as with_white, TempFile('.xcf') as without_white: GimpFile(with_white)\ .create('Background', np.zeros(shape=(1, 1), dtype=np.uint8))\ .add_layer_from_numpy('White', np.ones(shape=(1, 1), dtype=np.uint8)*255) GimpFile(without_white) \ .create('Background', np.zeros(shape=(1, 1), dtype=np.uint8)) \ .add_layer_from_numpy('Black', np.zeros(shape=(1, 1), dtype=np.uint8)) collection = GimpFileCollection([with_white, without_white]) script = textwrap.dedent( """ import gimp from pgimp.gimp.file import XcfFile from pgimp.gimp.parameter import return_json, get_json files = get_json('__files__') matches = [] for file in files: with XcfFile(file) as image: for layer in image.layers: if layer.name == '{0:s}': matches.append(file) return_json(matches) """ ) files = collection.find_files_by_script(script.format(escape_single_quotes('White')), timeout_in_seconds=3) assert len(files) == 1 assert with_white == files[0] files = collection.find_files_by_script(script.format(escape_single_quotes('Not existing')), timeout_in_seconds=3) assert len(files) == 0
def test_find_files_by_script_with_script_that_takes_single_file(): with TempFile('.xcf') as with_white, TempFile('.xcf') as without_white: GimpFile(with_white)\ .create('Background', np.zeros(shape=(1, 1), dtype=np.uint8))\ .add_layer_from_numpy('White', np.ones(shape=(1, 1), dtype=np.uint8)*255) GimpFile(without_white) \ .create('Background', np.zeros(shape=(1, 1), dtype=np.uint8)) \ .add_layer_from_numpy('Black', np.zeros(shape=(1, 1), dtype=np.uint8)) collection = GimpFileCollection([with_white, without_white]) script = textwrap.dedent( """ from pgimp.gimp.file import open_xcf from pgimp.gimp.parameter import return_bool image = open_xcf('__file__') for layer in image.layers: if layer.name == '{0:s}': return_bool(True) return_bool(False) """ ) files = collection.find_files_by_script(script.format(escape_single_quotes('White')), timeout_in_seconds=3) assert len(files) == 1 assert with_white == files[0] files = collection.find_files_by_script(script.format(escape_single_quotes('Not existing')), timeout_in_seconds=3) assert len(files) == 0
def test_find_files_by_script_without_required_parameters(): collection = GimpFileCollection([]) script = textwrap.dedent( """ print(1) """ ) with pytest.raises(GimpMissingRequiredParameterException): collection.find_files_by_script(script, timeout_in_seconds=3)