cue-test: refactoring for v3.0 structure and names

This commit is contained in:
Ralph Lange
2020-06-01 14:35:29 +02:00
parent d3b36cac74
commit 772fc3a09a

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env python #!/usr/bin/env python
"""Module ci-scripts AppVeyor unit tests """Module ci-scripts unit tests
""" """
# SET=test00 in the environment (.appveyor.yml) runs the tests in this script # SET=test00 in the environment and run the tests in this script
# all other jobs are started as compile jobs # all other jobs are started as compile jobs
from __future__ import print_function from __future__ import print_function
@@ -17,26 +17,30 @@ from argparse import Namespace
builddir = os.getcwd() builddir = os.getcwd()
def find_in_file(regex, filename): def find_in_file(regex, filename):
file = open (filename, "r") file = open(filename, "r")
for line in file: for line in file:
if re.search(regex, line): if re.search(regex, line):
return True return True
return False return False
def getStringIO(): def getStringIO():
if (sys.version_info > (3, 0)): if sys.version_info > (3, 0):
import io import io
return io.StringIO() return io.StringIO()
else: else:
import StringIO import StringIO
return StringIO.StringIO() return StringIO.StringIO()
sys.path.append('appveyor')
import do sys.path.append('.')
import cue
# we're working with tags (detached heads) a lot: suppress advice # we're working with tags (detached heads) a lot: suppress advice
do.call_git(['config', '--global', 'advice.detachedHead', 'false']) cue.call_git(['config', '--global', 'advice.detachedHead', 'false'])
class TestSourceSet(unittest.TestCase): class TestSourceSet(unittest.TestCase):
@@ -44,56 +48,56 @@ class TestSourceSet(unittest.TestCase):
os.environ['SETUP_PATH'] = '.:appveyor' os.environ['SETUP_PATH'] = '.:appveyor'
if 'BASE' in os.environ: if 'BASE' in os.environ:
del os.environ['BASE'] del os.environ['BASE']
do.clear_lists() cue.clear_lists()
os.chdir(builddir) os.chdir(builddir)
def test_EmptySetupDirsPath(self): def test_EmptySetupDirsPath(self):
del os.environ['SETUP_PATH'] del os.environ['SETUP_PATH']
self.assertRaisesRegexp(NameError, '\(SETUP_PATH\) is empty', do.source_set, 'test01') self.assertRaisesRegexp(NameError, '\(SETUP_PATH\) is empty', cue.source_set, 'test01')
def test_InvalidSetupName(self): def test_InvalidSetupName(self):
self.assertRaisesRegexp(NameError, 'does not exist in SETUP_PATH', do.source_set, 'xxdoesnotexistxx') self.assertRaisesRegexp(NameError, 'does not exist in SETUP_PATH', cue.source_set, 'xxdoesnotexistxx')
def test_ValidSetupName(self): def test_ValidSetupName(self):
capturedOutput = getStringIO() capturedOutput = getStringIO()
sys.stdout = capturedOutput sys.stdout = capturedOutput
do.source_set('test01') cue.source_set('test01')
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
self.assertEqual(do.setup['BASE'], '7.0', 'BASE was not set to \'7.0\'') self.assertEqual(cue.setup['BASE'], '7.0', 'BASE was not set to \'7.0\'')
def test_SetupDoesNotOverridePreset(self): def test_SetupDoesNotOverridePreset(self):
os.environ['BASE'] = 'foo' os.environ['BASE'] = 'foo'
capturedOutput = getStringIO() capturedOutput = getStringIO()
sys.stdout = capturedOutput sys.stdout = capturedOutput
do.source_set('test01') cue.source_set('test01')
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
self.assertEqual(do.setup['BASE'], 'foo', self.assertEqual(cue.setup['BASE'], 'foo',
'Preset BASE was overridden by test01 setup (expected \'foo\' got {0})' 'Preset BASE was overridden by test01 setup (expected \'foo\' got {0})'
.format(do.setup['BASE'])) .format(cue.setup['BASE']))
def test_IncludeSetupFirstSetWins(self): def test_IncludeSetupFirstSetWins(self):
capturedOutput = getStringIO() captured_output = getStringIO()
sys.stdout = capturedOutput sys.stdout = captured_output
do.source_set('test02') cue.source_set('test02')
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
self.assertEqual(do.setup['BASE'], 'foo', self.assertEqual(cue.setup['BASE'], 'foo',
'BASE set in test02 was overridden by test01 setup (expected \'foo\' got {0})' 'BASE set in test02 was overridden by test01 setup (expected \'foo\' got {0})'
.format(do.setup['BASE'])) .format(cue.setup['BASE']))
self.assertEqual(do.setup['FOO'], 'bar', 'Setting of single word does not work') self.assertEqual(cue.setup['FOO'], 'bar', 'Setting of single word does not work')
self.assertEqual(do.setup['FOO2'], 'bar bar2', 'Setting of multiple words does not work') self.assertEqual(cue.setup['FOO2'], 'bar bar2', 'Setting of multiple words does not work')
self.assertEqual(do.setup['FOO3'], 'bar bar2', 'Indented setting of multiple words does not work') self.assertEqual(cue.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') self.assertEqual(cue.setup['SNCSEQ'], 'R2-2-7', 'Setup test01 was not included')
def test_DoubleIncludeGetsIgnored(self): def test_DoubleIncludeGetsIgnored(self):
capturedOutput = getStringIO() capturedOutput = getStringIO()
sys.stdout = capturedOutput sys.stdout = capturedOutput
do.source_set('test03') cue.source_set('test03')
sys.stdout = sys.__stdout__ sys.stdout = sys.__stdout__
self.assertRegexpMatches(capturedOutput.getvalue(), 'Ignoring already included setup file') self.assertRegexpMatches(capturedOutput.getvalue(), 'Ignoring already included setup file')
class TestUpdateReleaseLocal(unittest.TestCase):
release_local = os.path.join(do.cachedir, 'RELEASE.local') class TestUpdateReleaseLocal(unittest.TestCase):
release_local = os.path.join(cue.cachedir, 'RELEASE.local')
def setUp(self): def setUp(self):
if os.path.exists(self.release_local): if os.path.exists(self.release_local):
@@ -101,7 +105,7 @@ class TestUpdateReleaseLocal(unittest.TestCase):
os.chdir(builddir) os.chdir(builddir)
def test_SetModule(self): def test_SetModule(self):
do.update_release_local('MOD1', '/foo/bar') cue.update_release_local('MOD1', '/foo/bar')
found = 0 found = 0
for line in fileinput.input(self.release_local, inplace=1): for line in fileinput.input(self.release_local, inplace=1):
if 'MOD1=' in line: if 'MOD1=' in line:
@@ -111,10 +115,10 @@ class TestUpdateReleaseLocal(unittest.TestCase):
self.assertEqual(found, 1, 'MOD1 not written once to RELEASE.local (found {0})'.format(found)) self.assertEqual(found, 1, 'MOD1 not written once to RELEASE.local (found {0})'.format(found))
def test_SetBaseAndMultipleModules(self): def test_SetBaseAndMultipleModules(self):
do.update_release_local('EPICS_BASE', '/bar/foo') cue.update_release_local('EPICS_BASE', '/bar/foo')
do.update_release_local('MOD1', '/foo/bar') cue.update_release_local('MOD1', '/foo/bar')
do.update_release_local('MOD2', '/foo/bar2') cue.update_release_local('MOD2', '/foo/bar2')
do.update_release_local('MOD1', '/foo/bar1') cue.update_release_local('MOD1', '/foo/bar1')
found = {} found = {}
foundat = {} foundat = {}
for line in fileinput.input(self.release_local, inplace=1): for line in fileinput.input(self.release_local, inplace=1):
@@ -158,10 +162,10 @@ class TestUpdateReleaseLocal(unittest.TestCase):
self.assertGreater(foundat['mod2'], foundat['mod1'], self.assertGreater(foundat['mod2'], foundat['mod1'],
'MOD2 (line {0}) appears before MOD1 (line {1})'.format(foundat['mod2'], foundat['mod1'])) 'MOD2 (line {0}) appears before MOD1 (line {1})'.format(foundat['mod2'], foundat['mod1']))
class TestAddDependencyUpToDateCheck(unittest.TestCase):
class TestAddDependencyUpToDateCheck(unittest.TestCase):
hash_3_15_6 = "ce7943fb44beb22b453ddcc0bda5398fadf72096" hash_3_15_6 = "ce7943fb44beb22b453ddcc0bda5398fadf72096"
location = os.path.join(do.cachedir, 'base-R3.15.6') location = os.path.join(cue.cachedir, 'base-R3.15.6')
licensefile = os.path.join(location, 'LICENSE') licensefile = os.path.join(location, 'LICENSE')
checked_file = os.path.join(location, 'checked_out') checked_file = os.path.join(location, 'checked_out')
release_file = os.path.join(location, 'configure', 'RELEASE') release_file = os.path.join(location, 'configure', 'RELEASE')
@@ -169,15 +173,15 @@ class TestAddDependencyUpToDateCheck(unittest.TestCase):
def setUp(self): def setUp(self):
os.environ['SETUP_PATH'] = '.:appveyor' os.environ['SETUP_PATH'] = '.:appveyor'
if os.path.exists(self.location): if os.path.exists(self.location):
shutil.rmtree(self.location, onerror=do.remove_readonly) shutil.rmtree(self.location, onerror=cue.remove_readonly)
do.clear_lists() cue.clear_lists()
os.chdir(builddir) os.chdir(builddir)
do.source_set('defaults') cue.source_set('defaults')
do.complete_setup('BASE') cue.complete_setup('BASE')
def test_MissingDependency(self): def test_MissingDependency(self):
do.setup['BASE'] = 'R3.15.6' cue.setup['BASE'] = 'R3.15.6'
do.add_dependency('BASE') cue.add_dependency('BASE')
self.assertTrue(os.path.exists(self.licensefile), 'Missing dependency was not checked out') self.assertTrue(os.path.exists(self.licensefile), 'Missing dependency was not checked out')
self.assertTrue(os.path.exists(self.checked_file), 'Checked-out commit marker was not written') self.assertTrue(os.path.exists(self.checked_file), 'Checked-out commit marker was not written')
with open(self.checked_file, 'r') as bfile: with open(self.checked_file, 'r') as bfile:
@@ -190,20 +194,20 @@ class TestAddDependencyUpToDateCheck(unittest.TestCase):
'RELEASE in Base includes TOP/../RELEASE.local') 'RELEASE in Base includes TOP/../RELEASE.local')
def test_UpToDateDependency(self): def test_UpToDateDependency(self):
do.setup['BASE'] = 'R3.15.6' cue.setup['BASE'] = 'R3.15.6'
do.add_dependency('BASE') cue.add_dependency('BASE')
os.remove(self.licensefile) os.remove(self.licensefile)
do.add_dependency('BASE') cue.add_dependency('BASE')
self.assertFalse(os.path.exists(self.licensefile), 'Check out on top of existing up-to-date dependency') self.assertFalse(os.path.exists(self.licensefile), 'Check out on top of existing up-to-date dependency')
def test_OutdatedDependency(self): def test_OutdatedDependency(self):
do.setup['BASE'] = 'R3.15.6' cue.setup['BASE'] = 'R3.15.6'
do.add_dependency('BASE') cue.add_dependency('BASE')
os.remove(self.licensefile) os.remove(self.licensefile)
with open(self.checked_file, "w") as fout: with open(self.checked_file, "w") as fout:
print('XXX not the right hash XXX', file=fout) print('XXX not the right hash XXX', file=fout)
fout.close() fout.close()
do.add_dependency('BASE') cue.add_dependency('BASE')
self.assertTrue(os.path.exists(self.licensefile), 'No check-out on top of out-of-date dependency') self.assertTrue(os.path.exists(self.licensefile), 'No check-out on top of out-of-date dependency')
with open(self.checked_file, 'r') as bfile: with open(self.checked_file, 'r') as bfile:
checked_out = bfile.read().strip() checked_out = bfile.read().strip()
@@ -212,6 +216,7 @@ class TestAddDependencyUpToDateCheck(unittest.TestCase):
"Wrong commit of dependency checked out (expected='{0}' found='{1}')" "Wrong commit of dependency checked out (expected='{0}' found='{1}')"
.format(self.hash_3_15_6, checked_out)) .format(self.hash_3_15_6, checked_out))
def is_shallow_repo(place): def is_shallow_repo(place):
check = sp.check_output(['git', 'rev-parse', '--is-shallow-repository'], cwd=place).strip() check = sp.check_output(['git', 'rev-parse', '--is-shallow-repository'], cwd=place).strip()
if check == '--is-shallow-repository': if check == '--is-shallow-repository':
@@ -221,64 +226,65 @@ def is_shallow_repo(place):
check = 'false' check = 'false'
return check == 'true' return check == 'true'
class TestAddDependencyOptions(unittest.TestCase):
location = os.path.join(do.cachedir, 'mcoreutils-master') class TestAddDependencyOptions(unittest.TestCase):
location = os.path.join(cue.cachedir, 'mcoreutils-master')
testfile = os.path.join(location, '.ci', 'LICENSE') testfile = os.path.join(location, '.ci', 'LICENSE')
def setUp(self): def setUp(self):
os.environ['SETUP_PATH'] = '.:appveyor' os.environ['SETUP_PATH'] = '.:appveyor'
if os.path.exists(do.cachedir): if os.path.exists(cue.cachedir):
shutil.rmtree(do.cachedir, onerror=do.remove_readonly) shutil.rmtree(cue.cachedir, onerror=cue.remove_readonly)
do.clear_lists() cue.clear_lists()
do.source_set('defaults') cue.source_set('defaults')
do.complete_setup('MCoreUtils') cue.complete_setup('MCoreUtils')
do.setup['MCoreUtils'] = 'master' cue.setup['MCoreUtils'] = 'master'
def test_Default(self): def test_Default(self):
do.add_dependency('MCoreUtils') cue.add_dependency('MCoreUtils')
self.assertTrue(os.path.exists(self.testfile), self.assertTrue(os.path.exists(self.testfile),
'Submodule (.ci) not checked out recursively (requested: default=YES') 'Submodule (.ci) not checked out recursively (requested: default=YES')
self.assertTrue(is_shallow_repo(self.location), self.assertTrue(is_shallow_repo(self.location),
'Module not checked out shallow (requested: default=5)') 'Module not checked out shallow (requested: default=5)')
def test_SetRecursiveNo(self): def test_SetRecursiveNo(self):
do.setup['MCoreUtils_RECURSIVE'] = 'NO' cue.setup['MCoreUtils_RECURSIVE'] = 'NO'
do.add_dependency('MCoreUtils') cue.add_dependency('MCoreUtils')
self.assertFalse(os.path.exists(self.testfile), 'Submodule (.ci) checked out recursively') self.assertFalse(os.path.exists(self.testfile), 'Submodule (.ci) checked out recursively')
def test_SetDepthZero(self): def test_SetDepthZero(self):
do.setup['MCoreUtils_DEPTH'] = '0' cue.setup['MCoreUtils_DEPTH'] = '0'
do.add_dependency('MCoreUtils') cue.add_dependency('MCoreUtils')
self.assertFalse(is_shallow_repo(self.location), 'Module checked out shallow (requested full)') self.assertFalse(is_shallow_repo(self.location), 'Module checked out shallow (requested full)')
def test_SetDepthThree(self): def test_SetDepthThree(self):
do.setup['MCoreUtils_DEPTH'] = '3' cue.setup['MCoreUtils_DEPTH'] = '3'
do.add_dependency('MCoreUtils') cue.add_dependency('MCoreUtils')
self.assertTrue(is_shallow_repo(self.location), self.assertTrue(is_shallow_repo(self.location),
'Module not checked out shallow (requested: default=5)') 'Module not checked out shallow (requested: default=5)')
def test_AddMsiTo314(self): def test_AddMsiTo314(self):
do.complete_setup('BASE') cue.complete_setup('BASE')
do.setup['BASE'] = 'R3.14.12.1' cue.setup['BASE'] = 'R3.14.12.1'
msifile = os.path.join(do.cachedir, 'base-R3.14.12.1', 'src', 'dbtools', 'msi.c') msifile = os.path.join(cue.cachedir, 'base-R3.14.12.1', 'src', 'dbtools', 'msi.c')
do.add_dependency('BASE') cue.add_dependency('BASE')
self.assertTrue(os.path.exists(msifile), 'MSI was not added to Base 3.14') self.assertTrue(os.path.exists(msifile), 'MSI was not added to Base 3.14')
def repo_access(dep): def repo_access(dep):
do.set_setup_from_env(dep) cue.set_setup_from_env(dep)
do.setup.setdefault(dep + "_DIRNAME", dep.lower()) cue.setup.setdefault(dep + "_DIRNAME", dep.lower())
do.setup.setdefault(dep + "_REPONAME", dep.lower()) cue.setup.setdefault(dep + "_REPONAME", dep.lower())
do.setup.setdefault('REPOOWNER', 'epics-modules') cue.setup.setdefault('REPOOWNER', 'epics-modules')
do.setup.setdefault(dep + "_REPOOWNER", do.setup['REPOOWNER']) cue.setup.setdefault(dep + "_REPOOWNER", cue.setup['REPOOWNER'])
do.setup.setdefault(dep + "_REPOURL", 'https://github.com/{0}/{1}.git' cue.setup.setdefault(dep + "_REPOURL", 'https://github.com/{0}/{1}.git'
.format(do.setup[dep + '_REPOOWNER'], do.setup[dep + '_REPONAME'])) .format(cue.setup[dep + '_REPOOWNER'], cue.setup[dep + '_REPONAME']))
with open(os.devnull, 'w') as devnull: with open(os.devnull, 'w') as devnull:
return do.call_git(['ls-remote', '--quiet', '--heads', do.setup[dep + '_REPOURL']], return cue.call_git(['ls-remote', '--quiet', '--heads', cue.setup[dep + '_REPOURL']],
stdout=devnull, stderr=devnull) stdout=devnull, stderr=devnull)
class TestDefaultModuleURLs(unittest.TestCase): class TestDefaultModuleURLs(unittest.TestCase):
modules = ['BASE', 'PVDATA', 'PVACCESS', 'NTYPES', modules = ['BASE', 'PVDATA', 'PVACCESS', 'NTYPES',
'SNCSEQ', 'STREAM', 'ASYN', 'STD', 'SNCSEQ', 'STREAM', 'ASYN', 'STD',
'CALC', 'AUTOSAVE', 'BUSY', 'SSCAN', 'CALC', 'AUTOSAVE', 'BUSY', 'SSCAN',
@@ -286,14 +292,15 @@ class TestDefaultModuleURLs(unittest.TestCase):
def setUp(self): def setUp(self):
os.environ['SETUP_PATH'] = '.:appveyor' os.environ['SETUP_PATH'] = '.:appveyor'
do.clear_lists() cue.clear_lists()
os.chdir(builddir) os.chdir(builddir)
do.source_set('defaults') cue.source_set('defaults')
def test_Repos(self): def test_Repos(self):
for mod in self.modules: for mod in self.modules:
self.assertEqual(repo_access(mod), 0, 'Defaults for {0} do not point to a valid git repository at {1}' self.assertEqual(repo_access(mod), 0, 'Defaults for {0} do not point to a valid git repository at {1}'
.format(mod, do.setup[mod + '_REPOURL'])) .format(mod, cue.setup[mod + '_REPOURL']))
class TestVCVars(unittest.TestCase): class TestVCVars(unittest.TestCase):
def test_vcvars(self): def test_vcvars(self):
@@ -301,18 +308,19 @@ class TestVCVars(unittest.TestCase):
or distutils.util.get_platform() != "win32": or distutils.util.get_platform() != "win32":
raise unittest.SkipTest() raise unittest.SkipTest()
do.with_vcvars('env') cue.with_vcvars('env')
class TestSetupForBuild(unittest.TestCase): class TestSetupForBuild(unittest.TestCase):
configuration = os.environ['CONFIGURATION'] configuration = os.environ['CONFIGURATION']
platform = os.environ['PLATFORM'] platform = os.environ['PLATFORM']
cc = os.environ['CMP'] cc = os.environ['CMP']
args = Namespace(paths=[]) args = Namespace(paths=[])
do.building_base = True cue.building_base = True
def setUp(self): def setUp(self):
os.environ.pop('EPICS_HOST_ARCH', None) os.environ.pop('EPICS_HOST_ARCH', None)
do.clear_lists() cue.clear_lists()
def tearDown(self): def tearDown(self):
os.environ['CONFIGURATION'] = self.configuration os.environ['CONFIGURATION'] = self.configuration
@@ -322,7 +330,7 @@ class TestSetupForBuild(unittest.TestCase):
def test_AddPathsOption(self): def test_AddPathsOption(self):
os.environ['FOOBAR'] = 'BAR' os.environ['FOOBAR'] = 'BAR'
args = Namespace(paths=['/my/{FOOBAR}/dir', '/my/foobar']) args = Namespace(paths=['/my/{FOOBAR}/dir', '/my/foobar'])
do.setup_for_build(args) cue.setup_for_build(args)
self.assertTrue(re.search('/my/BAR/dir', os.environ['PATH']), 'Expanded path not in PATH') self.assertTrue(re.search('/my/BAR/dir', os.environ['PATH']), 'Expanded path not in PATH')
self.assertTrue(re.search('/foobar', os.environ['PATH']), 'Plain path not in PATH') self.assertTrue(re.search('/foobar', os.environ['PATH']), 'Plain path not in PATH')
os.environ.pop('FOOBAR', None) os.environ.pop('FOOBAR', None)
@@ -330,7 +338,7 @@ class TestSetupForBuild(unittest.TestCase):
def test_HostArchConfiguration(self): def test_HostArchConfiguration(self):
for config in ['dynamic', 'dynamic-debug', 'static', 'static-debug']: for config in ['dynamic', 'dynamic-debug', 'static', 'static-debug']:
os.environ['CONFIGURATION'] = config os.environ['CONFIGURATION'] = config
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertTrue('EPICS_HOST_ARCH' in os.environ, self.assertTrue('EPICS_HOST_ARCH' in os.environ,
'EPICS_HOST_ARCH is not set for Configuration={0}'.format(config)) 'EPICS_HOST_ARCH is not set for Configuration={0}'.format(config))
if re.search('static', config): if re.search('static', config):
@@ -355,7 +363,7 @@ class TestSetupForBuild(unittest.TestCase):
os.environ['PLATFORM'] = platform os.environ['PLATFORM'] = platform
os.environ['CMP'] = cc os.environ['CMP'] = cc
os.environ['CONFIGURATION'] = 'dynamic' os.environ['CONFIGURATION'] = 'dynamic'
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertTrue('EPICS_HOST_ARCH' in os.environ, self.assertTrue('EPICS_HOST_ARCH' in os.environ,
'EPICS_HOST_ARCH is not set for {0} / {1}'.format(cc, platform)) 'EPICS_HOST_ARCH is not set for {0} / {1}'.format(cc, platform))
if platform == 'x86': if platform == 'x86':
@@ -376,9 +384,9 @@ class TestSetupForBuild(unittest.TestCase):
self.assertTrue(re.search(pattern, os.environ['INCLUDE']), self.assertTrue(re.search(pattern, os.environ['INCLUDE']),
'Include location for {0} not in INCLUDE'.format(pattern)) 'Include location for {0} not in INCLUDE'.format(pattern))
def test_StrawberryInPath(self): def test_StrawberryInPathVS2019(self):
os.environ['CMP'] = 'vs2019' os.environ['CMP'] = 'vs2019'
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertTrue(re.search('strawberry', os.environ['PATH'], flags=re.IGNORECASE), self.assertTrue(re.search('strawberry', os.environ['PATH'], flags=re.IGNORECASE),
'Strawberry Perl location not in PATH for vs2019') 'Strawberry Perl location not in PATH for vs2019')
@@ -398,40 +406,41 @@ class TestSetupForBuild(unittest.TestCase):
def test_DetectionBase314No(self): def test_DetectionBase314No(self):
self.setBase314('NO') self.setBase314('NO')
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertFalse(do.isbase314, 'Falsely detected Base 3.14') self.assertFalse(cue.isbase314, 'Falsely detected Base 3.14')
def test_DetectionBase314Yes(self): def test_DetectionBase314Yes(self):
self.setBase314('YES') self.setBase314('YES')
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertTrue(do.isbase314, 'Base 3.14 = YES not detected') self.assertTrue(cue.isbase314, 'Base 3.14 = YES not detected')
def test_DetectionTestResultsTarget314No(self): def test_DetectionTestResultsTarget314No(self):
self.setBase314('YES') self.setBase314('YES')
self.setTestResultsTarget('nottherighttarget') self.setTestResultsTarget('nottherighttarget')
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertFalse(do.has_test_results, 'Falsely detected test-results target') self.assertFalse(cue.has_test_results, 'Falsely detected test-results target')
def test_DetectionTestResultsTarget314Yes(self): def test_DetectionTestResultsTarget314Yes(self):
self.setBase314('YES') self.setBase314('YES')
self.setTestResultsTarget('test-results') self.setTestResultsTarget('test-results')
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertFalse(do.has_test_results, 'Falsely found test-results on Base 3.14') self.assertFalse(cue.has_test_results, 'Falsely found test-results on Base 3.14')
def test_DetectionTestResultsTargetNot314Yes(self): def test_DetectionTestResultsTargetNot314Yes(self):
self.setBase314('NO') self.setBase314('NO')
self.setTestResultsTarget('test-results') self.setTestResultsTarget('test-results')
do.setup_for_build(self.args) cue.setup_for_build(self.args)
self.assertTrue(do.has_test_results, 'Target test-results not detected') self.assertTrue(cue.has_test_results, 'Target test-results not detected')
if __name__ == "__main__": if __name__ == "__main__":
if 'VV' in os.environ and os.environ['VV'] == '1': if 'VV' in os.environ and os.environ['VV'] == '1':
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
do.silent_dep_builds = False cue.silent_dep_builds = False
do.host_info() cue.host_info()
if sys.argv[1:]==['env']: if sys.argv[1:] == ['env']:
# testing with_vcvars # testing with_vcvars
[print(K,'=',V) for K, V in os.environ.items()] [print(K, '=', V) for K, V in os.environ.items()]
else: else:
unittest.main() unittest.main()