summaryrefslogtreecommitdiff
path: root/run_unittests.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2018-11-29 12:56:52 +0100
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-01-06 12:19:28 +0100
commitc4eb5c79fe89ca49dd9d9f5bd72be99d919dd2a0 (patch)
treed32bb616886be379b602760ac8f42095a8f4ad0d /run_unittests.py
parent24d668bea06b3b953855fa12ef2f5b417d4dd163 (diff)
downloadmeson-c4eb5c79fe89ca49dd9d9f5bd72be99d919dd2a0.tar.gz
Added unit test
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-xrun_unittests.py145
1 files changed, 130 insertions, 15 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 9120a43a7..811df6bd3 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -3110,26 +3110,141 @@ recommended as it is not supported on some platforms''')
self.maxDiff = None
self.assertListEqual(res_nb, res_wb)
- def test_introspect_all_command(self):
- testdir = os.path.join(self.common_test_dir, '6 linkshared')
+ def test_introspect_json_dump(self):
+ testdir = os.path.join(self.unit_test_dir, '49 introspection')
self.init(testdir)
- res = self.introspect('--all')
- keylist = [
- 'benchmarks',
- 'buildoptions',
- 'buildsystem_files',
- 'dependencies',
- 'installed',
- 'projectinfo',
- 'targets',
- 'tests'
+ introfile = os.path.join(self.builddir, 'meson-introspection.json')
+ self.assertPathExists(introfile)
+ with open(introfile, 'r') as fp:
+ res = json.load(fp)
+
+ def assertKeyTypes(key_type_list, obj):
+ for i in key_type_list:
+ self.assertIn(i[0], obj)
+ self.assertIsInstance(obj[i[0]], i[1])
+
+ root_keylist = [
+ ('benchmarks', list),
+ ('buildoptions', list),
+ ('buildsystem_files', list),
+ ('dependencies', list),
+ ('installed', dict),
+ ('projectinfo', dict),
+ ('targets', list),
+ ('tests', list),
+ ]
+
+ test_keylist = [
+ ('cmd', list),
+ ('env', dict),
+ ('name', str),
+ ('timeout', int),
+ ('suite', list),
+ ('is_parallel', bool),
+ ]
+
+ buildoptions_keylist = [
+ ('name', str),
+ ('section', str),
+ ('type', str),
+ ('description', str),
+ ]
+
+ buildoptions_typelist = [
+ ('combo', str, [('choices', list)]),
+ ('string', str, []),
+ ('boolean', bool, []),
+ ('integer', int, []),
+ ('array', list, []),
+ ]
+
+ dependencies_typelist = [
+ ('name', str),
+ ('compile_args', list),
+ ('link_args', list),
+ ]
+
+ targets_typelist = [
+ ('name', str),
+ ('id', str),
+ ('type', str),
+ ('filename', str),
+ ('build_by_default', bool),
+ ('sources', list),
+ ('installed', bool),
+ ]
+
+ targets_sources_typelist = [
+ ('language', str),
+ ('compiler', list),
+ ('parameters', list),
+ ('source_files', list),
]
- for i in keylist:
- self.assertIn(i, res)
+ assertKeyTypes(root_keylist, res)
+
+ # Check Tests and benchmarks
+ tests_to_find = ['test case 1', 'test case 2', 'benchmark 1']
+ for i in res['benchmarks'] + res['tests']:
+ assertKeyTypes(test_keylist, i)
+ if i['name'] in tests_to_find:
+ tests_to_find.remove(i['name'])
+ self.assertListEqual(tests_to_find, [])
+
+ # Check buildoptions
+ buildopts_to_find = {'cpp_std': 'c++11'}
+ for i in res['buildoptions']:
+ assertKeyTypes(buildoptions_keylist, i)
+ valid_type = False
+ for j in buildoptions_typelist:
+ if i['type'] == j[0]:
+ self.assertIsInstance(i['value'], j[1])
+ assertKeyTypes(j[2], i)
+ valid_type = True
+ break
+
+ self.assertTrue(valid_type)
+ if i['name'] in buildopts_to_find:
+ self.assertEqual(i['value'], buildopts_to_find[i['name']])
+ buildopts_to_find.pop(i['name'], None)
+ self.assertDictEqual(buildopts_to_find, {})
+
+ # Check buildsystem_files
+ self.assertListEqual(res['buildsystem_files'], ['meson.build', 'sharedlib/meson.build', 'staticlib/meson.build'])
+
+ # Check dependencies
+ dependencies_to_find = ['zlib']
+ for i in res['dependencies']:
+ assertKeyTypes(dependencies_typelist, i)
+ if i['name'] in dependencies_to_find:
+ dependencies_to_find.remove(i['name'])
+ self.assertListEqual(dependencies_to_find, [])
+
+ # Check projectinfo
+ self.assertDictEqual(res['projectinfo'], {'version': '1.2.3', 'descriptive_name': 'introspection', 'subprojects': []})
+
+ # Check targets
+ targets_to_find = {
+ 'sharedTestLib': ('shared library', True, False),
+ 'staticTestLib': ('static library', True, False),
+ 'test1': ('executable', True, True),
+ 'test2': ('executable', True, False),
+ 'test3': ('executable', True, False),
+ }
+ for i in res['targets']:
+ assertKeyTypes(targets_typelist, i)
+ if i['name'] in targets_to_find:
+ tgt = targets_to_find[i['name']]
+ self.assertEqual(i['type'], tgt[0])
+ self.assertEqual(i['build_by_default'], tgt[1])
+ self.assertEqual(i['installed'], tgt[2])
+ targets_to_find.pop(i['name'], None)
+ for j in i['sources']:
+ assertKeyTypes(targets_sources_typelist, j)
+ self.assertDictEqual(targets_to_find, {})
def test_introspect_file_dump_eauals_all(self):
- testdir = os.path.join(self.common_test_dir, '6 linkshared')
+ testdir = os.path.join(self.unit_test_dir, '49 introspection')
self.init(testdir)
res_all = self.introspect('--all')
res_file = {}