Index: build_tools/jenkins_linux_build.sh
===================================================================
--- build_tools/jenkins_linux_build.sh	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
+++ build_tools/jenkins_linux_build.sh	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+# try to find reasonable settings, if not provided in the environment
+PYTHON=${PYTHON:-`which python`}
+PYLINT=${PYLINT:-`which pylint`}
+BUILD_TOOLS_DIR=`dirname $0`
+WORKSPACE=${WORKSPACE:-`readlink -f $BUILD_TOOLS_DIR/..`}
+# WORKSPACE top level of source
+
+cd $WORKSPACE
+rm -rf sasview-install
+mkdir sasview-install
+rm -rf dist
+rm -rf build
+
+export PYTHONPATH=$PYTHONPATH:$WORKSPACE/sasview-install:$WORKSPACE/utils
+
+$PYTHON setup.py bdist_egg
+
+cd $WORKSPACE/dist
+easy_install -N -d ../sasview-install sasview*.egg
Index: build_tools/jenkins_linux_pylint.py
===================================================================
--- build_tools/jenkins_linux_pylint.py	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
+++ build_tools/jenkins_linux_pylint.py	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+# try to find reasonable settings, if not provided in the environment
+PYTHON=${PYTHON:-`which python`}
+PYLINT=${PYLINT:-`which pylint`}
+BUILD_TOOLS_DIR=`dirname $0`
+WORKSPACE=${WORKSPACE:-`readlink -f $BUILD_TOOLS_DIR/..`}
+# WORKSPACE top level of source
+
+
+cd $WORKSPACE/sasview-install
+export SASVIEWMODULE=`echo sasview-*`
+
+export PYTHONPATH=$PYTHONPATH:$WORKSPACE/sasview-install:$WORKSPACE/utils
+
+cd $WORKSPACE
+rm -f test/*.txt
+
+$PYLINT --rcfile $WORKSPACE/build_tools/pylint.rc -f parseable sasview-install/$SASVIEWMODULE/sans sansview > test/sansview.txt || exit 0
Index: build_tools/jenkins_linux_test.sh
===================================================================
--- build_tools/jenkins_linux_test.sh	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
+++ build_tools/jenkins_linux_test.sh	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
@@ -0,0 +1,14 @@
+#! /bin/sh
+
+# try to find reasonable settings, if not provided in the environment
+PYTHON=${PYTHON:-`which python`}
+PYLINT=${PYLINT:-`which pylint`}
+BUILD_TOOLS_DIR=`dirname $0`
+WORKSPACE=${WORKSPACE:-`readlink -f $BUILD_TOOLS_DIR/..`}
+# WORKSPACE top level of source
+
+cd $WORKSPACE/test
+
+export PYTHONPATH=$PYTHONPATH:$WORKSPACE/sasview-install:$WORKSPACE/utils
+
+$PYTHON utest_sasview.py
Index: st/utest_sansview.py
===================================================================
--- test/utest_sansview.py	(revision 6813a2f799ed8472c0fd6129f24f8a3ac5f081db)
+++ 	(revision )
@@ -1,93 +1,0 @@
-import os
-import subprocess
-import re
-import sys
-try:
-    import xmlrunner
-except:
-    print "xmlrunner needs to be installed to run these tests"
-    print "Try easy_install unittest-xml-reporting"
-
-# Check whether we have matplotlib installed
-HAS_MPL_WX = True
-try:
-    import matplotlib
-    import wx
-except:
-    HAS_MPL_WX = False
-
-SKIPPED_DIRS = ["sansrealspace", "calculatorview"]
-if not HAS_MPL_WX:
-    SKIPPED_DIRS.append("sansguiframe")
-
-COMMAND_SEP = ';'
-if os.name == 'nt':
-    COMMAND_SEP = '&'
-
-def run_tests():
-    passed = 0
-    failed = 0
-    n_tests = 0
-    n_errors = 0
-    n_failures = 0
-    
-    for d in os.listdir(os.getcwd()):
-        
-        # Check for modules to be skipped
-        if d in SKIPPED_DIRS:
-            continue
-        
-        # Go through modules looking for unit tests
-        module_dir = os.path.join(os.getcwd(),d,"test")
-        if os.path.isdir(module_dir):
-            for f in os.listdir(module_dir):
-                file_path = os.path.join(module_dir,f)
-                if os.path.isfile(file_path) and f.startswith("utest_") and f.endswith(".py"):
-                    module_name,_ = os.path.splitext(f)
-                    code = "cd %s%s%s -c \"import sys;import xmlrunner;import unittest;sys.path.insert(0, '%s');" % (module_dir, COMMAND_SEP, sys.executable, module_dir)
-                    code += "from %s import *;" % module_name
-                    code += "unittest.main(testRunner=xmlrunner.XMLTestRunner(output='logs'))\""
-                    proc = subprocess.Popen(code, shell=True, stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
-                    std_out, std_err = proc.communicate()
-                    has_failed = True
-                    m = re.search("Ran ([0-9]+) test", std_out)
-                    if m is not None:
-                        has_failed = False
-                        n_tests += int(m.group(1))
-
-                    m = re.search("FAILED \(errors=([0-9]+)\)", std_out)
-                    if m is not None:
-                        has_failed = True
-                        n_errors += int(m.group(1))
-                    
-                    m = re.search("FAILED \(failures=([0-9]+)\)", std_out)
-                    if m is not None:
-                        has_failed = True
-                        n_failures += int(m.group(1))
-                    
-                    if has_failed:
-                        failed += 1
-                        print "Result for %s (%s): FAILED" % (module_name, module_dir)
-                        print std_out
-                    else:
-                        passed += 1
-                        print "Result for %s: SUCCESS" % module_name
-                        
-    print "\n----------------------------------------------"
-    print "Results by test modules:"
-    print "    PASSED: %d" % passed
-    ratio = 100.0*failed/(failed+passed)
-    print "    FAILED: %d    (%.0f%%)" % (failed,ratio) 
-    
-    print "Results by tests:"
-    print "    Tests run:    %d" % n_tests
-    print "    Tests failed: %d" % n_failures
-    print "    Test errors:  %d" % n_errors 
-    print "----------------------------------------------"
-    
-    return failed
-
-if __name__ == '__main__':
-    if run_tests()>0:
-        sys.exit(1)
-    
Index: test/utest_sasview.py
===================================================================
--- test/utest_sasview.py	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
+++ test/utest_sasview.py	(revision 280d5c014478f091b01cd5b473925266e90e90f4)
@@ -0,0 +1,93 @@
+import os
+import subprocess
+import re
+import sys
+try:
+    import xmlrunner
+except:
+    print "xmlrunner needs to be installed to run these tests"
+    print "Try easy_install unittest-xml-reporting"
+
+# Check whether we have matplotlib installed
+HAS_MPL_WX = True
+try:
+    import matplotlib
+    import wx
+except:
+    HAS_MPL_WX = False
+
+SKIPPED_DIRS = ["sansrealspace", "calculatorview"]
+if not HAS_MPL_WX:
+    SKIPPED_DIRS.append("sansguiframe")
+
+COMMAND_SEP = ';'
+if os.name == 'nt':
+    COMMAND_SEP = '&'
+
+def run_tests():
+    passed = 0
+    failed = 0
+    n_tests = 0
+    n_errors = 0
+    n_failures = 0
+    
+    for d in os.listdir(os.getcwd()):
+        
+        # Check for modules to be skipped
+        if d in SKIPPED_DIRS:
+            continue
+        
+        # Go through modules looking for unit tests
+        module_dir = os.path.join(os.getcwd(),d,"test")
+        if os.path.isdir(module_dir):
+            for f in os.listdir(module_dir):
+                file_path = os.path.join(module_dir,f)
+                if os.path.isfile(file_path) and f.startswith("utest_") and f.endswith(".py"):
+                    module_name,_ = os.path.splitext(f)
+                    code = "cd %s%s%s -c \"import sys;import xmlrunner;import unittest;sys.path.insert(0, '%s');" % (module_dir, COMMAND_SEP, sys.executable, module_dir)
+                    code += "from %s import *;" % module_name
+                    code += "unittest.main(testRunner=xmlrunner.XMLTestRunner(output='logs'))\""
+                    proc = subprocess.Popen(code, shell=True, stdout=subprocess.PIPE, stderr = subprocess.STDOUT)
+                    std_out, std_err = proc.communicate()
+                    has_failed = True
+                    m = re.search("Ran ([0-9]+) test", std_out)
+                    if m is not None:
+                        has_failed = False
+                        n_tests += int(m.group(1))
+
+                    m = re.search("FAILED \(errors=([0-9]+)\)", std_out)
+                    if m is not None:
+                        has_failed = True
+                        n_errors += int(m.group(1))
+                    
+                    m = re.search("FAILED \(failures=([0-9]+)\)", std_out)
+                    if m is not None:
+                        has_failed = True
+                        n_failures += int(m.group(1))
+                    
+                    if has_failed:
+                        failed += 1
+                        print "Result for %s (%s): FAILED" % (module_name, module_dir)
+                        print std_out
+                    else:
+                        passed += 1
+                        print "Result for %s: SUCCESS" % module_name
+                        
+    print "\n----------------------------------------------"
+    print "Results by test modules:"
+    print "    PASSED: %d" % passed
+    ratio = 100.0*failed/(failed+passed)
+    print "    FAILED: %d    (%.0f%%)" % (failed,ratio) 
+    
+    print "Results by tests:"
+    print "    Tests run:    %d" % n_tests
+    print "    Tests failed: %d" % n_failures
+    print "    Test errors:  %d" % n_errors 
+    print "----------------------------------------------"
+    
+    return failed
+
+if __name__ == '__main__':
+    if run_tests()>0:
+        sys.exit(1)
+    
