diff options
author | Joshua Watt <JPEWhacker@gmail.com> | 2018-11-15 10:53:02 -0600 |
---|---|---|
committer | Joshua Watt <JPEWhacker@gmail.com> | 2018-11-21 11:11:42 -0600 |
commit | 2ccb4d55e7676452a3138ed8abfce56d1fb26a72 (patch) | |
tree | 5a08069c7a9bc7e84614570cdd8f8f444b9f83e2 | |
parent | 7d1abb4b93851ca3923f75a3c4bfd121a3ed1ed1 (diff) | |
download | meta-mingw-2ccb4d55e7676452a3138ed8abfce56d1fb26a72.tar.gz |
oeqa/sdkmingw: Add test cases
Adds test cases to verify that gcc, binutils, gdb, and pkg-config are
functioning in the MinGW SDK
[YOCTO #13020]
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
-rw-r--r-- | lib/oeqa/sdkmingw/cases/binutils.py | 55 | ||||
-rw-r--r-- | lib/oeqa/sdkmingw/cases/gcc.py | 47 | ||||
-rw-r--r-- | lib/oeqa/sdkmingw/cases/gdb.py | 20 | ||||
-rw-r--r-- | lib/oeqa/sdkmingw/cases/pkgconfig.py | 18 | ||||
-rw-r--r-- | lib/oeqa/sdkmingw/files/testsdkmakefile | 4 |
5 files changed, 144 insertions, 0 deletions
diff --git a/lib/oeqa/sdkmingw/cases/binutils.py b/lib/oeqa/sdkmingw/cases/binutils.py new file mode 100644 index 0000000..fdd5a47 --- /dev/null +++ b/lib/oeqa/sdkmingw/cases/binutils.py | |||
@@ -0,0 +1,55 @@ | |||
1 | # Copyright 2018 by Garmin Ltd. or its subsidiaries | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | import os | ||
5 | import unittest | ||
6 | |||
7 | from oeqa.sdkmingw.case import OESDKMinGWTestCase | ||
8 | |||
9 | class BinutilsTest(OESDKMinGWTestCase): | ||
10 | td_vars = ['MACHINE'] | ||
11 | |||
12 | def setUp(self): | ||
13 | super().setUp() | ||
14 | |||
15 | self.copyTestFile(os.path.join(self.tc.files_dir, 'test.c')) | ||
16 | |||
17 | machine = self.td.get("MACHINE") | ||
18 | if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or | ||
19 | self.tc.hasHostPackage("^gcc-", regex=True)): | ||
20 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain a cross-canadian toolchain") | ||
21 | if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or | ||
22 | self.tc.hasHostPackage('binutils-cross-canadian-%s' % machine)): | ||
23 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain a binutils") | ||
24 | |||
25 | self._run('%CC% -c -g test.c -o test.o') | ||
26 | self._run('%CC% -o test test.o -lm') | ||
27 | |||
28 | def test_strip(self): | ||
29 | self._run('%STRIP% -s test') | ||
30 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
31 | |||
32 | def test_ar(self): | ||
33 | self._run('%AR% -rcs lib.a test.o') | ||
34 | self._run('%CC% -o test lib.a -lm') | ||
35 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
36 | |||
37 | def test_ranlib(self): | ||
38 | self._run('%AR% -rc lib.a test.o') | ||
39 | self._run('%RANLIB% lib.a') | ||
40 | self._run('%CC% -o test lib.a -lm') | ||
41 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
42 | |||
43 | def test_objcopy(self): | ||
44 | self._run('%OBJCOPY% -g test.o test_no_debug.o') | ||
45 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test_no_debug.o')) | ||
46 | self._run('%CC% -o test test_no_debug.o -lm') | ||
47 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
48 | |||
49 | def test_objdump(self): | ||
50 | self._run('%OBJDUMP% -S test.o') | ||
51 | |||
52 | def test_nm(self): | ||
53 | self._run('%NM% test.o') | ||
54 | |||
55 | |||
diff --git a/lib/oeqa/sdkmingw/cases/gcc.py b/lib/oeqa/sdkmingw/cases/gcc.py new file mode 100644 index 0000000..7294bf5 --- /dev/null +++ b/lib/oeqa/sdkmingw/cases/gcc.py | |||
@@ -0,0 +1,47 @@ | |||
1 | # Copyright 2018 by Garmin Ltd. or its subsidiaries | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | import os | ||
5 | import unittest | ||
6 | |||
7 | from oeqa.sdkmingw.case import OESDKMinGWTestCase | ||
8 | |||
9 | class GccCompileTest(OESDKMinGWTestCase): | ||
10 | td_vars = ['MACHINE'] | ||
11 | |||
12 | def setUp(self): | ||
13 | super().setUp() | ||
14 | |||
15 | self.copyTestFile(os.path.join(self.tc.files_dir, 'test.c')) | ||
16 | self.copyTestFile(os.path.join(self.tc.files_dir, 'test.cpp')) | ||
17 | self.copyTestFile(os.path.join(self.tc.sdk_files_dir, 'testsdkmakefile')) | ||
18 | |||
19 | machine = self.td.get("MACHINE") | ||
20 | if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or | ||
21 | self.tc.hasHostPackage("^gcc-", regex=True)): | ||
22 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain a cross-canadian toolchain") | ||
23 | |||
24 | def test_gcc_compile(self): | ||
25 | self._run('%CC% %CFLAGS% %LDFLAGS% test.c -o test -lm') | ||
26 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
27 | |||
28 | def test_gcc_compile_and_link(self): | ||
29 | self._run('%CC% %CFLAGS% -c test.c -o test.o') | ||
30 | self._run('%CC% %LDFLAGS% -o test test.o -lm') | ||
31 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test.o')) | ||
32 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
33 | |||
34 | def test_gpp_compile(self): | ||
35 | self._run('%CXX% %CXXFLAGS% %LDFLAGS% test.c -o test -lm') | ||
36 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
37 | |||
38 | def test_gpp2_compile(self): | ||
39 | self._run('%CXX% %CXXFLAGS% %LDFLAGS% test.cpp -o test -lm') | ||
40 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
41 | |||
42 | def test_make(self): | ||
43 | if not self.tc.hasHostPackage('nativesdk-make'): | ||
44 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain make") | ||
45 | self._run('make -f testsdkmakefile') | ||
46 | self.assertIsTargetElf(os.path.join(self.test_dir, 'test')) | ||
47 | |||
diff --git a/lib/oeqa/sdkmingw/cases/gdb.py b/lib/oeqa/sdkmingw/cases/gdb.py new file mode 100644 index 0000000..f1bde7a --- /dev/null +++ b/lib/oeqa/sdkmingw/cases/gdb.py | |||
@@ -0,0 +1,20 @@ | |||
1 | # Copyright 2018 by Garmin Ltd. or its subsidiaries | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | import unittest | ||
5 | |||
6 | from oeqa.sdkmingw.case import OESDKMinGWTestCase | ||
7 | |||
8 | class GdbTest(OESDKMinGWTestCase): | ||
9 | td_vars = ['MACHINE'] | ||
10 | |||
11 | def setUp(self): | ||
12 | super().setUp() | ||
13 | |||
14 | machine = self.td.get("MACHINE") | ||
15 | if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or | ||
16 | self.tc.hasHostPackage("^gdb-", regex=True)): | ||
17 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain a cross-canadian toolchain") | ||
18 | |||
19 | def test_gdb(self): | ||
20 | self._run('%GDB% -ex quit') | ||
diff --git a/lib/oeqa/sdkmingw/cases/pkgconfig.py b/lib/oeqa/sdkmingw/cases/pkgconfig.py new file mode 100644 index 0000000..24185a0 --- /dev/null +++ b/lib/oeqa/sdkmingw/cases/pkgconfig.py | |||
@@ -0,0 +1,18 @@ | |||
1 | # Copyright 2018 by Garmin Ltd. or its subsidiaries | ||
2 | # Released under the MIT license (see COPYING.MIT) | ||
3 | |||
4 | import os | ||
5 | import unittest | ||
6 | |||
7 | from oeqa.sdkmingw.case import OESDKMinGWTestCase | ||
8 | |||
9 | class PkgConfigTest(OESDKMinGWTestCase): | ||
10 | def setUp(self): | ||
11 | super().setUp() | ||
12 | |||
13 | if not self.tc.hasHostPackage("nativesdk-pkgconfig"): | ||
14 | raise unittest.SkipTest(self.__class__.__name__ + " class: SDK doesn't contain nativesdk-pkgconfig") | ||
15 | |||
16 | def test_pkg_config(self): | ||
17 | self._run('pkg-config --list-all') | ||
18 | |||
diff --git a/lib/oeqa/sdkmingw/files/testsdkmakefile b/lib/oeqa/sdkmingw/files/testsdkmakefile new file mode 100644 index 0000000..b5cac86 --- /dev/null +++ b/lib/oeqa/sdkmingw/files/testsdkmakefile | |||
@@ -0,0 +1,4 @@ | |||
1 | test: test.o | ||
2 | $(CC) -o test test.o -lm | ||
3 | test.o: test.c | ||
4 | $(CC) -c test.c | ||