def testLink(self): linked_in_module = util.writeTestFiles(util.Test_Trivial_Lib, True) stdout, stderr, statuscode = cli.run( ['-t', Test_Target, '--plain', 'link'], cwd=linked_in_module) self.assertEqual(statuscode, 0) self.assertTrue( os.path.exists( os.path.join(globalInstallDirectory(), 'test-trivial-lib'))) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run( ['-t', Test_Target, '--plain', 'list'], cwd=test_module) self.assertIn('missing', stdout + stderr) stdout, stderr, statuscode = cli.run( ['-t', Test_Target, '--plain', 'link', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertNotIn('broken', stdout + stderr) stdout, stderr, statuscode = cli.run( ['-t', Test_Target, '--plain', 'list'], cwd=test_module) self.assertNotIn('missing', stdout + stderr) util.rmRf(test_module) util.rmRf(linked_in_module)
def testLinkedReBuild(self): # test that changing which module is linked triggers a re-build linked_in_module_1 = util.writeTestFiles(util.Test_Trivial_Lib, True) linked_in_module_2 = util.writeTestFiles(util.Test_Trivial_Lib, True) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link'], cwd=linked_in_module_1) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'build'], cwd=test_module) self.assertEqual(statuscode, 0) # check that rebuild is no-op stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'build'], cwd=test_module) self.assertIn('no work to do', stdout+stderr) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link'], cwd=linked_in_module_2) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'build'], cwd=test_module) self.assertNotIn('no work to do', stdout+stderr) self.assertEqual(statuscode, 0) util.rmRf(test_module) util.rmRf(linked_in_module_1) util.rmRf(linked_in_module_2)
def test_noop_debug(self): test_dir = util.writeTestFiles(util.Test_Trivial_Exe, True) target_dir = os.path.realpath( os.path.join(test_dir, 'yotta_targets', 'debug-test-target')) build_dir = os.path.realpath( os.path.join(test_dir, 'build', 'debug-test-target')) util.writeTestFiles(_nopDebugTargetDescription('debug-test-target'), test_dir=target_dir) output = util.runCheckCommand( ['--target', 'debug-test-target', 'build'], test_dir) output = util.runCheckCommand( ['--target', 'debug-test-target', 'debug'], test_dir) json_output = output[:output.index(JSON_MARKER)] result = json.loads(json_output) self.assertTrue(result is not None) self.assertEqual(len(result['argv']), 3) self.assertEqual(result['argv'][0], 'source/test-trivial-exe') self.assertEqual(result['env']['YOTTA_PROGRAM'], 'source/test-trivial-exe') self.assertEqual(result['argv'][1], build_dir) self.assertEqual(result['env']['YOTTA_BUILD_DIR'], build_dir) self.assertEqual(result['argv'][2], target_dir) self.assertEqual(result['env']['YOTTA_TARGET_DIR'], target_dir) util.rmRf(test_dir)
def test_noop_start(self): test_dir = util.writeTestFiles(util.Test_Trivial_Exe, True) util.writeTestFiles(_nopStartTargetDescription('start-test-target'), test_dir=os.path.join(test_dir, 'yotta_targets', 'start-test-target')) output = util.runCheckCommand(['--target', 'start-test-target', 'build'], test_dir) output = util.runCheckCommand(['--target', 'start-test-target', 'start'], test_dir) self.assertIn('would start source/test-trivial-exe', output) util.rmRf(test_dir)
def test_notfound_start(self): test_dir = util.writeTestFiles(util.Test_Trivial_Exe, True) target_descr = _nopStartTargetDescription('start-test-target') del target_descr['./scripts/nop.py'] util.writeTestFiles(target_descr, test_dir=os.path.join(test_dir, 'yotta_targets', 'start-test-target')) # in this case, without the script present we expect a failure output = util.runCheckCommand(['--target', 'start-test-target', 'build'], test_dir) stdout, stderr, statuscode = cli.run(['--target', 'start-test-target', 'start'], cwd=test_dir) self.assertNotEqual(statuscode, 0) util.rmRf(test_dir)
def testLinkedBuild(self): linked_in_module = util.writeTestFiles(util.Test_Trivial_Lib, True) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link'], cwd=linked_in_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'build'], cwd=test_module) self.assertEqual(statuscode, 0) util.rmRf(test_module) util.rmRf(linked_in_module)
def testTargetLinkedBuild(self): linked_in_target = util.writeTestFiles(util.getNativeTargetDescription(), True) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep_Preinstalled, True) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'link-target'], cwd=linked_in_target) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'link-target', 'test-native-target'], cwd=test_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'build'], cwd=test_module) self.assertEqual(statuscode, 0) util.rmRf(test_module) util.rmRf(linked_in_target)
def testUnlinkModule(self): linked_in_module = util.writeTestFiles(util.Test_Trivial_Lib, True) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link'], cwd=linked_in_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'link', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertTrue(os.path.exists(os.path.join(test_module, 'yotta_modules', 'test-trivial-lib'))) stdout, stderr, statuscode = cli.run(['-t', util.nativeTarget(), '--plain', 'unlink', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertTrue(not os.path.exists(os.path.join(test_module, 'yotta_modules', 'test-trivial-lib'))) util.rmRf(test_module) util.rmRf(linked_in_module)
def testUnlinkTarget(self): linked_in_target = util.writeTestFiles(util.getNativeTargetDescription(), True) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep_Preinstalled, True) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'link-target'], cwd=linked_in_target) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'link-target', 'test-native-target'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertTrue(os.path.exists(os.path.join(test_module, 'yotta_targets', 'test-native-target'))) stdout, stderr, statuscode = cli.run(['-t', 'test-native-target', '--plain', 'unlink-target', 'test-native-target'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertTrue(not os.path.exists(os.path.join(test_module, 'yotta_targets', 'test-native-target'))) util.rmRf(test_module) util.rmRf(linked_in_target)
def test_postInstall_topLevel(self): test_dir = util.writeTestFiles({}) self.runCheckCommand(['--target', util.nativeTarget(), 'install', 'test-post-install'], test_dir) output = self.runCheckCommand(['--target', util.nativeTarget(), 'build'], os.path.join(test_dir, 'test-post-install')) self.assertIn('post-install generated file compiled', output) self.assertIn('post-install generated header file included', output) self.assertIn('generated .cmake file included', output)
def test_binNonExistent(self): test_dir = util.writeTestFiles(Test_Bin_Nonexistent) stdout, stderr, statuscode = cli.run(['--target', util.nativeTarget(), 'build'], cwd=test_dir) self.assertIn('directory "doesntexist" doesn\'t exist', stdout+stderr) # !!! FIXME: should this error be fatal? # self.assertNotEqual(statuscode, 0) util.rmRf(test_dir)
def test_targetAppConfigMerge(self): test_dir = util.writeTestFiles(Test_Target_Config_Merge_App, True) os.chdir(test_dir) c = validate.currentDirectoryModule() target, errors = c.satisfyTarget('bar,') merged_config = target.getMergedConfig() self.assertIn("foo", merged_config) self.assertIn("bar", merged_config) self.assertIn("new", merged_config) self.assertIn("a", merged_config['foo']) self.assertIn("b", merged_config['foo']) self.assertIn("c", merged_config['foo']) self.assertEqual(merged_config['foo']['a'], 321) self.assertEqual(merged_config['foo']['b'], 456) self.assertEqual(merged_config['foo']['c'], 112233) self.assertIn("bar", merged_config) self.assertIn("d", merged_config['bar']) self.assertEqual(merged_config['bar']['d'], "ghi") self.assertIn("new", merged_config) self.assertEqual(merged_config['new'], 123) os.chdir(self.restore_cwd) util.rmRf(test_dir)
def testMissingDependenciesShrinkwrap(self): test_dir = util.writeTestFiles(Test_Shrinkwrap_Missing_Dependency, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'shrinkwrap'], cwd=test_dir) self.assertNotEqual(statuscode, 0) self.assertFalse(os.path.exists(os.path.join(test_dir, 'yotta-shrinkwrap.json'))) self.assertIn('is missing', stdout+stderr) util.rmRf(test_dir)
def generatedTestMethod(self): test_dir = util.writeTestFiles(filesForReporterTest(**kwargs), test_dir=self.test_dir) # build first, to make test timing more accurate: stdout, stderr, statuscode = cli.run(['--target', systemDefaultTarget(), 'build'], cwd=test_dir) #print('build:', stdout) #print('build:', stderr) #print('build statuscode was:', statuscode) self.assertEqual(statuscode, 0) tstart = time.time() stdout, stderr, statuscode = cli.run(['-vvv', '--target', systemDefaultTarget(), 'test'], cwd=test_dir) duration = time.time() - tstart # useful output for debugging failed tests: if bool(statuscode) == bool(kwargs['test_passes']) or \ duration >= 5.5 + kwargs['reporter_waits'] or \ (kwargs['test_speed'] == 'fast' and (duration >= 1.5 + kwargs['reporter_waits'])): print(stdout + stderr) print(statuscode) print('duration:', duration) if kwargs['test_passes']: self.assertEqual(statuscode, 0) else: self.assertNotEqual(statuscode, 0) # **no** tests should cause a timeout (Which is set at 4.5 seconds in # the test reporter), + the wait-for duration (+ 1 second slack for # process startup etc.) self.assertTrue(duration < 5.5 + kwargs['reporter_waits']) # if a test isn't slow, then it should run in less than 1 seconds if kwargs['test_speed'] == 'fast': self.assertTrue(duration < 1.5 + kwargs['reporter_waits'])
def test_buildInfo(self): test_dir = util.writeTestFiles(Test_Build_Info, True) # commit all the test files to git so that the VCS build info gets # defined: # (set up the git user env vars so we can run git commit without barfing) util.setupGitUser() subprocess.check_call(['git', 'init', '-q'], cwd=test_dir) subprocess.check_call(['git', 'add', '.'], cwd=test_dir) subprocess.check_call( ['git', 'commit', '-m', 'test build info automated commit', '-q'], cwd=test_dir) self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], test_dir) build_time = datetime.datetime.utcnow() output = subprocess.check_output([ './build/' + util.nativeTarget().split(',')[0] + '/source/test-trivial-exe' ], cwd=test_dir).decode() self.assertIn('vcs clean: 1', output) # check build timestamp self.assertIn('build timestamp: ', output) build_timestamp_s = re.search('build timestamp: (.*)\n', output) self.assertTrue(build_timestamp_s) build_timestamp_s = build_timestamp_s.group(1) build_time_parsed = datetime.datetime.strptime(build_timestamp_s, '%Y-%m-%d-%H-%M-%S') build_time_skew = build_time_parsed - build_time self.assertTrue(abs(build_time_skew.total_seconds()) < 3)
def test_buildTrivialExe(self): test_dir = util.writeTestFiles(util.Test_Trivial_Exe) stdout = self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], test_dir) util.rmRf(test_dir)
def test_buildComplexSpaceInPath(self): test_dir = util.writeTestFiles(Test_Complex, True) stdout = self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], test_dir) util.rmRf(test_dir)
def test_yottaVersionCheckOKBuilding(self): test_dir = util.writeTestFiles(Test_Min_Version_OK) stdout, stderr, statuscode = cli.run( ['--target', util.nativeTarget(), 'build'], cwd=test_dir) self.assertEqual(statuscode, 0) self.assertNotIn('requires yotta version >', stdout + stderr) util.rmRf(test_dir)
def test_yottaVersionCheckOKInstalling(self): test_dir = util.writeTestFiles(Test_Min_Version_OK) stdout, stderr, statuscode = cli.run( ['--target', 'x86-linux-native', 'install'], cwd=test_dir) self.assertEqual(statuscode, 0) self.assertNotIn('requires yotta version >', stdout + stderr) util.rmRf(test_dir)
def testUnlinkTargetGlobally(self): test_target = util.writeTestFiles(util.getNativeTargetDescription(), True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'link-target'], cwd=test_target) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'unlink-target'], cwd=test_target) self.assertEqual(statuscode, 0) util.rmRf(test_target)
def testUnlinkModuleGlobally(self): test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'link'], cwd=test_module) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'unlink'], cwd=test_module) self.assertEqual(statuscode, 0) util.rmRf(test_module)
def test_Defines_Library(self): test_dir = util.writeTestFiles(Test_Defines_Library) stdout = self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], test_dir) self.assertIn( "defines.json ignored in library module 'test-defines-lib'", stdout) util.rmRf(test_dir)
def test_unparseableSpec(self): test_dir = util.writeTestFiles(Test_Unparsable_Spec) stdout, stderr, statuscode = cli.run( ['--target', Test_Min_Version_Target_Name, 'install'], cwd=test_dir) self.assertNotEqual(statuscode, 0) self.assertIn('could not parse yotta version spec', stdout + stderr) util.rmRf(test_dir)
def test_yottaVersionTargetCheck(self): test_dir = util.writeTestFiles(Test_Min_Version_Target_Insufficient) stdout, stderr, statuscode = cli.run( ['--target', Test_Min_Version_Target_Name, 'install'], cwd=test_dir) self.assertNotEqual(statuscode, 0) self.assertIn('requires yotta version >', stdout + stderr) util.rmRf(test_dir)
def test_warnOfficialKeywords(self): path = util.writeTestFiles(Test_Publish, True) stdout, stderr, statuscode = cli.run(['-t', 'x86-linux-native', '--noninteractive', 'publish'], cwd=path) self.assertNotEqual(statuscode, 0) self.assertIn('Is this really an officially supported mbed module', stdout + stderr) util.rmRf(path)
def test_prePublishPreventsPublish(self): path = util.writeTestFiles(Test_prePublish_Prevents_Publish, True) stdout, stderr, statuscode = cli.run(['-t', 'x86-linux-native', '--noninteractive', 'publish'], cwd=path) self.assertNotEqual(statuscode, 0) self.assertIn('prePublish script error code 1 prevents publishing', stdout + stderr) util.rmRf(path)
def test_testOutputFilterNotFound(self): test_dir = util.writeTestFiles(Test_Fitler_NotFound, True) stdout, stderr, statuscode = cli.run(['--target', systemDefaultTarget(), 'test'], cwd=test_dir) if statuscode == 0: print(stdout) print(stderr) self.assertNotEqual(statuscode, 0) util.rmRf(test_dir)
def test_outdated(self): path = util.writeTestFiles(Test_Outdated, True) stdout, stderr, statuscode = cli.run(['-t', 'x86-linux-native', 'outdated'], cwd=path) self.assertNotEqual(statuscode, 0) self.assertIn('test-testing-dummy', stdout + stderr) util.rmRf(path)
def test_updateExplicit(self): path = util.writeTestFiles(Test_Outdated, True) stdout, stderr, statuscode = cli.run(['-t', 'x86-linux-native', 'update', 'test-testing-dummy'], cwd=path) self.assertEqual(statuscode, 0) self.assertIn('download test-testing-dummy', stdout + stderr) util.rmRf(path)
def testCreateShrinkwrap(self): test_dir = util.writeTestFiles(Test_Shrinkwrap, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'shrinkwrap'], cwd=test_dir) self.assertEqual(statuscode, 0) self.assertTrue(os.path.exists(os.path.join(test_dir, 'yotta-shrinkwrap.json'))) util.rmRf(test_dir)
def test_testOutputFilterNotFound(self): test_dir = util.writeTestFiles(Test_Fitler_NotFound, True) stdout, stderr, statuscode = cli.run( ['--target', systemDefaultTarget(), 'test'], cwd=test_dir) if statuscode == 0: print(stdout) print(stderr) self.assertNotEqual(statuscode, 0) util.rmRf(test_dir)
def test_libAndBinSpecified(self): test_dir = util.writeTestFiles(Test_Lib_And_Bin) stdout, stderr, statuscode = cli.run( ['--target', util.nativeTarget(), 'build'], cwd=test_dir) self.assertNotEqual(statuscode, 0) self.assertIn( 'Both "lib" and "bin" are specified in module.json: only one is allowed', stdout + stderr) util.rmRf(test_dir)
def test_updateExplicit(self): path = util.writeTestFiles(Test_Outdated, True) stdout, stderr, statuscode = cli.run( ['-t', 'x86-linux-native', 'update', 'test-testing-dummy'], cwd=path) self.assertEqual(statuscode, 0) self.assertIn('download test-testing-dummy', stdout + stderr) util.rmRf(path)
def testBaseTargetInstallWithShrinkwrap(self): test_dir = util.writeTestFiles(Test_Existing_Shrinkwrap, True) stdout, stderr, statuscode = cli.run(['-t', 'inherits-from-test-target', '--plain', 'install'], cwd=test_dir) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', 'inherits-from-test-target', '--plain', 'target'], cwd=test_dir) self.assertEqual(statuscode, 0) self.assertIn('%s %s' % (Test_Target_Name, Test_Target_Old_Version), stdout+stderr) util.rmRf(test_dir)
def test_Defines_Application(self): test_dir = util.writeTestFiles(Test_Defines_Application) stdout = self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], test_dir) output = subprocess.check_output([ './build/' + util.nativeTarget().split(',')[0] + '/source/test-defines-app' ], cwd=test_dir).decode() self.assertIn("1234 yotta", output) util.rmRf(test_dir)
def testUpdateWithShrinkwrap(self): test_dir = util.writeTestFiles(Test_Existing_Shrinkwrap, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'update'], cwd=test_dir) self.assertEqual(statuscode, 0) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'list'], cwd=test_dir) self.assertEqual(statuscode, 0) # as opposed to 0.0.2 which is the latest self.assertIn('test-testing-dummy 0.0.1', stdout+stderr) util.rmRf(test_dir)
def test_buildTests(self): test_dir = util.writeTestFiles(Test_Tests, True) stdout = self.runCheckCommand(['--target', util.nativeTarget(), 'build'], test_dir) stdout = self.runCheckCommand(['--target', util.nativeTarget(), 'test'], test_dir) self.assertIn('test-a', stdout) self.assertIn('test-c', stdout) self.assertIn('test-d', stdout) self.assertIn('test-e', stdout) self.assertIn('test-f', stdout) self.assertIn('test-g', stdout) util.rmRf(test_dir)
def test_postInstall_topLevel(self): test_dir = util.writeTestFiles({}) self.runCheckCommand( ['--target', util.nativeTarget(), 'install', 'test-post-install'], test_dir) output = self.runCheckCommand( ['--target', util.nativeTarget(), 'build'], os.path.join(test_dir, 'test-post-install')) self.assertIn('post-install generated file compiled', output) self.assertIn('post-install generated header file included', output) self.assertIn('generated .cmake file included', output)
def testLink(self): linked_in_module = util.writeTestFiles(util.Test_Trivial_Lib, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'link'], cwd=linked_in_module) self.assertEqual(statuscode, 0) self.assertTrue(os.path.exists(os.path.join(globalInstallDirectory(), 'test-trivial-lib'))) test_module = util.writeTestFiles(util.Test_Testing_Trivial_Lib_Dep, True) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'list'], cwd=test_module) self.assertIn('missing', stdout+stderr) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'link', 'test-trivial-lib'], cwd=test_module) self.assertEqual(statuscode, 0) self.assertNotIn('broken', stdout+stderr) stdout, stderr, statuscode = cli.run(['-t', Test_Target, '--plain', 'list'], cwd=test_module) self.assertNotIn('missing', stdout+stderr) util.rmRf(test_module) util.rmRf(linked_in_module)
def test_tests(self): test_dir = util.writeTestFiles(Test_Tests, True) output = self.runCheckCommand(['--target', systemDefaultTarget(), 'build'], test_dir) output = self.runCheckCommand(['--target', systemDefaultTarget(), 'test'], test_dir) self.assertIn('test-a passed', output) self.assertIn('test-c passed', output) self.assertIn('test-d passed', output) self.assertIn('test-e passed', output) self.assertIn('test-f passed', output) self.assertIn('test-g passed', output) util.rmRf(test_dir)
def test_noop_debug(self): test_dir = util.writeTestFiles(util.Test_Trivial_Exe, True) target_dir = os.path.realpath(os.path.join(test_dir, 'yotta_targets', 'debug-test-target')) build_dir = os.path.realpath(os.path.join(test_dir, 'build', 'debug-test-target')) util.writeTestFiles(_nopDebugTargetDescription('debug-test-target'), test_dir=target_dir) output = util.runCheckCommand(['--target', 'debug-test-target', 'build'], test_dir) output = util.runCheckCommand(['--target', 'debug-test-target', 'debug'], test_dir) json_output = output[:output.index(JSON_MARKER)] result = json.loads(json_output) self.assertTrue(result is not None) self.assertEqual(len(result['argv']), 3) self.assertEqual(result['argv'][0], 'source/test-trivial-exe') self.assertEqual(result['env']['YOTTA_PROGRAM'], 'source/test-trivial-exe') self.assertEqual(result['argv'][1], build_dir) self.assertEqual(result['env']['YOTTA_BUILD_DIR'], build_dir) self.assertEqual(result['argv'][2], target_dir) self.assertEqual(result['env']['YOTTA_TARGET_DIR'], target_dir) util.rmRf(test_dir)
def test_moduleConfigIgnored(self): test_dir = util.writeTestFiles(Test_Module_Config_Ignored, True) os.chdir(test_dir) c = validate.currentDirectoryModule() target, errors = c.satisfyTarget('bar,') merged_config = target.getMergedConfig() self.assertNotIn("new", merged_config) os.chdir(self.restore_cwd) util.rmRf(test_dir)
def test_testOutputFilterFailing(self): test_dir = util.writeTestFiles(Test_Fitler_Fail, True) stdout, stderr, statuscode = cli.run(['--target', systemDefaultTarget(), 'test'], cwd=test_dir) if statuscode == 0: print(stdout) print(stderr) self.assertIn('test-a failed', '%s %s' % (stdout, stderr)) self.assertIn('test-c failed', '%s %s' % (stdout, stderr)) self.assertIn('test-d failed', '%s %s' % (stdout, stderr)) self.assertIn('test-e failed', '%s %s' % (stdout, stderr)) self.assertIn('test-f failed', '%s %s' % (stdout, stderr)) self.assertIn('test-g failed', '%s %s' % (stdout, stderr)) self.assertNotEqual(statuscode, 0) util.rmRf(test_dir)
def test_default_ignores(self): default_test_dir = util.writeTestFiles(Default_Test_Files) c = component.Component(default_test_dir) self.assertTrue(c.ignores('.something.c.swp')) self.assertTrue(c.ignores('.something.c~')) self.assertTrue(c.ignores('path/to/.something.c.swm')) self.assertTrue(c.ignores('path/to/.something.c~')) self.assertTrue(c.ignores('.DS_Store')) self.assertTrue(c.ignores('.git')) self.assertTrue(c.ignores('.hg')) self.assertTrue(c.ignores('.svn')) self.assertTrue(c.ignores('yotta_modules')) self.assertTrue(c.ignores('yotta_targets')) self.assertTrue(c.ignores('build')) self.assertTrue(c.ignores('.yotta.json')) util.rmRf(default_test_dir)
def test_postInstall_dependency(self): test_dir = util.writeTestFiles({ 'module.json':'''{ "name": "test-postinstall", "version": "1.0.0", "license": "Apache-2.0", "dependencies": { "test-post-install": "*" }, "bin":"./source" }''', 'source/lib.c':''' #include <stdio.h> #include "test-post-install/generated.h" int main(){ printf("generated return val=%d\\n", postInstallGenerated()); return 0; } '''}) output = self.runCheckCommand(['--target', util.nativeTarget(), 'build'], test_dir) self.assertIn('post-install generated file compiled', output) self.assertIn('post-install generated header file included', output) self.assertIn('generated .cmake file included', output)
def test_buildInfo(self): test_dir = util.writeTestFiles(Test_Build_Info, True) # commit all the test files to git so that the VCS build info gets # defined: # (set up the git user env vars so we can run git commit without barfing) util.setupGitUser() subprocess.check_call(['git', 'init', '-q'], cwd=test_dir) subprocess.check_call(['git', 'add', '.'], cwd=test_dir) subprocess.check_call(['git', 'commit', '-m', 'test build info automated commit', '-q'], cwd=test_dir) self.runCheckCommand(['--target', util.nativeTarget(), 'build'], test_dir) build_time = datetime.datetime.utcnow() output = subprocess.check_output(['./build/' + util.nativeTarget().split(',')[0] + '/source/test-trivial-exe'], cwd=test_dir).decode() self.assertIn('vcs clean: 1', output) # check build timestamp self.assertIn('build timestamp: ', output) build_timestamp_s = re.search('build timestamp: (.*)\n', output) self.assertTrue(build_timestamp_s) build_timestamp_s = build_timestamp_s.group(1) build_time_parsed = datetime.datetime.strptime(build_timestamp_s, '%Y-%m-%d-%H-%M-%S') build_time_skew = build_time_parsed - build_time self.assertTrue(abs(build_time_skew.total_seconds()) < 3)