summaryrefslogtreecommitdiff
path: root/tests/test_pkg_resources.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-05-12 13:53:37 -0400
committerJason R. Coombs <jaraco@jaraco.com>2013-05-12 13:53:37 -0400
commit1effca43c2adff75787b823bcde777d52d7c95e2 (patch)
treed3cae879e2e42b0f08596906c5152e07f0dbed76 /tests/test_pkg_resources.py
parentbb930c503c9af36d7a90ed2e280745833b497a51 (diff)
parentf3dce599fca8023d441decd8c60896c44151b803 (diff)
downloadpython-setuptools-git-0.6.39.tar.gz
Merge tweaks to fix for #3750.6.39
--HG-- branch : distribute
Diffstat (limited to 'tests/test_pkg_resources.py')
-rw-r--r--tests/test_pkg_resources.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/test_pkg_resources.py b/tests/test_pkg_resources.py
new file mode 100644
index 00000000..7009b4ab
--- /dev/null
+++ b/tests/test_pkg_resources.py
@@ -0,0 +1,61 @@
+import sys
+import tempfile
+import os
+import zipfile
+
+import pkg_resources
+
+class EggRemover(unicode):
+ def __call__(self):
+ if self in sys.path:
+ sys.path.remove(self)
+ if os.path.exists(self):
+ os.remove(self)
+
+class TestZipProvider(object):
+ finalizers = []
+
+ @classmethod
+ def setup_class(cls):
+ "create a zip egg and add it to sys.path"
+ egg = tempfile.NamedTemporaryFile(suffix='.egg', delete=False)
+ zip_egg = zipfile.ZipFile(egg, 'w')
+ zip_info = zipfile.ZipInfo()
+ zip_info.filename = 'mod.py'
+ zip_info.date_time = 2013, 5, 12, 13, 25, 0
+ zip_egg.writestr(zip_info, 'x = 3\n')
+ zip_info = zipfile.ZipInfo()
+ zip_info.filename = 'data.dat'
+ zip_info.date_time = 2013, 5, 12, 13, 25, 0
+ zip_egg.writestr(zip_info, 'hello, world!')
+ zip_egg.close()
+ egg.close()
+
+ sys.path.append(egg.name)
+ cls.finalizers.append(EggRemover(egg.name))
+
+ @classmethod
+ def teardown_class(cls):
+ for finalizer in cls.finalizers:
+ finalizer()
+
+ def test_resource_filename_rewrites_on_change(self):
+ """
+ If a previous call to get_resource_filename has saved the file, but
+ the file has been subsequently mutated with different file of the
+ same size and modification time, it should not be overwritten on a
+ subsequent call to get_resource_filename.
+ """
+ import mod
+ manager = pkg_resources.ResourceManager()
+ zp = pkg_resources.ZipProvider(mod)
+ filename = zp.get_resource_filename(manager, 'data.dat')
+ assert os.stat(filename).st_mtime == 1368379500
+ f = open(filename, 'wb')
+ f.write('hello, world?')
+ f.close()
+ os.utime(filename, (1368379500, 1368379500))
+ filename = zp.get_resource_filename(manager, 'data.dat')
+ f = open(filename)
+ assert f.read() == 'hello, world!'
+ manager.cleanup_resources()