Merge pull request #342 from matthiasbeyer/imag-link/testing

Imag link/testing
This commit is contained in:
Matthias Beyer 2016-04-20 21:47:02 +02:00
commit 975eb18905
8 changed files with 160 additions and 62 deletions

View file

@ -41,7 +41,7 @@ script:
} }
run_sh_test() { run_sh_test() {
echo "--- Running test script: $1" echo "--- Running test script: '$1'"
bash $1 || { echo "--- Test failed. Exiting"; exit 1; } bash $1 || { echo "--- Test failed. Exiting"; exit 1; }
echo "--- Test script $1 executed successfully" echo "--- Test script $1 executed successfully"
} }

View file

@ -0,0 +1,69 @@
#!/usr/bin/env bash
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
source $(dirname ${BASH_SOURCE[0]})/utils.sh
default_entry() {
cat <<EOS
---
[imag]
links = []
version = "0.1.0"
---
EOS
}
entry_linked_to() {
cat <<EOS
---
[imag]
links = [$1]
version = "0.1.0"
---
EOS
}
mktestentry() {
mkdir -p ${STORE}
default_entry > ${STORE}/$1
}
test_link_modificates() {
mktestentry "test~0.1.0"
mktestentry "test2~0.1.0"
imag-link internal add --from "test~0.1.0" --to "test2~0.1.0"
if [[ "$(default_entry)" -eq "$(cat_entry 'test~0.1.0')" ]] ||
[[ "$(default_entry)" -eq "$(cat_entry 'test2~0.1.0')" ]]
then
err "Entry was unmodified after linking"
return 1;
fi
}
test_linking_links() {
mktestentry "test~0.1.0"
mktestentry "test2~0.1.0"
imag-link internal add --from "test~0.1.0" --to "test2~0.1.0"
if [[ "$(entry_linked_to '/test~0.1.0')" == "$(cat_entry 'test2~0.1.0')" ]];
then
err "Linking to 'test~0.1.0' didn't succeed for 'test2~0.1.0'"
err $(cat_entry 'test2~0.1.0')
fi
if [[ "$(entry_linked_to '/test2~0.1.0')" == "$(cat_entry 'test~0.1.0')" ]];
then
err "Linking to 'test2~0.1.0' didn't succeed for 'test~0.1.0'"
err $(cat_entry 'test~0.1.0')
fi
}
invoke_tests \
test_link_modificates \
test_linking_links

6
imag-link/tests/utils.sh Normal file
View file

@ -0,0 +1,6 @@
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
imag-link() {
imag-call-binary "$(dirname ${BASH_SOURCE[0]})/../target/debug/" imag-link $*
}

View file

@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
source $(dirname ${BASH_SOURCE[0]})/utils.sh source $(dirname ${BASH_SOURCE[0]})/utils.sh
test_call() { test_call() {

View file

@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
source $(dirname ${BASH_SOURCE[0]})/utils.sh source $(dirname ${BASH_SOURCE[0]})/utils.sh
std_header() { std_header() {

View file

@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
source $(dirname ${BASH_SOURCE[0]})/utils.sh source $(dirname ${BASH_SOURCE[0]})/utils.sh
create() { create() {

View file

@ -1,65 +1,6 @@
#!/usr/bin/env bash source $(dirname ${BASH_SOURCE[0]})/../tests/utils.sh
COLOR_OFF='\e[0m' # Text Reset
RED='\e[0;31m' # Red
YELLOW='\e[0;33m' # Yellow
GREEN='\e[0;32m' # Green
RUNTIME="/tmp"
STORE="${RUNTIME}/store"
out() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${YELLOW}:: $*${COLOR_OFF}"
}
success() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${GREEN}>> $*${COLOR_OFF}"
}
err() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${RED}!! $*${COLOR_OFF}"
}
silent() {
DEBUG_OUTPUT_OFF=1 $*
}
imag-store() { imag-store() {
local searchdir=$(dirname ${BASH_SOURCE[0]})/../target/debug/ imag-call-binary "$(dirname ${BASH_SOURCE[0]})/../target/debug/" imag-store $*
[[ -d $searchdir ]] || { err "FATAL: No directory $searchdir"; exit 1; }
local bin=$(find $searchdir -iname imag-store -type f -executable)
local flags="--debug --rtp $RUNTIME"
out "Calling '$bin $flags $*'"
$bin $flags $*
}
reset_store() {
rm -r "${STORE}"
}
call_test() {
out "-- TESTING: '$1' --"
$1
result=$?
if [[ -z "$DONT_RESET_STORE" ]]; then
out "Reseting store"
reset_store
out "Store reset done"
fi
[[ $result -eq 0 ]] || { err "-- FAILED: '$1'. Exiting."; exit 1; }
success "-- SUCCESS: '$1' --"
}
invoke_tests() {
out "Invoking tests."
if [[ ! -z "$INVOKE_TEST" ]]; then
out "Invoking only $INVOKE_TEST"
call_test "$INVOKE_TEST"
else
out "Invoking $*"
for t in $*; do
call_test "$t"
done
fi
} }

79
tests/utils.sh Normal file
View file

@ -0,0 +1,79 @@
#!/usr/bin/env bash
#
#
# This file contains test utility functions which are used by the test scripts
# for each binary.
#
#
COLOR_OFF='\e[0m' # Text Reset
RED='\e[0;31m' # Red
YELLOW='\e[0;33m' # Yellow
GREEN='\e[0;32m' # Green
RUNTIME="/tmp"
STORE="${RUNTIME}/store"
out() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${YELLOW}:: $*${COLOR_OFF}"
}
success() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${GREEN}>> $*${COLOR_OFF}"
}
err() {
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${RED}!! $*${COLOR_OFF}"
}
silent() {
DEBUG_OUTPUT_OFF=1 $*
}
imag-call-binary() {
local searchdir=$1; shift
local binary=$1; shift
[[ -d $searchdir ]] || { err "FATAL: No directory $searchdir"; exit 1; }
local bin=$(find $searchdir -iname $binary -type f -executable)
local flags="--debug --rtp $RUNTIME"
out "Calling '$bin $flags $*'"
$bin $flags $*
}
cat_entry() {
cat ${STORE}/$1
}
reset_store() {
rm -r "${STORE}"
}
call_test() {
out "-- TESTING: '$1' --"
$1
result=$?
if [[ -z "$DONT_RESET_STORE" ]]; then
out "Reseting store"
reset_store
out "Store reset done"
fi
[[ $result -eq 0 ]] || { err "-- FAILED: '$1'. Exiting."; exit 1; }
success "-- SUCCESS: '$1' --"
}
invoke_tests() {
out "Invoking tests."
if [[ ! -z "$INVOKE_TEST" ]]; then
out "Invoking only $INVOKE_TEST"
call_test "$INVOKE_TEST"
else
out "Invoking $*"
for t in $*; do
call_test "$t"
done
fi
}