# HG changeset patch # User J. Ali Harlow # Date 1552053007 0 # Node ID 5914de4a823f809c45572dbe3d4b1b58527a90e7 # Parent a8e48c62ec0314d43e415df78a20dcaf39db95c6 Add some trivial tests for pre-inst and fix bugs found diff -r a8e48c62ec03 -r 5914de4a823f Makefile.am --- a/Makefile.am Fri Mar 08 12:05:41 2019 +0000 +++ b/Makefile.am Fri Mar 08 13:50:07 2019 +0000 @@ -1,4 +1,4 @@ -SUBDIRS=plover plover-gtk tests setup update pre-inst app-manager plover-open +SUBDIRS=plover plover-gtk pre-inst tests setup update app-manager plover-open ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} diff -r a8e48c62ec03 -r 5914de4a823f configure.ac --- a/configure.ac Fri Mar 08 12:05:41 2019 +0000 +++ b/configure.ac Fri Mar 08 13:50:07 2019 +0000 @@ -25,6 +25,7 @@ tests/Makefile tests/plover/Makefile tests/plover-gtk/Makefile +tests/pre-inst/Makefile ]) PLOVER_MSWIN_MANIFEST([setup/setup.exe.manifest:setup/manifest.xml.in update/update.exe.manifest:update/manifest.xml.in diff -r a8e48c62ec03 -r 5914de4a823f plover/log.c --- a/plover/log.c Fri Mar 08 12:05:41 2019 +0000 +++ b/plover/log.c Fri Mar 08 13:50:07 2019 +0000 @@ -300,6 +300,8 @@ if (root) { base_file=g_file_new_for_uri(root); + if (g_path_is_absolute(path)) + path=g_path_skip_root(path); file=g_file_resolve_relative_path(base_file,path); g_object_unref(base_file); filename=g_file_get_path(file); diff -r a8e48c62ec03 -r 5914de4a823f plover/util.c --- a/plover/util.c Fri Mar 08 12:05:41 2019 +0000 +++ b/plover/util.c Fri Mar 08 13:50:07 2019 +0000 @@ -117,7 +117,11 @@ return root; } #else - return g_strdup("/var/lib/plover/root"); + const char *prefix; + prefix=g_getenv("PLOVER_PRE_INSTALL_PREFIX"); + if (!prefix) + prefix="/var/lib/plover/root"; + return g_strdup(prefix); #endif } diff -r a8e48c62ec03 -r 5914de4a823f pre-inst/pre-inst.c --- a/pre-inst/pre-inst.c Fri Mar 08 12:05:41 2019 +0000 +++ b/pre-inst/pre-inst.c Fri Mar 08 13:50:07 2019 +0000 @@ -358,7 +358,7 @@ int exit_status; #endif GError *tmp_error=NULL; - if (argc<1) + if (argc<2) { g_set_error_literal(error,G_FILE_ERROR,G_FILE_ERROR_NOENT, "--post: No command given"); @@ -519,7 +519,7 @@ success=!!pre_install(path); #endif } - if (enable_post && !run_post(argc-1,argv+1,success,&error)) + if (enable_post && !run_post(argc,argv,success,&error)) { #ifndef WIN32 fprintf(stderr,"Error in post: %s\n",error->message); diff -r a8e48c62ec03 -r 5914de4a823f tests/Makefile.am --- a/tests/Makefile.am Fri Mar 08 12:05:41 2019 +0000 +++ b/tests/Makefile.am Fri Mar 08 13:50:07 2019 +0000 @@ -1,4 +1,4 @@ -SUBDIRS = . plover plover-gtk +SUBDIRS = . plover plover-gtk pre-inst EXTRA_DIST = zsh.spec zsh2.spec zip.spec zap.spec filesystem.spec zappy.spec \ zappy2.spec unsatisfiable.spec uninstallable.spec badpostun.spec comps.xml \ diff -r a8e48c62ec03 -r 5914de4a823f tests/pre-inst/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/pre-inst/Makefile.am Fri Mar 08 13:50:07 2019 +0000 @@ -0,0 +1,18 @@ +check_SCRIPTS=no-post post + +no-post: no-post.sh Makefile + cp $(srcdir)/no-post.sh $@ + chmod +x $@ + +post: post.sh Makefile + cp $(srcdir)/post.sh $@ + chmod +x $@ + +TESTS=$(check_SCRIPTS) + +EXTRA_DIST=no-post.sh post.sh + +clean-local: + rm -f razor-set-* + +MOSTLYCLEANFILES=$(check_SCRIPTS) diff -r a8e48c62ec03 -r 5914de4a823f tests/pre-inst/no-post.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/pre-inst/no-post.sh Fri Mar 08 13:50:07 2019 +0000 @@ -0,0 +1,30 @@ +#!/bin/sh +set -x +tmpdir=`mktemp -dt` || exit 1 +if [ $# -gt 0 ]; then + cp "$1" $tmpdir/pre-inst +else + cp ../../pre-inst/pre-inst $tmpdir/pre-inst +fi +mkdir $tmpdir/repodata +cat << EOF > $tmpdir/repodata/primary.xml + + + +EOF +cat << EOF > $tmpdir/repodata/filelists.xml + + + +EOF +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml +pre_inst="$tmpdir/pre-inst" +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir" +$pre_inst --post +if grep -s "^Error in post: --post: No command given$" "$tmpdir/var/log/pre-install"; then + rm -rf "$tmpdir" + exit 0 +else + cat "$tmpdir/var/log/pre-install" + exit 1 +fi diff -r a8e48c62ec03 -r 5914de4a823f tests/pre-inst/post.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/pre-inst/post.sh Fri Mar 08 13:50:07 2019 +0000 @@ -0,0 +1,30 @@ +#!/bin/sh +set -x +tmpdir=`mktemp -dt` || exit 1 +if [ $# -gt 0 ]; then + cp "$1" $tmpdir/pre-inst +else + cp ../../pre-inst/pre-inst $tmpdir/pre-inst +fi +mkdir $tmpdir/repodata +cat << EOF > $tmpdir/repodata/primary.xml + + + +EOF +cat << EOF > $tmpdir/repodata/filelists.xml + + + +EOF +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml +pre_inst="$tmpdir/pre-inst" +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir" +$pre_inst --post "touch $tmpdir/xyzzy" +if [ -f $tmpdir/xyzzy ]; then + rm -rf "$tmpdir" + exit 0 +else + cat "$tmpdir/var/log/pre-install" + exit 1 +fi