summaryrefslogtreecommitdiff
path: root/unittests/rewritetests.py
diff options
context:
space:
mode:
authorVolker Weißmann <volker.weissmann@gmx.de>2025-03-11 19:24:30 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-05-29 09:20:27 -0700
commitbb40ef69cce327094ba67fe00739b4a845e2cd5c (patch)
treebdfa7ffdef2c0e7e97a1f4d742f07f83c2cf8064 /unittests/rewritetests.py
parentcc781cabd848bc984d672738fb3d42e8d8e3e4fa (diff)
downloadmeson-bb40ef69cce327094ba67fe00739b4a845e2cd5c.tar.gz
rewritetests.py: Ignore order of listed sources
The order in which the rewriter outputs the listed sources is more or less arbitrary anyways, so we ignore it to prevent the tests from breaking after small irrelevant changes.
Diffstat (limited to 'unittests/rewritetests.py')
-rw-r--r--unittests/rewritetests.py32
1 files changed, 22 insertions, 10 deletions
diff --git a/unittests/rewritetests.py b/unittests/rewritetests.py
index 57a6782dd..0bd21c74f 100644
--- a/unittests/rewritetests.py
+++ b/unittests/rewritetests.py
@@ -46,6 +46,18 @@ class RewriterTests(BasePlatformTests):
args = [args]
return self.rewrite_raw(directory, ['command'] + args)
+ # The rewriter sorts the sources alphabetically, but this is very unstable
+ # and buggy, so we do not test it.
+ def assertEqualIgnoreOrder(self, a, b):
+ def deepsort(x):
+ if isinstance(x, list):
+ return sorted(deepsort(el) for el in x)
+ elif isinstance(x, dict):
+ return {k: deepsort(v) for k,v in x.items()}
+ else:
+ return x
+ self.assertDictEqual(deepsort(a), deepsort(b))
+
def test_target_source_list(self):
self.prime('1 basic')
out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
@@ -63,7 +75,7 @@ class RewriterTests(BasePlatformTests):
'trivialprog9@exe': {'name': 'trivialprog9', 'sources': ['main.cpp', 'fileA.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_add_sources(self):
self.prime('1 basic')
@@ -82,11 +94,11 @@ class RewriterTests(BasePlatformTests):
'trivialprog9@exe': {'name': 'trivialprog9', 'sources': ['a1.cpp', 'a2.cpp', 'a6.cpp', 'fileA.cpp', 'main.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
# Check the written file
out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_add_sources_abs(self):
self.prime('1 basic')
@@ -115,11 +127,11 @@ class RewriterTests(BasePlatformTests):
'trivialprog9@exe': {'name': 'trivialprog9', 'sources': ['main.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
# Check the written file
out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_subdir(self):
self.prime('2 subdirs')
@@ -147,7 +159,7 @@ class RewriterTests(BasePlatformTests):
'trivialprog8@exe': {'name': 'trivialprog8', 'sources': ['main.cpp', 'fileA.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_add(self):
self.prime('1 basic')
@@ -169,7 +181,7 @@ class RewriterTests(BasePlatformTests):
'trivialprog10@sha': {'name': 'trivialprog10', 'sources': ['new1.cpp', 'new2.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_remove_subdir(self):
self.prime('2 subdirs')
@@ -360,11 +372,11 @@ class RewriterTests(BasePlatformTests):
'trivialprog10@exe': {'name': 'trivialprog10', 'sources': ['main.cpp'], 'extra_files': ['a1.hpp', 'a4.hpp']},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
# Check the written file
out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
def test_target_remove_extra_files(self):
self.prime('6 extra_files')
@@ -384,7 +396,7 @@ class RewriterTests(BasePlatformTests):
'trivialprog10@exe': {'name': 'trivialprog10', 'sources': ['main.cpp'], 'extra_files': []},
}
}
- self.assertDictEqual(out, expected)
+ self.assertEqualIgnoreOrder(out, expected)
# Check the written file
out = self.rewrite(self.builddir, os.path.join(self.builddir, 'info.json'))