[py-svn] r32467 - py/dist/py/rest

cfbolz at codespeak.net cfbolz at codespeak.net
Mon Sep 18 21:38:52 CEST 2006


Author: cfbolz
Date: Mon Sep 18 21:38:51 2006
New Revision: 32467

Modified:
   py/dist/py/rest/convert.py
   py/dist/py/rest/latex.py
Log:
improve error messages somewhat: print errors when a necessary executable is
not found


Modified: py/dist/py/rest/convert.py
==============================================================================
--- py/dist/py/rest/convert.py	(original)
+++ py/dist/py/rest/convert.py	Mon Sep 18 21:38:51 2006
@@ -1,6 +1,7 @@
 import py
 
 from py.__.process.cmdexec import ExecutionFailed
+from py.__.rest.testing.shared_helpers import is_on_path
 # utility functions to convert between various formats
 
 format_to_dotargument = {"png": "png",
@@ -11,16 +12,17 @@
 
 def ps2eps(ps):
     # XXX write a pure python version
+    if not is_on_path("ps2epsi") and not is_on_path("ps2eps"):
+        raise SystemExit("neither ps2eps nor ps2epsi found")
     try:
         eps = ps.new(ext=".eps")
-        py.process.cmdexec("ps2epsi %s %s" % (ps, eps))
+        py.process.cmdexec("ERROR: ps2epsi %s %s" % (ps, eps))
     except ExecutionFailed:
-        try:
-            py.process.cmdexec("ps2eps -l -f %s" % ps)
-        except ExecutionFailed:
-            raise OSError("neither ps2eps nor ps2epsi found")
+        py.process.cmdexec("ERROR: ps2eps -l -f %s" % ps)
 
 def ps2pdf(ps, compat_level="1.2"):
+    if not is_on_path("gs"):
+        raise SystemExit("ERROR: gs not found")
     pdf = ps.new(ext=".pdf")
     options = dict(OPTIONS="-dSAFER -dCompatibilityLevel=%s" % compat_level,
                    infile=ps, outfile=pdf)
@@ -32,15 +34,21 @@
 
 def eps2pdf(eps):
     # XXX write a pure python version
+    if not is_on_path("epstopdf"):
+        raise SystemExit("ERROR: epstopdf not found")
     py.process.cmdexec("epstopdf %s" % eps)
 
 def dvi2eps(dvi, dest=None):
     if dest is None:
         dest = eps.new(ext=".eps")
     command = 'dvips -q -E -n 1 -D 600 -p 1 -o %s %s' % (dest, dvi)
+    if not is_on_path("dvips"):
+        raise SystemExit("ERROR: dvips not found")
     py.process.cmdexec(command)
 
 def convert_dot(fn, new_extension):
+    if not is_on_path("dot"):
+        raise SystemExit("ERROR: dot not found")
     result = fn.new(ext=new_extension)
     print result
     arg = "-T%s" % (format_to_dotargument[new_extension], )

Modified: py/dist/py/rest/latex.py
==============================================================================
--- py/dist/py/rest/latex.py	(original)
+++ py/dist/py/rest/latex.py	Mon Sep 18 21:38:51 2006
@@ -1,6 +1,8 @@
 import py
 
 from docutils.core import publish_cmdline
+from py.__.process.cmdexec import ExecutionFailed
+from py.__.rest.testing.shared_helpers import is_on_path
 
 font_to_package = {"times": "times", "helvetica": "times",
                    "new century schoolbock": "newcent", "avant garde": "newcent",
@@ -106,6 +108,8 @@
     old.chdir()
 
 def process_rest_file(restfile, stylesheet=None, debug=False, rest_options=None):
+    if not is_on_path("pdflatex"):
+        raise SystemExit("ERROR: pdflatex not found")
     old = py.path.local()
     f = py.path.local(restfile)
     path = f.dirpath()
@@ -127,7 +131,15 @@
     publish_cmdline(writer_name='latex', argv=options)
     i = 0
     while i < 10: # there should never be as many as five reruns, but to be sure
-        latexoutput = py.process.cmdexec("pdflatex %s" % (tex, ))
+        try:
+            latexoutput = py.process.cmdexec("pdflatex %s" % (tex, ))
+        except ExecutionFailed, e:
+            print "ERROR: pdflatex execution failed"
+            print "pdflatex stdout:"
+            print e.out
+            print "pdflatex stderr:"
+            print e.err
+            raise SystemExit
         if debug:
             print latexoutput
         if py.std.re.search("LaTeX Warning:.*Rerun", latexoutput) is None:



More information about the pytest-commit mailing list