def diff(realized_repository): result = shed.diff_repo(ctx, realized_repository, **kwds) # Collect data about what happened collected_data['results']['total'] += 1 if result >= 200: collected_data['results']['errors'] += 1 elif result > 0: collected_data['results']['failures'] += 1 collected_data['tests'].append({ 'classname': realized_repository.name, 'result': result, }) return result
def diff(realized_repository): # We create a temporary redirection from kwds's # output to our tempfile. This lets us capture the # diff and redirect it to their requested location as # well as to the XUnit report. diff_output = tempfile.NamedTemporaryFile(mode='r') user_requested_output = kwds.get('output', None) # Replace their output handle with ours kwds['output'] = diff_output.name captured_io = {} with captured_io_for_xunit(kwds, captured_io): result = shed.diff_repo(ctx, realized_repository, **kwds) # May be extraneous but just want to ensure entire file is written # before a copy is made. diff_output.flush() # Redirect a copy to user_requested_output if they did: if user_requested_output is not None: shutil.copy(diff_output.name, user_requested_output) else: with open(diff_output.name, "r") as f: sys.stdout.write(f.read()) # Rewind to the start of the file and read it in its entirety diff_output.seek(0) diff_output_contents = diff_output.read() diff_output.close() # Collect data about what happened collected_data['results']['total'] += 1 xunit_case = { 'name': 'shed-diff', 'classname': realized_repository.name, 'time': captured_io["time"], 'stdout': captured_io["stdout"], 'stderr': captured_io["stderr"], } if result >= 200: collected_data['results']['errors'] += 1 xunit_case.update({ 'errorType': 'DiffError', 'errorMessage': 'Error diffing repositories', 'errorContent': escape(diff_output_contents), 'time': captured_io["time"], }) elif result > 2: collected_data['results']['failures'] += 1 xunit_case.update({ 'errorType': 'PlanemoDiffError', 'errorMessage': 'Planemo error diffing repositories', 'errorContent': escape(diff_output_contents), }) elif result == 2: collected_data['results']['failures'] += 1 xunit_case.update({ 'errorType': 'RepoDoesNotExist', 'errorMessage': 'Target Repository does not exist', 'errorContent': escape(diff_output_contents), }) elif result == 1: collected_data['results']['failures'] += 1 xunit_case.update({ 'errorType': 'Different', 'errorMessage': 'Repository is different', 'errorContent': escape(diff_output_contents), }) # Append our xunit test case collected_data['tests'].append(xunit_case) return result
def diff(realized_repository): # We create a temporary redirection from kwds's # output to our tempfile. This lets us capture the # diff and redirect it to their requested location as # well as to the XUnit report. diff_output = tempfile.NamedTemporaryFile(mode="rw+b") user_requested_output = kwds.get("output", None) # Replace their output handle with ours kwds["output"] = diff_output.name captured_io = {} with captured_io_for_xunit(kwds, captured_io): result = shed.diff_repo(ctx, realized_repository, **kwds) # May be extraneous but just want to ensure entire file is written # before a copy is made. diff_output.flush() # Redirect a copy to user_requested_output if they did: if user_requested_output is not None: shutil.copy(diff_output.name, user_requested_output) # Rewind to the start of the file and read it in its entirety diff_output.seek(0) diff_output_contents = diff_output.read() diff_output.close() # Collect data about what happened collected_data["results"]["total"] += 1 xunit_case = { "name": "shed-diff", "classname": realized_repository.name, "time": captured_io["time"], "stdout": captured_io["stdout"], "stderr": captured_io["stderr"], } if result >= 200: collected_data["results"]["errors"] += 1 xunit_case.update( { "errorType": "DiffError", "errorMessage": "Error diffing repositories", "errorContent": escape(diff_output_contents), "time": captured_io["time"], } ) elif result > 2: collected_data["results"]["failures"] += 1 xunit_case.update( { "errorType": "PlanemoDiffError", "errorMessage": "Planemo error diffing repositories", "errorContent": escape(diff_output_contents), } ) elif result == 2: collected_data["results"]["failures"] += 1 xunit_case.update( { "errorType": "RepoDoesNotExist", "errorMessage": "Target Repository does not exist", "errorContent": escape(diff_output_contents), } ) elif result == 1: collected_data["results"]["failures"] += 1 xunit_case.update( { "errorType": "Different", "errorMessage": "Repository is different", "errorContent": escape(diff_output_contents), } ) # Append our xunit test case collected_data["tests"].append(xunit_case) return result
def diff(realized_repository): return shed.diff_repo(ctx, realized_repository, **kwds)