Index: /tester/tester.py
===================================================================
--- /tester/tester.py	(revision 1143)
+++ /tester/tester.py	(revision 1144)
@@ -65,5 +65,5 @@
 	# print stdout
 	stderr = stderrdata.split(os.linesep)
-	ok = check(stdnet if len(output_net) > 0 else stdout, output_list if len(output_list) > 0 else output_net, output_msg)
+	ok = check(stdnet if len(output_net) > 0 else stdout, output_list if len(output_list) > 0 else output_net, output_msg, not args.nodiff)
 
 	if p.returncode != 0 and p.returncode is not None:
@@ -75,5 +75,5 @@
 		# ==2176== ERROR SUMMARY: 597 errors from 50 contexts (suppressed: 35 from 8)
 		# ==3488== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 35 from 8)
-		if (not args.valgrind) or ("ERROR SUMMARY:" in stderrdata and " 0 errors" not in stderrdata) or (args.always_show_stderr):
+		if ((not args.valgrind) or ("ERROR SUMMARY:" in stderrdata and " 0 errors" not in stderrdata) or (args.always_show_stderr)) and not args.never_show_stderr:
 			print(stderrdata)
 
@@ -83,5 +83,5 @@
 
 
-def compare(jest, goal, was_compared_to):
+def compare(jest, goal, was_compared_to, showdiff):
 	compare = comparison.Comparison(jest, goal)
 	if compare.equal:
@@ -89,8 +89,9 @@
 	else:
 		print("\r", globals.ANSI_SETRED + " FAIL\7" + globals.ANSI_RESET)
-		try:
-			print(compare.result)
-		except UnicodeEncodeError:
-			print(compare.result.encode("utf-8")) #only encode as utf8 when it is actually used, but this looks incorrect and perhaps should not be needed if the console supports utf8?
+		if showdiff:
+			try:
+				print(compare.result)
+			except UnicodeEncodeError:
+				print(compare.result.encode("utf-8")) #only encode as utf8 when it is actually used, but this looks incorrect and perhaps should not be needed if the console supports utf8?
 			#sys.stdout.buffer.write(compare.result.encode("utf-8")) #prints nothing (on cygwin)
 		failed_result_filename = compare.list2_file + was_compared_to
@@ -108,10 +109,10 @@
 
 
-def check(stdout, output_net, output_msg):
+def check(stdout, output_net, output_msg, showdiff):
 	actual_out_msg = []
 	if len(output_net) > 0:  # in case of the server, there is no filtering
 		for line in stdout:
 			actual_out_msg.append(line)
-		return compare(actual_out_msg, output_net, '')
+		return compare(actual_out_msg, output_net, '', showdiff)
 	else:
 		FROMSCRIPT = "Script.Message: "
@@ -134,5 +135,5 @@
 		if actual_out_msg[-1] == '':  # empty line at the end which is not present in our "goal" contents
 			actual_out_msg.pop()
-		return compare(actual_out_msg, output_msg, '')
+		return compare(actual_out_msg, output_msg, '', showdiff)
 
 
@@ -198,6 +199,8 @@
 	parser.add_argument("-n", "--name", help="Test name (regexp)")  # e.g. '^((?!python).)*$' = these tests which don't have the word "python" in their name
 	parser.add_argument("-s", "--stop", help="Stops on first difference", action="store_true")
+	parser.add_argument("-d", "--nodiff", help="Don't show individual line differences, just test results", action="store_true")
 	parser.add_argument("-ds", "--diffslashes", help="Discriminate between slashes (consider / and \\ different)", action="store_true")
 	parser.add_argument("-err", "--always-show-stderr", help="Always print stderr (by default it is hidden if 0 errors in valgrind)", action="store_true")
+	parser.add_argument("-noerr", "--never-show-stderr", help="Never print stderr", action="store_true")
 	parser.add_argument("-e", "--exe", help="Regexp 'search=replace' rule(s) transforming executable name(s) into paths (eg. '(.*)=path/to/\\1.exe')", action='append')  # in the example, double backslash is just for printing
 	parser.add_argument("-p", "--platform", help="Override platform identifier (referencing platform specific files " + globals.SPEC_INSERTPLATFORMDEPENDENTFILE + "), default:sys.platform (win32,linux2)")
@@ -273,5 +276,5 @@
 						for line in main_test_filename:
 							contents.append(globals.stripEOL(line))
-					ok = compare(contents, outfile, '_file') # +line[1]
+					ok = compare(contents, outfile, '_file', not args.nodiff) # +line[1]
 				except Exception as e: # could also 'raise' for some types of exceptions if we wanted
 					print_exception(e)
