From 732c1985efde2ef0ef1e0c57c2e0ef464be6a2e9 Mon Sep 17 00:00:00 2001
From: "Adam J. Stewart" <ajstewart426@gmail.com>
Date: Mon, 22 Aug 2016 10:22:42 -0500
Subject: [PATCH] Overhaul Spack's CI Infrastructure

---
 .travis.yml                                   | 39 ++++++++++---------
 README.md                                     |  2 +-
 share/spack/qa/run-doc-tests                  |  4 ++
 .../spack/qa/{run-flake8 => run-flake8-tests} |  2 +-
 4 files changed, 27 insertions(+), 20 deletions(-)
 create mode 100755 share/spack/qa/run-doc-tests
 rename share/spack/qa/{run-flake8 => run-flake8-tests} (99%)

diff --git a/.travis.yml b/.travis.yml
index b376a33490..f6c6817121 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,27 +1,35 @@
 language: python
 
+# Construct build matrix
 python:
-  - "2.6"
-  - "2.7"
+  - 2.6
+  - 2.7
+
 env:
-  - TEST_TYPE=unit
-  - TEST_TYPE=flake8
+  - TEST_SUITE=unit
+  - TEST_SUITE=flake8
+  - TEST_SUITE=doc
 
-# Exclude flake8 from python 2.6
 matrix:
   exclude:
-  - python: "2.6"
+  - python: 2.6
+    # Flake8 no longer supports Python 2.6
     env: TEST_TYPE=flake8
 
 # Use new Travis infrastructure (Docker can't sudo yet)
 sudo: false
 
-# Install coveralls to obtain code coverage
+# Cache dependencies
+cache: pip
+
+# Install various dependencies
 install:
-  - "pip install coveralls"
-  - "pip install flake8"
+  - pip install coveralls
+  - pip install flake8
+  - pip install sphinx
+  - pip install mercurial
 
-before_install:
+before_script:
   # Need this for the git tests to succeed.
   - git config --global user.email "spack@example.com"
   - git config --global user.name "Test User"
@@ -29,18 +37,13 @@ before_install:
   # Need this to be able to compute the list of changed files
   - git fetch origin develop:develop
 
-script:
-  # Run unit tests with code coverage plus install libdwarf
-  - 'if [ "$TEST_TYPE" = "unit" ]; then share/spack/qa/run-unit-tests; fi'
-  # Run flake8 code style checks.
-  - 'if [ "$TEST_TYPE" = "flake8" ]; then share/spack/qa/run-flake8; fi'
+script: share/spack/qa/run-$TEST_SUITE-tests
 
 after_success:
-  - 'if [ "$TEST_TYPE" = "unit" ] && [ "$TRAVIS_PYTHON_VERSION" = "2.7" ]; then coveralls; fi'
+  - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION -eq 2.7 ]]; then coveralls; fi
 
 notifications:
   email:
-    recipients:
-      - tgamblin@llnl.gov
+    recipients: tgamblin@llnl.gov
     on_success: change
     on_failure: always
diff --git a/README.md b/README.md
index 27d62951a1..cf6f008ea6 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ Before you send a PR, your code should pass the following checks:
 * Your contribution will need to pass the `spack test` command.
   Run this before submitting your PR.
 
-* Also run the `share/spack/qa/run-flake8` script to check for PEP8 compliance.
+* Also run the `share/spack/qa/run-flake8-tests` script to check for PEP8 compliance.
   To encourage contributions and readability by a broad audience,
   Spack uses the [PEP8](https://www.python.org/dev/peps/pep-0008/) coding
   standard with [a few exceptions](https://github.com/LLNL/spack/blob/develop/.flake8).
diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests
new file mode 100755
index 0000000000..e5b684fe59
--- /dev/null
+++ b/share/spack/qa/run-doc-tests
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+# pass
+exit 0
diff --git a/share/spack/qa/run-flake8 b/share/spack/qa/run-flake8-tests
similarity index 99%
rename from share/spack/qa/run-flake8
rename to share/spack/qa/run-flake8-tests
index ffc82313a5..9556b0d250 100755
--- a/share/spack/qa/run-flake8
+++ b/share/spack/qa/run-flake8-tests
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # This script runs source code style checks on Spack.
 #
-- 
GitLab