]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - support/testing/infra/basetest.py
52dad7c43ddd9fd27dee8a6b3c967b1b64fb9d81
[coffee/buildroot.git] / support / testing / infra / basetest.py
1 import unittest
2 import os
3 import datetime
4
5 from infra.builder import Builder
6 from infra.emulator import Emulator
7
8 BASIC_TOOLCHAIN_CONFIG = \
9     """
10     BR2_arm=y
11     BR2_TOOLCHAIN_EXTERNAL=y
12     BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
13     BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
14     BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2015.05-1190-g4a48479.tar.bz2"
15     BR2_TOOLCHAIN_EXTERNAL_GCC_4_7=y
16     BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
17     BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
18     # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
19     BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y
20     BR2_TOOLCHAIN_EXTERNAL_CXX=y
21     """
22
23 MINIMAL_CONFIG = \
24     """
25     BR2_INIT_NONE=y
26     BR2_SYSTEM_BIN_SH_NONE=y
27     # BR2_PACKAGE_BUSYBOX is not set
28     # BR2_TARGET_ROOTFS_TAR is not set
29     """
30
31 class BRTest(unittest.TestCase):
32     config = None
33     downloaddir = None
34     outputdir = None
35     logtofile = True
36     keepbuilds = False
37     jlevel = 0
38     timeout_multiplier = 1
39
40     def __init__(self, names):
41         super(BRTest, self).__init__(names)
42         self.testname = self.__class__.__name__
43         self.builddir = self.outputdir and os.path.join(self.outputdir, self.testname)
44         self.emulator = None
45         self.config += "\nBR2_JLEVEL={}\n".format(self.jlevel)
46
47     def show_msg(self, msg):
48         print "{} {:40s} {}".format(datetime.datetime.now().strftime("%H:%M:%S"),
49                                     self.testname, msg)
50     def setUp(self):
51         self.show_msg("Starting")
52         self.b = Builder(self.config, self.builddir, self.logtofile)
53
54         if not self.keepbuilds:
55             self.b.delete()
56
57         if not self.b.is_finished():
58             self.show_msg("Building")
59             self.b.build()
60             self.show_msg("Building done")
61
62         self.emulator = Emulator(self.builddir, self.downloaddir,
63                                  self.logtofile, self.timeout_multiplier)
64
65     def tearDown(self):
66         self.show_msg("Cleaning up")
67         if self.emulator:
68             self.emulator.stop()
69         if self.b and not self.keepbuilds:
70             self.b.delete()