diff --git a/reframe/frontend/loader.py b/reframe/frontend/loader.py index c00ca426f7..c072330efb 100644 --- a/reframe/frontend/loader.py +++ b/reframe/frontend/loader.py @@ -79,7 +79,7 @@ def _validate_source(self, filename): further tests and finalizes and validation.""" with open(filename, 'r') as f: - source_tree = ast.parse(f.read()) + source_tree = ast.parse(f.read(), filename) validator = RegressionCheckValidator() validator.visit(source_tree) diff --git a/unittests/resources/checks_unlisted/invalid_syntax_check.py b/unittests/resources/checks_unlisted/invalid_syntax_check.py new file mode 100644 index 0000000000..0e62f81758 --- /dev/null +++ b/unittests/resources/checks_unlisted/invalid_syntax_check.py @@ -0,0 +1,6 @@ +import reframe as rfm + + +@rfm.simple_test +class InvalidSyntaxTest(rfm.RegressionTest: + pass diff --git a/unittests/test_loader.py b/unittests/test_loader.py index 9f2547b65a..80143a7ed1 100644 --- a/unittests/test_loader.py +++ b/unittests/test_loader.py @@ -58,3 +58,11 @@ def test_conflicted_checks(self): def test_load_error(self): self.assertRaises(OSError, self.loader.load_from_file, 'unittests/resources/checks/foo.py') + + def test_load_invalid_sytax(self): + invalid_check = ('unittests/resources/checks_unlisted/' + 'invalid_syntax_check.py') + with self.assertRaises(SyntaxError) as e: + self.loader.load_from_file(invalid_check) + + self.assertEqual(e.exception.filename, invalid_check)