test reporting of itemstart events some more
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									4a70a667bb
								
							
						
					
					
						commit
						1535d75bb8
					
				|  | @ -136,24 +136,6 @@ class TerminalReporter: | |||
|            self.config.option.traceconfig and category.find("config") != -1: | ||||
|             self.write_line("[%s] %s" %(category, msg)) | ||||
| 
 | ||||
|     def pytest_itemstart(self, item, node=None): | ||||
|         if self.config.option.debug: | ||||
|             line = self._metainfoline(item) | ||||
|             extra = "" | ||||
|             if node: | ||||
|                 extra = "-> " + str(node.gateway.id) | ||||
|             self.write_ensure_prefix(line, extra) | ||||
|         # in dist situations itemstart (currently only means we  | ||||
|         # queued the item for testing, doesn't tell much | ||||
|         elif self.config.option.verbose and self.config.option.dist == "no": | ||||
|             # ensure that the path is printed before the 1st test of | ||||
|             # a module starts running | ||||
|             line = self._metainfoline(item) | ||||
|             self.write_ensure_prefix(line, "")  | ||||
|         else: | ||||
|             fspath, lineno, msg = item.metainfo() | ||||
|             self.write_fspath_result(fspath, "") | ||||
| 
 | ||||
|     def pytest_rescheduleitems(self, items): | ||||
|         if self.config.option.debug: | ||||
|             self.write_sep("!", "RESCHEDULING %s " %(items,)) | ||||
|  | @ -161,6 +143,27 @@ class TerminalReporter: | |||
|     def pytest_deselected(self, items): | ||||
|         self.stats.setdefault('deselected', []).append(items) | ||||
|      | ||||
| 
 | ||||
|     def pytest_itemstart(self, item, node=None): | ||||
|         if self.config.option.dist != "no": | ||||
|             # for dist-testing situations itemstart means we  | ||||
|             # queued the item for sending, not interesting (unless debugging)  | ||||
|             if self.config.option.debug: | ||||
|                 line = self._metainfoline(item) | ||||
|                 extra = "" | ||||
|                 if node: | ||||
|                     extra = "-> " + str(node.gateway.id) | ||||
|                 self.write_ensure_prefix(line, extra) | ||||
|         else: | ||||
|             if self.config.option.verbose: | ||||
|                 line = self._metainfoline(item) | ||||
|                 self.write_ensure_prefix(line, "")  | ||||
|             else: | ||||
|                 # ensure that the path is printed before the  | ||||
|                 # 1st test of a module starts running | ||||
|                 fspath, lineno, msg = item.metainfo() | ||||
|                 self.write_fspath_result(fspath, "") | ||||
| 
 | ||||
|     def pytest_itemtestreport(self, rep): | ||||
|         fspath = rep.colitem.fspath  | ||||
|         cat, letter, word = self.getcategoryletterword(rep) | ||||
|  | @ -170,6 +173,7 @@ class TerminalReporter: | |||
|             markup = {} | ||||
|         self.stats.setdefault(cat, []).append(rep) | ||||
|         if not self.config.option.verbose: | ||||
|             fspath, lineno, msg = rep.colitem.metainfo() | ||||
|             self.write_fspath_result(fspath, letter) | ||||
|         else: | ||||
|             line = self._metainfoline(rep.colitem) | ||||
|  | @ -559,13 +563,33 @@ class TestTerminal: | |||
| 
 | ||||
|     def test_show_path_before_running_test(self, testdir, linecomp): | ||||
|         item = testdir.getitem("def test_func(): pass") | ||||
|         rep = TerminalReporter(item.config, file=linecomp.stringio) | ||||
|         item.config.pluginmanager.register(rep) | ||||
|         rep.config.hook.pytest_itemstart(item=item) | ||||
|         tr = TerminalReporter(item.config, file=linecomp.stringio) | ||||
|         item.config.pluginmanager.register(tr) | ||||
|         tr.config.hook.pytest_itemstart(item=item) | ||||
|         linecomp.assert_contains_lines([ | ||||
|             "*test_show_path_before_running_test.py*" | ||||
|         ]) | ||||
| 
 | ||||
|     def test_itemreport_metainfo(self, testdir, linecomp): | ||||
|         testdir.makeconftest(""" | ||||
|             import py | ||||
|             class Function(py.test.collect.Function): | ||||
|                 def metainfo(self): | ||||
|                     return "ABCDE", 42, "custom"     | ||||
|         """) | ||||
|         item = testdir.getitem("def test_func(): pass") | ||||
|         tr = TerminalReporter(item.config, file=linecomp.stringio) | ||||
|         item.config.pluginmanager.register(tr) | ||||
|         tr.config.hook.pytest_itemstart(item=item) | ||||
|         linecomp.assert_contains_lines([ | ||||
|             "*ABCDE " | ||||
|         ]) | ||||
|         tr.config.option.verbose = True | ||||
|         tr.config.hook.pytest_itemstart(item=item) | ||||
|         linecomp.assert_contains_lines([ | ||||
|             "*ABCDE:43: custom*" | ||||
|         ]) | ||||
| 
 | ||||
|     def pseudo_keyboard_interrupt(self, testdir, linecomp, verbose=False): | ||||
|         modcol = testdir.getmodulecol(""" | ||||
|             def test_foobar(): | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue