summaryrefslogtreecommitdiff
path: root/tools/util.py
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-06-03 18:35:55 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-06-03 12:35:55 -0400
commit43c6c1a9f58a8d423a2d55092609e620f9765bcf (patch)
treef0bc5783b40bbde27dc52ff01552e21258e59324 /tools/util.py
parentbbc8de0c7a6a086ea7b0b79c6f5b005f9f374a7d (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.py94
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