diff --git a/dacapo/run.py b/dacapo/run.py index a8667643c442e637132e50240d84613e329ff7d6..7fbfb6fe9d877c91dd09901ec5c5a1de64628b80 100644 --- a/dacapo/run.py +++ b/dacapo/run.py @@ -100,8 +100,9 @@ class Run(object): parser = Parser() cmd = self._cmd_builder.construct_static_analysis_cmd(bm) out = util.execute_cmd(cmd) - results, _, _ = parser.parse_static_analysis(out) - self._run_loaded(bm, results) + results, classes, _ = parser.parse_static_analysis(out) + filter_results = {k: v for k, v in results.iteritems() if k in classes} + self._run_loaded(bm, filter_results) else: self._run_from_jar(bm, self._cmd_builder.dacapo) @@ -136,17 +137,12 @@ class Run(object): """Runs static analysis from jar file.""" logging.debug('Running static analysis from jar file.') - classes = self._get_classes_from_jar(jar_file) - list_of_classes = '\n'.join(['%s %s' % (jar, cl) for cl, jar in classes.iteritems()]) cmd = self._cmd_builder.construct_ckjm_cmd() - out = util.execute_cmd(cmd, False, input_value=list_of_classes) - results = out.splitlines() - self.report.add_static_analysis(bm, results) def _get_classes_from_jar(self, jar_file): diff --git a/tests/run_test.py b/tests/run_test.py index 54cbd1824f9ce9199951bda2fba362f6ad6308a9..b20491ddc7cf924da965b84c567cc3908e69cea4 100644 --- a/tests/run_test.py +++ b/tests/run_test.py @@ -70,10 +70,10 @@ class TestRun(unittest.TestCase): @mock.patch('dacapo.util.execute_cmd') def test_run_ckjm(self, mock_execute_cmd): - loaded_classes = '[Loaded Bar.class from file:foo.jar]' + execution_output = 'ignore' ckjm_output = '''Bar 1 2 3 4 5 6 7 8''' - mock_execute_cmd.side_effect = [loaded_classes, ckjm_output] + mock_execute_cmd.side_effect = [execution_output, ckjm_output] my_run = Run() my_run.config(static_analysis=True, bms='fop') @@ -93,5 +93,25 @@ class TestRun(unittest.TestCase): self.assertEqual(result['ca'][0], '7') self.assertEqual(result['npm'][0], '8') + @mock.patch('dacapo.util.execute_cmd') + @mock.patch.object(Run, '_run_loaded') + def test_filtered_classes_from_ckjm(self, mock_run_loaded, mock_execute_cmd): + loaded_classes = '\n'.join(['[Loaded Bar from file:foo.jar]', + '0 1 ! Bar::run (198 bytes)', + '[Loaded Baz from file:foo.jar]' + ]) + + ckjm_output = '''Bar 1 2 3 4 5 6 7 8''' + + mock_execute_cmd.side_effect = [loaded_classes, ckjm_output] + + my_run = Run() + my_run.config(static_analysis=True, bms='fop') + + my_run.run_ckjm() + + mock_run_loaded.assert_called_with('fop', {'Bar': 'file:foo.jar'}) + + if __name__ == '__main__': unittest.main()