From f3bb6bb227af00411346cfe3d901532c00ceeb55 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Tue, 25 Oct 2016 14:14:44 +0530 Subject: Add a unit test to ensure object file order Part of the changes to make input and output filenames in targets be deterministic. --- run_unittests.py | 11 +++++++++++ test cases/common/5 linkstatic/libfile2.c | 3 +++ test cases/common/5 linkstatic/libfile3.c | 3 +++ test cases/common/5 linkstatic/libfile4.c | 3 +++ test cases/common/5 linkstatic/meson.build | 2 +- 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test cases/common/5 linkstatic/libfile2.c create mode 100644 test cases/common/5 linkstatic/libfile3.c create mode 100644 test cases/common/5 linkstatic/libfile4.c diff --git a/run_unittests.py b/run_unittests.py index b9c1397d4..9391eaef7 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -136,5 +136,16 @@ class LinuxlikeTests(unittest.TestCase): self.assertTrue('-Werror' in vala_command) self.assertTrue('-Werror' in c_command) + def test_static_compile_order(self): + testdir = os.path.join(self.common_test_dir, '5 linkstatic') + self.init(testdir) + compdb = self.get_compdb() + # Rules will get written out in this order + self.assertTrue(compdb[0]['file'].endswith("libfile.c")) + self.assertTrue(compdb[1]['file'].endswith("libfile2.c")) + self.assertTrue(compdb[2]['file'].endswith("libfile3.c")) + self.assertTrue(compdb[3]['file'].endswith("libfile4.c")) + # FIXME: We don't have access to the linker command + if __name__ == '__main__': unittest.main() diff --git a/test cases/common/5 linkstatic/libfile2.c b/test cases/common/5 linkstatic/libfile2.c new file mode 100644 index 000000000..89780f593 --- /dev/null +++ b/test cases/common/5 linkstatic/libfile2.c @@ -0,0 +1,3 @@ +int func2() { + return 2; +} diff --git a/test cases/common/5 linkstatic/libfile3.c b/test cases/common/5 linkstatic/libfile3.c new file mode 100644 index 000000000..5e0d08bb9 --- /dev/null +++ b/test cases/common/5 linkstatic/libfile3.c @@ -0,0 +1,3 @@ +int func3() { + return 3; +} diff --git a/test cases/common/5 linkstatic/libfile4.c b/test cases/common/5 linkstatic/libfile4.c new file mode 100644 index 000000000..3645c31f1 --- /dev/null +++ b/test cases/common/5 linkstatic/libfile4.c @@ -0,0 +1,3 @@ +int func4() { + return 4; +} diff --git a/test cases/common/5 linkstatic/meson.build b/test cases/common/5 linkstatic/meson.build index c1cb8b639..1f02a5c88 100644 --- a/test cases/common/5 linkstatic/meson.build +++ b/test cases/common/5 linkstatic/meson.build @@ -1,6 +1,6 @@ project('static library linking test', 'c') -lib = build_target('mylib', 'libfile.c', target_type : 'static_library') +lib = build_target('mylib', 'libfile.c', 'libfile2.c', 'libfile3.c', 'libfile4.c', target_type : 'static_library') exe = executable('prog', 'main.c', link_with : lib) test('runtest', exe) -- cgit v1.2.3