def test_get_project_files_gitignore(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_gitignore_testfiles", exist_ok=True) os.chdir("file_globs_gitignore_testfiles") with open(".gitignore", "w") as f: f.write(""" # Start of gitignore build ignore.c /tests /upload.c /*.py *.pyc __pycache__ # End of gitignore""") files = [os.path.join("src", "main.c"), os.path.join("src", "main.h"), os.path.join("src", "lib", "ssl.c"), os.path.join("src", "tests", "main.c"), os.path.join("src", "main.py"), os.path.join("src", "upload.c"), ".coafile"] ignored_files = [os.path.join("build", "main.c"), os.path.join("tests", "run.c"), os.path.join("src", "build", "main.c"), "ignore.c", os.path.join("src", "ignore.c"), "globexp.py", "upload.c", os.path.join("src", "main.pyc"), "run.pyc"] for file in files + ignored_files: os.makedirs(os.path.dirname(os.path.abspath(file)), exist_ok=True) open(file, "w").close() files += [".gitignore"] globs = list(get_gitignore_glob(os.getcwd())) returned_files = collect_files( [os.path.join(os.getcwd(), "**")], self.log_printer, ignored_file_paths=globs) files = [os.path.normcase(os.path.abspath(file)) for file in files] ignored_files = [os.path.abspath(file) for file in ignored_files] self.maxDiff = None self.assertEqual(sorted(files), sorted(returned_files)) with suppress_stdout(): self.assertEqual( sorted(get_project_files(self.log_printer, self.printer, os.getcwd(), self.file_path_completer)[0]), sorted(files)) os.remove(".gitignore") os.chdir(orig_cwd)
def test_get_project_files(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_testfiles", exist_ok=True) os.chdir("file_globs_testfiles") os.makedirs("src", exist_ok=True) os.makedirs("ignore_dir", exist_ok=True) open(os.path.join("src", "file.c"), "w").close() open("root.c", "w").close() open(os.path.join("ignore_dir", "src.c"), "w").close() open(os.path.join("ignore_dir", "src.js"), "w").close() with retrieve_stdout() as custom_stdout, \ simulate_console_inputs("ignore_dir/**"): res, _ = get_project_files(self.log_printer, self.printer, os.getcwd(), self.file_path_completer) self.assertIn(GLOB_HELP, custom_stdout.getvalue()) self.assertIn( os.path.normcase(os.path.join(os.getcwd(), "src", "file.c")), res) self.assertIn( os.path.normcase(os.path.join(os.getcwd(), "root.c")), res) self.assertNotIn( os.path.normcase(os.path.join(os.getcwd(), "ignore_dir/src.c")), res) self.assertNotIn( os.path.normcase(os.path.join(os.getcwd(), "ignore_dir/src.js")), res) os.chdir(orig_cwd)
def main(): arg_parser = _get_arg_parser() args = arg_parser.parse_args() printer = ConsolePrinter() log_printer = LogPrinter(printer) project_dir = os.getcwd() if not args.non_interactive: print_welcome_message(printer) project_dir = ask_question("What is your project directory?", default=project_dir, typecast=valid_path) project_files, ignore_globs = get_project_files(log_printer, printer, project_dir) used_languages = list(get_used_languages(project_files)) print_used_languages(printer, used_languages) relevant_bears = filter_relevant_bears(used_languages, arg_parser) print_relevant_bears(printer, relevant_bears) if args.non_interactive: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears) write_coafile(printer, project_dir, settings)
def test_get_project_files(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_testfiles", exist_ok=True) os.chdir("file_globs_testfiles") os.makedirs("src", exist_ok=True) os.makedirs("ignore_dir", exist_ok=True) open(os.path.join("src", "file.c"), "w").close() open("root.c", "w").close() open(os.path.join("ignore_dir", "src.c"), "w").close() open(os.path.join("ignore_dir", "src.js"), "w").close() with retrieve_stdout() as custom_stdout, \ simulate_console_inputs("ignore_dir/**"): res, _ = get_project_files(self.log_printer, self.printer, os.getcwd(), self.file_path_completer) self.assertIn(GLOB_HELP, custom_stdout.getvalue()) self.assertIn(os.path.normcase( os.path.join(os.getcwd(), "src", "file.c")), res) self.assertIn(os.path.normcase( os.path.join(os.getcwd(), "root.c")), res) self.assertNotIn(os.path.normcase( os.path.join(os.getcwd(), "ignore_dir/src.c")), res) self.assertNotIn(os.path.normcase( os.path.join(os.getcwd(), "ignore_dir/src.js")), res) os.chdir(orig_cwd)
def main(): arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.non_interactive = None args.no_filter_by_capabilities = None args.incomplete_sections = None if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question('What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files(None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) print_used_languages(printer, used_languages) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears(used_languages, printer, arg_parser, extracted_information) if args.green_mode: collect_bear_settings(relevant_bears) print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def test_get_project_files_ci_mode(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__)) + os.sep + "file_globs_ci_testfiles") with suppress_stdout(): res, _ = get_project_files(self.log_printer, self.printer, os.getcwd() , True) self.assertIn(os.path.join(os.getcwd(), "src", "file.c"), res) self.assertIn(os.path.join(os.getcwd(), "root.c"), res) self.assertIn(os.path.join(os.getcwd(), "ignore_dir", "src.c"), res) self.assertIn(os.path.join(os.getcwd(), "ignore_dir", "src.js"), res) os.chdir(orig_cwd)
def test_get_project_files(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_testfiles", exist_ok=True) os.chdir("file_globs_testfiles") os.makedirs("src", exist_ok=True) os.makedirs("ignore_dir", exist_ok=True) open(os.path.join("src", "file.c"), "w").close() open("root.c", "w").close() open(os.path.join("ignore_dir", "src.c"), "w").close() open(os.path.join("ignore_dir", "src.js"), "w").close() with suppress_stdout(), simulate_console_inputs("**.c", "ignore_dir/**"): res = get_project_files(self.log_printer, self.printer, os.getcwd()) self.assertIn(os.path.join(os.getcwd(), "src", "file.c"), res) self.assertIn(os.path.join(os.getcwd(), "root.c"), res) self.assertNotIn(os.path.join(os.getcwd(), "ignore_dir/src.c"), res) self.assertNotIn(os.path.join(os.getcwd(), "ignore_dir/src.js"), res) os.chdir(orig_cwd)
def main(): printer = ConsolePrinter() log_printer = LogPrinter(printer) print_welcome_message(printer) project_dir = ask_question("What is your project directory?", default=os.getcwd(), typecast=valid_path) project_files, ignore_globs = get_project_files(log_printer, printer, project_dir) used_languages = list(get_used_languages(project_files)) print_used_languages(printer, used_languages) relevant_bears = filter_relevant_bears(used_languages) print_relevant_bears(printer, relevant_bears) settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears) write_coafile(printer, project_dir, settings)
def test_get_project_files(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_testfiles", exist_ok=True) os.chdir("file_globs_testfiles") os.makedirs("src", exist_ok=True) os.makedirs("ignore_dir", exist_ok=True) open(os.path.join("src", "file.c"), "w").close() open("root.c", "w").close() open(os.path.join("ignore_dir", "src.c"), "w").close() open(os.path.join("ignore_dir", "src.js"), "w").close() with suppress_stdout(), simulate_console_inputs("ignore_dir/**"): res, _ = get_project_files(self.log_printer, self.printer, os.getcwd()) self.assertIn(os.path.join(os.getcwd(), "src", "file.c"), res) self.assertIn(os.path.join(os.getcwd(), "root.c"), res) self.assertNotIn(os.path.join(os.getcwd(), "ignore_dir/src.c"), res) self.assertNotIn(os.path.join(os.getcwd(), "ignore_dir/src.js"), res) os.chdir(orig_cwd)
def test_get_project_files_ci_mode(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__)) + os.sep + "file_globs_ci_testfiles") with suppress_stdout(): res, _ = get_project_files(self.log_printer, self.printer, os.getcwd(), self.file_path_completer, True) paths = [ os.path.join(os.getcwd(), "src", "file.c"), os.path.join(os.getcwd(), "root.c"), os.path.join(os.getcwd(), "ignore_dir", "src.c"), os.path.join(os.getcwd(), "ignore_dir", "src.js"), ] for path in paths: self.assertIn(os.path.normcase(path), res) os.chdir(orig_cwd)
def main(): global MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.no_filter_by_capabilities = None args.incomplete_sections = None if args.max_args: MAX_ARGS_GREEN_MODE = args.max_args if args.max_values: MAX_VALUES_GREEN_MODE = args.max_values if not args.green_mode and (args.max_args or args.max_values): logging.warning(' --max-args and --max-values can be used ' 'only with --green-mode. The arguments will ' 'be ignored.') if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question( 'What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files( None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) used_languages = ask_to_select_languages(used_languages, printer, args.non_interactive) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears( used_languages, printer, arg_parser, extracted_information) if args.green_mode: bear_settings_obj = collect_bear_settings(relevant_bears) green_mode( project_dir, ignore_globs, relevant_bears, bear_settings_obj, MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE, project_files, printer, ) exit() print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings( project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def main(): global MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE arg_parser = _get_arg_parser() args = arg_parser.parse_args() logging.basicConfig(stream=sys.stdout) printer = ConsolePrinter() logging.getLogger(__name__) fpc = None project_dir = os.getcwd() if args.green_mode: args.no_filter_by_capabilities = None args.incomplete_sections = None if args.max_args: MAX_ARGS_GREEN_MODE = args.max_args if args.max_values: MAX_VALUES_GREEN_MODE = args.max_values if not args.green_mode and (args.max_args or args.max_values): logging.warning(' --max-args and --max-values can be used ' 'only with --green-mode. The arguments will ' 'be ignored.') if not args.non_interactive and not args.green_mode: fpc = FilePathCompleter() fpc.activate() print_welcome_message(printer) printer.print(PROJECT_DIR_HELP) project_dir = ask_question('What is your project directory?', default=project_dir, typecast=valid_path) fpc.deactivate() project_files, ignore_globs = get_project_files(None, printer, project_dir, fpc, args.non_interactive) used_languages = list(get_used_languages(project_files)) used_languages = ask_to_select_languages(used_languages, printer, args.non_interactive) extracted_information = collect_info(project_dir) relevant_bears = filter_relevant_bears(used_languages, printer, arg_parser, extracted_information) if args.green_mode: bear_settings_obj = collect_bear_settings(relevant_bears) green_mode( project_dir, ignore_globs, relevant_bears, bear_settings_obj, MAX_ARGS_GREEN_MODE, MAX_VALUES_GREEN_MODE, project_files, printer, ) exit() print_relevant_bears(printer, relevant_bears) if args.non_interactive and not args.incomplete_sections: unusable_bears = get_non_optional_settings_bears(relevant_bears) remove_unusable_bears(relevant_bears, unusable_bears) print_relevant_bears(printer, relevant_bears, 'usable') settings = generate_settings(project_dir, project_files, ignore_globs, relevant_bears, extracted_information, args.incomplete_sections) write_coafile(printer, project_dir, settings)
def test_get_project_files_gitignore(self): orig_cwd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) os.makedirs("file_globs_gitignore_testfiles", exist_ok=True) os.chdir("file_globs_gitignore_testfiles") with open(".gitignore", "w") as f: f.write(""" # Start of gitignore build ignore.c /tests /upload.c /*.py *.pyc __pycache__ # End of gitignore""") os.makedirs("another_folder", exist_ok=True) os.chdir("another_folder") with open('.gitignore', 'w') as f: f.write(""" # Start of gitignore *.js # End of gitignore""") os.chdir(os.path.dirname(os.path.realpath(__file__))) os.chdir("file_globs_gitignore_testfiles") os.makedirs("data", exist_ok=True) os.chdir("data") os.makedirs("sample", exist_ok=True) os.chdir("sample") with open('.gitignore', 'w') as f: f.write(""" # Start of gitignore *.html # End of gitignore""") os.chdir(os.path.dirname(os.path.realpath(__file__))) os.chdir("file_globs_gitignore_testfiles") files = [os.path.join("src", "main.c"), os.path.join("src", "main.h"), os.path.join("src", "lib", "ssl.c"), os.path.join("src", "tests", "main.c"), os.path.join("src", "main.py"), os.path.join("src", "upload.c"), os.path.join("another_folder", "another_file.c"), os.path.join("data", "sample", "index.css"), os.path.join("data", "example.py"), ".coafile"] ignored_files = [os.path.join("build", "main.c"), os.path.join("tests", "run.c"), os.path.join("src", "build", "main.c"), "ignore.c", os.path.join("src", "ignore.c"), "globexp.py", "upload.c", os.path.join("src", "main.pyc"), os.path.join("another_folder", "script.js"), os.path.join("data", "sample", "index.html"), "run.pyc"] for file in files + ignored_files: os.makedirs(os.path.dirname(os.path.abspath(file)), exist_ok=True) open(file, "w").close() files += [".gitignore"] files += [os.path.join("another_folder", ".gitignore")] files += [os.path.join("data", "sample", ".gitignore")] gitignore_dir_list = [os.getcwd(), os.path.join(os.getcwd(), "another_folder"), os.path.join(os.getcwd(), "data", "sample")] globs = list(get_gitignore_glob(os.getcwd(), gitignore_dir_list)) returned_files = collect_files( [os.path.join(os.getcwd(), "**")], self.log_printer, ignored_file_paths=globs) files = [os.path.normcase(os.path.abspath(file)) for file in files] ignored_files = [os.path.abspath(file) for file in ignored_files] self.maxDiff = None self.assertEqual(sorted(files), sorted(returned_files)) with suppress_stdout(): self.assertEqual( sorted(get_project_files(self.log_printer, self.printer, os.getcwd(), self.file_path_completer)[0]), sorted(files)) os.remove(os.path.join("another_folder", ".gitignore")) os.remove(os.path.join("data", "sample", ".gitignore")) os.remove(".gitignore") os.chdir(orig_cwd)