aboutsummaryrefslogtreecommitdiff
path: root/run_unittests.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-02-16 14:17:49 +0200
committerGitHub <noreply@github.com>2019-02-16 14:17:49 +0200
commit939b011114838b886d48521806988973205aecb4 (patch)
tree77eef03f5c136867100ded7dfcfcaa442b184f33 /run_unittests.py
parent3ac7df6a6a016cf3ae92494bb510cbc4005571ed (diff)
parent0ce02b57d71bf4365e30063efa95a0a414a4a92a (diff)
downloadmeson-939b011114838b886d48521806988973205aecb4.zip
meson-939b011114838b886d48521806988973205aecb4.tar.gz
meson-939b011114838b886d48521806988973205aecb4.tar.bz2
Merge pull request #4858 from mensinda/rwKWARGS
rewriter: Add support for kwargs modification
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-xrun_unittests.py96
1 files changed, 82 insertions, 14 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 9dd734a..f63fc18 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -5053,7 +5053,7 @@ class PythonTests(BasePlatformTests):
class RewriterTests(BasePlatformTests):
- data_regex = re.compile(r'^\s*!!\s*(\w+)\s+([^=]+)=(.*)$')
+ data_regex = re.compile(r'.*\n!!==JSON DUMP: BEGIN==!!\n(.*)\n!!==JSON DUMP: END==!!\n', re.MULTILINE | re.DOTALL)
def setUp(self):
super().setUp()
@@ -5065,22 +5065,21 @@ class RewriterTests(BasePlatformTests):
def rewrite(self, directory, args):
if isinstance(args, str):
args = [args]
- out = subprocess.check_output(self.rewrite_command + ['--sourcedir', directory] + args,
- universal_newlines=True)
- return out
+ command = self.rewrite_command + ['--sourcedir', directory] + args
+ p = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
+ universal_newlines=True, timeout=60)
+ print(p.stdout)
+ if p.returncode != 0:
+ if 'MESON_SKIP_TEST' in p.stdout:
+ raise unittest.SkipTest('Project requested skipping.')
+ raise subprocess.CalledProcessError(p.returncode, command, output=p.stdout)
+ return p.stdout
def extract_test_data(self, out):
- lines = out.split('\n')
+ match = RewriterTests.data_regex.match(out)
result = {}
- for i in lines:
- match = RewriterTests.data_regex.match(i)
- if match:
- typ = match.group(1)
- id = match.group(2)
- data = json.loads(match.group(3))
- if typ not in result:
- result[typ] = {}
- result[typ][id] = data
+ if match:
+ result = json.loads(match.group(1))
return result
def test_target_source_list(self):
@@ -5162,6 +5161,75 @@ class RewriterTests(BasePlatformTests):
out = self.extract_test_data(out)
self.assertDictEqual(list(out['target'].values())[0], expected)
+ def test_kwargs_info(self):
+ self.prime('3 kwargs')
+ out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
+ out = self.extract_test_data(out)
+ expected = {
+ 'kwargs': {
+ 'project#': {'version': '0.0.1'},
+ 'target#tgt1': {'build_by_default': True},
+ 'dependency#dep1': {'required': False}
+ }
+ }
+ self.assertDictEqual(out, expected)
+
+ def test_kwargs_set(self):
+ self.prime('3 kwargs')
+ self.rewrite(self.builddir, os.path.join(self.builddir, 'set.json'))
+ out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
+ out = self.extract_test_data(out)
+ expected = {
+ 'kwargs': {
+ 'project#': {'version': '0.0.2', 'meson_version': '0.50.0', 'license': ['GPL', 'MIT']},
+ 'target#tgt1': {'build_by_default': False, 'build_rpath': '/usr/local', 'dependencies': 'dep1'},
+ 'dependency#dep1': {'required': True, 'method': 'cmake'}
+ }
+ }
+ self.assertDictEqual(out, expected)
+
+ def test_kwargs_add(self):
+ self.prime('3 kwargs')
+ self.rewrite(self.builddir, os.path.join(self.builddir, 'add.json'))
+ out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
+ out = self.extract_test_data(out)
+ expected = {
+ 'kwargs': {
+ 'project#': {'version': '0.0.1', 'license': ['GPL', 'MIT', 'BSD']},
+ 'target#tgt1': {'build_by_default': True},
+ 'dependency#dep1': {'required': False}
+ }
+ }
+ self.assertDictEqual(out, expected)
+
+ def test_kwargs_remove(self):
+ self.prime('3 kwargs')
+ self.rewrite(self.builddir, os.path.join(self.builddir, 'remove.json'))
+ out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
+ out = self.extract_test_data(out)
+ expected = {
+ 'kwargs': {
+ 'project#': {'version': '0.0.1', 'license': 'GPL'},
+ 'target#tgt1': {'build_by_default': True},
+ 'dependency#dep1': {'required': False}
+ }
+ }
+ self.assertDictEqual(out, expected)
+
+ def test_kwargs_delete(self):
+ self.prime('3 kwargs')
+ self.rewrite(self.builddir, os.path.join(self.builddir, 'delete.json'))
+ out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
+ out = self.extract_test_data(out)
+ expected = {
+ 'kwargs': {
+ 'project#': {},
+ 'target#tgt1': {},
+ 'dependency#dep1': {'required': False}
+ }
+ }
+ self.assertDictEqual(out, expected)
+
class NativeFileTests(BasePlatformTests):
def setUp(self):