34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
| import py
 | |
| 
 | |
| class DoctestText(py.test.Item):
 | |
| 
 | |
|     def _setcontent(self, content):
 | |
|         self._content = content 
 | |
| 
 | |
|     #def buildname2items(self):
 | |
|     #    parser = py.compat.doctest.DoctestParser()
 | |
|     #    l = parser.get_examples(self._content)
 | |
|     #    d = {}
 | |
|     #    globs = {}
 | |
|     #    locs
 | |
|     #    for i, example in py.builtin.enumerate(l):
 | |
|     #        ex = ExampleItem(example)
 | |
|     #        d[str(i)] = ex
 | |
| 
 | |
|     def run(self):
 | |
|         mod = py.std.types.ModuleType(self.name) 
 | |
|         #for line in s.split('\n'): 
 | |
|         #    if line.startswith(prefix): 
 | |
|         #        exec py.code.Source(line[len(prefix):]).compile() in mod.__dict__ 
 | |
|         #        line = ""
 | |
|         #    else: 
 | |
|         #        l.append(line)
 | |
|         self.execute(mod, self._content) 
 | |
|        
 | |
|     def execute(self, mod, docstring):
 | |
|         mod.__doc__ = docstring 
 | |
|         failed, tot = py.compat.doctest.testmod(mod, verbose=1)
 | |
|         if failed: 
 | |
|             py.test.fail("doctest %s: %s failed out of %s" %(
 | |
|                          self.fspath, failed, tot))
 |