Explorar o código

Run coverage only if necessary but run tests in special cases

Special cases are if the build is triggered through cron or api
Nuwan Goonasekera %!s(int64=8) %!d(string=hai) anos
pai
achega
189d4d0c5e
Modificáronse 1 ficheiros con 47 adicións e 22 borrados
  1. 47 22
      .travis.yml

+ 47 - 22
.travis.yml

@@ -22,29 +22,54 @@ matrix:
       env: TOX_ENV=pypy-openstack
 before_install:
     - |
-      DOCS_REGEX='(\.rst$)|(^(docs))/'
-      FILES_IN_CHANGESET="`git diff --name-only $TRAVIS_COMMIT_RANGE`"
-      echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX" || {
-         echo "Only docs were updated. Stopping build process."
-         exit
-      }
-      # Extract env and provider from $TOXENV into $PYENV and $PROVIDER respectively
-      IFS=- read PYENV PROVIDER <<< "$TOXENV"
-      echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX|(^(cloudbridge/cloud/providers))" || {
-          echo "Only docs and providers were updated. Checking whether this provider was changed."
-          echo "$FILES_IN_CHANGESET" | grep -qE "^(cloudbridge/cloud/providers/$PROVIDER)" && {
-              echo "This provider was affected by this changeset. Running tests."
-          } || {
-              echo "This provider was not affected by this changeset. Stopping build process."
+      case "$TRAVIS_EVENT_TYPE" in
+        push|pull_request)
+           # Check whether we need to run a test for this provider
+           DOCS_REGEX='(\.rst$)|(^(docs))/'
+           FILES_IN_CHANGESET="`git diff --name-only $TRAVIS_COMMIT_RANGE`"
+           echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX" || {
+              echo "Only docs were updated. Stopping build process."
               exit
-          }
-      }
+           }
+           echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX|(^(cloudbridge/cloud/providers))" || {
+              echo "Only docs and providers were updated. Checking whether this provider was changed."
+              # Extract env and provider from $TOXENV into $PYENV and $PROVIDER respectively
+              IFS=- read PYENV PROVIDER <<< "$TOX_ENV"
+              echo "$FILES_IN_CHANGESET" | grep -qE "^(cloudbridge/cloud/providers/$PROVIDER)" && {
+                 echo "This provider was affected by this changeset. Running tests."
+              } || {
+                 echo "This provider was not affected by this changeset. Stopping build process."
+                 exit
+              }
+           }
+           ;;
+        *)
+           echo "Build triggered through API or CRON job. Running regardless of changes"
+           ;;
+      esac
 install:
-  - pip install tox
-  - pip install coveralls
-  - pip install codecov
+    - pip install tox
+    - pip install coveralls
+    - pip install codecov
 script:
-  - tox -e $TOX_ENV
+    - tox -e $TOX_ENV
 after_success:
-  - coveralls
-  - codecov
+    - |
+      case "$TRAVIS_EVENT_TYPE" in
+        push|pull_request)
+           # Don't run coverage if tests or cloudbridge interface was not affected
+           DOCS_REGEX='(\.rst$)|(^(docs))/'
+           FILES_IN_CHANGESET="`git diff --name-only $TRAVIS_COMMIT_RANGE`"
+           echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX|(^(cloudbridge/cloud/providers))" && {
+              coveralls &
+              codecov &
+              wait
+           } || {
+              echo "Only docs and providers were updated. Not running coverage."
+           }
+           ;;
+        *)
+           echo "Build triggered through API or CRON job. Running regardless of changes"
+           ;;
+      esac
+