some fixes for --pyargs situations and the docs, remove wrongly added test
This commit is contained in:
		
							parent
							
								
									d0ac4135a2
								
							
						
					
					
						commit
						885c7ce281
					
				|  | @ -12,6 +12,18 @@ You can set the :confval:`norecursedirs` option in an ini-file, for example your | ||||||
| 
 | 
 | ||||||
| This would tell py.test to not recurse into typical subversion or sphinx-build directories or into any ``tmp`` prefixed directory. | This would tell py.test to not recurse into typical subversion or sphinx-build directories or into any ``tmp`` prefixed directory. | ||||||
| 
 | 
 | ||||||
|  | always try to interpret arguments as Python packages | ||||||
|  | ----------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | You can use the ``--pyargs`` option to make py.test try | ||||||
|  | interpreting arguments as python package names, deriving | ||||||
|  | their file system path and then running the test. Through | ||||||
|  | an ini-file and the :confval:`addopts` option you can make | ||||||
|  | this change more permanently:: | ||||||
|  | 
 | ||||||
|  |     # content of setup.cfg or tox.ini | ||||||
|  |     [pytest] | ||||||
|  |     addopts = --pyargs | ||||||
| 
 | 
 | ||||||
| finding out what is collected | finding out what is collected | ||||||
| ----------------------------------------------- | ----------------------------------------------- | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ Several test run options:: | ||||||
| 
 | 
 | ||||||
| Import 'pkg' and use its filesystem location to find and run tests:: | Import 'pkg' and use its filesystem location to find and run tests:: | ||||||
| 
 | 
 | ||||||
|     py.test --testpkg=pypkg # run all tests found below directory of pypkg |     py.test --pyargs pkg # run all tests found below directory of pypkg | ||||||
| 
 | 
 | ||||||
| calling pytest through ``python -m pytest`` | calling pytest through ``python -m pytest`` | ||||||
| ----------------------------------------------------- | ----------------------------------------------------- | ||||||
|  |  | ||||||
|  | @ -366,9 +366,10 @@ class Collection(FSCollector): | ||||||
|         self.trace.root.indent += 1 |         self.trace.root.indent += 1 | ||||||
|         self._notfound = [] |         self._notfound = [] | ||||||
|         self._initialpaths = set() |         self._initialpaths = set() | ||||||
|         self._initialargs = args |         self._initialparts = [] | ||||||
|         for arg in args: |         for arg in args: | ||||||
|             parts = self._parsearg(arg) |             parts = self._parsearg(arg) | ||||||
|  |             self._initialparts.append(parts) | ||||||
|             self._initialpaths.add(parts[0]) |             self._initialpaths.add(parts[0]) | ||||||
|         self.ihook.pytest_collectstart(collector=self) |         self.ihook.pytest_collectstart(collector=self) | ||||||
|         rep = self.ihook.pytest_make_collect_report(collector=self) |         rep = self.ihook.pytest_make_collect_report(collector=self) | ||||||
|  | @ -376,7 +377,7 @@ class Collection(FSCollector): | ||||||
|         self.trace.root.indent -= 1 |         self.trace.root.indent -= 1 | ||||||
|         if self._notfound: |         if self._notfound: | ||||||
|             for arg, exc in self._notfound: |             for arg, exc in self._notfound: | ||||||
|                 line = "no name %r in any of %r" % (exc.args[1], exc.args[0]) |                 line = "(no name %r in any of %r)" % (arg, exc.args[0]) | ||||||
|                 raise pytest.UsageError("not found: %s\n%s" %(arg, line)) |                 raise pytest.UsageError("not found: %s\n%s" %(arg, line)) | ||||||
|         if not genitems: |         if not genitems: | ||||||
|             return rep.result |             return rep.result | ||||||
|  | @ -388,8 +389,9 @@ class Collection(FSCollector): | ||||||
|             return items |             return items | ||||||
| 
 | 
 | ||||||
|     def collect(self): |     def collect(self): | ||||||
|         for arg in self._initialargs: |         for parts in self._initialparts: | ||||||
|             self.trace("processing arg", arg) |             arg = "::".join(map(str, parts)) | ||||||
|  |             self.trace("processing argument", arg) | ||||||
|             self.trace.root.indent += 1 |             self.trace.root.indent += 1 | ||||||
|             try: |             try: | ||||||
|                 for x in self._collect(arg): |                 for x in self._collect(arg): | ||||||
|  | @ -417,6 +419,7 @@ class Collection(FSCollector): | ||||||
| 
 | 
 | ||||||
