d0df704d8a
added python.path vm arg to startup script fixed infinite loop in unwrap() when displaying sequences of sequences git-svn-id: http://google-refine.googlecode.com/svn/trunk@509 7d457c2a-affb-35e4-300a-418c747d4874
99 lines
3.7 KiB
Python
99 lines
3.7 KiB
Python
import os
|
|
import py_compile
|
|
import shutil
|
|
import sys
|
|
import tempfile
|
|
import unittest
|
|
import zipfile
|
|
from test import test_support
|
|
from java.lang import Thread
|
|
|
|
class ClasspathImporterTestCase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.orig_context = Thread.currentThread().contextClassLoader
|
|
self.orig_path = sys.path
|
|
|
|
def tearDown(self):
|
|
Thread.currentThread().contextClassLoader = self.orig_context
|
|
sys.path = self.orig_path
|
|
|
|
# I don't like the checked in jar file bug1239.jar. The *one* thing I
|
|
# liked about the tests in bugtests/ is that you could create a java file,
|
|
# compile it, jar it and destroy the jar when done. Maybe when we move to
|
|
# JDK 6 and can use JSR-199 to do runtime compiling, we can go back to
|
|
# that. Anyway, see http://bugs.jython.org/issue1239. In short, jars added
|
|
# with sys.path.append where not getting scanned if they start with a top
|
|
# level package we already have, like the "org" in org.python.*
|
|
def test_bug1239(self):
|
|
sys.path.append("Lib/test/bug1239.jar")
|
|
import org.test403javapackage.test403
|
|
|
|
# different from test_bug1239 in that only a Java package is imported, not
|
|
# a Java class. I'd also like to get rid of this checked in test jar.
|
|
def test_bug1126(self):
|
|
sys.path.append("Lib/test/bug1126/bug1126.jar")
|
|
import org.subpackage
|
|
|
|
|
|
class PyclasspathImporterTestCase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.orig_context = Thread.currentThread().contextClassLoader
|
|
self.orig_path = sys.path
|
|
self.temp_dir = tempfile.mkdtemp()
|
|
self.modules = sys.modules.keys()
|
|
|
|
def tearDown(self):
|
|
Thread.currentThread().contextClassLoader = self.orig_context
|
|
sys.path = self.orig_path
|
|
shutil.rmtree(self.temp_dir)
|
|
for module in sys.modules.keys():
|
|
if module not in self.modules:
|
|
del sys.modules[module]
|
|
|
|
def setClassLoaderAndCheck(self, orig_jar, prefix, compile_path=''):
|
|
# Create a new jar and compile prefer_compiled into it
|
|
orig_jar = test_support.findfile(orig_jar)
|
|
jar = os.path.join(self.temp_dir, os.path.basename(orig_jar))
|
|
shutil.copy(orig_jar, jar)
|
|
|
|
code = os.path.join(self.temp_dir, 'prefer_compiled.py')
|
|
fp = open(code, 'w')
|
|
fp.write('compiled = True')
|
|
fp.close()
|
|
py_compile.compile(code)
|
|
zip = zipfile.ZipFile(jar, 'a')
|
|
zip.write(os.path.join(self.temp_dir, 'prefer_compiled$py.class'),
|
|
os.path.join(compile_path, 'jar_pkg',
|
|
'prefer_compiled$py.class'))
|
|
zip.close()
|
|
|
|
Thread.currentThread().contextClassLoader = test_support.make_jar_classloader(jar)
|
|
import flat_in_jar
|
|
self.assertEquals(flat_in_jar.value, 7)
|
|
import jar_pkg
|
|
self.assertEquals(prefix + '/jar_pkg/__init__.py', jar_pkg.__file__)
|
|
from jar_pkg import prefer_compiled
|
|
self.assertEquals(prefix + '/jar_pkg/prefer_compiled$py.class', prefer_compiled.__file__)
|
|
self.assert_(prefer_compiled.compiled)
|
|
self.assertRaises(NameError, __import__, 'flat_bad')
|
|
self.assertRaises(NameError, __import__, 'jar_pkg.bad')
|
|
|
|
def test_default_pyclasspath(self):
|
|
self.setClassLoaderAndCheck('classimport.jar', '__pyclasspath__')
|
|
|
|
def test_path_in_pyclasspath(self):
|
|
sys.path = ['__pyclasspath__/Lib']
|
|
self.setClassLoaderAndCheck('classimport_Lib.jar',
|
|
'__pyclasspath__/Lib', 'Lib')
|
|
|
|
|
|
def test_main():
|
|
test_support.run_unittest(ClasspathImporterTestCase,
|
|
PyclasspathImporterTestCase)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test_main()
|