]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101821: Test coverage for `ast.main` function (#101822)
authorNikita Sobolev <mail@sobolevn.me>
Sat, 11 Mar 2023 19:10:52 +0000 (22:10 +0300)
committerGitHub <noreply@github.com>
Sat, 11 Mar 2023 19:10:52 +0000 (11:10 -0800)
Lib/test/test_ast.py

index 7c9a57c685df75314fb88249b1623da3db1b1391..6c932e1305e1dd66f79fa3d9796d84d10ea0f0d2 100644 (file)
@@ -11,6 +11,7 @@ import weakref
 from textwrap import dedent
 
 from test import support
+from test.support import os_helper, script_helper
 from test.support.ast_helper import ASTTestMixin
 
 def to_tuple(t):
@@ -2564,6 +2565,25 @@ class ModuleStateTests(unittest.TestCase):
         self.assertEqual(res, 0)
 
 
+class ASTMainTests(unittest.TestCase):
+    # Tests `ast.main()` function.
+
+    def test_cli_file_input(self):
+        code = "print(1, 2, 3)"
+        expected = ast.dump(ast.parse(code), indent=3)
+
+        with os_helper.temp_dir() as tmp_dir:
+            filename = os.path.join(tmp_dir, "test_module.py")
+            with open(filename, 'w', encoding='utf-8') as f:
+                f.write(code)
+            res, _ = script_helper.run_python_until_end("-m", "ast", filename)
+
+        self.assertEqual(res.err, b"")
+        self.assertEqual(expected.splitlines(),
+                         res.out.decode("utf8").splitlines())
+        self.assertEqual(res.rc, 0)
+
+
 def main():
     if __name__ != '__main__':
         return