#!/usr/bin/env bash

set -o errexit

npm run build
projectRoot=`pwd`
binary=$projectRoot/bin/elm-typescript-interop

echo 'RUNNING SUCCESS CASES...'
cd $projectRoot/tests-approval/expectSuccess

for testFolder in *
do
  echo "Testing generator with $testFolder folder"
  cd $testFolder
  # outputBase=`basename $testFolder`
  # outputPath=../../tests/e2e/output/$outputBase.d.ts
  $binary
  cd -
done

echo "Checking that all TypeScript declaration files are valid..."
declarationFiles=$(find . -type f -name "*.d.ts")
npx tsc $declarationFiles --out /dev/null

# echo 'Ensuring documentation is valid...'
# elm make --docs=documentation.json

echo 'Confirming that generated code is unchanged...'
git diff --exit-code -- './**/*.d.ts' || (echo 'FAILURE' && echo 'examples code has changed. Commit changes to approve.' && exit 1)


echo 'RUNNING ERROR CASES...'
cd $projectRoot/tests-approval/expectError

for testFolder in *
do
  echo "Testing expected error for $testFolder folder"
  cd $testFolder
  # outputBase=`basename $testFolder`
  # outputPath=../../tests/e2e/output/$outputBase.d.ts
  $binary &> output.approval.txt && (echo "Expected $testFolder to have non-zero exit code but it succeeded."; exit 1)
  cd -
done

echo 'Confirming that error messages are unchanged...'
git diff --exit-code -- './**/output.approval.txt' || (echo 'FAILURE' && echo 'error message output has changed. Commit changes to approve.' && exit 1)


echo 'SUCCESS'
