This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年11月07日 06:05 by rbcollins, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Messages (2) | |||
|---|---|---|---|
| msg230770 - (view) | Author: Robert Collins (rbcollins) * (Python committer) | Date: 2014年11月07日 06:05 | |
TestProgram uses defaultTestLoader to load tests. Calling discover() on a TestLoader sets _top_level_dir. Calling discover with no top_level_dir implictly sets _top_level_dir but only the first time: the second time it is called with a different start_dir the prior one is used.
This leads to errors like:
======================================================================
ERROR: test_run_list_failed_import (testtools.tests.test_run.TestRun)
testtools.tests.test_run.TestRun.test_run_list_failed_import
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
File "/home/robertc/personal/testtools/testtools/tests/test_run.py", line 175, in test_run_list_failed_import
run.main, ['prog', 'discover', '-l', broken.package.base, '*.py'], out)
File "/home/robertc/personal/testtools/testtools/testcase.py", line 420, in assertRaises
self.assertThat(our_callable, matcher)
File "/home/robertc/personal/testtools/testtools/testcase.py", line 431, in assertThat
mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
File "/home/robertc/personal/testtools/testtools/testcase.py", line 481, in _matchHelper
mismatch = matcher.match(matchee)
File "/home/robertc/personal/testtools/testtools/matchers/_exception.py", line 108, in match
mismatch = self.exception_matcher.match(exc_info)
File "/home/robertc/personal/testtools/testtools/matchers/_higherorder.py", line 62, in match
mismatch = matcher.match(matchee)
File "/home/robertc/personal/testtools/testtools/testcase.py", line 412, in match
reraise(*matchee)
File "/home/robertc/personal/testtools/testtools/matchers/_exception.py", line 101, in match
result = matchee()
File "/home/robertc/personal/testtools/testtools/testcase.py", line 965, in __call__
return self._callable_object(*self._args, **self._kwargs)
File "/home/robertc/personal/testtools/testtools/run.py", line 413, in main
stdout=stdout)
File "/home/robertc/personal/testtools/testtools/run.py", line 208, in __init__
self.parseArgs(argv)
File "/home/robertc/personal/testtools/testtools/run.py", line 252, in parseArgs
self._do_discovery(argv[2:])
File "/home/robertc/personal/testtools/testtools/run.py", line 368, in _do_discovery
loaded = loader.discover(self.start, self.pattern, self.top)
File "/home/robertc/.virtualenvs/testtools-2.7/local/lib/python2.7/site-packages/unittest2/loader.py", line 353, in discover
raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: '/tmp/tmpac4uwI'
When a test tries to test the behaviour of TestProgram (or a subclass thereof).
The fix is straight forward: at the end of discover restore the value of _top_level_dir that it had at entry.
|
|||
| msg349512 - (view) | Author: Zackery Spytz (ZackerySpytz) * (Python triager) | Date: 2019年08月13日 01:13 | |
It seems that this issue is a duplicate of bpo-15010. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:09 | admin | set | github: 67000 |
| 2021年11月27日 11:55:01 | iritkatriel | set | status: open -> closed superseder: unittest: _top_level_dir is incorrectly persisted between calls to different load_test methods resolution: duplicate stage: resolved |
| 2019年08月13日 01:13:05 | ZackerySpytz | set | nosy:
+ ZackerySpytz messages: + msg349512 |
| 2014年11月07日 06:05:42 | rbcollins | set | components:
+ Library (Lib) versions: + Python 3.5 |
| 2014年11月07日 06:05:12 | rbcollins | create | |