mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-06 00:05:02 -05:00
126 lines
4.5 KiB
Python
126 lines
4.5 KiB
Python
"""Test testid plugin."""
|
|
import os.path
|
|
import pickle
|
|
|
|
from six import StringIO
|
|
|
|
from nose2 import session
|
|
from nose2.events import ReportTestEvent
|
|
from nose2.plugins import testid
|
|
from nose2.tests._common import (FakeStartTestEvent, FakeLoadFromNameEvent,
|
|
FakeLoadFromNamesEvent, TestCase)
|
|
|
|
|
|
class UnitTestTestId(TestCase):
|
|
|
|
"""Test class TestId.
|
|
|
|
Tests are carried out in a temporary directory, since TestId stores state
|
|
to file. The temporary directory is removed after testing.
|
|
"""
|
|
tags = ['unit']
|
|
_RUN_IN_TEMP = True
|
|
|
|
def setUp(self):
|
|
super(UnitTestTestId, self).setUp()
|
|
self.stream = StringIO()
|
|
self.session = session.Session()
|
|
self.plugin = testid.TestId(session=self.session)
|
|
|
|
def test___init__(self):
|
|
"""Test the __init__ method."""
|
|
plug = self.plugin
|
|
# Test attributes
|
|
for name, exp_val in [(
|
|
'configSection', 'testid'), ('commandLineSwitch',
|
|
('I', 'with-id', 'Add test ids to output')), ('idfile',
|
|
os.path.abspath(
|
|
'.noseids')), ('ids', {}), ('tests', {}),
|
|
('id', 0)]:
|
|
try:
|
|
val = getattr(plug, name)
|
|
except AttributeError:
|
|
self.fail(
|
|
'TestId instance doesn\'t have attribute %s' % (name,))
|
|
self.assertEqual(val, exp_val, 'Attribute %s should have value '
|
|
'\'%s\', but has value %s' % (name, exp_val, val))
|
|
|
|
def test_start_test(self):
|
|
"""Test reportStartTest method."""
|
|
self.session.verbosity = 2
|
|
event = ReportTestEvent(FakeStartTestEvent(self), self.stream)
|
|
plug = self.plugin
|
|
plug.reportStartTest(event)
|
|
|
|
self.assertEqual(plug.id, 1)
|
|
test_id = self.id()
|
|
self.assertEqual(plug.ids, {1: test_id})
|
|
self.assertEqual(plug.tests, {test_id: 1})
|
|
self.assertEqual(self.stream.getvalue(), '#1 ')
|
|
|
|
def test_start_test_twice(self):
|
|
"""Test calling reportStartTest twice."""
|
|
self.session.verbosity = 2
|
|
event = ReportTestEvent(FakeStartTestEvent(self), self.stream)
|
|
plug = self.plugin
|
|
plug.reportStartTest(event)
|
|
plug.reportStartTest(event)
|
|
|
|
self.assertEqual(plug.id, 1)
|
|
test_id = self.id()
|
|
self.assertEqual(plug.ids, {1: test_id})
|
|
self.assertEqual(plug.tests, {test_id: 1})
|
|
self.assertEqual(self.stream.getvalue(), '#1 #1 ')
|
|
|
|
def test_stop_test_run(self):
|
|
"""Test stopTestRun method."""
|
|
plug = self.plugin
|
|
plug.reportStartTest(
|
|
ReportTestEvent(FakeStartTestEvent(self), self.stream))
|
|
plug.stopTestRun(None)
|
|
|
|
fh = open(plug.idfile, 'rb')
|
|
try:
|
|
data = pickle.load(fh)
|
|
finally:
|
|
fh.close()
|
|
self.assertEqual(data, {'ids': plug.ids, 'tests': plug.tests})
|
|
|
|
def test_load_tests_from_name(self):
|
|
"""Test loadTestsFromName method."""
|
|
plug = self.plugin
|
|
# By first starting/stopping a test, an ID is assigned by the plugin
|
|
plug.reportStartTest(
|
|
ReportTestEvent(FakeStartTestEvent(self), self.stream))
|
|
plug.stopTestRun(None)
|
|
event = FakeLoadFromNameEvent('1')
|
|
plug.loadTestsFromName(event)
|
|
|
|
# The numeric ID should be translated to this test's ID
|
|
self.assertEqual(event.name, self.id())
|
|
|
|
def test_load_tests_from_name_no_ids(self):
|
|
"""Test calling loadTestsFromName when no IDs have been saved."""
|
|
plug = self.plugin
|
|
event = FakeLoadFromNameEvent('1')
|
|
plug.loadTestsFromName(event)
|
|
|
|
# The event's name should be unchanged, since no IDs should be mapped
|
|
self.assertEqual(event.name, '1')
|
|
|
|
def test_load_tests_from_names(self):
|
|
"""Test loadTestsFromNames method."""
|
|
plug = self.plugin
|
|
# By first starting/stopping a test, an ID is assigned by the plugin
|
|
plug.reportStartTest(
|
|
ReportTestEvent(FakeStartTestEvent(self), self.stream))
|
|
plug.stopTestRun(None)
|
|
event = FakeLoadFromNamesEvent(['1', '2'])
|
|
plug.loadTestsFromNames(event)
|
|
|
|
name1, name2 = event.names
|
|
# The first numeric ID should be translated to this test's ID
|
|
self.assertEqual(name1, self.id())
|
|
# The second one should not have a match
|
|
self.assertEqual(name2, '2')
|