libx52/tests/make_tests.sh

107 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Script to generate the test scripts
# Most of the test cases are extremely similar, but they do need to be created
# and saved in the repository so that the automake infrastructure can pick them
# up.
_mono_led_template()
{
local led_ident=$(echo $1 | tr a-z A-Z)
local led_color=$2
local state=$(echo "\$X52_LED_${led_ident}_${led_color}" | tr a-z A-Z)
cat << EOF
#!/bin/bash
# Test setting the $led_ident button $led_color
source \$(dirname \$0)/common_infra.sh
expect_pattern \$X52_LED_COMMAND_INDEX $state
\$X52CLI led $led_ident $led_color
verify_output
EOF
}
_color_led_template()
{
local led_ident=$(echo $1 | tr a-z A-Z)
local led_color=$2
local led_r_state=off
local led_g_state=off
case $led_color in
"red")
led_r_state=on
;;
"green")
led_g_state=on
;;
"amber")
led_r_state=on
led_g_state=on
;;
esac
led_r_state=$(echo "\$X52_LED_${led_ident}_red_${led_r_state}" | tr a-z A-Z)
led_g_state=$(echo "\$X52_LED_${led_ident}_green_${led_g_state}" | tr a-z A-Z)
cat << EOF
#!/bin/bash
# Test setting the $led_ident button to $led_color
source \$(dirname \$0)/common_infra.sh
expect_pattern \$X52_LED_COMMAND_INDEX $led_r_state
expect_pattern \$X52_LED_COMMAND_INDEX $led_g_state
\$X52CLI led $led_ident $led_color
verify_output
EOF
}
make_led_tests()
{
# Make the mono-color LED tests
for led in fire throttle
do
for state in off on
do
filename=test_led_${led}_${state}.sh
_mono_led_template $led $state > $filename
echo -e "\t$filename \\" >> Makefile.am
done
done
# Make the multi-color LED tests
for led in a b d e t1 t2 t3 pov clutch
do
for state in off red amber green
do
filename=test_led_${led}_${state}.sh
_color_led_template $led $state > test_led_${led}_${state}.sh
echo -e "\t$filename \\" >> Makefile.am
done
done
}
clear_tests()
{
# Delete the tests from Makefile.am
sed -i '/^TESTS /,$d' Makefile.am
echo "TESTS = \\" >> Makefile.am
}
finalize_tests()
{
# Put the last line to close the tests list
echo -e "\ttest_skip.sh\n" >> Makefile.am
}
clear_tests
make_led_tests
finalize_tests