#!/bin/bash

set -e

: "${SOCKET_ACTIVATE:=socket-activate}"

stdout='tests/stdout'
stderr='tests/stderr'

res=0
"$SOCKET_ACTIVATE" --help >"$stdout" 2>"$stderr" || res="$?"
if [ -s "$stderr" ]; then
	echo "$SOCKET_ACTIVATE --help exited with code $res and output some errors:" >&2
	cat -- "$stderr" >&2
	exit 1
fi
if [ "$res" != 0 ]; then
	echo "$SOCKET_ACTIVATE --help exited with code $res" >&2
	exit 1
fi
if ! fgrep -qie usage -- "$stdout"; then
	echo "$SOCKET_ACTIVATE --help did not say anything about usage:" >&2
	cat -- "$stdout" >&2
	exit 1
fi

res=0
"$SOCKET_ACTIVATE" --version >"$stdout" 2>"$stderr" || res="$?"
if [ -s "$stderr" ]; then
	echo "$SOCKET_ACTIVATE --version exited with code $res and output some errors:" >&2
	cat -- "$stderr" >&2
	exit 1
fi
if [ "$res" != 0 ]; then
	echo "$SOCKET_ACTIVATE --version exited with code $res" >&2
	exit 1
fi
if ! egrep -qe 'socket-activate[[:space:]]+[0-9]' -- "$stdout"; then
	echo "$SOCKET_ACTIVATE --version did not introduce itself:" >&2
	cat -- "$stdout" >&2
	exit 1
fi

if [ -n "$(command -v feature-check)" ]; then
	feature-check -- "$SOCKET_ACTIVATE" socket-activate
else
	echo 'No feature-check, checking the old-fashioned way'

	res=0
	"$SOCKET_ACTIVATE" --features >"$stdout" 2>"$stderr" || res="$?"
	if [ -s "$stderr" ]; then
		echo "$SOCKET_ACTIVATE --features exited with code $res and output some errors:" >&2
		cat -- "$stderr" >&2
		exit 1
	fi
	if [ "$res" != 0 ]; then
		echo "$SOCKET_ACTIVATE --features exited with code $res" >&2
		exit 1
	fi
	if ! egrep -qe 'Features:.*[[:space:]]socket-activate=[0-9]' -- "$stdout"; then
		echo "$SOCKET_ACTIVATE --features did not introduce itself:" >&2
		cat -- "$stdout" >&2
		exit 1
	fi
fi
