summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2018-11-15 10:53:02 -0600
committerJoshua Watt <JPEWhacker@gmail.com>2018-11-21 11:11:42 -0600
commit2ccb4d55e7676452a3138ed8abfce56d1fb26a72 (patch)
tree5a08069c7a9bc7e84614570cdd8f8f444b9f83e2
parent7d1abb4b93851ca3923f75a3c4bfd121a3ed1ed1 (diff)
downloadmeta-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.py55
-rw-r--r--lib/oeqa/sdkmingw/cases/gcc.py47
-rw-r--r--lib/oeqa/sdkmingw/cases/gdb.py20
-rw-r--r--lib/oeqa/sdkmingw/cases/pkgconfig.py18
-rw-r--r--lib/oeqa/sdkmingw/files/testsdkmakefile4
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
4import os
5import unittest
6
7from oeqa.sdkmingw.case import OESDKMinGWTestCase
8
9class 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
4import os
5import unittest
6
7from oeqa.sdkmingw.case import OESDKMinGWTestCase
8
9class 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
4import unittest
5
6from oeqa.sdkmingw.case import OESDKMinGWTestCase
7
8class 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
4import os
5import unittest
6
7from oeqa.sdkmingw.case import OESDKMinGWTestCase
8
9class 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 @@
1test: test.o
2 $(CC) -o test test.o -lm
3test.o: test.c
4 $(CC) -c test.c