#!/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"