From d74b45e2b4b5ad5ed772fd452541c2ad7429c0db Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Wed, 6 Oct 2010 21:15:54 -0400
Subject: Checks to make sure XML path is writable before making the XML
 runner. Ignores it if directory is now writable.

---
 gnuradio-core/src/python/gnuradio/gr_unittest.py | 35 ++++++++++++++++--------
 1 file changed, 24 insertions(+), 11 deletions(-)

(limited to 'gnuradio-core/src/python/gnuradio/gr_unittest.py')

diff --git a/gnuradio-core/src/python/gnuradio/gr_unittest.py b/gnuradio-core/src/python/gnuradio/gr_unittest.py
index 8ecd83d547..50d484a76e 100755
--- a/gnuradio-core/src/python/gnuradio/gr_unittest.py
+++ b/gnuradio-core/src/python/gnuradio/gr_unittest.py
@@ -117,23 +117,36 @@ def run(PUT, filename=None):
 
     # Run this is given a file name
     if(filename is not None):
-        path = os.getenv("HOME") + "/.gnuradio/unittests/python"
+        homepath = os.getenv("HOME")
+        basepath = homepath + "/.gnuradio"
+        path = homepath + "/.gnuradio/unittests/python"
+
+        xmlrunner = None
+        if os.path.exists(basepath):
+            # only proceed if $HOME/.gnuradio is writable
+            st = os.stat(basepath)[stat.ST_MODE]
+            if(st & stat.S_IWUSR > 0):
+                # Test if path exists; if not, build it
+                if not os.path.exists(path):
+                    os.makedirs(path, 0750)
+
+                # Just for safety: make sure we can write here, too
+                st = os.stat(path)[stat.ST_MODE]
+                if(st & stat.S_IWUSR > 0):
+                    # Create an XML runner to filename
+                    fout = file(path+"/"+filename, "w")
+                    xmlrunner = gr_xmlrunner.XMLTestRunner(fout)
 
-        # Test if path exists; if not, build it
-        try:
-            st = os.stat(path)
-        except OSError:
-            os.makedirs(path, 0750)
-
-        # Create an XML runner to filename
-        fout = file(path+"/"+filename, "w")
-        xmlrunner = gr_xmlrunner.XMLTestRunner(fout)
         txtrunner = TextTestRunner(verbosity=1)
 
         # Run the test; runner also creates XML output file
         # FIXME: make xmlrunner output to screen so we don't have to do run and main
         suite = TestLoader().loadTestsFromTestCase(PUT)
-        xmlrunner.run(suite)
+
+        # use the xmlrunner if we can write the the directory
+        if(xmlrunner is not None):
+            xmlrunner.run(suite)
+
         main()
         
         # This will run and fail make check if problem
-- 
cgit v1.2.3