blob: ac0bd6ef82cabf87eae539d262e14ea319130bc3 [file] [log] [blame]
Zack Williamscee76d22019-04-29 13:08:20 -07001#!/usr/bin/env bash
2
Joey Armstrong518f3572024-02-11 07:56:25 -05003# Copyright 2019-2024 Open Networking Foundation (ONF) and the ONF Contributors
Zack Williamscee76d22019-04-29 13:08:20 -07004#
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:-.}
Eric Ball3f0cec32024-10-10 17:16:03 -070023TEST_PROJECT="${TEST_PROJECT:-}"
Zack Williamscee76d22019-04-29 13:08:20 -070024
25# Fixes to for golang projects to support GOPATH
26# If $DEST_GOPATH is not an empty string:
Zack Williams76356cb2019-08-30 10:44:42 -070027# - create GOPATH within WORKSPACE, and destination directory within
Zack Williamscee76d22019-04-29 13:08:20 -070028# - set PATH to include $GOPATH/bin and the system go binaries
Eric Ball3f0cec32024-10-10 17:16:03 -070029# - move project from $WORKSPACE/$TEST_PROJECT to new location in $GOPATH
Zack Williams76356cb2019-08-30 10:44:42 -070030# - start tests within that directory
Zack Williamscee76d22019-04-29 13:08:20 -070031
32DEST_GOPATH=${DEST_GOPATH:-}
33if [ ! -z "$DEST_GOPATH" ]; then
Zack Williams76356cb2019-08-30 10:44:42 -070034 export GOPATH=${GOPATH:-$WORKSPACE/go}
Zack Williamscee76d22019-04-29 13:08:20 -070035 mkdir -p "$GOPATH/src/$DEST_GOPATH"
Zack Williamsc9abcdc2019-05-09 21:23:38 -070036 export PATH=$PATH:/usr/lib/go-1.12/bin:/usr/local/go/bin:$GOPATH/bin
Eric Ball3f0cec32024-10-10 17:16:03 -070037 test_path="$GOPATH/src/$DEST_GOPATH/$TEST_PROJECT"
38 mv "$WORKSPACE/$TEST_PROJECT" "$test_path"
Zack Williamscee76d22019-04-29 13:08:20 -070039else
Eric Ball3f0cec32024-10-10 17:16:03 -070040 test_path="$WORKSPACE/$TEST_PROJECT"
Zack Williamscee76d22019-04-29 13:08:20 -070041fi
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
Eric Ballfdfc3ec2024-10-31 12:44:47 -070050 echo "Makefile not found at ${test_path}/Makefile"
Zack Williamscee76d22019-04-29 13:08:20 -070051 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