Initial commit
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
SUMMARY = "Shell functions for testing shell scripts"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
SRC_URI += "file://lib.sh"
|
||||
SRC_URI += "file://test.sh"
|
||||
S = "${WORKDIR}"
|
||||
|
||||
DATA = "${datadir}/test"
|
||||
FILES:${PN} += "${DATA}"
|
||||
|
||||
do_compile() {
|
||||
SYSROOT="$PKG_CONFIG_SYSROOT_DIR" bash test.sh || exit
|
||||
}
|
||||
|
||||
do_install:append() {
|
||||
install -d -m0755 ${D}${DATA}
|
||||
install -m0644 lib.sh ${D}${DATA}/
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
expect_streq() {
|
||||
local r="${2-$(cat)}"
|
||||
[ "$1" = "$r" ] && return
|
||||
echo " Line ${BASH_LINENO[0]} '$1' != '$r'" >&2
|
||||
test_err=1
|
||||
}
|
||||
|
||||
expect_numeq() {
|
||||
(( "$1" == "$2" )) && return
|
||||
echo " Line ${BASH_LINENO[0]} '$1' != '$2'" >&2
|
||||
test_err=1
|
||||
}
|
||||
|
||||
expect_err() {
|
||||
local expected=$1
|
||||
shift
|
||||
local rc=0
|
||||
"$@" || rc="$?"
|
||||
(( rc == expected )) && return
|
||||
echo " Line ${BASH_LINENO[0]} Status '$rc' != '$expected'" >&2
|
||||
test_err=1
|
||||
}
|
||||
|
||||
fail() {
|
||||
echo " Line ${BASH_LINENO[0]} Fail" >&2
|
||||
test_err=1
|
||||
}
|
||||
|
||||
main() {
|
||||
local agg_err=0
|
||||
for f in $(declare -F | grep 'declare -f test[A-Z_]' | awk '{print $3}'); do
|
||||
echo "[$f] Running..." >&2
|
||||
local test_err=0
|
||||
if "$f" && (( test_err == 0 )); then
|
||||
echo "[$f] Success" >&2
|
||||
else
|
||||
echo "[$f] Failed ($?)" >&2
|
||||
agg_err=1
|
||||
fi
|
||||
done
|
||||
return $agg_err
|
||||
}
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
#!/bin/bash
|
||||
# shellcheck disable=SC2317
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# shellcheck source=meta-google/recipes-google/test/test-sh/lib.sh
|
||||
source "$(dirname "$0")/lib.sh" || exit
|
||||
|
||||
(
|
||||
echo '## Test Pass' >&2
|
||||
test_pass() {
|
||||
return 0
|
||||
}
|
||||
main || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Fail' >&2
|
||||
i=0
|
||||
test_pass1() {
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
test_fail() {
|
||||
return 1
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
test_pass2() {
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 2 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Deferred Fail' >&2
|
||||
i=0
|
||||
test_expect_fail() {
|
||||
test_err=1 || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
test_pass() {
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 2 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Fail' >&2
|
||||
i=0
|
||||
test_fail() {
|
||||
fail 'Failed' || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Expect Err' >&2
|
||||
i=0
|
||||
test_expect_err() {
|
||||
expect_err 1 false || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Expect Err Error' >&2
|
||||
i=0
|
||||
test_expect_err() {
|
||||
expect_err 0 false || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Num EQ' >&2
|
||||
i=0
|
||||
test_num_eq() {
|
||||
expect_numeq 15 0xf || return
|
||||
expect_numeq 1 1 || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Num EQ Error' >&2
|
||||
i=0
|
||||
test_num_eq() {
|
||||
expect_numeq 15 10 || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Str EQ' >&2
|
||||
i=0
|
||||
test_str_eq() {
|
||||
expect_streq abz abz || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
|
||||
(
|
||||
echo '## Test Str EQ Error' >&2
|
||||
i=0
|
||||
test_str_eq() {
|
||||
expect_streq 15 0xf || return
|
||||
(( i++ ))
|
||||
return 0
|
||||
}
|
||||
! main || exit
|
||||
(( i == 1 )) || exit
|
||||
) || exit
|
||||
Reference in New Issue
Block a user