From 2582f311b0a2f23d56a3cbfd99850bbec4f7b109 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Wed, 27 Feb 2019 11:01:56 +0100 Subject: rewriter: Make sure target sources are relative --- run_unittests.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index 90a726b..9c4d904 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5261,6 +5261,17 @@ class RewriterTests(BasePlatformTests): out = self.extract_test_data(out) self.assertDictEqual(out, expected) + def test_target_add_sources_abs(self): + self.prime('1 basic') + abs_src = [os.path.join(self.builddir, x) for x in ['a1.cpp', 'a2.cpp', 'a6.cpp']] + add = json.dumps([{"type": "target", "target": "trivialprog1", "operation": "src_add", "sources": abs_src}]) + inf = json.dumps([{"type": "target", "target": "trivialprog1", "operation": "info"}]) + self.rewrite(self.builddir, add) + out = self.rewrite(self.builddir, inf) + out = self.extract_test_data(out) + expected = {'target': {'trivialprog1@exe': {'name': 'trivialprog1', 'sources': ['main.cpp', 'fileA.cpp', 'a1.cpp', 'a2.cpp', 'a6.cpp']}}} + self.assertDictEqual(out, expected) + def test_target_remove_sources(self): self.prime('1 basic') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'rmSrc.json')) -- cgit v1.1 From 740f6b8f06f7d6d722ca16ca3d9d537a1f089b2f Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Wed, 27 Feb 2019 15:10:20 +0100 Subject: rewriter: Implemented a CLI --- run_unittests.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index 9c4d904..192b533 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5196,7 +5196,7 @@ class RewriterTests(BasePlatformTests): def prime(self, dirname): copy_tree(os.path.join(self.rewrite_test_dir, dirname), self.builddir) - def rewrite(self, directory, args): + def rewrite_raw(self, directory, args): if isinstance(args, str): args = [args] command = self.rewrite_command + ['--sourcedir', directory] + args @@ -5209,6 +5209,11 @@ class RewriterTests(BasePlatformTests): raise subprocess.CalledProcessError(p.returncode, command, output=p.stdout) return p.stdout + def rewrite(self, directory, args): + if isinstance(args, str): + args = [args] + return self.rewrite_raw(directory, ['command'] + args) + def extract_test_data(self, out): match = RewriterTests.data_regex.match(out) result = {} -- cgit v1.1 From b55dbf0faead6571ac5f837c7e82b6ff47d377e1 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sat, 2 Mar 2019 13:56:23 +0100 Subject: rewriter: Dump JSON to stderr instead of stdout --- run_unittests.py | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index 192b533..dc8ff6f 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5187,8 +5187,6 @@ class PythonTests(BasePlatformTests): class RewriterTests(BasePlatformTests): - data_regex = re.compile(r'.*\n!!==JSON DUMP: BEGIN==!!\n(.*)\n!!==JSON DUMP: END==!!\n', re.MULTILINE | re.DOTALL) - def setUp(self): super().setUp() self.maxDiff = None @@ -5200,31 +5198,28 @@ class RewriterTests(BasePlatformTests): if isinstance(args, str): args = [args] command = self.rewrite_command + ['--sourcedir', directory] + args - p = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + p = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, timeout=60) + print('STDOUT:') print(p.stdout) + print('STDERR:') + print(p.stderr) 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 + if not p.stderr: + return {} + return json.loads(p.stderr) def rewrite(self, directory, args): if isinstance(args, str): args = [args] return self.rewrite_raw(directory, ['command'] + args) - def extract_test_data(self, out): - match = RewriterTests.data_regex.match(out) - result = {} - if match: - result = json.loads(match.group(1)) - return result - def test_target_source_list(self): self.prime('1 basic') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) expected = { 'target': { 'trivialprog0@exe': {'name': 'trivialprog0', 'sources': ['main.cpp', 'fileA.cpp', 'fileB.cpp', 'fileC.cpp']}, @@ -5244,7 +5239,6 @@ class RewriterTests(BasePlatformTests): def test_target_add_sources(self): self.prime('1 basic') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'addSrc.json')) - out = self.extract_test_data(out) expected = { 'target': { 'trivialprog0@exe': {'name': 'trivialprog0', 'sources': ['a1.cpp', 'a2.cpp', 'a6.cpp', 'fileA.cpp', 'main.cpp', 'a7.cpp', 'fileB.cpp', 'fileC.cpp']}, @@ -5263,7 +5257,6 @@ class RewriterTests(BasePlatformTests): # Check the written file out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) self.assertDictEqual(out, expected) def test_target_add_sources_abs(self): @@ -5273,14 +5266,12 @@ class RewriterTests(BasePlatformTests): inf = json.dumps([{"type": "target", "target": "trivialprog1", "operation": "info"}]) self.rewrite(self.builddir, add) out = self.rewrite(self.builddir, inf) - out = self.extract_test_data(out) expected = {'target': {'trivialprog1@exe': {'name': 'trivialprog1', 'sources': ['main.cpp', 'fileA.cpp', 'a1.cpp', 'a2.cpp', 'a6.cpp']}}} self.assertDictEqual(out, expected) def test_target_remove_sources(self): self.prime('1 basic') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'rmSrc.json')) - out = self.extract_test_data(out) expected = { 'target': { 'trivialprog0@exe': {'name': 'trivialprog0', 'sources': ['main.cpp', 'fileC.cpp']}, @@ -5299,26 +5290,22 @@ class RewriterTests(BasePlatformTests): # Check the written file out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) self.assertDictEqual(out, expected) def test_target_subdir(self): self.prime('2 subdirs') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'addSrc.json')) - out = self.extract_test_data(out) expected = {'name': 'something', 'sources': ['first.c', 'second.c', 'third.c']} self.assertDictEqual(list(out['target'].values())[0], expected) # Check the written file out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) self.assertDictEqual(list(out['target'].values())[0], expected) def test_target_remove(self): self.prime('1 basic') self.rewrite(self.builddir, os.path.join(self.builddir, 'rmTgt.json')) out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) expected = { 'target': { @@ -5337,7 +5324,6 @@ class RewriterTests(BasePlatformTests): self.prime('1 basic') self.rewrite(self.builddir, os.path.join(self.builddir, 'addTgt.json')) out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) expected = { 'target': { @@ -5360,14 +5346,12 @@ class RewriterTests(BasePlatformTests): self.prime('2 subdirs') self.rewrite(self.builddir, os.path.join(self.builddir, 'rmTgt.json')) out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) self.assertDictEqual(out, {}) def test_target_add_subdir(self): self.prime('2 subdirs') self.rewrite(self.builddir, os.path.join(self.builddir, 'addTgt.json')) out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) - out = self.extract_test_data(out) expected = {'name': 'something', 'sources': ['first.c', 'second.c']} self.assertDictEqual(out['target']['94b671c@@something@exe'], expected) @@ -5420,7 +5404,6 @@ class RewriterTests(BasePlatformTests): 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'}, @@ -5434,7 +5417,6 @@ class RewriterTests(BasePlatformTests): 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']}, @@ -5448,7 +5430,6 @@ class RewriterTests(BasePlatformTests): 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']}, @@ -5462,7 +5443,6 @@ class RewriterTests(BasePlatformTests): 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'}, @@ -5476,7 +5456,6 @@ class RewriterTests(BasePlatformTests): self.prime('3 kwargs') self.rewrite(self.builddir, os.path.join(self.builddir, 'remove_regex.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', 'default_options': ['buildtype=release', 'debug=true']}, @@ -5490,7 +5469,6 @@ class RewriterTests(BasePlatformTests): 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#': {}, @@ -5504,7 +5482,6 @@ class RewriterTests(BasePlatformTests): self.prime('3 kwargs') self.rewrite(self.builddir, os.path.join(self.builddir, 'defopts_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.1', 'default_options': ['buildtype=release', 'debug=True', 'cpp_std=c++11']}, @@ -5518,7 +5495,6 @@ class RewriterTests(BasePlatformTests): self.prime('3 kwargs') self.rewrite(self.builddir, os.path.join(self.builddir, 'defopts_delete.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', 'default_options': ['cpp_std=c++14', 'debug=true']}, -- cgit v1.1 From e724fd5438a20836be1b270c1f851502ac97fdd4 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sat, 2 Mar 2019 17:41:25 +0100 Subject: rewriter: Handle duplicate target --- run_unittests.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index dc8ff6f..408a7af 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5401,6 +5401,15 @@ class RewriterTests(BasePlatformTests): } self.assertDictEqual(out, expected) + def test_target_same_name_skip(self): + self.prime('4 same name targets') + out = self.rewrite(self.builddir, os.path.join(self.builddir, 'addSrc.json')) + out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) + expected = {'name': 'myExe', 'sources': ['main.cpp']} + self.assertEqual(len(out['target']), 2) + for _, val in out['target'].items(): + self.assertDictEqual(expected, val) + def test_kwargs_info(self): self.prime('3 kwargs') out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) -- cgit v1.1 From 5d2f14fce7938a207162efc28f6ba46e873aec9b Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sun, 3 Mar 2019 09:38:48 +0100 Subject: rewriter: Quiet logging by default --- run_unittests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index 408a7af..b03dbeb 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5197,7 +5197,7 @@ class RewriterTests(BasePlatformTests): def rewrite_raw(self, directory, args): if isinstance(args, str): args = [args] - command = self.rewrite_command + ['--sourcedir', directory] + args + command = self.rewrite_command + ['--verbose', '--sourcedir', directory] + args p = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, timeout=60) print('STDOUT:') -- cgit v1.1 From 609a21ff9f4824364e76edc1dd7ff4911bf2a47b Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sun, 3 Mar 2019 10:18:27 +0100 Subject: rewriter: Abort on error by default --- run_unittests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index b03dbeb..2471e44 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5197,7 +5197,7 @@ class RewriterTests(BasePlatformTests): def rewrite_raw(self, directory, args): if isinstance(args, str): args = [args] - command = self.rewrite_command + ['--verbose', '--sourcedir', directory] + args + command = self.rewrite_command + ['--verbose', '--skip', '--sourcedir', directory] + args p = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, timeout=60) print('STDOUT:') -- cgit v1.1 From 594bf678c7aaf676ce02d7d8a7d33e04c42c6b39 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sun, 3 Mar 2019 14:58:36 +0100 Subject: rewriter: Require '/' for the project ID --- run_unittests.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index 2471e44..dba957a 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5415,7 +5415,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1'}, + 'project#/': {'version': '0.0.1'}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } @@ -5428,7 +5428,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.2', 'meson_version': '0.50.0', 'license': ['GPL', 'MIT']}, + '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'} } @@ -5441,7 +5441,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1', 'license': ['GPL', 'MIT', 'BSD']}, + 'project#/': {'version': '0.0.1', 'license': ['GPL', 'MIT', 'BSD']}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } @@ -5454,7 +5454,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1', 'license': 'GPL'}, + 'project#/': {'version': '0.0.1', 'license': 'GPL'}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } @@ -5467,7 +5467,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1', 'default_options': ['buildtype=release', 'debug=true']}, + 'project#/': {'version': '0.0.1', 'default_options': ['buildtype=release', 'debug=true']}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } @@ -5480,7 +5480,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {}, + 'project#/': {}, 'target#tgt1': {}, 'dependency#dep1': {'required': False} } @@ -5493,7 +5493,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1', 'default_options': ['buildtype=release', 'debug=True', 'cpp_std=c++11']}, + 'project#/': {'version': '0.0.1', 'default_options': ['buildtype=release', 'debug=True', 'cpp_std=c++11']}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } @@ -5506,7 +5506,7 @@ class RewriterTests(BasePlatformTests): out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json')) expected = { 'kwargs': { - 'project#': {'version': '0.0.1', 'default_options': ['cpp_std=c++14', 'debug=true']}, + 'project#/': {'version': '0.0.1', 'default_options': ['cpp_std=c++14', 'debug=true']}, 'target#tgt1': {'build_by_default': True}, 'dependency#dep1': {'required': False} } -- cgit v1.1 From 91918262e7c7bb0efea8900ad180194f9c059d4e Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Mon, 4 Mar 2019 13:14:48 +0100 Subject: rewriter: Fixed unit tests --- run_unittests.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'run_unittests.py') diff --git a/run_unittests.py b/run_unittests.py index dba957a..690ea33 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -5266,7 +5266,7 @@ class RewriterTests(BasePlatformTests): inf = json.dumps([{"type": "target", "target": "trivialprog1", "operation": "info"}]) self.rewrite(self.builddir, add) out = self.rewrite(self.builddir, inf) - expected = {'target': {'trivialprog1@exe': {'name': 'trivialprog1', 'sources': ['main.cpp', 'fileA.cpp', 'a1.cpp', 'a2.cpp', 'a6.cpp']}}} + expected = {'target': {'trivialprog1@exe': {'name': 'trivialprog1', 'sources': ['a1.cpp', 'a2.cpp', 'a6.cpp', 'fileA.cpp', 'main.cpp']}}} self.assertDictEqual(out, expected) def test_target_remove_sources(self): @@ -5361,7 +5361,6 @@ class RewriterTests(BasePlatformTests): inf_json = json.dumps([{'type': 'target', 'target': 'exe1', 'operation': 'info'}]) out = self.rewrite(self.builddir, add_json) out = self.rewrite(self.builddir, inf_json) - out = self.extract_test_data(out) expected = { 'target': { 'exe1@exe': { -- cgit v1.1