#!/bin/sh

set -e

pack=package.json
if [ -e debian/nodejs/main ]; then
	pack=`egrep -v '^(.*#.*|)$' debian/nodejs/main`
	pack="$pack/package.json"
	echo "Found debian/nodejs/main, package.json is $pack"
fi
if [ ! -e $pack ]; then
	pack=$(dpkg -L `grep ^Package: debian/control|head -n1|sed -e 's/.*: *//'`|grep -v node_modules|grep package.json|head -n1)
fi
if [ ! -e $pack ]; then
	echo "Unable to find package.json, aborting"
	exit 77
fi

echo "Using $pack"

PKG=`perl -MJSON -000 -ne '$a.=$_;END{print JSON::decode_json($a)->{name}}' $pack`
echo "Node module name is $PKG"
LOCAL="0"

if [ -e debian/tests/pkg-js/require-name ]; then
	REQUIRE_PKG=`cat debian/tests/pkg-js/require-name| head -1| sed 's/^ *//g'`
	if [ "$REQUIRE_PKG" = "" ]; then
		echo "No package to require, aborting"
		exit 1
	fi
else
	REQUIRE_PKG=$PKG
fi

if [ -e debian/tests/pkg-js/SKIP ]; then
	SKIP_TEST=`cat debian/tests/pkg-js/SKIP| head -1| sed 's/^ *//g'`
fi

if test "$1" = "src"; then
	shift 1
	LOCAL=1
fi

TESTFILES=`ls -d test* 2>/dev/null || true`
if [ -e debian/tests/pkg-js/files ]; then
	TESTFILES=`cat debian/tests/pkg-js/files`
fi

COMMAND=$@
if test "$COMMAND" = "require"; then
	echo "Test: require"
	if test "$SKIP_TEST" != "require"; then
		if test "$LOCAL" = "0"; then
			node --no-deprecation -e "require('$REQUIRE_PKG')"
		else
			node --no-deprecation -e "require('.')"
		fi
	else
		echo 'Require Tests will NOT be run ...'
		exit 77
	fi
elif test "$SKIP_TEST" != "test"; then
	TEST=debian/tests/pkg-js/test
	if test "$LOCAL" = "0"; then
		TEMP=${AUTOPKGTEST_TMP:-${TMPDIR:-/tmp}}
		HOME=$TEMP
		export HOME
		TDIR=$(mktemp -d $TEMP/smokeXXXXXX)
		PDIR=`pwd`
		if test "$TESTFILES" != ""; then
			echo "# Copy test files"
			tar cf - $TESTFILES | tar xf - -C $TDIR
		fi
		if [ -e debian/tests/pkg-js ]; then
			mkdir -p $TDIR/debian/tests/
			cp -a debian/tests/pkg-js $TDIR/debian/tests/
		fi
		cd $TDIR
		for NPATH in /usr/lib/nodejs/$PKG /usr/lib/*/nodejs/$PKG /usr/share/nodejs/$PKG; do
			echo "Looking at $NPATH"
			if test -e $NPATH; then
				echo "Found $NPATH"
				for i in $NPATH/*; do
					echo "Linking $i"
					ln -s $i || echo "# /!\\ skipping $i"
				done
			fi
		done
	fi
	if test "$COMMAND" = ""; then
		if [ -e $TEST ]; then
			echo "Launch $TEST with sh -e"
			sh -e $TEST
		else
			echo "# /!\ Missing debian/tests/pkg-js/test file, skipping"
			exit 77
		fi
	else
		echo "# Launch command: $COMMAND"
		$COMMAND
	fi
else
	echo 'NO tests will be run ...'
	exit 77
fi
if test "$TDIR" != ""; then
	echo "# Cleaning tmp dir"
	rm -rf $TDIR
fi
