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()