blob: 4c83ea8cd59074098f3d605aa2eaad01b4ebd3d8 [file] [log] [blame]
Zack Williamscee76d22019-04-29 13:08:20 -07001#!/usr/bin/env bash
2
3# Copyright 2019-present Open Networking Foundation
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17# make-unit.sh - run one or more make targets for unit testing
18set -eu -o pipefail
19
20# when not running under Jenkins, use current dir as workspace, a blank project
21# name
22WORKSPACE=${WORKSPACE:-.}
23GERRIT_PROJECT=${GERRIT_PROJECT:-}
24
25# Fixes to for golang projects to support GOPATH
26# If $DEST_GOPATH is not an empty string:
27# - set create GOPATH, and destination directory within in
28# - set PATH to include $GOPATH/bin and the system go binaries
29# - symlink from $WORKSPACE/$GERRIT_PROJECT to new location in $GOPATH
30# - start tests in that directory
31
32DEST_GOPATH=${DEST_GOPATH:-}
33if [ ! -z "$DEST_GOPATH" ]; then
34 export GOPATH=${GOPATH:-~/go}
35 mkdir -p "$GOPATH/src/$DEST_GOPATH"
36 export PATH=$PATH:/usr/lib/go-1.10/bin:/usr/local/go/bin:$GOPATH/bin
37 test_path="$GOPATH/src/$DEST_GOPATH/$GERRIT_PROJECT"
38 ln -r -s "$WORKSPACE/$GERRIT_PROJECT" "$test_path"
39else
40 test_path="$WORKSPACE/$GERRIT_PROJECT"
41fi
42
43# Use "test" as the default target, can be a space separated list
44UNIT_TEST_TARGETS=${UNIT_TEST_TARGETS:-test}
45
46# Default to fail on the first test that fails
47UNIT_TEST_KEEP_GOING=${UNIT_TEST_KEEP_GOING:-false}
48
49if [ ! -f "$test_path/Makefile" ]; then
50 echo "Makefile not found at $test_path!"
51 exit 1
52else
53 pushd "$test_path"
54
55 # we want to split the make targets apart on spaces, so:
56 # shellcheck disable=SC2086
57 if [ "$UNIT_TEST_KEEP_GOING" = "true" ]; then
58 make -k $UNIT_TEST_TARGETS
59 else
60 make $UNIT_TEST_TARGETS
61 fi
62
63 popd
64fi