#!/bin/dash
# autopkgtest check
# (C) 2014 Anton Gladky <gladk@debian.org>

set -e

export FREECAD_USER_HOME="$AUTOPKGTEST_TMP"

WORKDIR=$(mktemp -d)
trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
cd $WORKDIR


# list of tests can be extraced with the FreeCAD python command: (Reference: https://wiki.freecad.org/Testing/de#Get_a_list_of_all_top-level_test_modules)
# FreeCAD.__unit_test__
# List of all tests:
tests_ok="TestArch
  TestSpreadsheet
  BaseTests
  UnitTests
  Document
  Metadata
  StringHasher
  UnicodeTests
  TestPythonSyntax
  TestPartDesignApp
  TestDraft
  TestCAMApp
  TestTechDrawApp
  MeshTestsApp
  TestSurfaceApp
  TestSketcherApp
  TestFemApp
  TestAssemblyWorkbench
  TestMaterialsApp
  TestPartApp
  Menu
  Menu.MenuDeleteCases
  Menu.MenuCreateCases"

 # Tests that require the GUI (autopkg tests are not yet implemented.)
 tests_gui="Workbench
  GuiDocument
  TestArchGui
  TestPartDesignGui
  TestImportGui
  TestDraftGui
  TestCAMGui
  TestTechDrawGui
  TestSketcherGui
  TestOpenSCADGui
  TestMaterialsGui
  TestPartGui"


tests_flaky=""
# Marking TestFemApp flaky for now
tests_flaky="TestCAMApp
  Menu
  Menu.MenuDeleteCases
  Menu.MenuCreateCases"

if dpkg-architecture -e armhf ; then
 tests_flaky="$tests_flaky TestFemApp"
fi

failed=0

for t in $tests_ok
do
  for x in $tests_flaky ; do
    if [ "$x" = "$t" ] ; then
      t=""
      break
    fi
  done
  if [ -z "$t" ] ; then
    echo
    echo "### RUNNING FLAKY TEST <$x> BUT IGNORING RESULT ###"
    echo
    if ! freecadcmd -c -t $x ; then
      echo "FLAKY TEST $x FAILED." | tee -a "$WORKDIR/failed-flaky-tests"
    fi
  else
    echo
    echo "### Running CLI Test <$t> ### "
    echo "############################"
    if ! freecadcmd -c -t $t ; then
      failed=1
      echo "TEST $t FAILED." | tee -a "$WORKDIR/failed-tests"
    fi

  fi
done

echo "############################"
echo "### LIST OF FAILED TESTS ###"
echo "############################"
[ -e "$WORKDIR/failed-tests" ] && cat "$WORKDIR/failed-tests" || true
[ -e "$WORKDIR/failed-flaky-tests" ] && cat "$WORKDIR/failed-flaky-tests" || true
echo "####### END OF LIST ########"

exit $failed
