diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2019-06-03 18:35:55 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-06-03 12:35:55 -0400 |
commit | 43c6c1a9f58a8d423a2d55092609e620f9765bcf (patch) | |
tree | f0bc5783b40bbde27dc52ff01552e21258e59324 /tools/util.py | |
parent | bbc8de0c7a6a086ea7b0b79c6f5b005f9f374a7d (diff) |
Refactor test infrastructure (#2432)
* use subclass of unittest.TestCase for all test cases
* allow to run single test file (eg. python tools/integration_tests.py)
* test filtering (via --pattern/-p CLI flag)
* use common CLI parser for all tests:
usage: test.py [-h] [--failfast] [--verbose] [--executable EXECUTABLE]
[--release] [--pattern PATTERN] [--build-dir BUILD_DIR]
optional arguments:
-h, --help show this help message and exit
--failfast, -f Stop on first failure
--verbose, -v Verbose output
--executable EXECUTABLE
Use external executable of Deno
--release Test against release executable
--pattern PATTERN, -p PATTERN
Run tests that match provided pattern
--build-dir BUILD_DIR
Deno build directory
* respect NO_COLOR variable
Diffstat (limited to 'tools/util.py')
-rw-r--r-- | tools/util.py | 94 |
1 files changed, 6 insertions, 88 deletions
diff --git a/tools/util.py b/tools/util.py index c6f8a4c82..1ca4752a8 100644 --- a/tools/util.py +++ b/tools/util.py @@ -1,5 +1,4 @@ # Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. -import argparse import os import re import shutil @@ -9,12 +8,13 @@ import sys import subprocess import tempfile import time -import unittest -# FIXME support nocolor (use "" if passed?) -RESET = "\x1b[0m" -FG_RED = "\x1b[31m" -FG_GREEN = "\x1b[32m" +if os.environ.get("NO_COLOR", None): + RESET = FG_READ = FG_GREEN = "" +else: + RESET = "\x1b[0m" + FG_RED = "\x1b[31m" + FG_GREEN = "\x1b[32m" executable_suffix = ".exe" if os.name == "nt" else "" root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) @@ -373,88 +373,6 @@ def mkdtemp(): return tempfile.mkdtemp(dir=temp_dir) -class DenoTestCase(unittest.TestCase): - @property - def build_dir(self): - args = test_args() - return args.build_dir - - @property - def deno_exe(self): - return os.path.join(self.build_dir, "deno" + executable_suffix) - - -# overload the test result class -class ColorTextTestResult(unittest.TextTestResult): - def getDescription(self, test): - name = str(test) - if name.startswith("test_"): - name = name[5:] - return name - - def addSuccess(self, test): - if self.showAll: - self.stream.write(FG_GREEN) - super(ColorTextTestResult, self).addSuccess(test) - if self.showAll: - self.stream.write(RESET) - - def addError(self, test, err): - if self.showAll: - self.stream.write(FG_RED) - super(ColorTextTestResult, self).addError(test, err) - if self.showAll: - self.stream.write(RESET) - - def addFailure(self, test, err): - if self.showAll: - self.stream.write(FG_RED) - super(ColorTextTestResult, self).addFailure(test, err) - if self.showAll: - self.stream.write(RESET) - - -class ColorTextTestRunner(unittest.TextTestRunner): - resultclass = ColorTextTestResult - - -def test_main(): - args = test_args() - # FIXME(hayd) support more of the unittest.main API. - return unittest.main( - verbosity=args.verbosity + 1, - testRunner=ColorTextTestRunner, - failfast=args.failfast, - argv=['']) - - -def test_args(argv=None): - if argv is None: - argv = sys.argv[1:] - parser = argparse.ArgumentParser() - parser.add_argument( - '--failfast', '-f', action='store_true', help='Stop on first failure') - parser.add_argument( - '--verbosity', '-v', action='store_true', help='Verbose output') - parser.add_argument( - '--release', - action='store_true', - help='Test against release deno_executable') - parser.add_argument('build_dir', nargs='?', help='Deno build directory') - args = parser.parse_args(argv) - if args.build_dir and args.release: - raise argparse.ArgumentError( - None, "build_dir is inferred from --release, cannot provide both") - if not args.build_dir: - args.build_dir = build_path() - - if not os.path.isfile( - os.path.join(args.build_dir, "deno" + executable_suffix)): - raise argparse.ArgumentError(None, - "deno executable not found in build_dir") - return args - - # This function is copied from: # https://gist.github.com/hayd/4f46a68fc697ba8888a7b517a414583e # https://stackoverflow.com/q/52954248/1240268 |