remove os.sep as it behaves differently linux and windows.
* on linux it is '/' * on windows it is '\'
This commit is contained in:
parent
d5f4496bdf
commit
a0101f024e
1
AUTHORS
1
AUTHORS
|
@ -155,6 +155,7 @@ Samuele Pedroni
|
|||
Segev Finer
|
||||
Simon Gomizelj
|
||||
Skylar Downes
|
||||
Srinivas Reddy Thatiparthy
|
||||
Stefan Farmbauer
|
||||
Stefan Zimmermann
|
||||
Stefano Taschini
|
||||
|
|
|
@ -881,6 +881,18 @@ notset = Notset()
|
|||
FILE_OR_DIR = 'file_or_dir'
|
||||
|
||||
|
||||
def _iter_rewritable_modules(package_files):
|
||||
for fn in package_files:
|
||||
is_simple_module = '/' not in fn and fn.endswith('.py')
|
||||
is_package = fn.count('/') == 1 and fn.endswith('__init__.py')
|
||||
if is_simple_module:
|
||||
module_name, _ = os.path.splitext(fn)
|
||||
yield module_name
|
||||
elif is_package:
|
||||
package_name = os.path.dirname(fn)
|
||||
yield package_name
|
||||
|
||||
|
||||
class Config(object):
|
||||
""" access to configuration values, pluginmanager and plugin hooks. """
|
||||
|
||||
|
@ -1041,15 +1053,8 @@ class Config(object):
|
|||
for entry in entrypoint.dist._get_metadata(metadata)
|
||||
)
|
||||
|
||||
for fn in package_files:
|
||||
is_simple_module = os.sep not in fn and fn.endswith('.py')
|
||||
is_package = fn.count(os.sep) == 1 and fn.endswith('__init__.py')
|
||||
if is_simple_module:
|
||||
module_name, ext = os.path.splitext(fn)
|
||||
hook.mark_rewrite(module_name)
|
||||
elif is_package:
|
||||
package_name = os.path.dirname(fn)
|
||||
hook.mark_rewrite(package_name)
|
||||
for name in _iter_rewritable_modules(package_files):
|
||||
hook.mark_rewrite(name)
|
||||
|
||||
def _warn_about_missing_assertion(self, mode):
|
||||
try:
|
||||
|
@ -1351,7 +1356,7 @@ def determine_setup(inifile, args, warnfunc=None):
|
|||
rootdir, inifile, inicfg = getcfg(dirs, warnfunc=warnfunc)
|
||||
if rootdir is None:
|
||||
rootdir = get_common_ancestor([py.path.local(), ancestor])
|
||||
is_fs_root = os.path.splitdrive(str(rootdir))[1] == os.sep
|
||||
is_fs_root = os.path.splitdrive(str(rootdir))[1] == '/'
|
||||
if is_fs_root:
|
||||
rootdir = ancestor
|
||||
return rootdir, inifile, inicfg or {}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Correctly consider ``/`` as the file separator to automatically mark plugin files for rewrite on Windows.
|
|
@ -3,7 +3,7 @@ import py
|
|||
import pytest
|
||||
|
||||
import _pytest._code
|
||||
from _pytest.config import getcfg, get_common_ancestor, determine_setup
|
||||
from _pytest.config import getcfg, get_common_ancestor, determine_setup, _iter_rewritable_modules
|
||||
from _pytest.main import EXIT_NOTESTSCOLLECTED
|
||||
|
||||
|
||||
|
@ -308,6 +308,16 @@ class TestConfigAPI(object):
|
|||
config = testdir.parseconfig('--confcutdir', testdir.tmpdir.join('dir').ensure(dir=1))
|
||||
assert config.getoption('confcutdir') == str(testdir.tmpdir.join('dir'))
|
||||
|
||||
@pytest.mark.parametrize('names, expected', [
|
||||
(['bar.py'], ['bar']),
|
||||
(['foo', 'bar.py'], []),
|
||||
(['foo', 'bar.pyc'], []),
|
||||
(['foo', '__init__.py'], ['foo']),
|
||||
(['foo', 'bar', '__init__.py'], []),
|
||||
])
|
||||
def test_iter_rewritable_modules(self, names, expected):
|
||||
assert list(_iter_rewritable_modules(['/'.join(names)])) == expected
|
||||
|
||||
|
||||
class TestConfigFromdictargs(object):
|
||||
def test_basic_behavior(self):
|
||||
|
|
Loading…
Reference in New Issue