summaryrefslogtreecommitdiffstats
path: root/bin/bittest
diff options
context:
space:
mode:
Diffstat (limited to 'bin/bittest')
-rwxr-xr-xbin/bittest126
1 files changed, 126 insertions, 0 deletions
diff --git a/bin/bittest b/bin/bittest
new file mode 100755
index 0000000000..5db993edd1
--- /dev/null
+++ b/bin/bittest
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+#
+# Copyright (C) 2005, 2006 Holger Hans Peter Freyther
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# Neither the name Holger Hans Peter Freyther nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+import sys, os, optparse
+
+# append the lib subdir and modules subdir to the system python path
+sys.path.append(os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
+sys.path.append(os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'modules'))
+
+
+try:
+ import bb
+ import bb.data
+ import bb.parse
+ from bb import cooker
+except:
+ print "Use PYTHONPATH to point to bitbake/lib"
+ sys.exit(-1)
+
+
+from bittest import *
+
+class BBConfiguration( object ):
+ """
+ Manages build options and configurations for one run
+ """
+ def __init__( self, options ):
+ for key, val in options.__dict__.items():
+ setattr( self, key, val )
+
+def start_testing():
+ """
+ Start with testing:
+ We will parse the options to decide which tests should be executed.
+ Then we will parse the base configuration (bitbake.conf) and afterwards
+ our unit testing configuration.
+ We will go through every bbfile, parse it and for each setup we will call
+ the testing method
+ """
+
+ options, args = handle_options( sys.argv )
+
+ tests = []
+ if len(args) == 0:
+ tests = __all_tests__
+ else:
+ for mode in args:
+ if not mode in __all_tests__ and not mode == "example":
+ bb.note("Test %s does not exist" % mode)
+ else:
+ tests.append(mode)
+
+ if len(tests) == 0:
+ bb.note("No tests to run exiting")
+ sys.exit(0)
+
+ bb.note("Running the following tests: %s" % tests )
+
+ # Parse the default config
+ configuration = BBConfiguration(options)
+ configuration.pkgs_to_build = []
+ configuration.data = bb.data.init()
+ configuration.verbose = False
+ configuration.debug = False
+ configuration.debug_domains = []
+ configuration.file = []
+ configuration.cmd = "fetch"
+
+ bb.msg.set_debug_level(0)
+ cook = bb.cooker.BBCooker(configuration)
+ cook.configuration = configuration
+ cook.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) )
+ data = _load_config('bitbake.conf')
+ if data == None:
+ bb.error("Could not parse the bitbake.conf")
+ elif bb.data.getVar('BITBAKETEST_BITBAKE_CONF', data ) == None:
+ bb.error("You are not using the bitbake.conf from bittest please check your BBPATH")
+
+ bb.data.inheritFromOS(data)
+
+ # Parse the test configuration
+ test_config = _load_config('testrun.conf')
+ if test_config == None:
+ bb.error("Could not parse the bittest configuration file")
+ test_options = parse_test_options(test_config)
+
+ # start running the test
+ results = run_tests(data, test_config, test_options, tests, options)
+ generate_results(results, options)
+
+
+
+if __name__ == "__main__":
+ start_testing()