import os # Copyright (c) 2020, ARM Limited. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import shlex import subprocess from enum import IntEnum, unique def run_sh_command(args, full_cmd, capture_output=False): """Utility function to run an external command. Optionally return captured stdout/stderr""" # Quote the command line for printing full_cmd_esc = [shlex.quote(x) for x in full_cmd] if args.verbose: print("### Running {}".format(" ".join(full_cmd_esc))) if capture_output: rc = subprocess.run(full_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if rc.returncode != 0: print(rc.stdout.decode("utf-8")) print(rc.stderr.decode("utf-8")) raise Exception( "Error running command: {}.\n{}".format( " ".join(full_cmd_esc), rc.stderr.decode("utf-8") ) ) return (rc.stdout, rc.stderr) else: rc = subprocess.run(full_cmd) return rc.returncode class TosaTestRunner: def __init__(self, args, runnerArgs, testDir): self.args = args self.runnerArgs = runnerArgs self.testDir = testDir # Load the json test file with open(os.path.join(testDir, "desc.json"), "r") as fd: self.testDesc = json.load(fd) def runModel(self): pass class Result(IntEnum): EXPECTED_PASS = 0 EXPECTED_FAILURE = 1 UNEXPECTED_PASS = 2 UNEXPECTED_FAILURE = 3 INTERNAL_ERROR = 4