|     def _collectfile(self, path): |     def _collectfile(self, path): | ||||||
|         ihook = self.gethookproxy(path) |         ihook = self.gethookproxy(path) | ||||||
|  |         if not self.isinitpath(path): | ||||||
|             if ihook.pytest_ignore_collect(path=path, config=self.config): |             if ihook.pytest_ignore_collect(path=path, config=self.config): | ||||||
|                return () |                return () | ||||||
|         return ihook.pytest_collect_file(path=path, parent=self) |         return ihook.pytest_collect_file(path=path, parent=self) | ||||||
|  | @ -439,6 +442,8 @@ class Collection(FSCollector): | ||||||
|         p = py.path.local(mod.__file__) |         p = py.path.local(mod.__file__) | ||||||
|         if p.purebasename == "__init__": |         if p.purebasename == "__init__": | ||||||
|             p = p.dirpath() |             p = p.dirpath() | ||||||
|  |         else: | ||||||
|  |             p = p.new(basename=p.purebasename+".py") | ||||||
|         return p |         return p | ||||||
| 
 | 
 | ||||||
|     def _parsearg(self, arg): |     def _parsearg(self, arg): | ||||||
|  |  | ||||||
|  | @ -310,7 +310,8 @@ class TestInvocationVariants: | ||||||
|         out, err = capsys.readouterr() |         out, err = capsys.readouterr() | ||||||
|         assert "--myopt" in out |         assert "--myopt" in out | ||||||
| 
 | 
 | ||||||
|     def test_cmdline_python_package(self, testdir): |     def test_cmdline_python_package(self, testdir, monkeypatch): | ||||||
|  |         monkeypatch.delenv('PYTHONDONTWRITEBYTECODE') | ||||||
|         path = testdir.mkpydir("tpkg") |         path = testdir.mkpydir("tpkg") | ||||||
|         path.join("test_hello.py").write("def test_hello(): pass") |         path.join("test_hello.py").write("def test_hello(): pass") | ||||||
|         path.join("test_world.py").write("def test_world(): pass") |         path.join("test_world.py").write("def test_world(): pass") | ||||||
|  |  | ||||||
|  | @ -161,15 +161,6 @@ def test_functional(testdir): | ||||||
|     result = testdir.runpytest("--no-assert") |     result = testdir.runpytest("--no-assert") | ||||||
|     assert "3 == 4" not in result.stdout.str() |     assert "3 == 4" not in result.stdout.str() | ||||||
| 
 | 
 | ||||||
| def test_AssertionErrorIdentity(testdir): |  | ||||||
|     testdir.makepyfile(""" |  | ||||||
|         def test_hello(): |  | ||||||
|             import exceptions |  | ||||||
|             assert AssertionError is exceptions.AssertionError |  | ||||||
|     """) |  | ||||||
|     result = testdir.runpytest() |  | ||||||
|     result.stdout.fnmatch_lines(["*1 passed*"]) |  | ||||||
| 
 |  | ||||||
| def test_triple_quoted_string_issue113(testdir): | def test_triple_quoted_string_issue113(testdir): | ||||||
|     testdir.makepyfile(""" |     testdir.makepyfile(""" | ||||||
|         def test_hello(): |         def test_hello(): | ||||||
|  |  | ||||||
|  | @ -213,6 +213,19 @@ class TestCustomConftests: | ||||||
|         assert result.ret == 0 |         assert result.ret == 0 | ||||||
|         result.stdout.fnmatch_lines(["*1 passed*"]) |         result.stdout.fnmatch_lines(["*1 passed*"]) | ||||||
| 
 | 
 | ||||||
|  |     def test_ignore_collect_not_called_on_argument(self, testdir): | ||||||
|  |         testdir.makeconftest(""" | ||||||
|  |             def pytest_ignore_collect(path, config): | ||||||
|  |                 return True | ||||||
|  |         """) | ||||||
|  |         p = testdir.makepyfile("def test_hello(): pass") | ||||||
|  |         result = testdir.runpytest(p) | ||||||
|  |         assert result.ret == 0 | ||||||
|  |         assert "1 passed" in result.stdout.str() | ||||||
|  |         result = testdir.runpytest() | ||||||
|  |         assert result.ret == 0 | ||||||
|  |         assert "1 passed" not in result.stdout.str() | ||||||
|  | 
 | ||||||
|     def test_collectignore_exclude_on_option(self, testdir): |     def test_collectignore_exclude_on_option(self, testdir): | ||||||
|         testdir.makeconftest(""" |         testdir.makeconftest(""" | ||||||
|             collect_ignore = ['hello', 'test_world.py'] |             collect_ignore = ['hello', 'test_world.py'] | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue