-
Jérome Perrin authored
done with: ```py import libcst as cst import sys class RewriteMakeSuite(cst.CSTTransformer): def leave_Call(self, original_node: cst.Call, updated_node: cst.Call) -> cst.BaseExpression: func = updated_node.func if isinstance(func, cst.Attribute) and isinstance(func.value, cst.Name): if func.value.value == "unittest" and func.attr.value == "makeSuite": first_arg = updated_node.args[0] # check second argument if len(updated_node.args) > 1: second = updated_node.args[1].value if isinstance(second, cst.SimpleString): val = second.evaluated_value if val != "test": print(f"ERROR: unexpected second argument {second.code!r} in {original_node.code!r}", file=sys.stderr) return updated_node else: print(f"ERROR: non-string second argument in {original_node.code!r}", file=sys.stderr) return updated_node # keep only first argument and remove comma new_args = [first_arg.with_changes(comma=None)] new_func = cst.Attribute( value=cst.Attribute( value=cst.Name("unittest"), attr=cst.Name("defaultTestLoader"), ), attr=cst.Name("loadTestsFromTestCase"), ) return updated_node.with_changes(func=new_func, args=new_args) return updated_node if __name__ == "__main__": for path in sys.argv[1:]: src = open(path).read() mod = cst.parse_module(src) new_mod = mod.visit(RewriteMakeSuite()) with open(path, "w") as f: f.write(new_mod.code) ```
054896eb