* gnu/packages/documentation.scm (doxygen): Update to 1.8.17. [source](patches): Add doxygen-1.8.17-runtests.patch. [arguments]: Remove obsolete phase. * gnu/packages/patches/doxygen-test.patch: Adjust for upstream changes. * gnu/packages/patches/doxygen-1.8.17-runtests.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
1.8.17 was released with a broken test runner.
 | 
						|
 | 
						|
https://github.com/doxygen/doxygen/issues/7464
 | 
						|
 | 
						|
Taken from upstream:
 | 
						|
https://github.com/doxygen/doxygen/commit/cd9dee013dc749a10bbe019c350e0e62b6635795
 | 
						|
 | 
						|
diff --git a/testing/runtests.py b/testing/runtests.py
 | 
						|
index a4118b865..10fe50214 100755
 | 
						|
--- a/testing/runtests.py
 | 
						|
+++ b/testing/runtests.py
 | 
						|
@@ -3,6 +3,7 @@
 | 
						|
 from __future__ import print_function
 | 
						|
 import argparse, glob, itertools, re, shutil, os, sys
 | 
						|
 import subprocess
 | 
						|
+import shlex
 | 
						|
 
 | 
						|
 config_reg = re.compile('.*\/\/\s*(?P<name>\S+):\s*(?P<value>.*)$')
 | 
						|
 
 | 
						|
@@ -28,10 +29,10 @@ def xpopen(cmd, cmd1="",encoding='utf-8-sig', getStderr=False):
 | 
						|
 		return os.popen(cmd).read() # Python 2 without encoding
 | 
						|
 	else:
 | 
						|
 		if (getStderr):
 | 
						|
-			proc = subprocess.run(cmd1,encoding=encoding,capture_output=True) # Python 3 with encoding
 | 
						|
-			return proc.stderr
 | 
						|
+			proc = subprocess.Popen(shlex.split(cmd1),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding
 | 
						|
+			return proc.stderr.read()
 | 
						|
 		else:
 | 
						|
-			proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding
 | 
						|
+			proc = subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding
 | 
						|
 			return proc.stdout.read()
 | 
						|
 
 | 
						|
 class Tester:
 | 
						|
@@ -137,7 +138,7 @@ def prepare_test(self):
 | 
						|
 				print('GENERATE_DOCBOOK=NO', file=f)
 | 
						|
 			if (self.args.xhtml):
 | 
						|
 				print('GENERATE_HTML=YES', file=f)
 | 
						|
-			# HTML_OUTPUT can also be set locally
 | 
						|
+			# HTML_OUTPUT can also have been set locally
 | 
						|
 			print('HTML_OUTPUT=%s/html' % self.test_out, file=f)
 | 
						|
 			print('HTML_FILE_EXTENSION=.xhtml', file=f)
 | 
						|
 			if (self.args.pdf):
 | 
						|
@@ -184,7 +185,7 @@ def update_test(self,testmgr):
 | 
						|
 					print('Non-existing file %s after \'check:\' statement' % check_file)
 | 
						|
 					return
 | 
						|
 				# convert output to canonical form
 | 
						|
-				data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read()
 | 
						|
+				data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file))
 | 
						|
 				if data:
 | 
						|
 					# strip version
 | 
						|
 					data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n')
 | 
						|
@@ -326,7 +327,7 @@ def perform_test(self,testmgr):
 | 
						|
 			tests.append(glob.glob('%s/*.xml' % (docbook_output)))
 | 
						|
 			tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output)))
 | 
						|
 			tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/')
 | 
						|
-			exe_string = '%s --nonet --postvalid %s' % (self.args.xmllint,tests)
 | 
						|
+			exe_string = '%s --noout --nonet --postvalid %s' % (self.args.xmllint,tests)
 | 
						|
 			exe_string1 = exe_string
 | 
						|
 			exe_string += ' %s' % (redirx)
 | 
						|
 			exe_string += ' %s more "%s/temp"' % (separ,docbook_output)
 | 
						|
@@ -346,7 +347,11 @@ def perform_test(self,testmgr):
 | 
						|
 				redirx=' 2> %s/temp >nul:'%html_output
 | 
						|
 			else:
 | 
						|
 				redirx='2>%s/temp >/dev/null'%html_output
 | 
						|
-			exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml' % (self.args.xmllint,html_output)
 | 
						|
+			check_file = []
 | 
						|
+			check_file.append(glob.glob('%s/*.xhtml' % (html_output)))
 | 
						|
+			check_file.append(glob.glob('%s/*/*/*.xhtml' % (html_output)))
 | 
						|
+			check_file = ' '.join(list(itertools.chain.from_iterable(check_file))).replace(self.args.outputdir +'/','').replace('\\','/')
 | 
						|
+			exe_string = '%s --noout --path dtd --nonet --postvalid %s' % (self.args.xmllint,check_file)
 | 
						|
 			exe_string1 = exe_string
 | 
						|
 			exe_string += ' %s' % (redirx)
 | 
						|
 			exe_string += ' %s more "%s/temp"' % (separ,html_output)
 |