コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
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)
コード例 #4
0
    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)
コード例 #5
0
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)
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
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)
コード例 #9
0
    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)
コード例 #10
0
    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)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
    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)