def format_and_compare(input_code, expected_output_code): formatted_code = format_code(input_code, max_line_length=MAX_LINE_LENGTH) _compare(formatted_code, expected_output_code) code_formatted_again = format_code(formatted_code, max_line_length=MAX_LINE_LENGTH) _compare_again(code_formatted_again, formatted_code) _tree_invariant_check(input_code, formatted_code) input_code_comment_stats = _gather_comment_statistics_from_code(input_code) formatted_code_comments = _gather_comments_from_code(formatted_code) _comment_preservation_check(input_code_comment_stats, formatted_code_comments)
def test_real_world_script_e2e(test_name): this_dir = os.path.dirname(os.path.abspath(__file__)) input_file_path = os.path.join(this_dir, DATA_DIR, test_name) with open(input_file_path, "r") as input_fh: input_code = input_fh.read() formatted_code = format_code(input_code, 100) check_formatting_safety(input_code, formatted_code, 100)
def format_and_compare(input_code, expected_output_code): input_code_parse_tree = parser.parse(input_code, loosen_grammar=True) formatted_code = format_code(input_code, max_line_length=MAX_LINE_LENGTH) formatted_code_parse_tree = parser.parse(formatted_code, loosen_grammar=True) _invariant_check(input_code_parse_tree, formatted_code_parse_tree) _compare(formatted_code, expected_output_code) input_code_comments = _gather_comment_statistics_from_code(input_code) formatted_code_comments = _gather_comment_statistics_from_code( formatted_code) _comment_preservation_check(input_code_comments, formatted_code_comments)
def format_with_checks( input_code, check_comment_persistence=False, check_tree_invariant=False, check_formatting_stability=False, ): formatted_code = format_code(input_code, max_line_length=MAX_LINE_LENGTH) if check_comment_persistence: input_code_comment_stats = _gather_comment_statistics_from_code( input_code) formatted_code_comments = _gather_comments_from_code(formatted_code) _comment_preservation_check(input_code_comment_stats, formatted_code_comments) if check_tree_invariant: _tree_invariant_check(input_code, formatted_code) if check_formatting_stability: code_formatted_again = format_code(formatted_code, max_line_length=MAX_LINE_LENGTH) _compare_again(code_formatted_again, formatted_code)
def main(): arguments = docopt( __doc__, version="gdformat {}".format( pkg_resources.get_distribution("gdtoolkit").version), ) files: List[str] = find_files_from(arguments["<path>"]) print(files) line_length = int(arguments["--line-length"]) if files == ["-"]: code = sys.stdin.read() code_parse_tree = parser.parse(code, gather_metadata=True) comment_parse_tree = parser.parse_comments(code) formatted_code = format_code( gdscript_code=code, max_line_length=line_length, parse_tree=code_parse_tree, comment_parse_tree=comment_parse_tree, ) check_formatting_safety( code, formatted_code, max_line_length=line_length, given_code_parse_tree=code_parse_tree, given_code_comment_parse_tree=comment_parse_tree, ) print(formatted_code, end="") elif arguments["--check"]: formattable_files = set() for file_path in files: with open(file_path, "r") as fh: code = fh.read() try: code_parse_tree = parser.parse(code, gather_metadata=True) comment_parse_tree = parser.parse_comments(code) formatted_code = format_code( gdscript_code=code, max_line_length=line_length, parse_tree=code_parse_tree, comment_parse_tree=comment_parse_tree, ) except Exception as e: print( "exception during formatting of {}".format(file_path), file=sys.stderr, ) raise e if code != formatted_code: print("would reformat {}".format(file_path), file=sys.stderr) try: check_formatting_safety( code, formatted_code, max_line_length=line_length, given_code_parse_tree=code_parse_tree, given_code_comment_parse_tree=comment_parse_tree, ) except Exception as e: print( "exception during formatting of {}".format( file_path), file=sys.stderr, ) raise e formattable_files.add(file_path) if len(formattable_files) == 0: print("{} file{} would be left unchanged".format( len(files), "s" if len(files) != 1 else "", )) sys.exit(0) formattable_num = len(formattable_files) left_unchanged_num = len(files) - formattable_num print( "{} file{} would be reformatted, {} file{} would be left unchanged." .format( formattable_num, "s" if formattable_num != 1 else "", left_unchanged_num, "s" if left_unchanged_num != 1 else "", ), file=sys.stderr, ) sys.exit(1) else: formatted_files = set() for file_path in files: with open(file_path, "r+") as fh: code = fh.read() try: code_parse_tree = parser.parse(code, gather_metadata=True) comment_parse_tree = parser.parse_comments(code) formatted_code = format_code( gdscript_code=code, max_line_length=line_length, parse_tree=code_parse_tree, comment_parse_tree=comment_parse_tree, ) except Exception as e: print( "exception during formatting of {}".format(file_path), file=sys.stderr, ) raise e if code != formatted_code: try: check_formatting_safety( code, formatted_code, max_line_length=line_length, given_code_parse_tree=code_parse_tree, given_code_comment_parse_tree=comment_parse_tree, ) except Exception as e: print( "exception during formatting of {}".format( file_path), file=sys.stderr, ) raise e print("reformatted {}".format(file_path)) formatted_files.add(file_path) fh.seek(0) fh.truncate(0) fh.write(formatted_code) reformatted_num = len(formatted_files) left_unchanged_num = len(files) - reformatted_num print("{} file{} reformatted, {} file{} left unchanged.".format( reformatted_num, "s" if reformatted_num != 1 else "", left_unchanged_num, "s" if left_unchanged_num != 1 else "", ))
import sys from gdtoolkit.formatter import format_code formatted_code = format_code(sys.argv[1], int(sys.argv[2])) print(formatted_code)