_run_test.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. ## these must be set by the test scripts
  2. [ "$TESTS" ] || ( echo "Missing TESTS" ; exit 2 )
  3. [ "$BRANCH" ] || ( echo "Missing BRANCH" ; exit 3 )
  4. [ "$ID" ] || ( echo "Missing ID" ; exit 4 )
  5. ## load global configuration
  6. . ./config.sh || ( echo "Cannot load config.sh" ; exit 1 )
  7. [ "$TESTFARM_CF_PREFIX" ] || ( echo "Missing TESTFARM_CF_PREFIX" ; exit 5 )
  8. [ "$TESTFARM_LOCALBRANCH" ] || ( echo "Missing TESTFARM_LOCALBRANCH" ; exit 6 )
  9. [ "$TESTFARM_OUTPUT_DIR" ] || ( echo "Missing TESTFARM_OUTPUT_DIR" ; exit 7 )
  10. [ "$TESTFARM_OPT_DIR" ] || ( echo "Missing TESTFARM_OPT_DIR" ; exit 8 )
  11. [ "$TESTFARM_BUILD_ROOT" ] || ( echo "Missing TESTFARM_BUILD_ROOT" ; exit 9 )
  12. BUILDDIR="$TESTFARM_BUILD_ROOT/$ID.git"
  13. function prepare_builddir() {
  14. mkdir -p $TESTFARM_BUILD_ROOT
  15. mkdir -p $TESTFARM_OUTPUT_DIR
  16. ## checkout
  17. rm -Rf $BUILDDIR
  18. if ! cp -R $TESTFARM_REPO_DIR $BUILDDIR ; then
  19. echo "Copying repo from $TESTFARM_REPO_DIR to $BUILDDIR failed"
  20. exit 23
  21. fi
  22. if ! cd $BUILDDIR ; then
  23. echo "Cannot change to $BUILDDIR"
  24. exit 24
  25. fi
  26. if ! (git checkout -f $BRANCH -b $TESTFARM_LOCALBRANCH 2>&1 ) | \
  27. (grep -v "Branch $TESTFARM_LOCALBRANCH set up to track remote branch" || true) |
  28. (grep -v "Switched to a new branch '$TESTFARM_LOCALBRANCH'" || true) ; then
  29. echo "Checkout failed"
  30. exit 25
  31. fi
  32. ## repare the build files
  33. if ! (./autogen.sh 2>&1 ) > $TESTFARM_OUTPUT_DIR/autogen.out ; then
  34. echo "Autogen stage failed"
  35. exit 26
  36. else
  37. if [ "$TESTFARM_REMOVE_SUCCESS_LOGS" == "yes" ]; then
  38. rm -f $TESTFARM_OUTPUT_DIR/autogen.out
  39. fi
  40. fi
  41. }
  42. function run_test() {
  43. T_NAME="$1"
  44. if [ -f "$TESTFARM_OUTPUT_DIR/$T_NAME.OK" ]; then
  45. echo "Skipping succeed test: $T_NAME"
  46. return
  47. fi
  48. echo "Running test: $T_NAME"
  49. if ! cd $BUILDDIR ; then
  50. echo "Cannot change to $BUILDDIR"
  51. exit 24
  52. fi
  53. echo " [$T_NAME] Distclean"
  54. ( make distclean 2>&1 ) > $TESTFARM_OUTPUT_DIR/$T_NAME.distclean.out
  55. rm -f $TESTFARM_OUTPUT_DIR/$T_NAME.distclean.out
  56. echo " [$T_NAME] Configure"
  57. if ! ( ./configure --prefix=$TESTFARM_CF_PREFIX `cat $TESTFARM_OPT_DIR/$t.opt` 2>&1 ) > $TESTFARM_OUTPUT_DIR/$t.configure.out ; then
  58. echo "==> ERROR: Configure failed for test $T_NAME"
  59. return
  60. fi
  61. echo " [$t] Build"
  62. if ! ( make 2>&1 ) > $TESTFARM_OUTPUT_DIR/$T_NAME.build.out ; then
  63. echo "==> ERROR: Build failed for test $T_NAME"
  64. return
  65. fi
  66. echo " [$t] Install"
  67. if ! ( DESTDIR="$TESTFARM_DESTDIR_ROOT/$ID/" make install 2>&1 ) > $TESTFARM_OUTPUT_DIR/$t.install.out ; then
  68. echo "==> ERROR: Install failed for test $T_NAME"
  69. return
  70. fi
  71. touch $TESTFARM_OUTPUT_DIR/$T_NAME.OK
  72. if [ "$TESTFARM_REMOVE_SUCCESS_LOGS" == "yes" ]; then
  73. rm -f \
  74. $TESTFARM_OUTPUT_DIR/$T_NAME.build.out \
  75. $TESTFARM_OUTPUT_DIR/$T_NAME.configure.out \
  76. $TESTFARM_OUTPUT_DIR/$T_NAME.distclean.out \
  77. $TESTFARM_OUTPUT_DIR/$T_NAME.install.out
  78. fi
  79. }
  80. prepare_builddir
  81. for t in $TESTS ; do
  82. run_test $t
  83. done