mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
31 lines
1.3 KiB
Python
Executable File
31 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Runs all tests for Python-based scripts.
|
|
# Any Python test suites located in test/scripts/ will be executed automatically by this script.
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
from unittest import TestLoader, TextTestRunner
|
|
|
|
SCRIPTS_DIR = Path(__file__).parent.parent / "scripts"
|
|
TEST_DIR = Path(__file__).parent.parent / "test/scripts/"
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Add the directory containing scripts to be tested to PYTHONPATH. This means that these
|
|
# scripts can be imported from anywhere (in particular from the test suites) as if they were
|
|
# installed globally. This is necessary because scripts and their tests are in separate
|
|
# directories not recognized by Python as a part of the same package (i.e. their common parent
|
|
# directory does not have an __init__.py file).
|
|
# NOTE: This does not play well with relative imports from test suites so the suites must be
|
|
# placed directly in TEST_DIR and not in its subdirectories. Relative imports from scripts
|
|
# themselves work fine though.
|
|
sys.path.insert(0, str(SCRIPTS_DIR))
|
|
|
|
# This is equivalent to `python -m unittest discover --start-directory $TEST_DIR`
|
|
test_suite = TestLoader().discover(start_dir=TEST_DIR)
|
|
result = TextTestRunner().run(test_suite)
|
|
|
|
if len(result.errors) > 0 or len(result.failures) > 0:
|
|
sys.exit(1)
|