From: Nikita Sobolev Date: Sat, 11 Mar 2023 19:10:52 +0000 (+0300) Subject: gh-101821: Test coverage for `ast.main` function (#101822) X-Git-Tag: v3.12.0a7~203 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bb396eece44036a71427e7766fbb8e0247373102;p=thirdparty%2FPython%2Fcpython.git gh-101821: Test coverage for `ast.main` function (#101822) --- diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 7c9a57c685df..6c932e1305e1 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -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