mirror of
https://github.com/dimitri/el-get.git
synced 2024-09-29 13:08:51 +08:00
d826ef1b30
This is useful if you are testing the installation of a package with lots of dependencies, since without cleaning the dependencies will not need to be reinstalled at the beginning of each test run.
85 lines
2.1 KiB
Bash
Executable File
85 lines
2.1 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
|
|
[ -n "$DO_NOT_CLEAN" ] || 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
|
|
rm -f "$lisp_temp_file"
|
|
}
|
|
|
|
while [ -n "$1" ]; do
|
|
test_recipe "$1"
|
|
shift
|
|
if [ -n "$1" ]; then
|
|
sleep "$DELAY_BETWEEN_TESTS"
|
|
fi
|
|
done
|