mirror of
https://github.com/dimitri/el-get.git
synced 2024-09-30 05:29:52 +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.
73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 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)"
|
|
|
|
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 debug-on-error t
|
|
el-get-verbose nil
|
|
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 -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"
|
|
rm -f "$lisp_temp_file"
|
|
}
|
|
|
|
for r in "$@"; do
|
|
test_recipe "$r"
|
|
done
|