make sessionfinish hooks execute with the same cwd-context as at
session start (helps fix plugin behaviour which write output files with relative path such as pytest-cov)
This commit is contained in:
		
							parent
							
								
									2951c3ace9
								
							
						
					
					
						commit
						ac3d8800fd
					
				|  | @ -1,6 +1,10 @@ | |||
| Changes between 2.3.5 and 2.4.DEV | ||||
| ----------------------------------- | ||||
| 
 | ||||
| - make sessionfinish hooks execute with the same cwd-context as at | ||||
|   session start (helps fix plugin behaviour which write output files  | ||||
|   with relative path such as pytest-cov) | ||||
| 
 | ||||
| - fix issue316 - properly reference collection hooks in docs | ||||
| 
 | ||||
| - fix issue 308 - allow to mark/xfail/skip individual parameter sets | ||||
|  |  | |||
|  | @ -97,6 +97,7 @@ def wrap_session(config, doit): | |||
|             if session._testsfailed: | ||||
|                 session.exitstatus = EXIT_TESTSFAILED | ||||
|     finally: | ||||
|         session.startdir.chdir() | ||||
|         if initstate >= 2: | ||||
|             config.hook.pytest_sessionfinish( | ||||
|                 session=session, | ||||
|  | @ -452,6 +453,7 @@ class Session(FSCollector): | |||
|         self.shouldstop = False | ||||
|         self.trace = config.trace.root.get("collection") | ||||
|         self._norecursepatterns = config.getini("norecursedirs") | ||||
|         self.startdir = py.path.local() | ||||
| 
 | ||||
|     def pytest_collectstart(self): | ||||
|         if self.shouldstop: | ||||
|  |  | |||
|  | @ -226,3 +226,17 @@ def test_exclude(testdir): | |||
|     assert result.ret == 0 | ||||
|     result.stdout.fnmatch_lines(["*1 passed*"]) | ||||
| 
 | ||||
| def test_sessionfinish_with_start(testdir): | ||||
|     testdir.makeconftest(""" | ||||
|         import os | ||||
|         l = [] | ||||
|         def pytest_sessionstart(): | ||||
|             l.append(os.getcwd()) | ||||
|             os.chdir("..") | ||||
| 
 | ||||
|         def pytest_sessionfinish(): | ||||
|             assert l[0] == os.getcwd() | ||||
| 
 | ||||
|     """) | ||||
|     res = testdir.runpytest("--collectonly") | ||||
|     assert res.ret == 0 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue