classification
Title: Failures with PYTHONDONTWRITEBYTECODE: test_importlib, test_imp, test_distutils, test_packaging, test_runpy, test_import
Type: behavior Stage: resolved
Components: Tests Versions: Python 3.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Arfrever, alexis, barry, brett.cannon, eric.araujo, ncoghlan, pitrou, r.david.murray, vstinner
Priority: normal Keywords:

Created on 2011-05-19 16:18 by pitrou, last changed 2011-09-05 14:30 by eric.araujo. This issue is now closed.

Messages (10)
msg136299 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2011-05-19 16:18
I get the following failure under a fresh checkout:

======================================================================
ERROR: test_file_from_empty_string_dir (importlib.test.source.test_file_loader.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/importlib/test/source/test_file_loader.py", line 129, in test_file_from_empty_string_dir
    shutil.rmtree(pycache)
  File "/home/antoine/t/cpython/Lib/shutil.py", line 270, in rmtree
    onerror(os.listdir, path, sys.exc_info())
  File "/home/antoine/t/cpython/Lib/shutil.py", line 268, in rmtree
    names = os.listdir(path)
OSError: [Errno 2] No such file or directory: '__pycache__'
msg136323 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2011-05-19 17:31
This is due to PYTHONDONTWRITEBYTECODE being set. Not sure this is worth fixing.
msg136348 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-05-20 00:14
The following issues has been marked as a duplicate of this issue:
 - issue #12118 (test_imp)
 - issue #12119 (test_distutils)
 - issue #12120 (test_packaging)
 - issue #12122 (test_runpy)
 - issue #12123 (test_import)

Tarek did the following commit to try to fix test_packaging:

New changeset 9d1fb6a9104b by Tarek Ziade in branch 'default':
Issue #12120, Issue #12119: tests were missing a sys.dont_write_bytecode check
http://hg.python.org/cpython/rev/9d1fb6a9104b
msg136349 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-05-20 00:16
Traceback of the duplicate issues:

======================================================================
ERROR: test_issue5604 (test.test_imp.ImportTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_imp.py", line 163, in test_issue5604
    temp_mod_name, imp.cache_from_source(temp_mod_name + '.py'))
IOError: [Errno 2] No such file or directory

======================================================================
FAIL: test_package_data (distutils.tests.test_build_py.BuildPyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/distutils/tests/test_build_py.py", line 61, in test_package_data
    self.assertTrue("__init__.pyc" in files)
AssertionError: False is not true

======================================================================
FAIL: test_package_data (packaging.tests.test_command_build_py.BuildPyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/packaging/tests/test_command_build_py.py", line 64, in test_package_data
    self.assertIn("__init__.pyc", files)
AssertionError: '__init__.pyc' not found in ['README.txt', '__init__.py']


======================================================================
ERROR: test_explicit_relative_import (test.test_runpy.RunModuleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 283, in test_explicit_relative_import
    self._check_relative_imports(depth)
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 257, in _check_relative_imports
    make_legacy_pyc(mod_fname)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: test_main_relative_import (test.test_runpy.RunModuleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 288, in test_main_relative_import
    self._check_relative_imports(depth, "__main__")
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 257, in _check_relative_imports
    make_legacy_pyc(mod_fname)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: test_run_module (test.test_runpy.RunModuleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 273, in test_run_module
    self._check_module(depth)
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 177, in _check_module
    make_legacy_pyc(mod_fname)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: test_run_package (test.test_runpy.RunModuleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 278, in test_run_package
    self._check_package(depth)
  File "/home/antoine/t/cpython/Lib/test/test_runpy.py", line 201, in _check_package
    make_legacy_pyc(mod_fname)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory


======================================================================
ERROR: test_file_to_source (test.test_import.ImportTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 253, in test_file_to_source
    make_legacy_pyc(source)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: test___cached___legacy_pyc (test.test_import.PycacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 584, in test___cached___legacy_pyc
    pyc_file = make_legacy_pyc(self.source)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
ERROR: test_missing_source_legacy (test.test_import.PycacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 564, in test_missing_source_legacy
    pyc_file = make_legacy_pyc(self.source)
  File "/home/antoine/t/cpython/Lib/test/support.py", line 217, in make_legacy_pyc
    os.rename(pyc_file, legacy_pyc)
OSError: [Errno 2] No such file or directory

======================================================================
FAIL: test_execute_bit_not_copied (test.test_import.ImportTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 112, in test_execute_bit_not_copied
    self.fail("__import__ did not result in creation of "
AssertionError: __import__ did not result in creation of either a .pyc or .pyo file

======================================================================
FAIL: test_import_pyc_path (test.test_import.PycacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 531, in test_import_pyc_path
    self.assertTrue(os.path.exists('__pycache__'))
AssertionError: False is not true

======================================================================
FAIL: test_missing_source (test.test_import.PycacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 552, in test_missing_source
    self.assertTrue(os.path.exists(pyc_file))
AssertionError: False is not true

======================================================================
FAIL: test_unwritable_directory (test.test_import.PycacheTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/antoine/t/cpython/Lib/test/test_import.py", line 543, in test_unwritable_directory
    self.assertTrue(os.path.exists('__pycache__'))
AssertionError: False is not true

---

Antoine's setup (msg136318):

"Indeed, PYTHONDONTWRITEBYTECODE seems set by default on this Linux install... Ouch."
msg136357 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2011-05-20 08:57
Several of these could be handled just by having test.support.make_legacy_pyc() fall back to compiling from source if sys.dont_write_bytecode is set.

The others may need to be skipped in that situation.
msg136379 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2011-05-20 15:04
Honestly, now that it's been established that it has to do with a bogus system default (on Mageia/Mandriva installs), I'm not sure it's worth fixing if it means adding more logic to the tests.
msg136381 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011-05-20 15:07
In fact, not fixing it might send a small message as to what we think about that particular system default :)
msg143403 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-09-02 15:42
Is this still relevant?
msg143435 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2011-09-02 21:11
Unless someone cares enough to decorate the tests that should not write the bytecode (I think I have one such decorator in the importlib tests, but I think it is more for other VMs than for this situation) then I wouldn't worry about this.
msg143514 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-09-05 14:30
Alright, closing.
History
Date User Action Args
2011-09-05 14:30:15eric.araujosetstatus: open -> closed
resolution: fixed
messages: + msg143514

stage: resolved
2011-09-02 21:11:57brett.cannonsetmessages: + msg143435
2011-09-02 15:42:48eric.araujosetmessages: + msg143403
2011-05-20 21:00:18Arfreversetnosy: + Arfrever
2011-05-20 15:07:11r.david.murraysetnosy: + r.david.murray
messages: + msg136381
2011-05-20 15:04:45pitrousetassignee: brett.cannon ->
messages: + msg136379
2011-05-20 08:57:32ncoghlansetmessages: + msg136357
2011-05-20 00:18:43vstinnersettitle: test_importlib failure -> Failures with PYTHONDONTWRITEBYTECODE: test_importlib, test_imp, test_distutils, test_packaging, test_runpy, test_import
2011-05-20 00:17:43vstinnersetnosy: + eric.araujo, alexis
2011-05-20 00:16:27vstinnersetmessages: + msg136349
2011-05-20 00:14:00vstinnersetnosy: + vstinner
messages: + msg136348
2011-05-19 17:31:22pitrousetmessages: + msg136323
2011-05-19 16:18:05pitroucreate