def test_ne_same_data_different_uuid(self): visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization2 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertNotEqual(visualization1, visualization2)
def test_load_and_save(self): fp1 = os.path.join(self.test_dir.name, 'visualization1.qzv') fp2 = os.path.join(self.test_dir.name, 'visualization2.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp1) visualization = Visualization.load(fp1) # Overwriting its source file works. visualization.save(fp1) # Saving to a new file works. visualization.save(fp2) root_dir = str(visualization.uuid) expected = { 'VERSION', 'checksums.md5', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/citations.bib', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp1, root_dir, expected) root_dir = str(visualization.uuid) expected = { 'VERSION', 'checksums.md5', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/citations.bib', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp2, root_dir, expected)
def test_ne_same_data_different_uuid(self): visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization2 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertNotEqual(visualization1, visualization2)
def test_extract(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) root_dir = str(visualization.uuid) # pathlib normalizes away the `.`, it doesn't matter, but this is the # implementation we're using, so let's test against that assumption. output_dir = pathlib.Path(self.test_dir.name) / 'viz-extract-test' result_dir = Visualization.extract(fp, output_dir=output_dir) self.assertEqual(result_dir, str(output_dir / root_dir)) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/citations.bib', 'provenance/action/action.yaml' } self.assertExtractedArchiveMembers(output_dir, root_dir, expected)
def test_eq_same_uuid(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization1.save(fp) visualization2 = Visualization.load(fp) self.assertEqual(visualization1, visualization2)
def test_eq_same_uuid(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization1.save(fp) visualization2 = Visualization.load(fp) self.assertEqual(visualization1, visualization2)
def test_get_index_paths_single_load(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) actual = visualization.get_index_paths() expected = {'html': 'data/index.html'} self.assertEqual(actual, expected)
def test_load(self): saved_visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) fp = os.path.join(self.test_dir.name, 'visualization.qzv') saved_visualization.save(fp) visualization = Visualization.load(fp) self.assertEqual(visualization.type, qiime2.core.type.Visualization) self.assertEqual(visualization.uuid, saved_visualization.uuid)
def test_load(self): saved_visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) fp = os.path.join(self.test_dir.name, 'visualization.qzv') saved_visualization.save(fp) visualization = Visualization.load(fp) self.assertEqual(visualization.type, qiime2.core.type.Visualization) self.assertEqual(visualization.uuid, saved_visualization.uuid)
def test_get_index_paths_single_load(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) actual = visualization.get_index_paths() expected = {'html': 'data/index.html'} self.assertEqual(actual, expected)
def test_ne_different_data_different_uuid(self): visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) data_dir = os.path.join(self.test_dir.name, 'mc-viz-output1') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) visualization2 = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) self.assertNotEqual(visualization1, visualization2)
def test_peek(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization.save(fp) metadata = Visualization.peek(fp) self.assertIsInstance(metadata, ResultMetadata) self.assertEqual(metadata.type, 'Visualization') self.assertEqual(metadata.uuid, str(visualization.uuid)) self.assertIsNone(metadata.format)
def test_ne_different_data_different_uuid(self): visualization1 = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) data_dir = os.path.join(self.test_dir.name, 'mc-viz-output1') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) visualization2 = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) self.assertNotEqual(visualization1, visualization2)
def test_peek(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization.save(fp) metadata = Visualization.peek(fp) self.assertIsInstance(metadata, ResultMetadata) self.assertEqual(metadata.type, 'Visualization') self.assertEqual(metadata.uuid, str(visualization.uuid)) self.assertIsNone(metadata.format)
def test_roundtrip(self): fp1 = os.path.join(self.test_dir.name, 'visualization1.qzv') fp2 = os.path.join(self.test_dir.name, 'visualization2.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp1) visualization1 = Visualization.load(fp1) visualization1.save(fp2) visualization2 = Visualization.load(fp2) self.assertEqual(visualization1.type, visualization2.type) self.assertEqual(visualization1.uuid, visualization2.uuid)
def test_get_index_paths_multiple_load(self): data_dir = os.path.join(self.test_dir.name, 'mc-viz-output1') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) actual = visualization.get_index_paths() expected = {'html': 'data/index.html', 'tsv': 'data/index.tsv'} self.assertEqual(actual, expected)
def test_get_index_paths_multiple_html_load(self): data_dir = os.path.join(self.test_dir.name, 'multi-html-viz1') os.mkdir(data_dir) multi_html_viz(data_dir, [1, 42]) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) with self.assertRaises(ValueError): visualization.get_index_paths()
def test_roundtrip(self): fp1 = os.path.join(self.test_dir.name, 'visualization1.qzv') fp2 = os.path.join(self.test_dir.name, 'visualization2.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp1) visualization1 = Visualization.load(fp1) visualization1.save(fp2) visualization2 = Visualization.load(fp2) self.assertEqual(visualization1.type, visualization2.type) self.assertEqual(visualization1.uuid, visualization2.uuid)
def test_get_index_paths_multiple_html_load(self): data_dir = os.path.join(self.test_dir.name, 'multi-html-viz1') os.mkdir(data_dir) multi_html_viz(data_dir, [1, 42]) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) with self.assertRaises(ValueError): visualization.get_index_paths()
def test_get_index_paths_multiple_load(self): data_dir = os.path.join(self.test_dir.name, 'mc-viz-output1') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) visualization.save(fp) visualization = Visualization.load(fp) actual = visualization.get_index_paths() expected = {'html': 'data/index.html', 'tsv': 'data/index.tsv'} self.assertEqual(actual, expected)
def test_get_index_paths_single_from_data_dir(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) actual = visualization.get_index_paths() expected = {'html': 'data/index.html'} self.assertEqual(actual, expected)
def inspect_visualization(uuid): try: metadata = Visualization.peek(VISUALIZATIONS[uuid]) except Exception: abort(404) return jsonify({'uuid': metadata.uuid, 'type': metadata.type})
def inspect_visualization(uuid): try: metadata = Visualization.peek(VISUALIZATIONS[uuid]) except Exception: abort(404) return jsonify({'uuid': metadata.uuid, 'type': metadata.type})
def test_get_index_paths_single_from_data_dir(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) actual = visualization.get_index_paths() expected = {'html': 'data/index.html'} self.assertEqual(actual, expected)
def test_extract(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) root_dir = str(visualization.uuid) output_dir = os.path.join(self.test_dir.name, 'viz-extract-test') result_dir = Visualization.extract(fp, output_dir=output_dir) self.assertEqual(result_dir, os.path.join(output_dir, root_dir)) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/action/action.yaml' } self.assertExtractedArchiveMembers(output_dir, root_dir, expected)
def view_visualization(uuid): try: vis = Visualization.load(VISUALIZATIONS[uuid]) filePath = vis.get_index_paths(relative=False)['html'] ACTIVE_VIS[uuid] = vis except Exception: abort(404) return jsonify({'filePath': filePath})
def view_visualization(uuid): try: vis = Visualization.load(VISUALIZATIONS[uuid]) filePath = vis.get_index_paths(relative=False)['html'] ACTIVE_VIS[uuid] = vis except Exception: abort(404) return jsonify({'filePath': filePath})
def test_validate_vizualization_bad(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) with (visualization._archiver.root_dir / 'extra.file').open('w') as fh: fh.write('uh oh') with self.assertRaisesRegex(exceptions.ValidationError, r'extra\.file'): visualization.validate()
def test_ne_different_type_same_uuid(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) class Faker: @property def uuid(self): return visualization.uuid faker = Faker() self.assertNotEqual(visualization, faker)
def test_ne_different_type_same_uuid(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) class Faker: @property def uuid(self): return visualization.uuid faker = Faker() self.assertNotEqual(visualization, faker)
def test_load_with_archive_filepath_modified(self): # Save a visualization for use in the following test case. fp = os.path.join(self.test_dir.name, 'visualization.qzv') Visualization._from_data_dir(self.data_dir, self.make_provenance_capture()).save(fp) # Load the visualization from a filepath then save a different # visualization to the same filepath. Assert that both visualizations # access the correct data. # # `load` used to be lazy, only extracting data when it needed to (e.g. # when `save` or `get_index_paths` was called). This was buggy as the # filepath could have been deleted, or worse, modified to contain a # different .qzv file. Thus, the wrong archive could be extracted on # demand, or the archive could be missing altogether. There isn't an # easy cross-platform compatible way to solve this problem, so # Visualization.load is no longer lazy and always extracts its data # immediately. The real motivation for lazy loading was for quick # inspection of archives without extracting/copying data, so that API # is now provided through Visualization.peek. visualization1 = Visualization.load(fp) new_data_dir = os.path.join(self.test_dir.name, 'viz-output2') os.mkdir(new_data_dir) most_common_viz(new_data_dir, collections.Counter(range(42))) Visualization._from_data_dir(new_data_dir, self.make_provenance_capture()).save(fp) visualization2 = Visualization.load(fp) self.assertEqual(visualization1.get_index_paths(), {'html': 'data/index.html'}) self.assertEqual(visualization2.get_index_paths(), {'html': 'data/index.html', 'tsv': 'data/index.tsv'})
def test_load_with_archive_filepath_modified(self): # Save a visualization for use in the following test case. fp = os.path.join(self.test_dir.name, 'visualization.qzv') Visualization._from_data_dir(self.data_dir, self.make_provenance_capture()).save(fp) # Load the visualization from a filepath then save a different # visualization to the same filepath. Assert that both visualizations # access the correct data. # # `load` used to be lazy, only extracting data when it needed to (e.g. # when `save` or `get_index_paths` was called). This was buggy as the # filepath could have been deleted, or worse, modified to contain a # different .qzv file. Thus, the wrong archive could be extracted on # demand, or the archive could be missing altogether. There isn't an # easy cross-platform compatible way to solve this problem, so # Visualization.load is no longer lazy and always extracts its data # immediately. The real motivation for lazy loading was for quick # inspection of archives without extracting/copying data, so that API # is now provided through Visualization.peek. visualization1 = Visualization.load(fp) new_data_dir = os.path.join(self.test_dir.name, 'viz-output2') os.mkdir(new_data_dir) most_common_viz(new_data_dir, collections.Counter(range(42))) Visualization._from_data_dir(new_data_dir, self.make_provenance_capture()).save(fp) visualization2 = Visualization.load(fp) self.assertEqual(visualization1.get_index_paths(), {'html': 'data/index.html'}) self.assertEqual(visualization2.get_index_paths(), {'html': 'data/index.html', 'tsv': 'data/index.tsv'})
def test_load_and_save(self): fp1 = os.path.join(self.test_dir.name, 'visualization1.qzv') fp2 = os.path.join(self.test_dir.name, 'visualization2.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp1) visualization = Visualization.load(fp1) # Overwriting its source file works. visualization.save(fp1) # Saving to a new file works. visualization.save(fp2) root_dir = str(visualization.uuid) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/citations.bib', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp1, root_dir, expected) root_dir = str(visualization.uuid) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/citations.bib', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp2, root_dir, expected)
def test_get_index_paths_relative_false(self): data_dir = os.path.join(self.test_dir.name, 'mc-viz-output2') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) def get_abs_path(rel): return str(visualization._archiver.root_dir / rel) actual = visualization.get_index_paths(relative=False) expected = {'html': get_abs_path('data/index.html'), 'tsv': get_abs_path('data/index.tsv')} self.assertEqual(actual, expected)
def test_ne_subclass_same_uuid(self): class VisualizationSubclass(Visualization): pass fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization1 = VisualizationSubclass._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization1.save(fp) visualization2 = Visualization.load(fp) self.assertNotEqual(visualization1, visualization2) self.assertNotEqual(visualization2, visualization1)
def test_ne_subclass_same_uuid(self): class VisualizationSubclass(Visualization): pass fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization1 = VisualizationSubclass._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization1.save(fp) visualization2 = Visualization.load(fp) self.assertNotEqual(visualization1, visualization2) self.assertNotEqual(visualization2, visualization1)
def test_get_index_paths_relative_false(self): data_dir = os.path.join(self.test_dir.name, 'mc-viz-output2') os.mkdir(data_dir) most_common_viz(data_dir, collections.Counter(range(42))) visualization = Visualization._from_data_dir( data_dir, self.make_provenance_capture()) def get_abs_path(rel): return str(visualization._archiver.root_dir / rel) actual = visualization.get_index_paths(relative=False) expected = {'html': get_abs_path('data/index.html'), 'tsv': get_abs_path('data/index.tsv')} self.assertEqual(actual, expected)
def test_extract(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) root_dir = str(visualization.uuid) output_dir = os.path.join(self.test_dir.name, 'viz-extract-test') result_dir = Visualization.extract(fp, output_dir=output_dir) self.assertEqual(result_dir, os.path.join(output_dir, root_dir)) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/action/action.yaml' } self.assertExtractedArchiveMembers(output_dir, root_dir, expected)
def test_from_data_dir_and_save(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) root_dir = str(visualization.uuid) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp, root_dir, expected)
def get_visualizations(): global VISUALIZATIONS VISUALIZATIONS = {} path = os.getcwd() viz_paths = list(glob.glob(os.path.join(path, '*.qzv'))) visualizations = [] for viz_path in viz_paths: try: metadata = Visualization.peek(viz_path) name, _ = os.path.splitext(os.path.basename(viz_path)) VISUALIZATIONS[metadata.uuid] = viz_path visualizations.append( _result_record(metadata, name, '.inspect_visualization')) except Exception: pass # TODO: do better things when this happens return jsonify({'visualizations': visualizations})
def get_visualizations(): global VISUALIZATIONS VISUALIZATIONS = {} path = os.getcwd() viz_paths = list(glob.glob(os.path.join(path, '*.qzv'))) visualizations = [] for viz_path in viz_paths: try: metadata = Visualization.peek(viz_path) name, _ = os.path.splitext(os.path.basename(viz_path)) VISUALIZATIONS[metadata.uuid] = viz_path visualizations.append( _result_record(metadata, name, '.inspect_visualization')) except Exception: pass # TODO: do better things when this happens return jsonify({'visualizations': visualizations})
def test_from_data_dir_and_save(self): fp = os.path.join(self.test_dir.name, 'visualization.qzv') visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.save(fp) root_dir = str(visualization.uuid) expected = { 'VERSION', 'metadata.yaml', 'data/index.html', 'data/css/style.css', 'provenance/metadata.yaml', 'provenance/VERSION', 'provenance/action/action.yaml' } self.assertArchiveMembers(fp, root_dir, expected)
def test_viz_passed_as_input(self): saved_viz = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) method = self.plugin.methods['optional_artifacts_method'] ints1 = Artifact.import_data(IntSequence1, [0, 42, 43]) # tests Viz passed as primitive parameter with self.assertRaisesRegex( TypeError, 'Visualizations may not be used as inputs.'): method(saved_viz, 42) # tests Viz passed as Artifact input with self.assertRaisesRegex( TypeError, 'Visualizations may not be used as inputs.'): method(ints1, 42, optional1=saved_viz) # tests Viz passed as metadata method = self.plugin.methods['identity_with_optional_metadata'] with self.assertRaisesRegex( TypeError, 'Visualizations may not be used as inputs.'): method(ints1, metadata=saved_viz)
def test_save_visualization_auto_extension(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) # No extension. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv') # Wrong extension. fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip.qzv') # Correct extension. fp = os.path.join(self.test_dir.name, 'visualization.qzv') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv')
def test_save_visualization_auto_extension(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) # No extension. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv') # Wrong extension. fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip.qzv') # Correct extension. fp = os.path.join(self.test_dir.name, 'visualization.qzv') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv')
def test_from_data_dir(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertEqual(visualization.type, qiime2.core.type.Visualization) self.assertIsInstance(visualization.uuid, uuid.UUID)
def test_save_visualization_auto_extension(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) # Filename & extension endswith is matching (default). fp = os.path.join(self.test_dir.name, 'visualizationqzv') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualizationqzv.qzv') # Filename & extension endswith is matching (non-default). fp = os.path.join(self.test_dir.name, 'visualizationtxt') obs_fp = visualization.save(fp, 'txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualizationtxt.txt') # No period in filename; no period in extension. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp, 'txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # No period in filename; multiple periods in extension. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp, '..txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # Single period in filename; no period in extension. fp = os.path.join(self.test_dir.name, 'visualization.') obs_fp = visualization.save(fp, 'txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # Single period in filename; single period in extension. fp = os.path.join(self.test_dir.name, 'visualization.') obs_fp = visualization.save(fp, '.txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # Single period in filename; multiple periods in extension. fp = os.path.join(self.test_dir.name, 'visualization.') obs_fp = visualization.save(fp, '..txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # Multiple periods in filename; single period in extension. fp = os.path.join(self.test_dir.name, 'visualization..') obs_fp = visualization.save(fp, '.txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # Multiple periods in filename; multiple periods in extension. fp = os.path.join(self.test_dir.name, 'visualization..') obs_fp = visualization.save(fp, '..txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # No extension in filename; no extension input. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv') # No extension in filename; different extension input. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp, '.txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.txt') # No extension in filename; default extension input. fp = os.path.join(self.test_dir.name, 'visualization') obs_fp = visualization.save(fp, '.qzv') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv') # Different extension in filename; no extension input. fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip.qzv') # Different extension in filename; # Different extension input (non-matching). fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp, '.txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip.txt') # Different extension in filename; # Different extension input (matching). fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp, '.zip') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip') # Different extension in filename; default extension input. fp = os.path.join(self.test_dir.name, 'visualization.zip') obs_fp = visualization.save(fp, '.qzv') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.zip.qzv') # Default extension in filename; no extension input. fp = os.path.join(self.test_dir.name, 'visualization.qzv') obs_fp = visualization.save(fp) obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv') # Default extension in filename; different extension input. fp = os.path.join(self.test_dir.name, 'visualization.qzv') obs_fp = visualization.save(fp, '.txt') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv.txt') # Default extension in filename; default extension input. fp = os.path.join(self.test_dir.name, 'visualization.qzv') obs_fp = visualization.save(fp, '.qzv') obs_filename = os.path.basename(obs_fp) self.assertEqual(obs_filename, 'visualization.qzv')
def test_from_data_dir(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertEqual(visualization.type, qiime2.core.type.Visualization) self.assertIsInstance(visualization.uuid, uuid.UUID)
def test_validate_vizualization_good(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) visualization.validate() self.assertTrue(True) # Checkpoint
def test_eq_identity(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertEqual(visualization, visualization)
def test_private_constructor(self): with self.assertRaisesRegex( NotImplementedError, 'Visualization constructor.*private.*Visualization.load'): Visualization()
def test_eq_identity(self): visualization = Visualization._from_data_dir( self.data_dir, self.make_provenance_capture()) self.assertEqual(visualization, visualization)