105 lines
4.3 KiB
Bash
105 lines
4.3 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Test the code coverage using bashcov (https://github.com/infertux/bashcov)
|
||
|
#
|
||
|
# Install bashcov with: gem install bashcov
|
||
|
|
||
|
try_this()
|
||
|
{
|
||
|
local EXPECTED_RETURN_VALUE
|
||
|
local TEST_NAME
|
||
|
|
||
|
EXPECTED_RETURN_VALUE=${1}
|
||
|
TEST_NAME="${2}"
|
||
|
shift 2
|
||
|
|
||
|
COUNTER=$((COUNTER + 1))
|
||
|
if [ ${COUNTER} -eq ${SINGLE_TEST} -o ${SINGLE_TEST} -eq 0 ]; then
|
||
|
echo "Starting test #${COUNTER} ${TEST_NAME}"
|
||
|
bashcov --root ${LIVE_BUILD} -- "$@"
|
||
|
RETVAL=${?}
|
||
|
if [ ${RETVAL} -ne ${EXPECTED_RETURN_VALUE} ]; then
|
||
|
echo "Error: the test does not have the expected return value (expected: ${EXPECTED_RETURN_VALUE} actual: ${RETVAL})"
|
||
|
exit 1
|
||
|
fi
|
||
|
# Cleanup after the test
|
||
|
rm -fr auto config local .build
|
||
|
else
|
||
|
echo "Skipping test #${COUNTER} ${TEST_NAME}"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# The outermost wrapper layer
|
||
|
test_wrapper_layer()
|
||
|
{
|
||
|
try_this 0 "Default lb config" ${LIVE_BUILD}/frontend/lb config
|
||
|
|
||
|
# Increase coverage by adding error scenarios
|
||
|
try_this 1 "No argument to lb" ${LIVE_BUILD}/frontend/lb
|
||
|
try_this 1 "Unknown argument to lb" ${LIVE_BUILD}/frontend/lb does_not_exist
|
||
|
}
|
||
|
|
||
|
# The configuration generator
|
||
|
test_lb_config()
|
||
|
{
|
||
|
try_this 0 "Default config" ${LIVE_BUILD}/scripts/build/config
|
||
|
}
|
||
|
|
||
|
# Testing various proxy settings
|
||
|
test_proxy()
|
||
|
{
|
||
|
export http_proxy
|
||
|
|
||
|
http_proxy=""; try_this 0 "All proxy options turned off" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect= -o Acquire::http::ProxyAutoDetect= -o Acquire::http::Proxy="
|
||
|
http_proxy=""; try_this 0 "All proxy options turned off, with proxy scripts returning an error code" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=/bin/false -o Acquire::http::ProxyAutoDetect=/bin/false -o Acquire::http::Proxy="
|
||
|
|
||
|
cat > ${LIVE_BUILD}/tmp.sh << EOF
|
||
|
#!/bin/sh
|
||
|
echo ''
|
||
|
EOF
|
||
|
chmod u+x ${LIVE_BUILD}/tmp.sh
|
||
|
http_proxy=""; try_this 0 "All proxy options turned off, with proxy scripts returning an empty line" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp.sh -o Acquire::http::ProxyAutoDetect=${LIVE_BUILD}/tmp.sh -o Acquire::http::Proxy="
|
||
|
|
||
|
cat > ${LIVE_BUILD}/tmp.sh << EOF
|
||
|
#!/bin/sh
|
||
|
echo 'DIRECT'
|
||
|
EOF
|
||
|
chmod u+x ${LIVE_BUILD}/tmp.sh
|
||
|
http_proxy=""; try_this 0 "All proxy options turned off, with proxy scripts returning 'DIRECT'" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp.sh -o Acquire::http::ProxyAutoDetect=${LIVE_BUILD}/tmp.sh -o Acquire::http::Proxy="
|
||
|
|
||
|
cat > ${LIVE_BUILD}/tmp1.sh << EOF
|
||
|
#!/bin/sh
|
||
|
echo 'location1'
|
||
|
EOF
|
||
|
chmod u+x ${LIVE_BUILD}/tmp1.sh
|
||
|
cat > ${LIVE_BUILD}/tmp2.sh << EOF
|
||
|
#!/bin/sh
|
||
|
echo 'location2'
|
||
|
EOF
|
||
|
chmod u+x ${LIVE_BUILD}/tmp2.sh
|
||
|
http_proxy=""; try_this 1 "Error: mismatch Acquire::http::Proxy-Auto-Detect and Acquire::http::ProxyAutoDetect" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp1.sh -o Acquire::http::ProxyAutoDetect=${LIVE_BUILD}/tmp2.sh -o Acquire::http::Proxy="
|
||
|
http_proxy=""; try_this 1 "Error: mismatch Acquire::http::Proxy-Auto-Detect and Acquire::http::Proxy" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp1.sh -o Acquire::http::ProxyAutoDetect= -o Acquire::http::Proxy=location3"
|
||
|
http_proxy="location4"; try_this 1 "Error: mismatch Acquire::http::Proxy-Auto-Detect and http_proxy" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp1.sh -o Acquire::http::ProxyAutoDetect= -o Acquire::http::Proxy="
|
||
|
http_proxy=""; try_this 1 "Error: mismatch Acquire::http::Proxy-Auto-Detect and command line --apt-http-proxy" ${LIVE_BUILD}/scripts/build/config --apt-options "-o Acquire::http::Proxy-Auto-Detect=${LIVE_BUILD}/tmp1.sh -o Acquire::http::ProxyAutoDetect= -o Acquire::http::Proxy=" --apt-http-proxy=location5
|
||
|
# Reset at the end
|
||
|
export -n http_proxy
|
||
|
}
|
||
|
|
||
|
# Use a path relative to the git code
|
||
|
export LIVE_BUILD=$(realpath $(dirname $BASH_SOURCE)/..)
|
||
|
|
||
|
# Allow fine-grained test selection. If desired, pass along the test number on the command line
|
||
|
COUNTER=0
|
||
|
SINGLE_TEST=${1:-0}
|
||
|
|
||
|
rm -fr ${LIVE_BUILD}/coverage
|
||
|
# Invoke the outermost wrapper layer
|
||
|
test_wrapper_layer
|
||
|
|
||
|
# Bashcov somehow has issues in following the paths,
|
||
|
# so invoke config directly
|
||
|
# This is not the recommended way to invoke live-build
|
||
|
test_lb_config
|
||
|
|
||
|
# Testing various proxy settings
|
||
|
test_proxy
|