def run_job(taskname): my_workdir = workdir my_opt_tmpdir = opt_tmpdir if my_workdir is None and sbyfile is not None and not my_opt_tmpdir: my_workdir = sbyfile[:-4] if taskname is not None: my_workdir += "_" + taskname if my_workdir is not None: if opt_backup: backup_idx = 0 while os.path.exists("%s.bak%03d" % (my_workdir, backup_idx)): backup_idx += 1 early_log(my_workdir, "Moving direcory '%s' to '%s'." % (my_workdir, "%s.bak%03d" % (my_workdir, backup_idx))) shutil.move(my_workdir, "%s.bak%03d" % (my_workdir, backup_idx)) if opt_force: early_log(my_workdir, "Removing direcory '%s'." % (my_workdir)) if sbyfile: shutil.rmtree(my_workdir, ignore_errors=True) os.makedirs(my_workdir) else: my_opt_tmpdir = True my_workdir = tempfile.mkdtemp() sbyconfig, _ = read_sbyconfig(sbydata, taskname) job = SbyJob(sbyconfig, taskname, my_workdir, early_logmsgs) for k, v in exe_paths.items(): job.exe_paths[k] = v job.run() if my_opt_tmpdir: job.log("Removing direcory '%s'." % (my_workdir)) shutil.rmtree(my_workdir, ignore_errors=True) job.log("DONE (%s, rc=%d)" % (job.status, job.retcode)) return job.retcode
def run_job(taskname): my_workdir = workdir my_opt_tmpdir = opt_tmpdir if my_workdir is None and sbyfile is not None and not my_opt_tmpdir: my_workdir = sbyfile[:-4] if taskname is not None: my_workdir += "_" + taskname if my_workdir is not None: if opt_backup: backup_idx = 0 while os.path.exists("%s.bak%03d" % (my_workdir, backup_idx)): backup_idx += 1 early_log(my_workdir, "Moving direcory '%s' to '%s'." % (my_workdir, "%s.bak%03d" % (my_workdir, backup_idx))) shutil.move(my_workdir, "%s.bak%03d" % (my_workdir, backup_idx)) if opt_force: early_log(my_workdir, "Removing direcory '%s'." % (my_workdir)) if sbyfile: shutil.rmtree(my_workdir, ignore_errors=True) os.makedirs(my_workdir) else: my_opt_tmpdir = True my_workdir = tempfile.mkdtemp() junit_ts_name = os.path.basename(sbyfile[:-4]) if sbyfile is not None else workdir if workdir is not None else "stdin" junit_tc_name = taskname if taskname is not None else "default" if sbyfile is not None: junit_filename = os.path.basename(sbyfile[:-4]) if taskname is not None: junit_filename += "_" + taskname elif taskname is not None: junit_filename = taskname else: junit_filename = "junit" sbyconfig, _ = read_sbyconfig(sbydata, taskname) job = SbyJob(sbyconfig, my_workdir, early_logmsgs) for k, v in exe_paths.items(): job.exe_paths[k] = v if throw_err: job.run() else: try: job.run() except SbyAbort: pass if my_opt_tmpdir: job.log("Removing direcory '%s'." % (my_workdir)) shutil.rmtree(my_workdir, ignore_errors=True) job.log("DONE (%s, rc=%d)" % (job.status, job.retcode)) job.logfile.close() if not my_opt_tmpdir: with open("%s/%s.xml" % (job.workdir, junit_filename), "w") as f: junit_errors = 1 if job.retcode == 16 else 0 junit_failures = 1 if job.retcode != 0 and junit_errors == 0 else 0 print('<?xml version="1.0" encoding="UTF-8"?>', file=f) print('<testsuites disabled="0" errors="%d" failures="%d" tests="1" time="%d">' % (junit_errors, junit_failures, job.total_time), file=f) print('<testsuite disabled="0" errors="%d" failures="%d" name="%s" skipped="0" tests="1" time="%d">' % (junit_errors, junit_failures, junit_ts_name, job.total_time), file=f) print('<testcase classname="%s" name="%s" status="%s" time="%d">' % (junit_ts_name, junit_tc_name, job.status, job.total_time), file=f) if junit_errors: print('<error message="%s" type="%s"/>' % (job.status, job.status), file=f) if junit_failures: print('<failure message="%s" type="%s"/>' % (job.status, job.status), file=f) print('<system-out>', end="", file=f) with open("%s/logfile.txt" % (job.workdir), "r") as logf: for line in logf: print(line.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """), end="", file=f) print('</system-out></testcase></testsuite></testsuites>', file=f) with open("%s/.stamp" % (job.workdir), "w") as f: print("%s %d %d" % (job.status, job.retcode, job.total_time), file=f) return job.retcode
def run_job(taskname): my_workdir = workdir my_opt_tmpdir = opt_tmpdir if my_workdir is None and sbyfile is not None and not my_opt_tmpdir: my_workdir = sbyfile[:-4] if taskname is not None: my_workdir += "_" + taskname if my_workdir is not None: if opt_backup: backup_idx = 0 while os.path.exists("{}.bak{:03d}".format(my_workdir, backup_idx)): backup_idx += 1 early_log( my_workdir, "Moving directory '{}' to '{}'.".format( my_workdir, "{}.bak{:03d}".format(my_workdir, backup_idx))) shutil.move(my_workdir, "{}.bak{:03d}".format(my_workdir, backup_idx)) if opt_force and not reusedir: early_log(my_workdir, "Removing directory '{}'.".format(my_workdir)) if sbyfile: shutil.rmtree(my_workdir, ignore_errors=True) if reusedir: pass elif os.path.isdir(my_workdir): print("ERROR: Directory '{}' already exists.".format(my_workdir)) sys.exit(1) else: os.makedirs(my_workdir) else: my_opt_tmpdir = True my_workdir = tempfile.mkdtemp() junit_ts_name = os.path.basename( sbyfile[:-4] ) if sbyfile is not None else workdir if workdir is not None else "stdin" junit_tc_name = taskname if taskname is not None else "default" if reusedir: junit_filename = os.path.basename(my_workdir) elif sbyfile is not None: junit_filename = os.path.basename(sbyfile[:-4]) if taskname is not None: junit_filename += "_" + taskname elif taskname is not None: junit_filename = taskname else: junit_filename = "junit" sbyconfig, _ = read_sbyconfig(sbydata, taskname) job = SbyJob(sbyconfig, my_workdir, early_logmsgs, reusedir) for k, v in exe_paths.items(): job.exe_paths[k] = v if throw_err: job.run(setupmode) else: try: job.run(setupmode) except SbyAbort: pass if my_opt_tmpdir: job.log("Removing directory '{}'.".format(my_workdir)) shutil.rmtree(my_workdir, ignore_errors=True) if setupmode: job.log("SETUP COMPLETE (rc={})".format(job.retcode)) else: job.log("DONE ({}, rc={})".format(job.status, job.retcode)) job.logfile.close() if not my_opt_tmpdir and not setupmode: with open("{}/{}.xml".format(job.workdir, junit_filename), "w") as f: junit_errors = 1 if job.retcode == 16 else 0 junit_failures = 1 if job.retcode != 0 and junit_errors == 0 else 0 print('<?xml version="1.0" encoding="UTF-8"?>', file=f) print( '<testsuites disabled="0" errors="{}" failures="{}" tests="1" time="{}">' .format(junit_errors, junit_failures, job.total_time), file=f) print( '<testsuite disabled="0" errors="{}" failures="{}" name="{}" skipped="0" tests="1" time="{}">' .format(junit_errors, junit_failures, junit_ts_name, job.total_time), file=f) print('<properties>', file=f) print('<property name="os" value="{}"/>'.format(os.name), file=f) print('</properties>', file=f) print('<testcase classname="{}" name="{}" status="{}" time="{}">'. format(junit_ts_name, junit_tc_name, job.status, job.total_time), file=f) if junit_errors: print('<error message="{}" type="{}"/>'.format( job.status, job.status), file=f) if junit_failures: print('<failure message="{}" type="{}"/>'.format( job.status, job.status), file=f) print('<system-out>', end="", file=f) with open("{}/logfile.txt".format(job.workdir), "r") as logf: for line in logf: print(line.replace("&", "&").replace("<", "<").replace( ">", ">").replace("\"", """), end="", file=f) print('</system-out></testcase></testsuite></testsuites>', file=f) with open("{}/status".format(job.workdir), "w") as f: print("{} {} {}".format(job.status, job.retcode, job.total_time), file=f) return job.retcode
while os.path.exists("%s.bak%03d" % (workdir, backup_idx)): backup_idx += 1 early_log("Moving direcory '%s' to '%s'." % (workdir, "%s.bak%03d" % (workdir, backup_idx))) shutil.move(workdir, "%s.bak%03d" % (workdir, backup_idx)) if opt_force: early_log("Removing direcory '%s'." % (workdir)) if sbyfile: shutil.rmtree(workdir, ignore_errors=True) os.makedirs(workdir) else: opt_tmpdir = True workdir = tempfile.mkdtemp() job = SbyJob(sbyfile, workdir, early_logmsgs) for k, v in exe_paths.items(): job.exe_paths[k] = v job.run() if opt_tmpdir: job.log("Removing direcory '%s'." % (workdir)) shutil.rmtree(workdir, ignore_errors=True) job.log("DONE (%s, rc=%d)" % (job.status, job.retcode)) sys.exit(job.retcode)