Use a dummy `INCOMPLETE` file to indicate that the test generation is incomplete
This commit is contained in:
parent
0a97f65729
commit
c9de95541f
|
@ -1,3 +1,5 @@
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import sys
|
import sys
|
||||||
|
@ -102,8 +104,11 @@ def run_generator(generator_name, test_providers: Iterable[TestProvider]):
|
||||||
yaml = YAML(pure=True)
|
yaml = YAML(pure=True)
|
||||||
yaml.default_flow_style = None
|
yaml.default_flow_style = None
|
||||||
|
|
||||||
|
log_file = Path(output_dir) / 'testgen_error_log.txt'
|
||||||
|
|
||||||
print(f"Generating tests into {output_dir}")
|
print(f"Generating tests into {output_dir}")
|
||||||
print(f"Reading configs from {args.configs_path}")
|
print(f"Reading configs from {args.configs_path}")
|
||||||
|
print(f'Error log file: {log_file}')
|
||||||
|
|
||||||
configs = args.config_list
|
configs = args.config_list
|
||||||
if configs is None:
|
if configs is None:
|
||||||
|
@ -126,14 +131,25 @@ def run_generator(generator_name, test_providers: Iterable[TestProvider]):
|
||||||
/ Path(test_case.runner_name) / Path(test_case.handler_name)
|
/ Path(test_case.runner_name) / Path(test_case.handler_name)
|
||||||
/ Path(test_case.suite_name) / Path(test_case.case_name)
|
/ Path(test_case.suite_name) / Path(test_case.case_name)
|
||||||
)
|
)
|
||||||
|
incomplete_tag_file = case_dir / "INCOMPLETE"
|
||||||
|
|
||||||
if case_dir.exists():
|
if case_dir.exists():
|
||||||
if not args.force:
|
if not args.force and not incomplete_tag_file.exists():
|
||||||
print(f'Skipping already existing test: {case_dir}')
|
print(f'Skipping already existing test: {case_dir}')
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
print(f'Warning, output directory {case_dir} already exist,'
|
print(f'Warning, output directory {case_dir} already exist,'
|
||||||
f' old files are not deleted but will be overwritten when a new version is produced')
|
f' old files will be deleted and it will generate test vector files with the latest version')
|
||||||
|
# Clear the existing case_dir folder
|
||||||
|
shutil.rmtree(case_dir)
|
||||||
|
|
||||||
print(f'Generating test: {case_dir}')
|
print(f'Generating test: {case_dir}')
|
||||||
|
|
||||||
|
# Add `INCOMPLETE` tag file to indicate that the test generation has not completed.
|
||||||
|
case_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
with incomplete_tag_file.open("w") as f:
|
||||||
|
f.write("\n")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
def output_part(out_kind: str, name: str, fn: Callable[[Path, ], None]):
|
def output_part(out_kind: str, name: str, fn: Callable[[Path, ], None]):
|
||||||
# make sure the test case directory is created before any test part is written.
|
# make sure the test case directory is created before any test part is written.
|
||||||
|
@ -170,6 +186,19 @@ def run_generator(generator_name, test_providers: Iterable[TestProvider]):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"ERROR: failed to generate vector(s) for test {case_dir}: {e}")
|
print(f"ERROR: failed to generate vector(s) for test {case_dir}: {e}")
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
# Write to log file
|
||||||
|
with log_file.open("a+") as f:
|
||||||
|
f.write(f"ERROR: failed to generate vector(s) for test {case_dir}: {e}")
|
||||||
|
traceback.print_exc(file=f)
|
||||||
|
f.write('\n')
|
||||||
|
else:
|
||||||
|
# If no written_part, the only file was incomplete_tag_file. Clear the existing case_dir folder.
|
||||||
|
if not written_part:
|
||||||
|
shutil.rmtree(case_dir)
|
||||||
|
else:
|
||||||
|
# Only remove `INCOMPLETE` tag file
|
||||||
|
os.remove(incomplete_tag_file)
|
||||||
|
|
||||||
print(f"completed {generator_name}")
|
print(f"completed {generator_name}")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue