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 /lib | |
| 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>
Diffstat (limited to 'lib')
| -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 | ||
