Code coverage test (for the proxy)
This commit is contained in:
parent
d6a5a1f3cf
commit
bcc4ab97c6
|
@ -0,0 +1 @@
|
|||
coverage
|
|
@ -0,0 +1,105 @@
|
|||
#!/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
|
Loading…
Reference in New Issue