appveyor: improve tests (capture stdout; use dictionaries)
This commit is contained in:
@@ -8,6 +8,14 @@
|
||||
import sys, os, fileinput
|
||||
import unittest
|
||||
|
||||
def getStringIO():
|
||||
if (sys.version_info > (3, 0)):
|
||||
import io
|
||||
return io.StringIO()
|
||||
else:
|
||||
import StringIO
|
||||
return StringIO.StringIO()
|
||||
|
||||
sys.path.append('appveyor')
|
||||
import do
|
||||
|
||||
@@ -21,32 +29,33 @@ class TestSourceSet(unittest.TestCase):
|
||||
|
||||
def test_EmptySetupDirsPath(self):
|
||||
del os.environ['SETUP_PATH']
|
||||
try:
|
||||
do.source_set('test01')
|
||||
except NameError:
|
||||
return
|
||||
self.fail('source_set did not throw on empty SETUP_DIRS')
|
||||
self.assertRaisesRegexp(NameError, '\(SETUP_PATH\) is empty', do.source_set, 'test01')
|
||||
|
||||
def test_InvalidSetupName(self):
|
||||
try:
|
||||
do.source_set('xxdoesnotexistxx')
|
||||
except NameError:
|
||||
return
|
||||
self.fail('source_set did not throw on invalid file name')
|
||||
self.assertRaisesRegexp(NameError, 'does not exist in SETUP_PATH', do.source_set, 'xxdoesnotexistxx')
|
||||
|
||||
def test_ValidSetupName(self):
|
||||
capturedOutput = getStringIO()
|
||||
sys.stdout = capturedOutput
|
||||
do.source_set('test01')
|
||||
sys.stdout = sys.__stdout__
|
||||
self.assertEqual(do.setup['BASE'], '7.0', 'BASE was not set to \'7.0\'')
|
||||
|
||||
def test_SetupDoesNotOverridePreset(self):
|
||||
os.environ['BASE'] = 'foo'
|
||||
capturedOutput = getStringIO()
|
||||
sys.stdout = capturedOutput
|
||||
do.source_set('test01')
|
||||
sys.stdout = sys.__stdout__
|
||||
self.assertEqual(do.setup['BASE'], 'foo',
|
||||
'Preset BASE was overridden by test01 setup (expected \'foo\' got {0})'
|
||||
.format(do.setup['BASE']))
|
||||
|
||||
def test_IncludeSetupFirstSetWins(self):
|
||||
capturedOutput = getStringIO()
|
||||
sys.stdout = capturedOutput
|
||||
do.source_set('test02')
|
||||
sys.stdout = sys.__stdout__
|
||||
self.assertEqual(do.setup['BASE'], 'foo',
|
||||
'BASE set in test02 was overridden by test01 setup (expected \'foo\' got {0})'
|
||||
.format(do.setup['BASE']))
|
||||
@@ -55,6 +64,12 @@ class TestSourceSet(unittest.TestCase):
|
||||
self.assertEqual(do.setup['FOO3'], 'bar bar2', 'Indented setting of multiple words does not work')
|
||||
self.assertEqual(do.setup['SNCSEQ'], 'R2-2-7', 'Setup test01 was not included')
|
||||
|
||||
def test_DoubleIncludeGetsIgnored(self):
|
||||
capturedOutput = getStringIO()
|
||||
sys.stdout = capturedOutput
|
||||
do.source_set('test03')
|
||||
sys.stdout = sys.__stdout__
|
||||
self.assertRegexpMatches(capturedOutput.getvalue(), 'Ignoring already included setup file')
|
||||
|
||||
class TestUpdateReleaseLocal(unittest.TestCase):
|
||||
|
||||
@@ -79,40 +94,41 @@ class TestUpdateReleaseLocal(unittest.TestCase):
|
||||
do.update_release_local('MOD1', '/foo/bar')
|
||||
do.update_release_local('MOD2', '/foo/bar2')
|
||||
do.update_release_local('MOD1', '/foo/bar1')
|
||||
foundmod1 = 0
|
||||
foundmod2 = 0
|
||||
foundbase = 0
|
||||
found = {}
|
||||
foundat = {}
|
||||
for line in fileinput.input(self.release_local, inplace=1):
|
||||
if 'MOD1=' in line:
|
||||
self.assertEqual(line.strip(), 'MOD1=/foo/bar1',
|
||||
'MOD1 not set correctly (expected \'MOD1=/foo/bar1\' found \'{0}\')'
|
||||
.format(line))
|
||||
foundmod1 += 1
|
||||
foundmod1at = fileinput.filelineno()
|
||||
found['mod1'] += 1
|
||||
foundat['mod1'] = fileinput.filelineno()
|
||||
if 'MOD2=' in line:
|
||||
self.assertEqual(line.strip(), 'MOD2=/foo/bar2',
|
||||
'MOD2 not set correctly (expected \'MOD2=/foo/bar2\' found \'{0}\')'
|
||||
.format(line))
|
||||
foundmod2 += 1
|
||||
foundmod2at = fileinput.filelineno()
|
||||
found['mod2'] += 1
|
||||
foundat['mod2'] = fileinput.filelineno()
|
||||
if 'EPICS_BASE=' in line:
|
||||
self.assertEqual(line.strip(), 'EPICS_BASE=/bar/foo',
|
||||
'EPICS_BASE not set correctly (expected \'EPICS_BASE=/bar/foo\' found \'{0}\')'
|
||||
.format(line))
|
||||
foundbase += 1
|
||||
foundbaseat = fileinput.filelineno()
|
||||
found['base'] += 1
|
||||
foundat['base'] = fileinput.filelineno()
|
||||
fileinput.close()
|
||||
self.assertEqual(foundmod1, 1, 'MOD1 does not appear once in RELEASE.local (found {0})'.format(foundmod1))
|
||||
self.assertEqual(foundmod2, 1, 'MOD2 does not appear once in RELEASE.local (found {0})'.format(foundmod2))
|
||||
self.assertEqual(foundbase, 1, 'EPICS_BASE does not appear once in RELEASE.local (found {0})'.format(foundbase))
|
||||
self.assertGreater(foundbaseat, foundmod2at,
|
||||
'EPICS_BASE (line {0}) appears before MOD2 (line {1})'.format(foundbaseat, foundmod2at))
|
||||
self.assertGreater(foundmod2at, foundmod1at,
|
||||
'MOD2 (line {0}) appears before MOD1 (line {1})'.format(foundmod2at, foundmod1at))
|
||||
self.assertEqual(found['mod1'], 1, 'MOD1 does not appear once in RELEASE.local (found {0})'.format(found['mod1']))
|
||||
self.assertEqual(found['mod2'], 1, 'MOD2 does not appear once in RELEASE.local (found {0})'.format(found['mod2']))
|
||||
self.assertEqual(found['base'], 1, 'EPICS_BASE does not appear once in RELEASE.local (found {0})'.format(found['base']))
|
||||
self.assertGreater(foundat['base'], foundat['mod2'],
|
||||
'EPICS_BASE (line {0}) appears before MOD2 (line {1})'.format(foundat['base'], foundat['mod2']))
|
||||
self.assertGreater(foundat['mod2'], foundat['mod1'],
|
||||
'MOD2 (line {0}) appears before MOD1 (line {1})'.format(foundat['mod2'], foundat['mod1']))
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# suite = unittest.TestLoader().loadTestsFromTestCase(TestSourceSet)
|
||||
# suite = unittest.TestLoader().loadTestsFromTestCase(TestUpdateReleaseLocal)
|
||||
# unittest.TextTestRunner(verbosity=2).run(suite)
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user