Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package makeself for openSUSE:Factory checked in at 2021-02-01 13:29:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/makeself (Old) and /work/SRC/openSUSE:Factory/.makeself.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "makeself" Mon Feb 1 13:29:06 2021 rev:13 rq:868300 version:2.4.3 Changes: -------- --- /work/SRC/openSUSE:Factory/makeself/makeself.changes 2020-06-16 13:47:00.942380835 +0200 +++ /work/SRC/openSUSE:Factory/.makeself.new.28504/makeself.changes 2021-02-01 13:30:59.130348484 +0100 @@ -1,0 +2,8 @@ +Sat Jan 30 15:51:03 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 2.4.3: + * includes a number of bug fixes. + * POSIX tar archive format is now explicitly set to increase compatibility + between GNU and BSD variants of the command. + +------------------------------------------------------------------- Old: ---- makeself-2.4.2.tar.gz New: ---- makeself-2.4.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ makeself.spec ++++++ --- /var/tmp/diff_new_pack.q9PjQT/_old 2021-02-01 13:30:59.758349258 +0100 +++ /var/tmp/diff_new_pack.q9PjQT/_new 2021-02-01 13:30:59.758349258 +0100 @@ -18,7 +18,7 @@ Name: makeself -Version: 2.4.2 +Version: 2.4.3 Release: 0 Summary: Make self-extractable archives on Unix License: GPL-2.0-or-later ++++++ makeself-2.4.2.tar.gz -> makeself-2.4.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/.github/workflows/build.yml new/makeself-release-2.4.3/.github/workflows/build.yml --- old/makeself-release-2.4.2/.github/workflows/build.yml 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/.github/workflows/build.yml 2021-01-16 14:33:11.000000000 +0100 @@ -42,7 +42,7 @@ - name: Checkout Makeself uses: actions/checkout@v2 - name: Run ShellCheck - uses: azohra/shell-linter@feature/add-severity-mode + uses: megastep/shell-linter@develop with: path: "makeself.sh" severity: "error" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/README.md new/makeself-release-2.4.3/README.md --- old/makeself-release-2.4.2/README.md 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/README.md 2021-01-16 14:33:11.000000000 +0100 @@ -111,7 +111,6 @@ * **`--packaging-date date`** : Use provided string as the packaging date instead of the current date. * **`--license`** : Append a license file. * **`--nooverwrite`** : Do not extract the archive if the specified target directory already exists. - * **`--header file`** : Specify the location of the header script file (default `makeself-header.sh`) * **`--help-header file`** : Add a header to the archive's `--help` output. * `archive_dir` is the name of the directory that contains the files to be archived * `file_name` is the name of the archive to be created @@ -200,11 +199,12 @@ * **v2.1.3:** Bug fixes with the command line when spawning terminals. Added `--tar`, `--noexec` for archives. Added `--nomd5` and `--nocrc` to avoid creating checksums in archives. The embedded script is now run through "eval". The `--info` output now includes the command used to create the archive. A man page was contributed by Bartosz Fenski. * **v2.1.4:** Fixed `--info` output. Generate random directory name when extracting files to . to avoid problems. Better handling of errors with wrong permissions for the directory containing the files. Avoid some race conditions, Unset the $CDPATH variable to avoid problems if it is set. Better handling of dot files in the archive directory. * **v2.1.5:** Made the md5sum detection consistent with the header code. Check for the presence of the archive directory. Added `--encrypt` for symmetric encryption through gpg (Eric Windisch). Added support for the digest command on Solaris 10 for MD5 checksums. Check for available disk space before extracting to the target directory (Andreas Schweitzer). Allow extraction to run asynchronously (patch by Peter Hatch). Use file descriptors internally to avoid error messages (patch by Kay Tiong Khoo). - * **v2.1.6:** Replaced one dot per file progress with a realtime progress percentage and a spining cursor. Added `--noprogress` to prevent showing the progress during the decompression. Added `--target` dir to allow extracting directly to a target directory. (Guy Baconniere) + * **v2.1.6:** Replaced one dot per file progress with a realtime progress percentage and a spinning cursor. Added `--noprogress` to prevent showing the progress during the decompression. Added `--target` dir to allow extracting directly to a target directory. (Guy Baconniere) * **v2.2.0:** First major new release in years! Includes many bugfixes and user contributions. Please look at the [project page on Github][10] for all the details. * **v2.3.0:** Support for archive encryption via GPG or OpenSSL. Added LZO and LZ4 compression support. Options to set the packaging date and stop the umask from being overriden. Optionally ignore check for available disk space when extracting. New option to check for root permissions before extracting. * **v2.3.1:** Various compatibility updates. Added unit tests for Travis CI in the GitHub repo. New `--tar-extra`, `--untar-extra`, `--gpg-extra`, `--gpg-asymmetric-encrypt-sign` options. * **v2.4.0:** Added optional support for SHA256 archive integrity checksums. + * **v2.4.2:** New --cleanup and --cleanup-args arguments for cleanup scripts. Added threading support for supported compressors. Now supports zstd compression. ## Links diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/VERSION new/makeself-release-2.4.3/VERSION --- old/makeself-release-2.4.2/VERSION 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/VERSION 2021-01-16 14:33:11.000000000 +0100 @@ -1 +1 @@ -2.4.2 +2.4.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/makeself-header.sh new/makeself-release-2.4.3/makeself-header.sh --- old/makeself-release-2.4.2/makeself-header.sh 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/makeself-header.sh 2021-01-16 14:33:11.000000000 +0100 @@ -14,7 +14,7 @@ TMPROOT=\${TMPDIR:=/tmp} USER_PWD="\$PWD" export USER_PWD -ARCHIVE_DIR=`dirname \$0` +ARCHIVE_DIR=\`dirname "\$0"\` export ARCHIVE_DIR label="$LABEL" @@ -25,6 +25,7 @@ helpheader='$HELPHEADER' targetdir="$archdirname" filesizes="$filesizes" +totalsize="$totalsize" keep="$KEEP" nooverwrite="$NOOVERWRITE" quiet="n" @@ -96,9 +97,14 @@ { blocks=\`expr \$3 / 1024\` bytes=\`expr \$3 % 1024\` - dd if="\$1" ibs=\$2 skip=1 obs=1024 conv=sync 2> /dev/null | \\ - { test \$blocks -gt 0 && dd ibs=1024 obs=1024 count=\$blocks ; \\ - test \$bytes -gt 0 && dd ibs=1 obs=1024 count=\$bytes ; } 2> /dev/null + # Test for ibs, obs and conv feature + if dd if=/dev/zero of=/dev/null count=1 ibs=512 obs=512 conv=sync 2> /dev/null; then + dd if="\$1" ibs=\$2 skip=1 obs=1024 conv=sync 2> /dev/null | \\ + { test \$blocks -gt 0 && dd ibs=1024 obs=1024 count=\$blocks ; \\ + test \$bytes -gt 0 && dd ibs=1 obs=1024 count=\$bytes ; } 2> /dev/null + else + dd if="\$1" bs=\$2 skip=1 2> /dev/null + fi } MS_dd_Progress() @@ -201,6 +207,11 @@ MS_Printf "Verifying archive integrity..." fi offset=\`head -n "\$skip" "\$1" | wc -c | tr -d " "\` + fsize=\`cat "\$1" | wc -c | tr -d " "\` + if test \$totalsize -ne \`expr \$fsize - \$offset\`; then + echo " Unexpected archive size." >&2 + exit 2 + fi verb=\$2 i=1 for s in \$filesizes @@ -337,7 +348,7 @@ echo Encryption: $ENCRYPT fi echo Date of packaging: $DATE - echo Built with Makeself version $MS_VERSION on $OSTYPE + echo Built with Makeself version $MS_VERSION echo Build command was: "$MS_COMMAND" if test x"\$script" != x; then echo Script run after extraction: @@ -366,6 +377,7 @@ echo NOOVERWRITE=$NOOVERWRITE echo COMPRESS=$COMPRESS echo filesizes=\"\$filesizes\" + echo totalsize=\"\$totalsize\" echo CRCsum=\"\$CRCsum\" echo MD5sum=\"\$MD5sum\" echo SHAsum=\"\$SHAsum\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/makeself.1 new/makeself-release-2.4.3/makeself.1 --- old/makeself-release-2.4.2/makeself.1 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/makeself.1 2021-01-16 14:33:11.000000000 +0100 @@ -1,19 +1,14 @@ -.TH "makeself" "1" "2.1.6" +.TH "MAKESELF" "1" "2.1.6" .SH "NAME" makeself \- An utility to generate self-extractable archives. .SH "SYNTAX" -.LP -.B makeself [\fIoptions\fP] archive_dir file_name label +.B makeself [\fIoptions\fP] archive_dir file_name label .B [\fIstartup_script\fP] [\fIargs\fP] .SH "DESCRIPTION" -.LP -This program is a free (GPL) utility designed to create self-extractable -archives from a directory. -.br +This program is a free (GPL) utility designed to create self-extractable +archives from a directory. .SH "OPTIONS" -.LP The following options are supported. -.LP .TP 15 .B -v, --version Prints out the makeself version number and exits. @@ -55,7 +50,7 @@ Specify the compression level for gzip,bzip2,pbzui2,xz,lzo or lz4 .TP .B --notemp -The archive will create archive_dir in the current directory and +The archive will create archive_dir in the current directory and uncompress in ./archive_dir. .TP .B --copy @@ -71,7 +66,7 @@ Extract directly to a target directory. Directory path can be either absolute or relative. .TP .B --header file -Specify location of the header script. +Specify location of the header script. .TP .B --cleanup file Specify a cleanup script that executes on interrupt and when finished successfully. @@ -98,10 +93,18 @@ LSM file describing the package. .B --packaging-date date Use provided string as the packaging date instead of the current date. -.PD +.SH "EXAMPLES" +Here is an example, assuming the user has a package image stored in a /home/joe/mysoft, +and he wants to generate a self-extracting package named mysoft.sh, which will launch +the "setup" script initially stored in /home/joe/mysoft: +.TP +makeself.sh /home/joe/mysoft mysoft.sh "Joe's Nice Software Package" ./setup +.TP +Here is also how I created the makeself.run archive which contains the Makeself distribution: +.TP +makeself.sh --notemp makeself makeself.run "Makeself by Stephane Peter" echo "Makeself has extracted itself" .SH "AUTHORS" -.LP -Makeself has been written by St?phane Peter <megas...@megastep.org>. -.BR -This man page was originally written by Bartosz Fenski <fe...@o2.pl> for the +Makeself has been written by St??phane Peter <megas...@megastep.org>. +.BR +This man page was originally written by Bartosz Fenski <fe...@o2.pl> for the Debian GNU/Linux distribution (but it may be used by others). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/makeself.sh new/makeself-release-2.4.3/makeself.sh --- old/makeself-release-2.4.2/makeself.sh 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/makeself.sh 2021-01-16 14:33:11.000000000 +0100 @@ -70,15 +70,16 @@ # - 2.4.0 : Optional support for SHA256 checksums in archives. # - 2.4.2 : Add support for threads for several compressors. (M. Limber) # Added zstd support. +# - 2.4.3 : Make explicit POSIX tar archives for increased compatibility. # -# (C) 1998-2020 by Stephane Peter <megas...@megastep.org> +# (C) 1998-2021 by Stephane Peter <megas...@megastep.org> # # This software is released under the terms of the GNU GPL version 2 and above # Please read the license at http://www.gnu.org/copyleft/gpl.html # Self-extracting archives created with this script are explictly NOT released under the term of the GPL # -MS_VERSION=2.4.2 +MS_VERSION=2.4.3 MS_COMMAND="$0" unset CDPATH @@ -97,8 +98,8 @@ MS_Usage() { - echo "Usage: $0 [params] archive_dir file_name label startup_script [args]" - echo "params can be one or more of the following :" + echo "Usage: $0 [args] archive_dir file_name label startup_script [script_args]" + echo "args can be one or more of the following :" echo " --version | -v : Print out Makeself version number and exit" echo " --help | -h : Print out this help message" echo " --tar-quietly : Suppress verbose output from the tar command" @@ -173,10 +174,13 @@ } # Default settings -if type gzip > /dev/null 2>&1; then +if type gzip >/dev/null 2>&1; then COMPRESS=gzip +elif type compress >/dev/null 2>&1; then + COMPRESS=compress else - COMPRESS=Unix + echo "ERROR: missing commands: gzip, compress" >&2 + MS_Usage fi ENCRYPT=n PASSWD="" @@ -251,7 +255,7 @@ shift ;; --compress) - COMPRESS=Unix + COMPRESS=compress shift ;; --base64) @@ -444,7 +448,7 @@ if test "$QUIET" = "y" || test "$TAR_QUIETLY" = "y"; then if test "$TAR_ARGS" = "rvf"; then TAR_ARGS="rf" - elif test "$TAR_ARGS" = "rvhf";then + elif test "$TAR_ARGS" = "rvhf"; then TAR_ARGS="rhf" fi fi @@ -461,6 +465,7 @@ exit 1 else eval "$OLDENV" + OLDSKIP=`expr $SKIP + 1` fi else if test "$KEEP" = n -a $# = 3; then @@ -550,9 +555,9 @@ GUNZIP_CMD="gpg --yes -d" ENCRYPT="gpg" ;; -Unix) - GZIP_CMD="compress -cf" - GUNZIP_CMD="exec 2>&-; uncompress -c || test \\\$? -eq 2 || gzip -cd" +compress) + GZIP_CMD="compress -fc" + GUNZIP_CMD="(type compress >/dev/null 2>&1 && compress -fcd || gzip -cd)" ;; none) GZIP_CMD="cat" @@ -587,22 +592,21 @@ archname="$tmpfile" # Generate a fake header to count its lines SKIP=0 - . "$HEADER" - SKIP=`cat "$tmpfile" |wc -l` + . "$HEADER" + SKIP=`cat "$tmpfile" |wc -l` # Get rid of any spaces SKIP=`expr $SKIP` rm -f "$tmpfile" - if test "$QUIET" = "n";then - echo "Header is $SKIP lines long" >&2 - fi - + if test "$QUIET" = "n"; then + echo "Header is $SKIP lines long" >&2 + fi archname="$oldarchname" else echo "Unable to open header file: $HEADER" >&2 exit 1 fi -if test "$QUIET" = "n";then +if test "$QUIET" = "n"; then echo fi @@ -629,13 +633,29 @@ tmparch="${TMPDIR:-/tmp}/mkself$$.tar" ( if test "$APPEND" = "y"; then - tail -n "+$OLDSKIP" "$archname" | $GUNZIP_CMD > "$tmparch" + tail -n "+$OLDSKIP" "$archname" | eval "$GUNZIP_CMD" > "$tmparch" fi cd "$archdir" - find . ! -type d -o -links 2 \ + # "Determining if a directory is empty" + # https://www.etalabs.net/sh_tricks.html + find . \ + \( \ + ! -type d \ + -o \ + \( -links 2 -exec sh -c ' + is_empty () ( + cd "$1" + set -- .[!.]* ; test -f "$1" && return 1 + set -- ..?* ; test -f "$1" && return 1 + set -- * ; test -f "$1" && return 1 + return 0 + ) + is_empty "$0"' {} \; \ + \) \ + \) -print \ | LC_ALL=C sort \ | sed 's/./\\&/g' \ - | xargs tar $TAR_EXTRA -$TAR_ARGS "$tmparch" + | xargs tar $TAR_EXTRA --posix -$TAR_ARGS "$tmparch" ) || { echo "ERROR: failed to create temporary archive: $tmparch" rm -f "$tmparch" "$tmpfile" @@ -666,12 +686,12 @@ crcsum=0000000000 if test "$NOCRC" = y; then - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "skipping crc at user request" fi else crcsum=`CMD_ENV=xpg4 cksum < "$tmpfile" | sed -e 's/ /Z/' -e 's/ /Z/' | cut -dZ -f1` - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "CRC: $crcsum" fi fi @@ -693,7 +713,7 @@ fi fi if test "$NOMD5" = y; then - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "Skipping md5sum at user request" fi else @@ -710,16 +730,22 @@ MD5_ARG="-a md5" fi md5sum=`eval "$MD5_PATH $MD5_ARG" < "$tmpfile" | cut -b-32` - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "MD5: $md5sum" fi else - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "MD5: none, MD5 command not found" fi fi fi +totalsize=0 +for size in $fsize; +do + totalsize=`expr $totalsize + $size` +done + if test "$APPEND" = y; then mv "$archname" "$archname".bak || exit @@ -735,7 +761,7 @@ chmod +x "$archname" rm -f "$archname".bak - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo "Self-extractable archive \"$archname\" successfully updated." fi else @@ -748,12 +774,12 @@ . "$HEADER" # Append the compressed tar data after the stub - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo fi cat "$tmpfile" >> "$archname" chmod +x "$archname" - if test "$QUIET" = "n";then + if test "$QUIET" = "n"; then echo Self-extractable archive \"$archname\" successfully created. fi fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/test/appendtest new/makeself-release-2.4.3/test/appendtest --- old/makeself-release-2.4.2/test/appendtest 2020-04-27 12:59:03.000000000 +0200 +++ new/makeself-release-2.4.3/test/appendtest 2021-01-16 14:33:11.000000000 +0100 @@ -1,48 +1,100 @@ #!/bin/bash +# FIXME: These tests need to check that the concatenation of archives works -SUT=$(realpath $(dirname $0)/../makeself.sh) -SOURCE=$(realpath ..) +set -eu -setupTests() { - temp=`mktemp -d -t appendtest.XXXXX` - cd "$temp" - mkdir archive - cp -a $SOURCE archive/ - $SUT $* archive makeself-test.run "Test $*" echo Testing --tar-extra="--exclude .git" - mkdir -p append/append_dir/ - cp -a $SOURCE/makeself.sh append/append_dir/ +THIS="$(realpath "$0")" +WHAT="$(basename "${THIS}")" +HERE="$(dirname "${THIS}")" +SRCDIR="$(dirname "${HERE}")" +SUT="${SRCDIR}/makeself.sh" + +readonly archive_dir_create="$(mktemp -dt archive_dir_create.XXXXXX)" +readonly archive_dir_append="$(mktemp -dt archive_dir_append.XXXXXX)" +touch "${archive_dir_create}/fee" +touch "${archive_dir_create}/fie" +touch "${archive_dir_append}/foe" +touch "${archive_dir_append}/fum" + +evalAssert() { + eval "$@" + assertEqual "$?" "0" } +# $1 : file_name +doInfoListCheckExec() { + evalAssert "$1" --info + evalAssert "$1" --list + evalAssert "$1" --check + evalAssert "$1" +} -testGzip() -{ - setupTests --gzip - - $SUT --append append/ makeself-test.run - assertEqual $? 0 - ./makeself-test.run --check - assertEqual $? 0 +# $1 : file_name +# rest : content basenames +assertContains() { + local file_name="" + file_name="$(realpath "$1")" + shift + local target="${file_name}.d" + rm -rf "${target}" + mkdir -p "${target}" + evalAssert "${file_name}" --target "${target}" + assertEqual \ + "$(find "${target}" -type f -exec basename -a {} + | sort)" \ + "$(echo "$@" | sort)" + rm -rf "${target}" } +# $@ : makeself options +doTestOpts() { + local stem="" + stem="$(printf '%s' "${WHAT}" "$@" | tr -sc '[:alnum:]_.-' '_')" + local file_name="" + file_name="$(realpath "${stem}.run")" + + evalAssert "${SUT}" "$@" --sha256 \ + "${archive_dir_create}" \ + "${file_name}" \ + "${stem}" \ + "echo ${stem}" + doInfoListCheckExec "${file_name}" + assertContains "${file_name}" "fee" "fie" + + evalAssert "${SUT}" "$@" --sha256 \ + --append "${archive_dir_append}" \ + "${file_name}" + doInfoListCheckExec "${file_name}" + assertContains "${file_name}" "fee" "fie" "foe" "fum" -testNocomp() -{ - setupTests --nocomp - - $SUT --append append/ makeself-test.run - assertEqual $? 0 - ./makeself-test.run --check - assertEqual $? 0 + rm -f "${file_name}" } -testBzip2() -{ - setupTests --bzip2 - - $SUT --append append/ makeself-test.run - assertEqual $? 0 - ./makeself-test.run --check - assertEqual $? 0 +# $1 : compression option +doTestComp() { + if ! command -v "${1#--*}" >/dev/null 2>&1; then + echo "WARNING: missing command: ${1#--*}" >&2 + return 0 + fi + doTestOpts "$1" } +################################################################################ + +testDefault() { doTestOpts; } + +testNocomp() { doTestOpts --nocomp; } + +testBase64() { doTestComp --base64; } +testBzip2() { doTestComp --bzip2; } +testCompress() { doTestComp --compress; } +testGzip() { doTestComp --gzip; } +testLz4() { doTestComp --lz4; } +testLzo() { doTestComp --lzo; } +testPbzip2() { doTestComp --pbzip2; } +testPigz() { doTestComp --pigz; } +testXz() { doTestComp --xz; } +testZstd() { doTestComp --zstd; } + source bashunit/bashunit.bash + +rm -rf "${archive_dir_create}" "${archive_dir_append}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/test/corrupttest new/makeself-release-2.4.3/test/corrupttest --- old/makeself-release-2.4.2/test/corrupttest 1970-01-01 01:00:00.000000000 +0100 +++ new/makeself-release-2.4.3/test/corrupttest 2021-01-16 14:33:11.000000000 +0100 @@ -0,0 +1,38 @@ +#!/bin/bash +# Test that corrupted archives actually fail validation + +SUT=$(realpath $(dirname $0)/../makeself.sh) +SOURCE=$(realpath ..) + +setupTests() { + temp=`mktemp -d -t appendtest.XXXXX` + cd "$temp" + mkdir archive + cp -a $SOURCE archive/ + $SUT $* archive makeself-test.run "Test $*" echo Testing --tar-extra="--exclude .git" +} + +testExtraBytes() { + setupTests --sha256 + + ./makeself-test.run --check + assertEqual $? 0 + + echo "Adding a bunch of random characters at the end!!" >> makeself-test.run + + ./makeself-test.run --check + assertNotEqual $? 0 +} + +testTruncated() { + setupTests --sha256 + + ./makeself-test.run --check + assertEqual $? 0 + + dd if=makeself-test.run of=truncated.run bs=1 count=34303 + bash truncated.run --check + assertNotEqual $? 0 +} + +source bashunit/bashunit.bash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/test/infotest new/makeself-release-2.4.3/test/infotest --- old/makeself-release-2.4.2/test/infotest 1970-01-01 01:00:00.000000000 +0100 +++ new/makeself-release-2.4.3/test/infotest 2021-01-16 14:33:11.000000000 +0100 @@ -0,0 +1,122 @@ +#!/bin/bash + +# makeself/test/infotest + +THIS="$(realpath "$0")" +HERE="$(dirname "${THIS}")" +SRCDIR="$(dirname "${HERE}")" +VERSION="$(xargs printf '%s' <"${SRCDIR}/VERSION")" + +################################################################################ + +# Take makeself options, generate a predefined archive, print --info to stdout. +# +# $@ : makeself options +haveInfo() ( + cd "${SRCDIR}" || return 1 + mkdir -p infotest + ./makeself.sh "$@" ./infotest ./infotest.run infotest ls -lah >/dev/null 2>&1 + assertEqual "$?" 0 >&2 + ./infotest.run --info + assertEqual "$?" 0 >&2 + rm -rf infotest infotest.run +) + +# Read want.info from stdin. Generate have.info using given options. Invoke +# diff want.info have.info and return its exit status +# +# $@ : makeself options +diffInfo() { + local rc="" + cd "$(mktemp -d)" || return 1 + cat >want.info + haveInfo "$@" >have.info + if diff want.info have.info >&2; then + rc="$?" + else + rc="$?" + fi + rm -f have.info want.info + return "${rc}" +} + +testDefault() ( + cd "$(mktemp -d)" || return 1 + diffInfo --packaging-date "@0" <<EOF +Identification: infotest +Target directory: infotest +Uncompressed size: 12 KB +Compression: gzip +Encryption: n +Date of packaging: @0 +Built with Makeself version ${VERSION} +Build command was: ./makeself.sh \\ + "--packaging-date" \\ + "@0" \\ + "./infotest" \\ + "./infotest.run" \\ + "infotest" \\ + "ls" \\ + "-lah" +Script run after extraction: + ls -lah +infotest will be removed after extraction +EOF + assertEqual "$?" 0 +) + +testNocomp() ( + cd "$(mktemp -d)" || return 1 + diffInfo --packaging-date "@0" --nocomp <<EOF +Identification: infotest +Target directory: infotest +Uncompressed size: 12 KB +Compression: none +Encryption: n +Date of packaging: @0 +Built with Makeself version ${VERSION} +Build command was: ./makeself.sh \\ + "--packaging-date" \\ + "@0" \\ + "--nocomp" \\ + "./infotest" \\ + "./infotest.run" \\ + "infotest" \\ + "ls" \\ + "-lah" +Script run after extraction: + ls -lah +infotest will be removed after extraction +EOF + assertEqual "$?" 0 +) + +testNotemp() ( + cd "$(mktemp -d)" || return 1 + diffInfo --packaging-date "@0" --notemp <<EOF +Identification: infotest +Target directory: infotest +Uncompressed size: 12 KB +Compression: gzip +Encryption: n +Date of packaging: @0 +Built with Makeself version ${VERSION} +Build command was: ./makeself.sh \\ + "--packaging-date" \\ + "@0" \\ + "--notemp" \\ + "./infotest" \\ + "./infotest.run" \\ + "infotest" \\ + "ls" \\ + "-lah" +Script run after extraction: + ls -lah +directory infotest is permanent +EOF + assertEqual "$?" 0 +) + +################################################################################ + +source "${HERE}/bashunit/bashunit.bash" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/makeself-release-2.4.2/test/variabletest new/makeself-release-2.4.3/test/variabletest --- old/makeself-release-2.4.2/test/variabletest 1970-01-01 01:00:00.000000000 +0100 +++ new/makeself-release-2.4.3/test/variabletest 2021-01-16 14:33:11.000000000 +0100 @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +SUT=$(realpath $(dirname $0)/../makeself.sh) +SOURCE=$(realpath ..) + +setupTests() { + temp=`mktemp -d -t XXXXX` + cd "$temp" + mkdir archive + touch archive/file + + # $SUT archive makeself-test.run "Test $1" declare -p "${1}" + $SUT archive makeself-test.run "Test $1" echo \\\"\${${1}}\\\" +} + +testArchiveDir() +{ + setupTests ARCHIVE_DIR + local ans=$'./complicated\n dir\twith spaces' + mkdir "${ans}" + mv ./makeself-test.run "${ans}/" + actual_archive_dir="$("${ans}/makeself-test.run" --quiet)" + + assertEqual "${actual_archive_dir}" "${ans}" +} + +testTmpRoot() +{ + setupTests TMPROOT + local ans="${temp}"$'/complicated\n dir\twith spaces' + mkdir -p "${ans}" + + actual_tmp_root="$(TMPDIR="${ans}" "./makeself-test.run" --quiet)" + + assertEqual "${actual_tmp_root}" "${ans}" +} + +testUserPWD() +{ + setupTests USER_PWD + local ans="${temp}"$'/complicated\n dir\twith spaces' + mkdir -p "${ans}" + cd "${ans}" + + actual_user_pwd="$("${temp}/makeself-test.run" --quiet)" + + assertEqual "${actual_user_pwd}" "${ans}" +} + + +source bashunit/bashunit.bash