All this code is not covered:
|
def main(): |
|
import argparse |
|
|
|
parser = argparse.ArgumentParser(prog='python -m ast') |
|
parser.add_argument('infile', type=argparse.FileType(mode='rb'), nargs='?', |
|
default='-', |
|
help='the file to parse; defaults to stdin') |
|
parser.add_argument('-m', '--mode', default='exec', |
|
choices=('exec', 'single', 'eval', 'func_type'), |
|
help='specify what kind of code must be parsed') |
|
parser.add_argument('--no-type-comments', default=True, action='store_false', |
|
help="don't add information about type comments") |
|
parser.add_argument('-a', '--include-attributes', action='store_true', |
|
help='include attributes such as line numbers and ' |
|
'column offsets') |
|
parser.add_argument('-i', '--indent', type=int, default=3, |
|
help='indentation of nodes (number of spaces)') |
|
args = parser.parse_args() |
|
|
|
with args.infile as infile: |
|
source = infile.read() |
|
tree = parse(source, args.infile.name, args.mode, type_comments=args.no_type_comments) |
|
print(dump(tree, include_attributes=args.include_attributes, indent=args.indent)) |
|
|
|
if __name__ == '__main__': |
|
main() |
Proof: https://github.com/python/cpython/blob/b652d40f1c88fcd8595cd401513f6b7f8e499471/Lib/test/test_ast.py
If I remove def main, tests still pass.
So, my proposal is: add a simple test case that ensures that ast.main is there. I don't think that we need any fancy stuff. ast.main is only a thin wrapper around ast.parse and ast.dump which are fully tested on their own.
Linked PRs
All this code is not covered:
cpython/Lib/ast.py
Lines 1712 to 1737 in b652d40
Proof: https://github.com/python/cpython/blob/b652d40f1c88fcd8595cd401513f6b7f8e499471/Lib/test/test_ast.py
If I remove
def main, tests still pass.So, my proposal is: add a simple test case that ensures that
ast.mainis there. I don't think that we need any fancy stuff.ast.mainis only a thin wrapper aroundast.parseandast.dumpwhich are fully tested on their own.Linked PRs
ast.mainfunction #101822