Skip to content

Commit

Permalink
issue #7464 1.8.17: test suite is failing
Browse files Browse the repository at this point in the history
On Windows the syntax with the command and arguments in one string worked but on *nix (and Cygwin) it didn't.
- changed calls to Popen to split command (see also: https://docs.python.org/3/library/subprocess.html).
- explicitly specify files to check for xhtml
- changed call to xmllint for xhtml and docbook (due to stdout overflow in some cases, we are not really interested in the, formatted, output of xmllint).
- in the update part a `read` was left, should have been removed.
  • Loading branch information
albert-github committed Jan 1, 2020
1 parent a036d64 commit cd9dee0
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions testing/runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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>.*)$')

Expand All @@ -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:
Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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')
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down

0 comments on commit cd9dee0

Please sign in to comment.