From ea7827ba3a7fabe862a1ab06d793c968cb397920 Mon Sep 17 00:00:00 2001 From: Johannes Bechberger Date: Sat, 19 Nov 2016 19:13:20 +0100 Subject: [PATCH] Add `--no_color` option for uncolored output --- README.mdwn | 3 ++- mjtest/cli.py | 2 ++ mjtest/environment.py | 7 +++++-- mjtest/util/utils.py | 28 ++++++++++++++++++++-------- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/README.mdwn b/README.mdwn index 29598f7..3d7185e 100644 --- a/README.mdwn +++ b/README.mdwn @@ -127,7 +127,7 @@ Output of the `./mjt.py --help` ``` usage: mjt.py [-h] [--only_incorrect_tests] [--produce_no_reports] [--produce_all_reports] [--parallel] - [--output_no_incorrect_reports] [--ci_testing] + [--output_no_incorrect_reports] [--no_color] [--ci_testing] [--log_level LOG_LEVEL] {all,lexer,syntax,ast,semantic,exec} MJ_RUN @@ -151,6 +151,7 @@ optional arguments: --parallel Run the tests in parallel --output_no_incorrect_reports Output the long report for every incorrect test case + --no_color Output no color codes --ci_testing In mode X the succeeding test cases of later modes/phases should also succeed in this mode, and failing test cases of prior modes/phases should also diff --git a/mjtest/cli.py b/mjtest/cli.py index 56c1b40..1264b9b 100644 --- a/mjtest/cli.py +++ b/mjtest/cli.py @@ -48,6 +48,8 @@ if True:#__name__ == '__main__': help="Run the tests in parallel") parser.add_argument("--output_no_incorrect_reports", action="store_true", default=False, help="Output the long report for every incorrect test case") + parser.add_argument("--no_color", action="store_true", default=False, + help="Output no color codes") parser.add_argument("--ci_testing", action="store_true", default=False, help="In mode X the succeeding test cases of later modes/phases should also succeed in " "this mode, and failing test cases of prior modes/phases should also fail in this phase.") diff --git a/mjtest/environment.py b/mjtest/environment.py index 23b32b3..1cd7247 100644 --- a/mjtest/environment.py +++ b/mjtest/environment.py @@ -6,7 +6,8 @@ import tempfile from datetime import datetime import time from mjtest.util.shell import execute -from mjtest.util.utils import get_mjtest_basedir +from mjtest.util.utils import get_mjtest_basedir, disable_colored_output +import mjtest.util.utils from typing import Tuple, List from preproc.preproc.preprocessor import PreProcessor, PreProcessorError, is_importable_file @@ -45,7 +46,9 @@ class Environment: timeout: int = 30, report_dir: str = "", log_level: str = "warn", produce_no_reports: bool = True, output_no_incorrect_reports: bool = False, produce_all_reports: bool = False, report_subdir: str = None, - ci_testing: bool = False): + ci_testing: bool = False, no_color: bool = False): + if no_color: + disable_colored_output() self.mode = mode self.mj_run_cmd = os.path.realpath(mj_run) diff --git a/mjtest/util/utils.py b/mjtest/util/utils.py index eef3bbb..ea560ee 100644 --- a/mjtest/util/utils.py +++ b/mjtest/util/utils.py @@ -3,6 +3,18 @@ from os import path import sys from typing import Tuple +COLOR_OUTPUT_IF_POSSIBLE = True + +try: + import termcolor +except ImportError: + COLOR_OUTPUT_IF_POSSIBLE = False + + +def disable_colored_output(): + global COLOR_OUTPUT_IF_POSSIBLE + COLOR_OUTPUT_IF_POSSIBLE = False + def get_mjtest_basedir() -> str: return path.dirname(path.dirname(path.dirname(path.realpath(__file__)))) @@ -12,10 +24,10 @@ def colored(text: str, *args, **kwargs): """ Wrapper around termcolor.colored (if it's loadable) """ - try: - from termcolor import colored - return colored(text, *args, **kwargs) - except ImportError: + global COLOR_OUTPUT_IF_POSSIBLE + if COLOR_OUTPUT_IF_POSSIBLE: + return termcolor.colored(text, *args, **kwargs) + else: return text @@ -23,8 +35,8 @@ def cprint(text: str, *args, **kwargs): """ Wrapper around termcolor.cprint (if it's loadable) """ - try: - from termcolor import cprint - cprint(text, *args, **kwargs) - except ImportError: + global COLOR_OUTPUT_IF_POSSIBLE + if COLOR_OUTPUT_IF_POSSIBLE: + termcolor.cprint(text, *args, **kwargs) + else: print(text) \ No newline at end of file -- GitLab