#!/bin/bash

# Copy deb file into $AUTOPKGTEST_TMP folder for testing
cp /tmp/autopkgtest.output*/binaries/deb-gview.deb $AUTOPKGTEST_TMP/.

# Extract control.tar and data.tar members and compress with zstd
echo "Creating .deb with zstd members"

cd $AUTOPKGTEST_TMP
mkdir tmp
dpkg-deb --raw-extract ./deb-gview.deb ./tmp
dpkg-deb --build -Z zstd ./tmp ./deb-gview_zstd.deb

# Check if zstd compressed members were created successfully
if [ `ar t deb-gview_zstd.deb control.tar.zst` == "control.tar.zst" ] \
&& [ `ar t deb-gview_zstd.deb data.tar.zst` == "data.tar.zst" ]; then
  echo "Done creating .deb with zstd members"
else
  echo "Error creating .deb with zstd members"
  exit 1
fi

if [[ ! -e /usr/bin/deb-gview ]]; then
  echo "deb-gview binary not found in /usr/bin/"
  exit 1
fi

if [[ ! -e $AUTOPKGTEST_TMP/deb-gview_zstd.deb ]]; then
  echo ".deb file not found"
  exit 1
fi

# Check if deb-gview runs without errors
/usr/bin/xvfb-run -a /usr/bin/deb-gview $AUTOPKGTEST_TMP/deb-gview_zstd.deb 2>$AUTOPKGTEST_TMP/err.txt &
sleep 5

pidret=`pgrep -f "/usr/bin/deb-gview $AUTOPKGTEST_TMP/deb-gview_zstd.deb"`

if [[ ! $pidret ]]; then
  echo "/usr/bin/deb-gview process not found"
  exit 1
fi

# Kill processes
kill -9 $pidret

ret=$?

# Check for output to stderr
sizeerr=`wc $AUTOPKGTEST_TMP/err.txt -c | awk '{print $1}'`
if [[ $sizeerr > 0 ]]; then
  echo "Error found"
  cat $AUTOPKGTEST_TMP/err.txt
  exit 1
elif [[ $ret == 0 ]]; then
  echo "deb-gview successfully opened the zstd .deb file"
  exit $ret
else
  exit $ret
fi