2012-10-07 10:11:30 +08:00
|
|
|
#!/bin/bash
|
2012-02-20 18:12:33 +08:00
|
|
|
|
|
|
|
if [ -z "$1" ]; then
|
|
|
|
echo "Usage: $0 recipe1 [recipe2 ...]"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2014-04-23 07:48:22 +08:00
|
|
|
source "$(dirname $0)"/test-utils.sh
|
2012-02-20 18:12:33 +08:00
|
|
|
|
2012-02-27 15:44:57 +08:00
|
|
|
# 5 seconds in between tests to avoid accidental DoS from running too
|
|
|
|
# many tests in a short time
|
|
|
|
set_default DELAY_BETWEEN_TESTS 5
|
|
|
|
|
2012-02-20 18:12:33 +08:00
|
|
|
get_recipe_file () {
|
|
|
|
for x in "$1" "$RECIPE_DIR/$1" "$RECIPE_DIR/$1.rcp" "$RECIPE_DIR/$1.el"; do
|
|
|
|
if [ -e "$x" ]; then
|
|
|
|
echo "$x"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
test_recipe () {
|
|
|
|
recipe_file="$(get_recipe_file "$1")"
|
|
|
|
if [ ! -n "$recipe_file" ]; then
|
|
|
|
echo "*** Skipping nonexistent recipe $1 ***"
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
echo "*** Testing el-get recipe $recipe_file ***"
|
|
|
|
mkdir -p "$TEST_HOME"/.emacs.d
|
2012-05-29 09:41:39 +08:00
|
|
|
if [ -n "$DO_NOT_CLEAN" ]; then
|
|
|
|
echo "Running test without removing $TEST_HOME first";
|
|
|
|
else
|
2012-10-07 10:11:30 +08:00
|
|
|
add_on_exit "rm -rf $TEST_HOME"
|
|
|
|
rm -rf "$TEST_HOME"
|
2012-05-29 09:41:39 +08:00
|
|
|
fi
|
2012-10-07 10:11:30 +08:00
|
|
|
mkdir -p "$TEST_HOME"/.emacs.d/el-get/
|
|
|
|
TMPDIR="$TEST_HOME"
|
|
|
|
|
2012-02-20 18:12:33 +08:00
|
|
|
lisp_temp_file=`mktemp`
|
2012-10-07 10:11:30 +08:00
|
|
|
add_on_exit "rm -f $lisp_temp_file"
|
2012-02-20 18:12:33 +08:00
|
|
|
cat >"$lisp_temp_file" <<EOF
|
|
|
|
|
2012-02-21 04:41:57 +08:00
|
|
|
(progn
|
2012-03-16 01:01:13 +08:00
|
|
|
(setq el-get-default-process-sync t
|
2012-02-21 04:41:57 +08:00
|
|
|
pdef (el-get-read-recipe-file "$recipe_file")
|
|
|
|
pname (plist-get pdef :name)
|
|
|
|
el-get-sources (list pdef))
|
2012-02-20 18:12:33 +08:00
|
|
|
(el-get (quote sync) pname)
|
2012-02-21 04:41:57 +08:00
|
|
|
(message "*** Initial install successful ***")
|
|
|
|
(el-get-update pname)
|
|
|
|
(message "*** Update successful ***")
|
|
|
|
(el-get-remove pname)
|
|
|
|
(message "*** Removal successful ***")
|
|
|
|
(el-get-install pname)
|
|
|
|
(message "*** Second install successful ***")
|
2012-02-20 18:37:44 +08:00
|
|
|
(assert (el-get-package-is-installed pname) nil
|
|
|
|
"Package %s should be installed right now but isn't" pname))
|
2012-02-20 18:12:33 +08:00
|
|
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
HOME="$TEST_HOME" "$EMACS" -Q -batch -L "$EL_GET_LIB_DIR" \
|
2012-03-16 01:01:13 +08:00
|
|
|
-l "$EL_GET_LIB_DIR/el-get.el" -l "$EL_GET_LIB_DIR/test/test-setup.el" \
|
|
|
|
-l "$lisp_temp_file"
|
2012-02-20 18:12:33 +08:00
|
|
|
result="$?"
|
|
|
|
if [ "$result" = 0 ]; then
|
|
|
|
echo "*** SUCCESS $recipe_file ***"
|
|
|
|
else
|
|
|
|
echo "*** FAILED $recipe_file ***"
|
|
|
|
fi
|
2012-05-05 10:48:17 +08:00
|
|
|
rm -f "$lisp_temp_file"
|
2012-02-20 18:12:33 +08:00
|
|
|
}
|
|
|
|
|
2012-03-13 00:20:41 +08:00
|
|
|
while [ -n "$1" ]; do
|
|
|
|
test_recipe "$1"
|
|
|
|
shift
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
sleep "$DELAY_BETWEEN_TESTS"
|
|
|
|
fi
|
2012-02-20 18:12:33 +08:00
|
|
|
done
|