#!/usr/bin/env bash
set -e

# start_server_and_test
# Replicates the basic functionality of the start-server-and-test npm package
# https://www.npmjs.com/package/start-server-and-test

if [[ $# -ne 3 ]]; then
  echo "Usage: start_server_and_test \'[start server script]\' [port] \'[test script]\'"
  exit 1
fi

START_SERVER_SCRIPT="$1"
PORT="$2"
TEST_SCRIPT="$3"

await_port --await-free --timeout 120 "$PORT"

eval "$START_SERVER_SCRIPT &"

function finish {
  SERVER_PID=`lsof -i -P -n | grep LISTEN | grep ${PORT} | awk '{ print $2 }'`
  echo Killing server PID=${SERVER_PID}
  kill $SERVER_PID || true
}

trap finish EXIT

await_port "$PORT"

eval "$TEST_SCRIPT"

