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) if rc.returncode != 0: raise Exception('Error running command: {}'.format(' '.join(full_cmd_esc))) 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