mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Merge pull request #1201 from YunoHost/helpers-tests
Add quick-and-dirty test system for helpers
This commit is contained in:
commit
d5ecdca896
4 changed files with 169 additions and 2 deletions
|
@ -53,6 +53,12 @@ root-tests:
|
|||
script:
|
||||
- python3 -m pytest tests
|
||||
|
||||
test-helpers:
|
||||
extends: .test-stage
|
||||
script:
|
||||
- cd tests
|
||||
- bash test_helpers.sh
|
||||
|
||||
test-apps:
|
||||
extends: .test-stage
|
||||
script:
|
||||
|
|
|
@ -217,11 +217,13 @@ ynh_setup_source () {
|
|||
fi
|
||||
|
||||
# Apply patches
|
||||
if (( $(find $YNH_APP_BASEDIR/sources/patches/ -type f -name "${source_id}-*.patch" 2> /dev/null | wc --lines) > "0" ))
|
||||
local patches_folder=$(realpath $YNH_APP_BASEDIR/sources/patches/)
|
||||
if (( $(find $patches_folder -type f -name "${source_id}-*.patch" 2> /dev/null | wc --lines) > "0" ))
|
||||
then
|
||||
(cd "$dest_dir"
|
||||
for p in $YNH_APP_BASEDIR/sources/patches/${source_id}-*.patch
|
||||
for p in $patches_folder/${source_id}-*.patch
|
||||
do
|
||||
echo $p
|
||||
patch --strip=1 < $p
|
||||
done) || ynh_die --message="Unable to apply patches"
|
||||
fi
|
||||
|
|
81
tests/test_helpers.d/ynhtest_setup_source.sh
Normal file
81
tests/test_helpers.d/ynhtest_setup_source.sh
Normal file
|
@ -0,0 +1,81 @@
|
|||
_make_dummy_src() {
|
||||
echo "test coucou"
|
||||
if [ ! -e $HTTPSERVER_DIR/dummy.tar.gz ]
|
||||
then
|
||||
pushd "$HTTPSERVER_DIR"
|
||||
mkdir dummy
|
||||
pushd dummy
|
||||
echo "Lorem Ipsum" > index.html
|
||||
echo '{"foo": "bar"}' > conf.json
|
||||
mkdir assets
|
||||
echo '.some.css { }' > assets/main.css
|
||||
echo 'var some="js";' > assets/main.js
|
||||
popd
|
||||
tar -czf dummy.tar.gz dummy
|
||||
popd
|
||||
fi
|
||||
echo "SOURCE_URL=http://127.0.0.1:$HTTPSERVER_PORT/dummy.tar.gz"
|
||||
echo "SOURCE_SUM=$(sha256sum $HTTPSERVER_DIR/dummy.tar.gz | awk '{print $1}')"
|
||||
}
|
||||
|
||||
ynhtest_setup_source_nominal() {
|
||||
final_path="$(mktemp -d -p $VAR_WWW)"
|
||||
_make_dummy_src > ../conf/dummy.src
|
||||
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="dummy"
|
||||
|
||||
test -e "$final_path"
|
||||
test -e "$final_path/index.html"
|
||||
}
|
||||
|
||||
ynhtest_setup_source_nominal_upgrade() {
|
||||
final_path="$(mktemp -d -p $VAR_WWW)"
|
||||
_make_dummy_src > ../conf/dummy.src
|
||||
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="dummy"
|
||||
|
||||
test "$(cat $final_path/index.html)" == "Lorem Ipsum"
|
||||
|
||||
# Except index.html to get overwritten during next ynh_setup_source
|
||||
echo "IEditedYou!" > $final_path/index.html
|
||||
test "$(cat $final_path/index.html)" == "IEditedYou!"
|
||||
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="dummy"
|
||||
|
||||
test "$(cat $final_path/index.html)" == "Lorem Ipsum"
|
||||
}
|
||||
|
||||
|
||||
ynhtest_setup_source_with_keep() {
|
||||
final_path="$(mktemp -d -p $VAR_WWW)"
|
||||
_make_dummy_src > ../conf/dummy.src
|
||||
|
||||
echo "IEditedYou!" > $final_path/index.html
|
||||
echo "IEditedYou!" > $final_path/test.txt
|
||||
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="dummy" --keep="index.html test.txt"
|
||||
|
||||
test -e "$final_path"
|
||||
test -e "$final_path/index.html"
|
||||
test -e "$final_path/test.txt"
|
||||
test "$(cat $final_path/index.html)" == "IEditedYou!"
|
||||
test "$(cat $final_path/test.txt)" == "IEditedYou!"
|
||||
}
|
||||
|
||||
ynhtest_setup_source_with_patch() {
|
||||
final_path="$(mktemp -d -p $VAR_WWW)"
|
||||
_make_dummy_src > ../conf/dummy.src
|
||||
|
||||
mkdir -p ../sources/patches
|
||||
cat > ../sources/patches/dummy-index.html.patch << EOF
|
||||
--- a/index.html
|
||||
+++ b/index.html
|
||||
@@ -1 +1,1 @@
|
||||
-Lorem Ipsum
|
||||
+Lorem Ipsum dolor sit amet
|
||||
EOF
|
||||
|
||||
ynh_setup_source --dest_dir="$final_path" --source_id="dummy"
|
||||
|
||||
test "$(cat $final_path/index.html)" == "Lorem Ipsum dolor sit amet"
|
||||
}
|
78
tests/test_helpers.sh
Normal file
78
tests/test_helpers.sh
Normal file
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
|
||||
readonly NORMAL=$(printf '\033[0m')
|
||||
readonly BOLD=$(printf '\033[1m')
|
||||
readonly RED=$(printf '\033[31m')
|
||||
readonly GREEN=$(printf '\033[32m')
|
||||
readonly ORANGE=$(printf '\033[33m')
|
||||
|
||||
function log_test()
|
||||
{
|
||||
echo -n "${BOLD}$1${NORMAL} ... "
|
||||
}
|
||||
|
||||
function log_passed()
|
||||
{
|
||||
echo "${BOLD}${GREEN}✔ Passed${NORMAL}"
|
||||
}
|
||||
|
||||
function log_failed()
|
||||
{
|
||||
echo "${BOLD}${RED}✘ Failed${NORMAL}"
|
||||
}
|
||||
|
||||
function cleanup()
|
||||
{
|
||||
[ -n "$HTTPSERVER" ] && kill "$HTTPSERVER"
|
||||
[ -d "$HTTPSERVER_DIR" ] && rm -rf "$HTTPSERVER_DIR"
|
||||
[ -d "$VAR_WWW" ] && rm -rf "$VAR_WWW"
|
||||
}
|
||||
trap cleanup EXIT SIGINT
|
||||
|
||||
# =========================================================
|
||||
|
||||
# Dummy http server, to serve archives for ynh_setup_source
|
||||
HTTPSERVER_DIR=$(mktemp -d)
|
||||
HTTPSERVER_PORT=1312
|
||||
pushd "$HTTPSERVER_DIR" >/dev/null
|
||||
python -m SimpleHTTPServer $HTTPSERVER_PORT &>/dev/null &
|
||||
HTTPSERVER="$!"
|
||||
popd >/dev/null
|
||||
|
||||
VAR_WWW=$(mktemp -d)/var/www
|
||||
mkdir -p $VAR_WWW
|
||||
# =========================================================
|
||||
|
||||
source /usr/share/yunohost/helpers
|
||||
for TEST_SUITE in $(ls test_helpers.d/*)
|
||||
do
|
||||
source $TEST_SUITE
|
||||
done
|
||||
|
||||
# Hack to list all known function, keep only those starting by ynhtest_
|
||||
TESTS=$(declare -F | grep ' ynhtest_' | awk '{print $3}')
|
||||
|
||||
global_result=0
|
||||
|
||||
for TEST in $TESTS
|
||||
do
|
||||
log_test $TEST
|
||||
cd $(mktemp -d)
|
||||
(app=ynhtest
|
||||
YNH_APP_ID=$app
|
||||
mkdir conf
|
||||
mkdir scripts
|
||||
cd scripts
|
||||
set -eux
|
||||
$TEST
|
||||
) > ./test.log 2>&1
|
||||
|
||||
if [[ $? == 0 ]]
|
||||
then
|
||||
set +x; log_passed;
|
||||
else
|
||||
set +x; echo -e "\n----------"; cat ./test.log; echo -e "----------"; log_failed; global_result=1;
|
||||
fi
|
||||
done
|
||||
|
||||
exit $global_result
|
Loading…
Add table
Reference in a new issue