Attempting to patch terminal only if terminalreporter is available
This fixes the flag "--paste=all" when running tests with xdist, as slaves would attempt to patch a non-existing terminal during pytest_configure. Only the master node has a terminalreporter installed. --HG-- branch : pastebin-xdist
This commit is contained in:
		
							parent
							
								
									8859936301
								
							
						
					
					
						commit
						7e15fb7f2d
					
				|  | @ -14,13 +14,17 @@ def pytest_addoption(parser): | ||||||
| @pytest.mark.trylast | @pytest.mark.trylast | ||||||
| def pytest_configure(config): | def pytest_configure(config): | ||||||
|     if config.option.pastebin == "all": |     if config.option.pastebin == "all": | ||||||
|         config._pastebinfile = tempfile.TemporaryFile('w+') |  | ||||||
|         tr = config.pluginmanager.getplugin('terminalreporter') |         tr = config.pluginmanager.getplugin('terminalreporter') | ||||||
|         oldwrite = tr._tw.write |         # if no terminal reporter plugin is present, nothing we can do here; | ||||||
|         def tee_write(s, **kwargs): |         # this can happen when this function executes in a slave node | ||||||
|             oldwrite(s, **kwargs) |         # when using pytest-xdist, for example | ||||||
|             config._pastebinfile.write(str(s)) |         if tr is not None: | ||||||
|         tr._tw.write = tee_write |             config._pastebinfile = tempfile.TemporaryFile('w+') | ||||||
|  |             oldwrite = tr._tw.write | ||||||
|  |             def tee_write(s, **kwargs): | ||||||
|  |                 oldwrite(s, **kwargs) | ||||||
|  |                 config._pastebinfile.write(str(s)) | ||||||
|  |             tr._tw.write = tee_write | ||||||
| 
 | 
 | ||||||
| def pytest_unconfigure(config): | def pytest_unconfigure(config): | ||||||
|     if hasattr(config, '_pastebinfile'): |     if hasattr(config, '_pastebinfile'): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue