aboutsummaryrefslogtreecommitdiff
path: root/unittests/linuxliketests.py
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/linuxliketests.py')
-rw-r--r--unittests/linuxliketests.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/unittests/linuxliketests.py b/unittests/linuxliketests.py
index a8608c2..2b56436 100644
--- a/unittests/linuxliketests.py
+++ b/unittests/linuxliketests.py
@@ -1867,3 +1867,56 @@ class LinuxlikeTests(BasePlatformTests):
def test_top_options_in_sp(self):
testdir = os.path.join(self.unit_test_dir, '124 pkgsubproj')
self.init(testdir)
+
+ def check_has_flag(self, compdb, src, argument):
+ for i in compdb:
+ if src in i['file']:
+ self.assertIn(argument, i['command'])
+ return
+ self.assertTrue(False, f'Source {src} not found in compdb')
+
+ def test_persp_options(self):
+ testdir = os.path.join(self.unit_test_dir, '123 persp options')
+ self.init(testdir, extra_args='-Doptimization=1')
+ compdb = self.get_compdb()
+ mainsrc = 'toplevel.c'
+ sub1src = 'sub1.c'
+ sub2src = 'sub2.c'
+ self.check_has_flag(compdb, mainsrc, '-O1')
+ self.check_has_flag(compdb, sub1src, '-O1')
+ self.check_has_flag(compdb, sub2src, '-O1')
+
+ # Set subproject option to O2
+ self.setconf(['-Dround=2', '-D', 'sub2:optimization=3'])
+ compdb = self.get_compdb()
+ self.check_has_flag(compdb, mainsrc, '-O1')
+ self.check_has_flag(compdb, sub1src, '-O1')
+ self.check_has_flag(compdb, sub2src, '-O3')
+
+ # Change an already set override.
+ self.setconf(['-Dround=3', '-D', 'sub2:optimization=2'])
+ compdb = self.get_compdb()
+ self.check_has_flag(compdb, mainsrc, '-O1')
+ self.check_has_flag(compdb, sub1src, '-O1')
+ self.check_has_flag(compdb, sub2src, '-O2')
+
+ # Set top level option to O3
+ self.setconf(['-Dround=4', '-D:optimization=3'])
+ compdb = self.get_compdb()
+ self.check_has_flag(compdb, mainsrc, '-O3')
+ self.check_has_flag(compdb, sub1src, '-O1')
+ self.check_has_flag(compdb, sub2src, '-O2')
+
+ # Unset subproject
+ self.setconf(['-Dround=5', '-U', 'sub2:optimization'])
+ compdb = self.get_compdb()
+ self.check_has_flag(compdb, mainsrc, '-O3')
+ self.check_has_flag(compdb, sub1src, '-O1')
+ self.check_has_flag(compdb, sub2src, '-O1')
+
+ # Set global value
+ self.setconf(['-Dround=6', '-D', 'optimization=2'])
+ compdb = self.get_compdb()
+ self.check_has_flag(compdb, mainsrc, '-O3')
+ self.check_has_flag(compdb, sub1src, '-O2')
+ self.check_has_flag(compdb, sub2src, '-O2')