From 7c1a23e5e305e900059617958388487ac806fab7 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 2 Feb 2021 16:11:38 +1100 Subject: [PATCH] BIMTester custom schema is now specified as an argument, not as a test requirement, which is where it belongs. --- src/ifcbimtester/bimtester/run.py | 18 ++++++------------ src/ifcbimtester/cli.py | 5 ++--- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/ifcbimtester/bimtester/run.py b/src/ifcbimtester/bimtester/run.py index 0d80900a6c..8566e78148 100644 --- a/src/ifcbimtester/bimtester/run.py +++ b/src/ifcbimtester/bimtester/run.py @@ -3,18 +3,21 @@ import sys import shutil import tempfile import ifcopenshell +import ifcopenshell.express import behave.formatter.pretty # Needed for pyinstaller to package it from bimtester.ifc import IfcStore -from bimtester.lang import switch_locale -from behave import __version__ as behave_version from behave.__main__ import main as behave_main class TestRunner: - def __init__(self, ifc_path, ifc=None): + def __init__(self, ifc_path, ifc=None, schema=None): IfcStore.path = ifc_path IfcStore.file = ifc if ifc else ifcopenshell.open(ifc_path) + if schema: + schema = ifcopenshell.express.parse(path) + ifcopenshell.register_schema(schema) + try: # PyInstaller creates a temp folder and stores path in _MEIPASS self.base_path = sys._MEIPASS @@ -24,35 +27,26 @@ class TestRunner: self.locale_path = os.path.join(self.base_path, "locale") def run(self, args): - print("# Run tests.") tmpdir = tempfile.mkdtemp() features_path = os.path.join(tmpdir, "features") report_json = os.path.join(tmpdir, "report.json") shutil.copytree(os.path.join(self.base_path, "features"), features_path) shutil.copy(args["feature"], features_path) behave_main(self.get_behave_args(args, features_path, report_json)) - print("# All tests are finished.") return report_json def get_behave_args(self, args, features_path, report_json): behave_args = [features_path] - behave_args.extend(["--define", "localedir={}".format(self.locale_path)]) - if args["advanced_arguments"]: behave_args.extend(args["advanced_arguments"].split()) - if args["ifc"]: behave_args.extend(["--define", "ifc={}".format(args["ifc"])]) - if args["path"]: behave_args.extend(["--define", "path={}".format(args["path"])]) - if args["lang"]: behave_args.extend(["--lang={}".format(args["lang"])]) - if not args["console"]: # https://github.com/behave/behave/issues/346 behave_args.extend(["--no-capture", "--format", "json.pretty", "--outfile", report_json]) - return behave_args diff --git a/src/ifcbimtester/cli.py b/src/ifcbimtester/cli.py index 6cfc02c6a9..4671c8054b 100755 --- a/src/ifcbimtester/cli.py +++ b/src/ifcbimtester/cli.py @@ -14,15 +14,14 @@ parser.add_argument("-f", "--feature", type=str, help="Specify a feature file to parser.add_argument("-i", "--ifc", type=str, help="Specify a ifc file", required=True) parser.add_argument("-p", "--path", type=str, help="Define a path for use in tests") parser.add_argument("-r", "--report", type=str, help="Specify an output file for a HTML report") +parser.add_argument("--schema", type=str, help="Specify an output file for a HTML report") parser.add_argument("--lang", type=str, help="Specify a language", default="") args = vars(parser.parse_args()) if args["action"] == "run": - report_json = bimtester.run.TestRunner(args["ifc"]).run(args) + report_json = bimtester.run.TestRunner(args["ifc"], schema=args["schema"] or None).run(args) if args["report"]: bimtester.reports.ReportGenerator().generate(report_json, args["report"]) elif args["action"] == "purge": bimtester.clean.TestPurger().purge() - -print("# All tasks are complete :-)")