Merge pull request #168 from Mic92/tests

This commit is contained in:
Jörg Thalheim 2020-05-20 15:34:34 +01:00 committed by GitHub
commit 385c5ba916
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,6 +6,7 @@ import multiprocessing
import re import re
import subprocess import subprocess
import sys import sys
from functools import partial
from pathlib import Path from pathlib import Path
from typing import List, Tuple from typing import List, Tuple
@ -26,7 +27,9 @@ def parse_readme() -> List[str]:
return list(profiles) return list(profiles)
def build_profile(profile: str) -> Tuple[str, subprocess.CompletedProcess]: def build_profile(
profile: str, verbose: bool
) -> Tuple[str, subprocess.CompletedProcess]:
# Hard-code this for now until we have enough other architectures to care about this. # Hard-code this for now until we have enough other architectures to care about this.
system = "x86_64-linux" system = "x86_64-linux"
if "raspberry-pi/2" in profile: if "raspberry-pi/2" in profile:
@ -50,7 +53,8 @@ def build_profile(profile: str) -> Tuple[str, subprocess.CompletedProcess]:
# uses import from derivation # uses import from derivation
if profile != "<nixos-hardware/toshiba/swanky>": if profile != "<nixos-hardware/toshiba/swanky>":
cmd += ["--dry-run"] cmd += ["--dry-run"]
print("$ " + " ".join(cmd)) if verbose:
print(f"$ {' '.join(cmd)}")
res = subprocess.run( res = subprocess.run(
cmd, cwd=TEST_ROOT, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, cmd, cwd=TEST_ROOT, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True,
) )
@ -66,6 +70,9 @@ def parse_args() -> argparse.Namespace:
help="Number of parallel evaluations." help="Number of parallel evaluations."
"If set to 1 it disable multi processing (suitable for debugging)", "If set to 1 it disable multi processing (suitable for debugging)",
) )
parser.add_argument(
"--verbose", action="store_true", help="Print evaluation commands executed",
)
parser.add_argument("profiles", nargs="*") parser.add_argument("profiles", nargs="*")
return parser.parse_args() return parser.parse_args()
@ -90,12 +97,13 @@ def main() -> None:
print(f"{RED}{res.stderr.rstrip()}{RESET}", file=sys.stderr) print(f"{RED}{res.stderr.rstrip()}{RESET}", file=sys.stderr)
failed_profiles.append(profile) failed_profiles.append(profile)
build = partial(build_profile, verbose=args.verbose)
if len(profiles) == 0 or args.jobs == 1: if len(profiles) == 0 or args.jobs == 1:
for profile in profiles: for profile in profiles:
eval_finished(build_profile(profile)) eval_finished(build(profile))
else: else:
pool = multiprocessing.Pool(processes=args.jobs) pool = multiprocessing.Pool(processes=args.jobs)
for r in pool.imap(build_profile, profiles): for r in pool.imap(build, profiles):
eval_finished(r) eval_finished(r)
if len(failed_profiles) > 0: if len(failed_profiles) > 0:
print(f"\n{RED}The following {len(failed_profiles)} test(s) failed:{RESET}") print(f"\n{RED}The following {len(failed_profiles)} test(s) failed:{RESET}")