def main(): if len(sys.argv) < 2: sys.stderr.write('command missing, exiting\n') sys.exit(1) cmd = " ".join(sys.argv[1:]) sys.stderr.write('builddriver executing: \'{}\'\n'.format(cmd)) ret = builddriver.execute(cmd) retcode = ret.returncode() if retcode == 0: msg = 'Compilation SUCCEED in {} seconds\n' else: msg = 'Compilation FAILED in {} seconds\n' sys.stderr.write(msg.format(ret.build_duration().total_seconds())) sys.stderr.write('Number of warnings: {}\n'.format(ret.warnings_no())) if ret.errors_no() > 0: sys.stderr.write('Number of errors: {}\n'.format(ret.errors_no())) error = list(ret.errors())[-1] sys.stderr.write('Last Error:\n Message: \"{}\"\n'.format( error.message)) sys.stderr.write(' Path: {}\n'.format(error.path)) sys.stderr.write(' Line Number: {}\n'.format(error.lineno)) sys.stderr.write(' Column: {}\n'.format(error.column)) sys.stderr.write('For full log, please open: {}\n'.format( ret.tmp_name())) return retcode for warn in ret.warnings(): print(warn) sys.stderr.write('For full log, please open: {}\n'.format(ret.tmp_name())) return retcode
def test_errors(self): path = os.path.join(FILE_PATH, 'make-02') ret = builddriver.execute(f'make -C {path}') self.assertTrue(ret.returncode() != 0) self.assertTrue(ret.errors_no() > 0) self.assertTrue(ret.matched_unknowns_no() == 0) self.assertTrue(ret.unmatched_no() > 0)
def test_duration(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') timedelta = ret.build_duration() # simple test, call make should be longer then 0 # on all platforms self.assertTrue(timedelta.microseconds > 1)
def test_log(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') self.assertTrue(len(ret.log()) > 0)
def test_disable_precleanup(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}', precleanup=False) # this should work as well ret.tmp_file_rm()
def test_tmp_rm(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') ret.tmp_file_rm()
def test_last_line(self): # I know this path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -w -C {path}') tail_lines = ret.taillog(limit=2) self.assertTrue('Leaving directory' in tail_lines[-1])
def test_limit(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') tail_lines = ret.taillog(limit=2) self.assertTrue(len(tail_lines) == 2)
def test_all(self): # I counted this manually, path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') self.assertTrue(len(ret.taillog()) > 2)
def test_return_code_false(self): ret = builddriver.execute('this_command_does_not_exists_hopefully') self.assertTrue(ret.returncode() != 0)
def test_return_code_true(self): ret = builddriver.execute('whereis python3') self.assertTrue(ret.returncode() == 0)
def test_duration_human(self): path = os.path.join(FILE_PATH, 'make-01') ret = builddriver.execute(f'make -C {path}') timedelta = ret.build_duration_human()