#!/bin/sh

set -e

testfiles="packages/Packages packages/Packages.gz packages/Packages.bz2
           verify/invalid-gzip.gz 
	   packages/apt_0.0.1_test.deb packages/empty.txt packages/tilde~test.txt
	   apt/apt_0.0.1_test.deb apt/apt_0.0.2_test.deb apt/apt_0.0.3_test.deb"
rootdir="$(cd $(dirname $0); pwd)"
testdir="$rootdir/test_data"

make_pkg()
{
  dir=$1
  version=$2
  pkgdir=${dir}_${version}_test
  cp -ra $dir $pkgdir
  sed "s/^Version: .*/Version: ${version}/" < $dir/DEBIAN/control > $pkgdir/DEBIAN/control
  dpkg --build $pkgdir
  rm -r $pkgdir
}

make_test_data()
{
  mkdir -p $testdir
  cd $testdir
  make_data=
  for f in $testfiles; do
    if [ ! -f "$f" ]; then
      make_data=1
      break
    fi
  done
  
  if [ -z "$make_data" ]; then
    return
  fi
    
  echo "Creating test data"
  [ ! -d $testdir/apt ] || rm -r $testdir/apt
  mkdir -p $testdir/apt
  cd $testdir/apt
  echo Creating apt packages from system
  fakeroot -u dpkg-repack --generate apt
  mv dpkg-repack* apt
  make_pkg apt 0.0.1
  make_pkg apt 0.0.2
  make_pkg apt 0.0.3
  rm -r apt

  echo Creating Packages file for apt directory
  dpkg-scanpackages . /dev/null | tee Packages | gzip -c > Packages.gz
  bzip2 -c < Packages > Packages.bz2
  cd ..

  [ ! -d $testdir/packages ] || rm -r $testdir/packages
  mkdir -p $testdir/packages
  cd $testdir/packages
  cp ../apt/apt_0.0.1_test.deb .
  echo Creating Packages file for package
  dpkg-scanpackages . /dev/null | tee Packages | gzip -c > Packages.gz
  bzip2 -c < Packages > Packages.bz2
  touch empty.txt
  touch 'tilde~test.txt'
  cd ..

  mkdir -p $testdir/verify
  cd $testdir/verify
  touch empty-unknown-file
  echo "blah" > nonempty-unknown-file
  gzip -c < nonempty-unknown-file > gzip.gz
  cp nonempty-unknown-file invalid-gzip.gz
}

make_test_data

cd $rootdir
if [ $# -eq 0 ]; then
  args=apt_proxy.test
else
  args=
  for i in "$@"; do
    if [[ "$i" == apt_proxy.test.* ]] ; then
      args="$args $i"
    else
      args="$args apt_proxy.test.$i"
    fi
  done
fi
rm -f `pwd`/unittests.log
set -x
PYTHONPATH="`pwd`" trial --logfile `pwd`/unittests.log $args
