Esempio n. 1
0
    def _test_to_script_or_to_markdown(self, to_method, template_lines):
        # These methods are so similar that it makes sense to have a helper
        # that can test either one instead of duplicating a bunch of code.
        workflow = Workflow.from_markdown(self.markdown_fp)

        artifact_fp1 = os.path.join(self.test_dir.name, 'artifact1.qtf')
        artifact_fp2 = os.path.join(self.test_dir.name, 'artifact2.qtf')
        Artifact.save([-1, 42, 0, 43, 43], DummyType, None, artifact_fp1)
        Artifact.save([1, 2, 100], DummyType, None, artifact_fp2)

        artifact_fp3 = os.path.join(self.test_dir.name, 'artifact3.qtf')

        job = to_method(
            workflow,
            input_artifact_filepaths={
                'input1': artifact_fp1,
                'input2': artifact_fp2
            },
            parameter_references={
                'param1': 99,
                'param2': -999,
            },
            output_artifact_filepaths={'concatenated_inputs': artifact_fp3})

        provenance_lines = [
            "provenance = Provenance(", "parameters={", "'param2': -999"
        ]

        setup_lines = [
            "input1 = Artifact(%r).data" % artifact_fp1,
            "input2 = Artifact(%r).data" % artifact_fp2, "param1 = 99",
            "param2 = -999"
        ]

        teardown_lines = [
            "Artifact.save(concatenated_inputs, DummyType, provenance, "
            "%r)" % artifact_fp3
        ]

        for expected_lines in (provenance_lines, setup_lines, template_lines,
                               teardown_lines):
            for expected_line in expected_lines:
                self.assertIn(expected_line, job.code)

        self.assertIsInstance(job.uuid, uuid.UUID)
        self.assertEqual(job.uuid.version, 4)

        self.assertEqual(job.input_artifact_filepaths, {
            'input1': artifact_fp1,
            'input2': artifact_fp2
        })

        self.assertEqual(job.parameter_references, {
            'param1': 99,
            'param2': -999
        })

        self.assertEqual(job.output_artifact_filepaths,
                         {'concatenated_inputs': artifact_fp3})
