Add some trivial tests for pre-inst and fix bugs found
authorJ. Ali Harlow <ali@juiblex.co.uk>
Fri Mar 08 13:50:07 2019 +0000 (2019-03-08)
changeset 875914de4a823f
parent 86 a8e48c62ec03
child 88 52ac1fcbdbbe
Add some trivial tests for pre-inst and fix bugs found
Makefile.am
configure.ac
plover/log.c
plover/util.c
pre-inst/pre-inst.c
tests/Makefile.am
tests/pre-inst/Makefile.am
tests/pre-inst/no-post.sh
tests/pre-inst/post.sh
     1.1 --- a/Makefile.am	Fri Mar 08 12:05:41 2019 +0000
     1.2 +++ b/Makefile.am	Fri Mar 08 13:50:07 2019 +0000
     1.3 @@ -1,4 +1,4 @@
     1.4 -SUBDIRS=plover plover-gtk tests setup update pre-inst app-manager plover-open
     1.5 +SUBDIRS=plover plover-gtk pre-inst tests setup update app-manager plover-open
     1.6  
     1.7  ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
     1.8  
     2.1 --- a/configure.ac	Fri Mar 08 12:05:41 2019 +0000
     2.2 +++ b/configure.ac	Fri Mar 08 13:50:07 2019 +0000
     2.3 @@ -25,6 +25,7 @@
     2.4  tests/Makefile
     2.5  tests/plover/Makefile
     2.6  tests/plover-gtk/Makefile
     2.7 +tests/pre-inst/Makefile
     2.8  ])
     2.9  PLOVER_MSWIN_MANIFEST([setup/setup.exe.manifest:setup/manifest.xml.in
    2.10  update/update.exe.manifest:update/manifest.xml.in
     3.1 --- a/plover/log.c	Fri Mar 08 12:05:41 2019 +0000
     3.2 +++ b/plover/log.c	Fri Mar 08 13:50:07 2019 +0000
     3.3 @@ -300,6 +300,8 @@
     3.4      if (root)
     3.5      {
     3.6  	base_file=g_file_new_for_uri(root);
     3.7 +	if (g_path_is_absolute(path))
     3.8 +	    path=g_path_skip_root(path);
     3.9  	file=g_file_resolve_relative_path(base_file,path);
    3.10  	g_object_unref(base_file);
    3.11  	filename=g_file_get_path(file);
     4.1 --- a/plover/util.c	Fri Mar 08 12:05:41 2019 +0000
     4.2 +++ b/plover/util.c	Fri Mar 08 13:50:07 2019 +0000
     4.3 @@ -117,7 +117,11 @@
     4.4  	return root;
     4.5      }
     4.6  #else
     4.7 -    return g_strdup("/var/lib/plover/root");
     4.8 +    const char *prefix;
     4.9 +    prefix=g_getenv("PLOVER_PRE_INSTALL_PREFIX");
    4.10 +    if (!prefix)
    4.11 +	prefix="/var/lib/plover/root";
    4.12 +    return g_strdup(prefix);
    4.13  #endif
    4.14  }
    4.15  
     5.1 --- a/pre-inst/pre-inst.c	Fri Mar 08 12:05:41 2019 +0000
     5.2 +++ b/pre-inst/pre-inst.c	Fri Mar 08 13:50:07 2019 +0000
     5.3 @@ -358,7 +358,7 @@
     5.4      int exit_status;
     5.5  #endif
     5.6      GError *tmp_error=NULL;
     5.7 -    if (argc<1)
     5.8 +    if (argc<2)
     5.9      {
    5.10  	g_set_error_literal(error,G_FILE_ERROR,G_FILE_ERROR_NOENT,
    5.11  	  "--post: No command given");
    5.12 @@ -519,7 +519,7 @@
    5.13  	success=!!pre_install(path);
    5.14  #endif
    5.15      }
    5.16 -    if (enable_post && !run_post(argc-1,argv+1,success,&error))
    5.17 +    if (enable_post && !run_post(argc,argv,success,&error))
    5.18      {
    5.19  #ifndef WIN32
    5.20  	fprintf(stderr,"Error in post: %s\n",error->message);
     6.1 --- a/tests/Makefile.am	Fri Mar 08 12:05:41 2019 +0000
     6.2 +++ b/tests/Makefile.am	Fri Mar 08 13:50:07 2019 +0000
     6.3 @@ -1,4 +1,4 @@
     6.4 -SUBDIRS = . plover plover-gtk
     6.5 +SUBDIRS = . plover plover-gtk pre-inst
     6.6  
     6.7  EXTRA_DIST = zsh.spec zsh2.spec zip.spec zap.spec filesystem.spec zappy.spec \
     6.8      zappy2.spec unsatisfiable.spec uninstallable.spec badpostun.spec comps.xml \
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/tests/pre-inst/Makefile.am	Fri Mar 08 13:50:07 2019 +0000
     7.3 @@ -0,0 +1,18 @@
     7.4 +check_SCRIPTS=no-post post
     7.5 +
     7.6 +no-post:       no-post.sh Makefile
     7.7 +	cp $(srcdir)/no-post.sh $@
     7.8 +	chmod +x $@
     7.9 +
    7.10 +post:       post.sh Makefile
    7.11 +	cp $(srcdir)/post.sh $@
    7.12 +	chmod +x $@
    7.13 +
    7.14 +TESTS=$(check_SCRIPTS)
    7.15 +
    7.16 +EXTRA_DIST=no-post.sh post.sh
    7.17 +
    7.18 +clean-local:
    7.19 +	rm -f razor-set-*
    7.20 +
    7.21 +MOSTLYCLEANFILES=$(check_SCRIPTS)
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/tests/pre-inst/no-post.sh	Fri Mar 08 13:50:07 2019 +0000
     8.3 @@ -0,0 +1,30 @@
     8.4 +#!/bin/sh
     8.5 +set -x
     8.6 +tmpdir=`mktemp -dt` || exit 1
     8.7 +if [ $# -gt 0 ]; then
     8.8 +    cp "$1" $tmpdir/pre-inst
     8.9 +else
    8.10 +    cp ../../pre-inst/pre-inst $tmpdir/pre-inst
    8.11 +fi
    8.12 +mkdir $tmpdir/repodata
    8.13 +cat << EOF > $tmpdir/repodata/primary.xml
    8.14 +<?xml version="1.0" encoding="UTF-8"?>
    8.15 +<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="0">
    8.16 +</metadata>
    8.17 +EOF
    8.18 +cat << EOF > $tmpdir/repodata/filelists.xml
    8.19 +<?xml version="1.0" encoding="UTF-8"?>
    8.20 +<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0">
    8.21 +</filelists>
    8.22 +EOF
    8.23 +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml
    8.24 +pre_inst="$tmpdir/pre-inst"
    8.25 +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir"
    8.26 +$pre_inst --post
    8.27 +if grep -s "^Error in post: --post: No command given$" "$tmpdir/var/log/pre-install"; then
    8.28 +    rm -rf "$tmpdir"
    8.29 +    exit 0
    8.30 +else
    8.31 +    cat "$tmpdir/var/log/pre-install"
    8.32 +    exit 1
    8.33 +fi
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/tests/pre-inst/post.sh	Fri Mar 08 13:50:07 2019 +0000
     9.3 @@ -0,0 +1,30 @@
     9.4 +#!/bin/sh
     9.5 +set -x
     9.6 +tmpdir=`mktemp -dt` || exit 1
     9.7 +if [ $# -gt 0 ]; then
     9.8 +    cp "$1" $tmpdir/pre-inst
     9.9 +else
    9.10 +    cp ../../pre-inst/pre-inst $tmpdir/pre-inst
    9.11 +fi
    9.12 +mkdir $tmpdir/repodata
    9.13 +cat << EOF > $tmpdir/repodata/primary.xml
    9.14 +<?xml version="1.0" encoding="UTF-8"?>
    9.15 +<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="0">
    9.16 +</metadata>
    9.17 +EOF
    9.18 +cat << EOF > $tmpdir/repodata/filelists.xml
    9.19 +<?xml version="1.0" encoding="UTF-8"?>
    9.20 +<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0">
    9.21 +</filelists>
    9.22 +EOF
    9.23 +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml
    9.24 +pre_inst="$tmpdir/pre-inst"
    9.25 +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir"
    9.26 +$pre_inst --post "touch $tmpdir/xyzzy"
    9.27 +if [ -f $tmpdir/xyzzy ]; then
    9.28 +    rm -rf "$tmpdir"
    9.29 +    exit 0
    9.30 +else
    9.31 +    cat "$tmpdir/var/log/pre-install"
    9.32 +    exit 1
    9.33 +fi