70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
| import sys
 | |
| 
 | |
| import py
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| from _pytest.pathlib import fnmatch_ex
 | |
| 
 | |
| 
 | |
| class TestPort:
 | |
|     """Test that our port of py.common.FNMatcher (fnmatch_ex) produces the same results as the
 | |
|     original py.path.local.fnmatch method.
 | |
|     """
 | |
| 
 | |
|     @pytest.fixture(params=["pathlib", "py.path"])
 | |
|     def match(self, request):
 | |
|         if request.param == "py.path":
 | |
| 
 | |
|             def match_(pattern, path):
 | |
|                 return py.path.local(path).fnmatch(pattern)
 | |
| 
 | |
|         else:
 | |
|             assert request.param == "pathlib"
 | |
| 
 | |
|             def match_(pattern, path):
 | |
|                 return fnmatch_ex(pattern, path)
 | |
| 
 | |
|         return match_
 | |
| 
 | |
|     if sys.platform == "win32":
 | |
|         drv1 = "c:"
 | |
|         drv2 = "d:"
 | |
|     else:
 | |
|         drv1 = "/c"
 | |
|         drv2 = "/d"
 | |
| 
 | |
|     @pytest.mark.parametrize(
 | |
|         "pattern, path",
 | |
|         [
 | |
|             ("*.py", "foo.py"),
 | |
|             ("*.py", "bar/foo.py"),
 | |
|             ("test_*.py", "foo/test_foo.py"),
 | |
|             ("tests/*.py", "tests/foo.py"),
 | |
|             (drv1 + "/*.py", drv1 + "/foo.py"),
 | |
|             (drv1 + "/foo/*.py", drv1 + "/foo/foo.py"),
 | |
|             ("tests/**/test*.py", "tests/foo/test_foo.py"),
 | |
|             ("tests/**/doc/test*.py", "tests/foo/bar/doc/test_foo.py"),
 | |
|             ("tests/**/doc/**/test*.py", "tests/foo/doc/bar/test_foo.py"),
 | |
|         ],
 | |
|     )
 | |
|     def test_matching(self, match, pattern, path):
 | |
|         assert match(pattern, path)
 | |
| 
 | |
|     @pytest.mark.parametrize(
 | |
|         "pattern, path",
 | |
|         [
 | |
|             ("*.py", "foo.pyc"),
 | |
|             ("*.py", "foo/foo.pyc"),
 | |
|             ("tests/*.py", "foo/foo.py"),
 | |
|             (drv1 + "/*.py", drv2 + "/foo.py"),
 | |
|             (drv1 + "/foo/*.py", drv2 + "/foo/foo.py"),
 | |
|             ("tests/**/test*.py", "tests/foo.py"),
 | |
|             ("tests/**/test*.py", "foo/test_foo.py"),
 | |
|             ("tests/**/doc/test*.py", "tests/foo/bar/doc/foo.py"),
 | |
|             ("tests/**/doc/test*.py", "tests/foo/bar/test_foo.py"),
 | |
|         ],
 | |
|     )
 | |
|     def test_not_matching(self, match, pattern, path):
 | |
|         assert not match(pattern, path)
 |