Merged in embray/pytest (pull request #37)

Adds a test for and fixes #112
This commit is contained in:
holger krekel 2013-06-09 15:07:44 +02:00
commit 2951c3ace9
2 changed files with 33 additions and 12 deletions

View File

@ -177,6 +177,10 @@ def _write_pyc(co, source_path, pyc):
# This happens when we get a EEXIST in find_module creating the
# __pycache__ directory and __pycache__ is by some non-dir node.
return False
elif err == errno.EACCES:
# The directory is read-only; this can happen for example when
# running the tests in a package installed as root
return False
raise
try:
fp.write(imp.get_magic())

View File

@ -1,4 +1,5 @@
import os
import stat
import sys
import zipfile
import py
@ -323,6 +324,18 @@ def test_rewritten():
assert "@py_builtins" in globals()""")
assert testdir.runpytest().ret == 0
def test_pycache_is_readonly(self, testdir):
cache = testdir.tmpdir.mkdir("__pycache__")
old_mode = cache.stat().mode
cache.chmod(old_mode ^ stat.S_IWRITE)
testdir.makepyfile("""
def test_rewritten():
assert "@py_builtins" in globals()""")
try:
assert testdir.runpytest().ret == 0
finally:
cache.chmod(old_mode)
def test_zipfile(self, testdir):
z = testdir.tmpdir.join("myzip.zip")
z_fn = str(z)
@ -346,8 +359,12 @@ import test_gum.test_lizard""" % (z_fn,))
def test_rewritten():
assert "@py_builtins" in globals()
""").encode("utf-8"), "wb")
old_mode = sub.stat().mode
sub.chmod(320)
try:
assert testdir.runpytest().ret == 0
finally:
sub.chmod(old_mode)
def test_dont_write_bytecode(self, testdir, monkeypatch):
testdir.makepyfile("""