Esempio n. 2
0
    def test_signature(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        signature = Signature(name='Dummy markdown workflow',
                              inputs={
                                  'input1': DummyType,
                                  'input2': DummyType,
                                  'param1': Int,
                                  'param2': Int,
                              },
                              outputs=collections.OrderedDict([
                                  ('concatenated_inputs', DummyType)
                              ]))

        self.assertEqual(workflow.signature, signature)
Esempio n. 3
0
    def test_from_markdown(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        expected = Workflow(signature=Signature(
            name='Dummy markdown workflow',
            inputs={
                'input1': DummyType,
                'input2': DummyType,
                'param1': Int,
                'param2': Int,
            },
            outputs=collections.OrderedDict([('concatenated_inputs', DummyType)
                                             ])),
                            template=frontmatter.parse(markdown_template)[1],
                            id_='dummy_markdown_workflow')

        self.assertEqual(workflow, expected)
Esempio n. 4
0
    def test_signature(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        signature = Signature(
            name='Dummy markdown workflow',
            inputs={
                'input1': DummyType,
                'input2': DummyType,
                'param1': Int,
                'param2': Int,
            },
            outputs=collections.OrderedDict([
                ('concatenated_inputs', DummyType)
            ])
        )

        self.assertEqual(workflow.signature, signature)
Esempio n. 5
0
    def test_signature(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        signature = Signature(
            name='Dummy markdown workflow',
            inputs={
                'input1': (qiime.core.testing.TestType, list),
                'input2': (qiime.core.testing.TestType, list)},
            parameters={
                'param1': (qiime.plugin.Int, int),
                'param2': (qiime.plugin.Int, int)},
            outputs=collections.OrderedDict([
                ('concatenated_inputs', (qiime.core.testing.TestType, list))
            ])
        )

        self.assertEqual(workflow.signature, signature)
Esempio n. 6
0
    def test_from_markdown(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        expected = Workflow(
            signature=Signature(
                name='Dummy markdown workflow',
                inputs={
                    'input1': DummyType,
                    'input2': DummyType,
                    'param1': Int,
                    'param2': Int,
                },
                outputs=collections.OrderedDict([
                    ('concatenated_inputs', DummyType)
                ])
            ),
            template=frontmatter.parse(markdown_template)[1],
            id_='dummy_markdown_workflow'
        )

        self.assertEqual(workflow, expected)
Esempio n. 7
0
    def test_from_markdown(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        expected = Workflow(
            signature=Signature(
                name='Dummy markdown workflow',
                inputs={
                    'input1': (qiime.core.testing.TestType, list),
                    'input2': (qiime.core.testing.TestType, list),
                },
                parameters={
                    'param1': (qiime.plugin.Int, int),
                    'param2': (qiime.plugin.Int, int),
                },
                outputs=collections.OrderedDict([
                    ('concatenated_inputs',
                     (qiime.core.testing.TestType, list))
                ])
            ),
            template=frontmatter.parse(markdown_template)[1],
            id_='dummy_markdown_workflow'
        )

        self.assertEqual(workflow, expected)
Esempio n. 8
0
    def test_reference(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertTrue(workflow.reference.startswith(workflow.id))
Esempio n. 9
0
    def test_name(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.name, 'Dummy markdown workflow')
Esempio n. 10
0
    def test_id(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.id, 'dummy_markdown_workflow')
Esempio n. 11
0
    def test_template(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.template,
                         frontmatter.parse(markdown_template)[1])
Esempio n. 12
0
    def test_reference(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertTrue(workflow.reference.startswith(workflow.id))
Esempio n. 13
0
    def test_name(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.name, 'Dummy markdown workflow')
Esempio n. 14
0
    def test_id(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.id, 'dummy_markdown_workflow')
Esempio n. 15
0
    def test_template(self):
        workflow = Workflow.from_markdown(self.markdown_fp)

        self.assertEqual(workflow.template,
                         frontmatter.parse(markdown_template)[1])
Esempio n. 16
0
    def _test_to_script_or_to_markdown(self, to_method, template_lines):
        # These methods are so similar that it makes sense to have a helper
        # that can test either one instead of duplicating a bunch of code.
        workflow = Workflow.from_markdown(self.markdown_fp)

        artifact_fp1 = os.path.join(self.test_dir.name, 'artifact1.qtf')
        artifact_fp2 = os.path.join(self.test_dir.name, 'artifact2.qtf')
        Artifact.save([-1, 42, 0, 43, 43], DummyType, None, artifact_fp1)
        Artifact.save([1, 2, 100], DummyType, None, artifact_fp2)

        artifact_fp3 = os.path.join(self.test_dir.name, 'artifact3.qtf')

        job = to_method(
            workflow,
            input_artifact_filepaths={
                'input1': artifact_fp1,
                'input2': artifact_fp2
            },
            parameter_references={
                'param1': 99,
                'param2': -999,
            },
            output_artifact_filepaths={
                'concatenated_inputs': artifact_fp3
            }
        )

        provenance_lines = [
            "provenance = Provenance(",
            "parameters={",
            "'param2': -999"
        ]

        setup_lines = [
            "input1 = Artifact(%r).data" % artifact_fp1,
            "input2 = Artifact(%r).data" % artifact_fp2,
            "param1 = 99",
            "param2 = -999"
        ]

        teardown_lines = [
            "Artifact.save(concatenated_inputs, DummyType, provenance, "
            "%r)" % artifact_fp3
        ]

        for expected_lines in (provenance_lines, setup_lines, template_lines,
                               teardown_lines):
            for expected_line in expected_lines:
                self.assertIn(expected_line, job.code)

        self.assertIsInstance(job.uuid, uuid.UUID)
        self.assertEqual(job.uuid.version, 4)

        self.assertEqual(
            job.input_artifact_filepaths,
            {'input1': artifact_fp1, 'input2': artifact_fp2})

        self.assertEqual(
            job.parameter_references,
            {'param1': 99, 'param2': -999})

        self.assertEqual(
            job.output_artifact_filepaths,
            {'concatenated_inputs': artifact_fp3})