mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-06 00:05:02 -05:00
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
"""Test doctests plugin."""
|
|
import doctest
|
|
|
|
from nose2 import events, loader, session
|
|
from nose2.plugins import doctests
|
|
from nose2.tests._common import TestCase
|
|
|
|
|
|
class UnitTestDocTestLoader(TestCase):
|
|
|
|
"""Test class DocTestLoader."""
|
|
tags = ['unit']
|
|
|
|
_RUN_IN_TEMP = True
|
|
|
|
def setUp(self):
|
|
self.session = session.Session()
|
|
self.loader = loader.PluggableTestLoader(self.session)
|
|
self.plugin = doctests.DocTestLoader(session=self.session)
|
|
super(UnitTestDocTestLoader, self).setUp()
|
|
|
|
def test___init__(self):
|
|
"""Test the __init__ method."""
|
|
self.assertEqual(self.plugin.extensions, ['.txt', '.rst'])
|
|
|
|
def test_handle_file(self):
|
|
"""Test method handleFile."""
|
|
# Create doctest files of supported types
|
|
doc_test = """\
|
|
>>> 2 == 2
|
|
True
|
|
"""
|
|
txt_event = self._handle_file('docs.txt', doc_test)
|
|
rst_event = self._handle_file('docs.rst', doc_test)
|
|
# Excercise loading of doctests from Python code
|
|
py_event = self._handle_file('docs.py', """\
|
|
\"\"\"
|
|
>>> 2 == 2
|
|
True
|
|
\"\"\"
|
|
""")
|
|
for event, ext in [(txt_event, 'txt'), (rst_event, 'rst')]:
|
|
test, = event.extraTests
|
|
self.assertTrue(isinstance(test, doctest.DocFileCase))
|
|
self.assertEqual(repr(test), "docs.%s" % ext)
|
|
|
|
testsuite, = py_event.extraTests
|
|
test, = list(testsuite)
|
|
self.assertEqual(repr(test), 'docs ()')
|
|
|
|
def test_handle_file_python_without_doctests(self):
|
|
"""Test calling handleFile for a Python module without doctests."""
|
|
event = self._handle_file("mod.py", """\
|
|
def func():
|
|
pass
|
|
""")
|
|
self.assertEqual(event.extraTests, [])
|
|
|
|
def _handle_file(self, fpath, content):
|
|
"""Have plugin handle a file with certain content.
|
|
|
|
The file is created, then a plugin is instantiated and its handleFile
|
|
method is called for the file.
|
|
"""
|
|
fh = open(fpath, "w")
|
|
try:
|
|
fh.write(content)
|
|
finally:
|
|
fh.close()
|
|
|
|
event = events.HandleFileEvent(self.loader, fh.name, fpath, None, None)
|
|
self.plugin.handleFile(event)
|
|
return event
|