mirror of
https://github.com/dimitri/el-get.git
synced 2024-09-29 13:08:51 +08:00
141b2e594e
Among other things, it ensures that the full backtrace of any error is printed in batch mode.
84 lines
2.0 KiB
Bash
Executable File
84 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 recipe1 [recipe2 ...]"
|
|
exit 0
|
|
fi
|
|
|
|
set_default () {
|
|
eval "
|
|
if [ -z \$$1 ]; then
|
|
$1=$2
|
|
fi
|
|
"
|
|
}
|
|
|
|
set_default EL_GET_LIB_DIR "$(dirname "$(dirname "$(readlink -f "$0")")")"
|
|
set_default TMPDIR "$(dirname "$(mktemp --dry-run)")"
|
|
set_default TEST_HOME "$TMPDIR/el-get-test-home"
|
|
set_default EMACS "$(which emacs)"
|
|
|
|
# 5 seconds in between tests to avoid accidental DoS from running too
|
|
# many tests in a short time
|
|
set_default DELAY_BETWEEN_TESTS 5
|
|
|
|
set_default RECIPE_DIR "$EL_GET_LIB_DIR/recipes"
|
|
|
|
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
|
|
rm -rf "$TEST_HOME"/.emacs.d/el-get/
|
|
lisp_temp_file=`mktemp`
|
|
cat >"$lisp_temp_file" <<EOF
|
|
|
|
(progn
|
|
(setq el-get-default-process-sync t
|
|
pdef (el-get-read-recipe-file "$recipe_file")
|
|
pname (plist-get pdef :name)
|
|
el-get-sources (list pdef))
|
|
(el-get (quote sync) pname)
|
|
(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 ***")
|
|
(assert (el-get-package-is-installed pname) nil
|
|
"Package %s should be installed right now but isn't" pname))
|
|
|
|
EOF
|
|
|
|
HOME="$TEST_HOME" "$EMACS" -Q -batch -L "$EL_GET_LIB_DIR" \
|
|
-l "$EL_GET_LIB_DIR/el-get.el" -l "$EL_GET_LIB_DIR/test/test-setup.el" \
|
|
-l "$lisp_temp_file"
|
|
result="$?"
|
|
if [ "$result" = 0 ]; then
|
|
echo "*** SUCCESS $recipe_file ***"
|
|
else
|
|
echo "*** FAILED $recipe_file ***"
|
|
fi
|
|
}
|
|
|
|
while [ -n "$1" ]; do
|
|
test_recipe "$1"
|
|
shift
|
|
if [ -n "$1" ]; then
|
|
sleep "$DELAY_BETWEEN_TESTS"
|
|
fi
|
|
done
|