From c92113a7b131794f40ce04f133ee8bceb1656816 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 11 May 2014 13:30:29 +0200 Subject: [PATCH] improved static analysis test base --- jedi/api/__init__.py | 8 +++----- test/conftest.py | 12 ++++++++---- test/test_integration.py | 6 ++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 55cabe1f..ad943b91 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -585,7 +585,7 @@ class Script(object): return [classes.CallSignature(self._evaluator, o, call, index, key_name) for o in origins if o.is_callable()] - def analysis(self): + def _analysis(self): statements = set(chain(*self._parser.module().used_names.values())) for stmt in statements: if stmt.start_pos[0] != 254: @@ -595,10 +595,8 @@ class Script(object): else: self._evaluator.eval_statement(stmt) - for error in sorted(self._evaluator.analysis, key=lambda x: x.line): - print(repr(error)) - raise AssertionError - return self._evaluator.analysis + analysis = self._evaluator.analysis + return sorted(analysis, key=lambda x: x.line) class Interpreter(Script): diff --git a/test/conftest.py b/test/conftest.py index c6eeec85..0b41f5ae 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -68,10 +68,10 @@ def pytest_generate_tests(metafunc): refactor.collect_dir_tests(base_dir, test_files)) if 'static_analysis_case' in metafunc.fixturenames: - base_dir = os.path.dirname(__file__) + 'static_analysis' + base_dir = os.path.join(os.path.dirname(__file__), 'static_analysis') metafunc.parametrize( 'static_analysis_case', - refactor.collect_dir_tests(base_dir, test_files)) + collect_static_analysis_tests(base_dir, test_files)) def collect_static_analysis_tests(base_dir, test_files): @@ -88,6 +88,7 @@ class StaticAnalysisCase(object): The tests also start with `#!`, like the goto_definition tests. """ def __init__(self, path): + self.skip = False self._path = path with open(path) as f: self._source = f.read() @@ -101,9 +102,12 @@ class StaticAnalysisCase(object): return cases def run(self, compare_cb): - analysis = jedi.Script(self._source).analysis() + analysis = jedi.Script(self._source)._analysis() analysis = [(r.line, r.name) for r in analysis] - assert compare_cb(self, self.collect_comparison(), analysis) + assert compare_cb(self, analysis, self.collect_comparison()) + + def __repr__(self): + return "<%s: %s>" % (self.__class__.__name__, os.path.basename(self._path)) @pytest.fixture() diff --git a/test/test_integration.py b/test/test_integration.py index baf73fc1..93c51978 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -20,7 +20,7 @@ desired = %s """ % (case, actual, desired) -def test_integration(case, monkeypatch, pytestconfig): +def test_integration(case, monkeypatch): if case.skip is not None: pytest.skip(case.skip) repo_root = helpers.root_dir @@ -28,9 +28,7 @@ def test_integration(case, monkeypatch, pytestconfig): case.run(assert_case_equal) -def test_static_analysis(static_analysis_case, monkeypatch, pytestconfig): - if static_analysis_case.skip is not None: - pytest.skip(static_analysis_case.skip) +def test_static_analysis(static_analysis_case): static_analysis_case.run(assert_case_equal)