Merge pull request #2374 from Kodiologist/getmodpath-file-ext
Try not to assume a module's file extension is .py
This commit is contained in:
		
						commit
						80225ce72c
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							|  | @ -85,6 +85,7 @@ Justyna Janczyszyn | |||
| Kale Kundert | ||||
| Katarzyna Jachim | ||||
| Kevin Cox | ||||
| Kodi B. Arfer | ||||
| Lee Kamentsky | ||||
| Lev Maximov | ||||
| Loic Esteve | ||||
|  |  | |||
|  | @ -12,6 +12,9 @@ | |||
| * Added documentation related to issue (`#1937`_) | ||||
|   Thanks `@skylarjhdownes`_ for the PR. | ||||
| 
 | ||||
| * Allow collecting files with any file extension as Python modules (`#2369`_). | ||||
|   Thanks `@Kodiologist`_ for the PR. | ||||
| 
 | ||||
| * | ||||
| 
 | ||||
| * | ||||
|  | @ -23,11 +26,13 @@ | |||
| .. _@skylarjhdownes: https://github.com/skylarjhdownes | ||||
| .. _@fabioz: https://github.com/fabioz | ||||
| .. _@metasyn: https://github.com/metasyn | ||||
| .. _@Kodiologist: https://github.com/Kodiologist | ||||
| 
 | ||||
| 
 | ||||
| .. _#1937: https://github.com/pytest-dev/pytest/issues/1937 | ||||
| .. _#2276: https://github.com/pytest-dev/pytest/issues/2276 | ||||
| .. _#2336: https://github.com/pytest-dev/pytest/issues/2336 | ||||
| .. _#2369: https://github.com/pytest-dev/pytest/issues/2369 | ||||
| 
 | ||||
| 
 | ||||
| 3.0.7 (2017-03-14) | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
| import fnmatch | ||||
| import inspect | ||||
| import sys | ||||
| import os | ||||
| import collections | ||||
| import math | ||||
| from itertools import count | ||||
|  | @ -235,8 +236,7 @@ class PyobjMixin(PyobjContext): | |||
|                 continue | ||||
|             name = node.name | ||||
|             if isinstance(node, Module): | ||||
|                 assert name.endswith(".py") | ||||
|                 name = name[:-3] | ||||
|                 name = os.path.splitext(name)[0] | ||||
|                 if stopatmodule: | ||||
|                     if includemodule: | ||||
|                         parts.append(name) | ||||
|  |  | |||
|  | @ -841,6 +841,34 @@ class TestConftestCustomization: | |||
|         l = modcol.collect() | ||||
|         assert '_hello' not in l | ||||
| 
 | ||||
|     def test_issue2369_collect_module_fileext(self, testdir): | ||||
|         """Ensure we can collect files with weird file extensions as Python | ||||
|         modules (#2369)""" | ||||
|         # We'll implement a little finder and loader to import files containing | ||||
|         # Python source code whose file extension is ".narf". | ||||
|         testdir.makeconftest(""" | ||||
|             import sys, os, imp | ||||
|             from _pytest.python import Module | ||||
| 
 | ||||
|             class Loader: | ||||
|                 def load_module(self, name): | ||||
|                     return imp.load_source(name, name + ".narf") | ||||
|             class Finder: | ||||
|                 def find_module(self, name, path=None): | ||||
|                     if os.path.exists(name + ".narf"): | ||||
|                         return Loader() | ||||
|             sys.meta_path.append(Finder()) | ||||
| 
 | ||||
|             def pytest_collect_file(path, parent): | ||||
|                 if path.ext == ".narf": | ||||
|                     return Module(path, parent)""") | ||||
|         testdir.makefile(".narf", """ | ||||
|             def test_something(): | ||||
|                 assert 1 + 1 == 2""") | ||||
|         # Use runpytest_subprocess, since we're futzing with sys.meta_path. | ||||
|         result = testdir.runpytest_subprocess() | ||||
|         result.stdout.fnmatch_lines('*1 passed*') | ||||
| 
 | ||||
| def test_setup_only_available_in_subdir(testdir): | ||||
|     sub1 = testdir.mkpydir("sub1") | ||||
|     sub2 = testdir.mkpydir("sub2") | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue