use presence of activate script rather than sys.prefix to determine if a dir is a virtualenv
This commit is contained in:
		
							parent
							
								
									676c4f970d
								
							
						
					
					
						commit
						b32cfc88da
					
				|  | @ -169,6 +169,17 @@ def pytest_runtestloop(session): | ||||||
|     return True |     return True | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def _in_venv(path): | ||||||
|  |     """Attempts to detect if ``path`` is the root of a Virtual Environment by | ||||||
|  |     checking for the existence of the appropriate activate script""" | ||||||
|  |     bindir = path.join('Scripts' if sys.platform.startswith('win') else 'bin') | ||||||
|  |     if not bindir.exists(): | ||||||
|  |         return False | ||||||
|  |     activates = ('activate', 'activate.csh', 'activate.fish', | ||||||
|  |                  'Activate', 'Activate.bat', 'Activate.ps1') | ||||||
|  |     return any([fname.basename in activates for fname in bindir.listdir()]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def pytest_ignore_collect(path, config): | def pytest_ignore_collect(path, config): | ||||||
|     ignore_paths = config._getconftest_pathlist("collect_ignore", path=path.dirpath()) |     ignore_paths = config._getconftest_pathlist("collect_ignore", path=path.dirpath()) | ||||||
|     ignore_paths = ignore_paths or [] |     ignore_paths = ignore_paths or [] | ||||||
|  | @ -179,11 +190,10 @@ def pytest_ignore_collect(path, config): | ||||||
|     if py.path.local(path) in ignore_paths: |     if py.path.local(path) in ignore_paths: | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     invenv =  py.path.local(sys.prefix) == path |     allow_in_venv = config.getoption("collect_in_virtualenv") | ||||||
|     allow_invenv = config.getoption("collect_in_virtualenv") |     if _in_venv(path) and not allow_in_venv: | ||||||
|     if invenv and not allow_invenv: |  | ||||||
|         config.warn(RuntimeWarning, |         config.warn(RuntimeWarning, | ||||||
|             'Path "%s" appears to be a Python installation; skipping\n' |             'Path "%s" appears to be a Python virtual installation; skipping\n' | ||||||
|             'Pass --collect-in-virtualenv to force collection of tests in "%s"\n' |             'Pass --collect-in-virtualenv to force collection of tests in "%s"\n' | ||||||
|             'Use --ignore="%s" to silence this warning' % (path, path, path) |             'Use --ignore="%s" to silence this warning' % (path, path, path) | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue