From 523534c9db64943ca8c25cffd6f3b186f60a856a Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Tue, 5 Feb 2019 00:53:36 -0800 Subject: Start a testsuite for upgrade script Signed-off-by: Alexey Neyman diff --git a/scripts/version-check.sh b/scripts/version-check.sh index 6944d8c..cd0c7f7 100644 --- a/scripts/version-check.sh +++ b/scripts/version-check.sh @@ -132,7 +132,7 @@ upgrade_v0() CT_LIBC_avr_libc|CT_LIBC_glibc|CT_LIBC_musl|CT_LIBC_newlib|CT_LIBC_none|\ CT_LIBC_uClibc) # Renamed to upper-case - opt=${opt^^} + replace ${opt^^} ;; CT_ARCH_XTENSA_CUSTOM_NAME) replace CT_OVERLAY_NAME diff --git a/testing/upgrade/.gitignore b/testing/upgrade/.gitignore new file mode 100644 index 0000000..4585bba --- /dev/null +++ b/testing/upgrade/.gitignore @@ -0,0 +1,2 @@ +.config* +logs diff --git a/testing/upgrade/run.sh b/testing/upgrade/run.sh new file mode 100755 index 0000000..41d3bb0 --- /dev/null +++ b/testing/upgrade/run.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +CTNG=${CTNG-../../ct-ng} + +current_tc=unknown +fails_tc=0 +fails_total=0 + +fail() +{ + fails_tc=$[fails_tc + 1] + fails_total=$[fails_total + 1] +} + +finish() +{ + if [ "${fails_tc}" != 0 ]; then + echo ">>>>> $current_tc: FAIL" >&2 + else + echo ">>>>> $current_tc: PASS" >&2 + fi + fails_tc=0 +} + +run_sample() +{ + local -A expect_set expect_unset + local o v ln + + # Basename for logging + exec {LOG}>"logs/${current_tc}.log" + + # Determine expected values + while read ln; do + case "${ln}" in + "## "*"="*) + ln=${ln#* } + o=${ln%%=*} + v=${ln#*=} + expect_set[${o}]=${v} + ;; + "## "*" is not set") + ln=${ln#* } + o=${ln%% *} + expect_unset[${o}]=1 + ;; + esac + done < "samples/${current_tc}.config" + + # Now run the upgrade + echo ">>>> Running the config through an upgrade" >&${LOG} + cp "samples/${current_tc}.config" .config + ${CTNG} upgradeconfig >&${LOG} 2>&${LOG} + echo >&${LOG} + echo ">>>> Checking the config after the upgrade" >&${LOG} + while read ln; do + case "${ln}" in + *"="*) + o=${ln%%=*} + v=${ln#*=} + if [ "${expect_unset[${o}]+set}" = "set" ]; then + echo "Expect ${o} to be unset" >&${LOG} + echo "Actual value of ${o}: ${v}" >&${LOG} + fail + elif [ "${expect_set[${o}]+set}" = "set" ]; then + if [ "${expect_set[${o}]}" != "${v}" ]; then + echo "Expect value of ${o}: ${expect_set[${o}]}" >&${LOG} + echo "Actual value of ${o}: ${v}" >&${LOG} + fail + else + echo "Matched value of ${o}: ${v}" >&${LOG} + fi + fi + unset expect_set[${o}] + unset expect_unset[${o}] + ;; + "# "*" is not set") + ln=${ln#* } + o=${ln%% *} + if [ "${expect_set[${o}]+set}" = "set" ]; then + echo "Expect value of ${o}: ${expect_set[${o}]}" >&${LOG} + echo "Actual ${o} is unset" >&${LOG} + fail + elif [ "${expect_unset[${o}]+set}" = "set" ]; then + echo "Matched unset ${o}" >&${LOG} + fi + unset expect_set[${o}] + unset expect_unset[${o}] + ;; + esac + done < .config + for o in "${!expect_set[@]}"; do + echo "Expect value of ${o}: ${expect_set[${o}]}" >&${LOG} + echo "Variable ${o} not present" >&${LOG} + fail + done + for o in "${!expect_unset[@]}"; do + echo "Expect ${o} being unset" >&${LOG} + echo "Variable ${o} not present" >&${LOG} + fail + done + exec {LOG}>&- + finish +} + +mkdir -p logs +for i in samples/*.config; do + current_tc=${i#samples/} + current_tc=${current_tc%.config} + run_sample +done + +if [ "${fails_total}" != 0 ]; then + exit 1 +fi +exit 0 -- cgit v0.10.2-6-g49f6