| import argparse |
| import TestScripts.NewParser as parse |
| import TestScripts.CodeGen |
| from collections import deque |
| |
| # When deprecation is forced on some nodes |
| # we ensure that a parent of a valid node is also valid |
| def correctDeprecation(node): |
| current = node.data["deprecated"] |
| for c in node.children: |
| if not correctDeprecation(c): |
| current = False |
| node.data["deprecated"] = current |
| return(current) |
| |
| def deprecateRec(root,others,deprecated): |
| if others: |
| newOthers=others.copy() |
| newOthers.popleft() |
| if root.kind == TestScripts.Parser.TreeElem.TEST: |
| if others[0].isdigit() and int(root.id) == int(others[0]): |
| root.data["deprecated"]=False |
| for c in root.children: |
| deprecateRec(c,newOthers,False) |
| else: |
| root.data["deprecated"]=True |
| for c in root.children: |
| deprecateRec(c,others,deprecated) |
| else: |
| if root.data["class"] == others[0]: |
| root.data["deprecated"]=False |
| for c in root.children: |
| deprecateRec(c,newOthers,False) |
| else: |
| root.data["deprecated"]=deprecated |
| for c in root.children: |
| deprecateRec(c,others,deprecated) |
| |
| def deprecate(root,others): |
| if others: |
| deprecateRec(root,deque(others),True) |
| correctDeprecation(root) |
| |
| parser = argparse.ArgumentParser(description='Parse test description') |
| parser.add_argument('-f', nargs='?',type = str, default="test.txt", help="File path") |
| |
| parser.add_argument('-p', nargs='?',type = str, default="Patterns", help="Pattern dir path") |
| parser.add_argument('-d', nargs='?',type = str, default="Parameters", help="Parameter dir path") |
| |
| # -e true when no semihosting |
| # Input is include files |
| # Output is only one stdout |
| # So the .h for include files need to be generated. |
| parser.add_argument('-e', action='store_true', help="Embedded test") |
| |
| parser.add_argument('others', nargs=argparse.REMAINDER) |
| |
| args = parser.parse_args() |
| |
| |
| if args.f is not None: |
| # Create a treeelemt object |
| p = parse.Parser() |
| # Create a codegen object |
| c = TestScripts.CodeGen.CodeGen(args.p,args.d, args.e) |
| # Parse the test description. |
| root = p.parse(args.f) |
| deprecate(root,args.others) |
| print(root) |
| # Generate code with the tree of tests |
| c.genCodeForTree(root) |
| else: |
| parser.print_help() |