Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Unified Diff: cros_run_unit_tests

Issue 2837004: Check in to run unittests that uses src_test to build and run unittests. (Closed) Base URL: ssh://git@chromiumos-git//crosutils.git
Patch Set: Petkov Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common.sh ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cros_run_unit_tests
diff --git a/cros_run_unit_tests b/cros_run_unit_tests
new file mode 100755
index 0000000000000000000000000000000000000000..b4179af18c8927cee3e9ed0dfbd3c1a6f54de2b2
--- /dev/null
+++ b/cros_run_unit_tests
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script builds and runs Chromium OS unit tests. Note that this script
+# utilizes the src_test stanza in chromeos-base packages. These stanzas
+# should both build and run the unit tests.
+
+# This script requires that you run build_packages first.
+
+. "$(dirname "$0")/common.sh"
+
+get_default_board
+
+# Flags
+DEFINE_string board "${DEFAULT_BOARD}" \
+ "Target board of which tests were built"
+DEFINE_string build_root "${DEFAULT_BUILD_ROOT}" \
+ "Root of build output"
+DEFINE_string packages "" \
+ "Optional space-separated list of packages to run unit tests" p
+
+# Total count of packages with unit tests.
+TEST_COUNT=0
+# Number of unit test failures.
+TEST_FAILURES=0
+# List of packages with no unit tests.
+NO_UNITTESTS=""
+# List of packages that have unit test failures.
+FAILED_PACKAGES=""
+
+function check_src_test() {
+ egrep '^src_test()' "${1}" > /dev/null
+}
+
+function record_test_failure() {
+ TEST_FAILURES=$(( TEST_FAILURES + 1 ))
+ FAILED_PACKAGES="${FAILED_PACKAGES} ${1}"
+}
+
+function run_unit_test() {
+ FEATURES="-buildpkg -digest noauto" \
+ ebuild-${FLAGS_board} "${1}" clean unpack test
+}
+
+# Parse command line and die if unexpected paramters given.
+FLAGS_HELP="usage: ${0} [flags]"
+FLAGS "${@}" || exit 1
+eval set -- "${FLAGS_ARGV}"
+check_flags_only_and_allow_null_arg "${@}" && set --
+
+set -e
+
+[ -z "${FLAGS_board}" ] && die "--board required"
+
+# If no packages are specified we run all unit tests for chromeos-base
+# packages.
+if [ -n "${FLAGS_packages}" ]; then
+ PACKAGE_LIST="${FLAGS_packages}"
+else
+ PACKAGE_LIST=$( ./get_package_list chromeos | egrep '^chromeos-base' )
+fi
+
+for package in ${PACKAGE_LIST}; do
+ EBUILD_PATH=$( equery-${FLAGS_board} which ${package} 2> /dev/null )
+ if [ -n "${EBUILD_PATH}" ]; then
+ if check_src_test "${EBUILD_PATH}"; then
+ run_unit_test "${EBUILD_PATH}" || record_test_failure "${package}"
+ else
+ NO_UNITTESTS="${NO_UNITTESTS} ${package}"
+ fi
+ TEST_COUNT=$(( TEST_COUNT + 1 ))
+ fi
+done
+
+if [ -n "${NO_UNITTESTS}" ]; then
+ warn "The following packages have no unit tests:"
+ warn "${NO_UNITTESTS}"
+fi
+
+if [ ${TEST_FAILURES} -ne 0 ]; then
+ error "Run completed with ${TEST_FAILURES}/${TEST_COUNT} test failures."
+ error "Following packages had failing tests:"
+ die "${FAILED_PACKAGES}"
+else
+ info "All unit tests passed."
+fi
« no previous file with comments | « common.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698