diff --git a/bin/steps/collectstatic b/bin/steps/collectstatic
index b779b7e45eeb8bdda5ef6c03ee24ec0dfc8ddfb6..73f03cf0fcb004b276c50c9ae707604b2c9523cc 100755
--- a/bin/steps/collectstatic
+++ b/bin/steps/collectstatic
@@ -32,7 +32,11 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL
     # Run collectstatic, cleanup some of the noisy output.
     PYTHONPATH=${PYTHONPATH:-.}
     export PYTHONPATH
-    python "$MANAGE_FILE" collectstatic --noinput --traceback 2>&1 | sed '/^Post-processed/d;/^Copying/d;/^$/d' | indent
+
+    # Create a temporary file for collecting the collectstaic logs.
+    COLLECTSTATIC_LOG=$(mktemp)
+
+    python "$MANAGE_FILE" collectstatic --noinput --traceback 2>&1 | tee "$COLLECTSTATIC_LOG" | sed '/^Post-processed/d;/^Copying/d;/^$/d' | indent
     COLLECTSTATIC_STATUS="${PIPESTATUS[0]}"
 
     set -e
@@ -42,6 +46,22 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL
 
         mcount "failure.collectstatic"
 
+        if grep -q 'SyntaxError' "$COLLECTSTATIC_LOG"; then
+            mcount "failure.collectstatic.syntax-error"
+        fi
+
+        if grep -q 'ImproperlyConfigured' "$COLLECTSTATIC_LOG"; then
+            mcount "failure.collectstatic.improper-configuration"
+        fi
+
+        if grep -q 'The CSS file' "$COLLECTSTATIC_LOG"; then
+            mcount "failure.collectstatic.fancy-references"
+        fi
+
+        if grep -q 'OSError' "$COLLECTSTATIC_LOG"; then
+            mcount "failure.collectstatic.missing-file"
+        fi
+
         echo
         echo " !     Error while running '$ python $MANAGE_FILE collectstatic --noinput'."
         echo "       See traceback above for details."
diff --git a/test/fixtures/collectstatic/.gitignore b/test/fixtures/collectstatic/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f95d164a6051fdaa31e0c90f763a54c316786435
--- /dev/null
+++ b/test/fixtures/collectstatic/.gitignore
@@ -0,0 +1,5 @@
+venv
+*.pyc
+staticfiles
+.env
+db.sqlite3
diff --git a/test/fixtures/collectstatic/Pipfile b/test/fixtures/collectstatic/Pipfile
new file mode 100644
index 0000000000000000000000000000000000000000..70ca30fda7f1cfdcaf68e3006a62f6fba75e053e
--- /dev/null
+++ b/test/fixtures/collectstatic/Pipfile
@@ -0,0 +1,16 @@
+[[source]]
+
+url = "https://pypi.python.org/simple"
+verify_ssl = true
+
+
+[packages]
+
+django = "*"
+gunicorn = "*"
+django-heroku = "*"
+
+
+[requires]
+
+python_version = "3.6"
diff --git a/test/fixtures/collectstatic/Pipfile.lock b/test/fixtures/collectstatic/Pipfile.lock
new file mode 100644
index 0000000000000000000000000000000000000000..397a1c9d220678189c0bbd716b3e399a688b43c2
--- /dev/null
+++ b/test/fixtures/collectstatic/Pipfile.lock
@@ -0,0 +1,118 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "7843aa61794626156c5dbfa26d6be61df24889c396f04a8dead353d23e2899d6"
+        },
+        "host-environment-markers": {
+            "implementation_name": "cpython",
+            "implementation_version": "3.6.3",
+            "os_name": "posix",
+            "platform_machine": "x86_64",
+            "platform_python_implementation": "CPython",
+            "platform_release": "17.3.0",
+            "platform_system": "Darwin",
+            "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64",
+            "python_full_version": "3.6.3",
+            "python_version": "3.6",
+            "sys_platform": "darwin"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "3.6"
+        },
+        "sources": [
+            {
+                "url": "https://pypi.python.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "dj-database-url": {
+            "hashes": [
+                "sha256:e16d94c382ea0564c48038fa7fe8d9c890ef1ab1a8ec4cb48e732c124b9482fd",
+                "sha256:a6832d8445ee9d788c5baa48aef8130bf61fdc442f7d9a548424d25cd85c9f08"
+            ],
+            "version": "==0.4.2"
+        },
+        "django": {
+            "hashes": [
+                "sha256:af18618ce3291be5092893d8522fe3919661bf3a1fb60e3858ae74865a4f07c2",
+                "sha256:9614851d4a7ff8cbd32b73c6076441f377c45a5bbff7e771798fb02c43c31f47"
+            ],
+            "version": "==2.0"
+        },
+        "django-heroku": {
+            "hashes": [
+                "sha256:193bacbe644a607642f6b60acd0a382d6abf4a1f7578f8d3eb10659457efe904",
+                "sha256:af6c723872553b7427121a865eb9fce70d566b9ad26d7defcdcd03a8acea56c8"
+            ],
+            "version": "==0.1.0"
+        },
+        "gunicorn": {
+            "hashes": [
+                "sha256:75af03c99389535f218cc596c7de74df4763803f7b63eb09d77e92b3956b36c6",
+                "sha256:eee1169f0ca667be05db3351a0960765620dad53f53434262ff8901b68a1b622"
+            ],
+            "version": "==19.7.1"
+        },
+        "psycopg2": {
+            "hashes": [
+                "sha256:594aa9a095de16614f703d759e10c018bdffeafce2921b8e80a0e8a0ebbc12e5",
+                "sha256:1cf5d84290c771eeecb734abe2c6c3120e9837eb12f99474141a862b9061ac51",
+                "sha256:0344b181e1aea37a58c218ccb0f0f771295de9aa25a625ed076e6996c6530f9e",
+                "sha256:25250867a4cd1510fb755ef9cb38da3065def999d8e92c44e49a39b9b76bc893",
+                "sha256:317612d5d0ca4a9f7e42afb2add69b10be360784d21ce4ecfbca19f1f5eadf43",
+                "sha256:9d6266348b15b4a48623bf4d3e50445d8e581da413644f365805b321703d0fac",
+                "sha256:ddca39cc55877653b5fcf59976d073e3d58c7c406ef54ae8e61ddf8782867182",
+                "sha256:988d2ec7560d42ef0ac34b3b97aad14c4f068792f00e1524fa1d3749fe4e4b64",
+                "sha256:7a9c6c62e6e05df5406e9b5235c31c376a22620ef26715a663cee57083b3c2ea",
+                "sha256:7a75565181e75ba0b9fb174b58172bf6ea9b4331631cfe7bafff03f3641f5d73",
+                "sha256:94e4128ba1ea56f02522fffac65520091a9de3f5c00da31539e085e13db4771b",
+                "sha256:92179bd68c2efe72924a99b6745a9172471931fc296f9bfdf9645b75eebd6344",
+                "sha256:b9358e203168fef7bfe9f430afaed3a2a624717a1d19c7afa7dfcbd76e3cd95c",
+                "sha256:009e0bc09a57dbef4b601cb8b46a2abad51f5274c8be4bba276ff2884cd4cc53",
+                "sha256:d3ac07240e2304181ffdb13c099840b5eb555efc7be9344503c0c03aa681de79",
+                "sha256:40fa5630cd7d237cd93c4d4b64b9e5ed9273d1cfce55241c7f9066f5db70629d",
+                "sha256:6c2f1a76a9ebd9ecf7825b9e20860139ca502c2bf1beabf6accf6c9e66a7e0c3",
+                "sha256:37f54452c7787dbdc0a634ca9773362b91709917f0b365ed14b831f03cbd34ba",
+                "sha256:8f5942a4daf1ffac42109dc4a72f786af4baa4fa702ede1d7c57b4b696c2e7d6",
+                "sha256:bf708455cd1e9fa96c05126e89a0c59b200d086c7df7bbafc7d9be769e4149a3",
+                "sha256:82c40ea3ac1555e0462803380609fbe8b26f52620f3d4f8eb480cfd8ceed8a14",
+                "sha256:207ba4f9125a0a4200691e82d5eee7ea1485708eabe99a07fc7f08696fae62f4",
+                "sha256:0cd4c848f0e9d805d531e44973c8f48962e20eb7fc0edac3db4f9dbf9ed5ab82",
+                "sha256:57baf63aeb2965ca4b52613ce78e968b6d2bde700c97f6a7e8c6c236b51ab83e",
+                "sha256:2954557393cfc9a5c11a5199c7a78cd9c0c793a047552d27b1636da50d013916",
+                "sha256:7c31dade89634807196a6b20ced831fbd5bec8a21c4e458ea950c9102c3aa96f",
+                "sha256:1286dd16d0e46d59fa54582725986704a7a3f3d9aca6c5902a7eceb10c60cb7e",
+                "sha256:697ff63bc5451e0b0db48ad205151123d25683b3754198be7ab5fcb44334e519",
+                "sha256:fc993c9331d91766d54757bbc70231e29d5ceb2d1ac08b1570feaa0c38ab9582",
+                "sha256:9d64fed2681552ed642e9c0cc831a9e95ab91de72b47d0cb68b5bf506ba88647",
+                "sha256:5c3213be557d0468f9df8fe2487eaf2990d9799202c5ff5cb8d394d09fad9b2a"
+            ],
+            "version": "==2.7.3.2"
+        },
+        "pytz": {
+            "hashes": [
+                "sha256:80af0f3008046b9975242012a985f04c5df1f01eed4ec1633d56cc47a75a6a48",
+                "sha256:feb2365914948b8620347784b6b6da356f31c9d03560259070b2f30cff3d469d",
+                "sha256:59707844a9825589878236ff2f4e0dc9958511b7ffaae94dc615da07d4a68d33",
+                "sha256:d0ef5ef55ed3d37854320d4926b04a4cb42a2e88f71da9ddfdacfde8e364f027",
+                "sha256:c41c62827ce9cafacd6f2f7018e4f83a6f1986e87bfd000b8cfbd4ab5da95f1a",
+                "sha256:8cc90340159b5d7ced6f2ba77694d946fc975b09f1a51d93f3ce3bb399396f94",
+                "sha256:dd2e4ca6ce3785c8dd342d1853dd9052b19290d5bf66060846e5dc6b8d6667f7",
+                "sha256:699d18a2a56f19ee5698ab1123bbcc1d269d061996aeb1eda6d89248d3542b82",
+                "sha256:fae4cffc040921b8a2d60c6cf0b5d662c1190fe54d718271db4eb17d44a185b7"
+            ],
+            "version": "==2017.3"
+        },
+        "whitenoise": {
+            "hashes": [
+                "sha256:15f43b2e701821b95c9016cf469d29e2a546cb1c7dead584ba82c36f843995cf",
+                "sha256:9d81515f2b5b27051910996e1e860b1332e354d9e7bcf30c98f21dcb6713e0dd"
+            ],
+            "version": "==3.3.1"
+        }
+    },
+    "develop": {}
+}
diff --git a/test/fixtures/collectstatic/Procfile b/test/fixtures/collectstatic/Procfile
new file mode 100644
index 0000000000000000000000000000000000000000..b6f89307b3a8d1a1f5b1563e06448c5c133e9d69
--- /dev/null
+++ b/test/fixtures/collectstatic/Procfile
@@ -0,0 +1 @@
+web: gunicorn gettingstarted.wsgi
diff --git a/test/fixtures/collectstatic/Procfile.windows b/test/fixtures/collectstatic/Procfile.windows
new file mode 100644
index 0000000000000000000000000000000000000000..69789e5545ab9648b9199eeb5a5c519599951bb0
--- /dev/null
+++ b/test/fixtures/collectstatic/Procfile.windows
@@ -0,0 +1 @@
+web: python manage.py runserver 0.0.0.0:5000
diff --git a/test/fixtures/collectstatic/README.md b/test/fixtures/collectstatic/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..23ff5a077e02665d92350cd522773706d8663c51
--- /dev/null
+++ b/test/fixtures/collectstatic/README.md
@@ -0,0 +1,44 @@
+# Python: Getting Started
+
+A barebones Django app, which can easily be deployed to Heroku.
+
+This application supports the [Getting Started with Python on Heroku](https://devcenter.heroku.com/articles/getting-started-with-python) article - check it out.
+
+## Running Locally
+
+Make sure you have Python [installed properly](http://install.python-guide.org). Also, install the [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) and [Postgres](https://devcenter.heroku.com/articles/heroku-postgresql#local-setup).
+
+```sh
+$ git clone git@github.com:heroku/python-getting-started.git
+$ cd python-getting-started
+
+$ pipenv install
+
+$ createdb python_getting_started
+
+$ python manage.py migrate
+$ python manage.py collectstatic
+
+$ heroku local
+```
+
+Your app should now be running on [localhost:5000](http://localhost:5000/).
+
+## Deploying to Heroku
+
+```sh
+$ heroku create
+$ git push heroku master
+
+$ heroku run python manage.py migrate
+$ heroku open
+```
+or
+
+[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)
+
+## Documentation
+
+For more information about using Python on Heroku, see these Dev Center articles:
+
+- [Python on Heroku](https://devcenter.heroku.com/categories/python)
diff --git a/test/fixtures/collectstatic/app.json b/test/fixtures/collectstatic/app.json
new file mode 100644
index 0000000000000000000000000000000000000000..8721c49944e7ac5921978c53a4f9429912d9a347
--- /dev/null
+++ b/test/fixtures/collectstatic/app.json
@@ -0,0 +1,22 @@
+{
+  "name": "Start on Heroku: Python",
+  "description": "A barebones Python app, which can easily be deployed to Heroku.",
+  "image": "heroku/python",
+  "repository": "https://github.com/heroku/python-getting-started",
+  "keywords": ["python", "django" ],
+  "addons": [ "heroku-postgresql" ],
+  "env": {
+    "SECRET_KEY": {
+      "description": "The secret key for the Django application.",
+      "generator": "secret"
+    }
+  },
+  "environments": {
+    "test": {
+      "scripts": {
+        "test-setup": "python manage.py collectstatic --noinput",
+        "test": "python manage.py test"
+      }
+    }
+  }
+}
diff --git a/test/fixtures/collectstatic/gettingstarted/__init__.py b/test/fixtures/collectstatic/gettingstarted/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/fixtures/collectstatic/gettingstarted/settings.py b/test/fixtures/collectstatic/gettingstarted/settings.py
new file mode 100644
index 0000000000000000000000000000000000000000..b23e28bc209137a6f49c10fc75849ece406f7a42
--- /dev/null
+++ b/test/fixtures/collectstatic/gettingstarted/settings.py
@@ -0,0 +1,125 @@
+"""
+Django settings for gettingstarted project.
+
+Generated by 'django-admin startproject' using Django 2.0.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/2.0/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/2.0/ref/settings/
+"""
+
+import os
+import django_heroku
+
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'CHANGE_ME!!!! (P.S. the SECRET_KEY environment variable will be used, if set, instead).'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+    'hello'
+]
+
+MIDDLEWARE = [
+    'django.middleware.security.SecurityMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.common.CommonMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'gettingstarted.urls'
+
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'DIRS': [],
+        'APP_DIRS': True,
+        'OPTIONS': {
+            'context_processors': [
+                'django.template.context_processors.debug',
+                'django.template.context_processors.request',
+                'django.contrib.auth.context_processors.auth',
+                'django.contrib.messages.context_processors.messages',
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = 'gettingstarted.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+    }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+    },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/2.0/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/2.0/howto/static-files/
+
+STATIC_URL = '/static/'
+
+django_heroku.settings(locals())
\ No newline at end of file
diff --git a/test/fixtures/collectstatic/gettingstarted/static/humans.txt b/test/fixtures/collectstatic/gettingstarted/static/humans.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/fixtures/collectstatic/gettingstarted/urls.py b/test/fixtures/collectstatic/gettingstarted/urls.py
new file mode 100644
index 0000000000000000000000000000000000000000..36492ed3cfea168237908825cb6ac0b8b4207d42
--- /dev/null
+++ b/test/fixtures/collectstatic/gettingstarted/urls.py
@@ -0,0 +1,17 @@
+from django.conf.urls import include, url
+from django.urls import path
+
+from django.contrib import admin
+admin.autodiscover()
+
+import hello.views
+
+# Examples:
+# url(r'^$', 'gettingstarted.views.home', name='home'),
+# url(r'^blog/', include('blog.urls')),
+
+urlpatterns = [
+    url(r'^$', hello.views.index, name='index'),
+    url(r'^db', hello.views.db, name='db'),
+    path('admin/', admin.site.urls),
+]
diff --git a/test/fixtures/collectstatic/gettingstarted/wsgi.py b/test/fixtures/collectstatic/gettingstarted/wsgi.py
new file mode 100644
index 0000000000000000000000000000000000000000..feb0af46ff0d28bd38124c40b4f004fe2deda813
--- /dev/null
+++ b/test/fixtures/collectstatic/gettingstarted/wsgi.py
@@ -0,0 +1,15 @@
+"""
+WSGI config for gettingstarted project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
+"""
+
+import os
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gettingstarted.settings")
+
+from django.core.wsgi import get_wsgi_application
+
+application = get_wsgi_application()
diff --git a/test/fixtures/collectstatic/hello/__init__.py b/test/fixtures/collectstatic/hello/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/fixtures/collectstatic/hello/admin.py b/test/fixtures/collectstatic/hello/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c38f3f3dad51e4585f3984282c2a4bec5349c1e
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/test/fixtures/collectstatic/hello/migrations/0001_initial.py b/test/fixtures/collectstatic/hello/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..99c4a82a5e87f1708ac05c7d3c24a2f2694e22c0
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/migrations/0001_initial.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.1 on 2016-01-27 21:54
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Greeting',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('when', models.DateTimeField(auto_now_add=True, verbose_name=b'date created')),
+            ],
+        ),
+    ]
diff --git a/test/fixtures/collectstatic/hello/migrations/__init__.py b/test/fixtures/collectstatic/hello/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/fixtures/collectstatic/hello/models.py b/test/fixtures/collectstatic/hello/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..89d76fd1b0414655722721f4f86bf60117b078f6
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/models.py
@@ -0,0 +1,5 @@
+from django.db import models
+
+# Create your models here.
+class Greeting(models.Model):
+    when = models.DateTimeField('date created', auto_now_add=True)
diff --git a/test/fixtures/collectstatic/hello/static/lang-logo.png b/test/fixtures/collectstatic/hello/static/lang-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f04aff1e38eeaeadba93390eb5cd356388b8a9f7
Binary files /dev/null and b/test/fixtures/collectstatic/hello/static/lang-logo.png differ
diff --git a/test/fixtures/collectstatic/hello/templates/base.html b/test/fixtures/collectstatic/hello/templates/base.html
new file mode 100644
index 0000000000000000000000000000000000000000..97ec07386b7ae42b4ef97144b7f2251c5e0f4c4c
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/templates/base.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Python Getting Started on Heroku</title>
+  <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" />
+  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
+  <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+  <style type="text/css">
+    .jumbotron {
+        background: #532f8c;
+        color: white;
+        padding-bottom: 80px
+    }
+    .jumbotron .btn-primary {
+        background: #845ac7;
+        border-color: #845ac7
+    }
+    .jumbotron .btn-primary:hover {
+        background: #7646c1
+    }
+    .jumbotron p {
+        color: #d9ccee;
+        max-width: 75%;
+        margin: 1em auto 2em
+    }
+    .navbar+.jumbotron {
+        margin-top: -20px
+    }
+    .jumbotron .lang-logo {
+        display: block;
+        background: #b01302;
+        border-radius: 50%;
+        overflow: hidden;
+        width: 100px;
+        height: 100px;
+        margin: auto;
+        border: 2px solid white
+    }
+    .jumbotron .lang-logo img {
+        max-width: 100%
+    }
+
+
+  </style>
+</head>
+<body>
+<nav class="navbar navbar-default navbar-static-top navbar-inverse">
+  <div class="container">
+    <ul class="nav navbar-nav">
+      <li class="active">
+        <a href="/"><span class="glyphicon glyphicon-home"></span> Home</a>
+      </li>
+      <li>
+        <a href="https://devcenter.heroku.com/articles/how-heroku-works"><span class="glyphicon glyphicon-user"></span> How Heroku Works</a>
+      </li>
+      <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><span class="glyphicon glyphicon-info-sign"></span> Getting Started Guides <span class="caret"></span></a>
+          <ul class="dropdown-menu" role="menu">
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-ruby">Getting Started with Ruby on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-nodejs">Getting Started with Node on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-php">Getting Started with PHP on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-python">Getting Started with Python on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-java">Getting Started with Java on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-clojure">Getting Started with Clojure on Heroku</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-scala">Getting Started with Scala on Heroku</a></li>
+            <li class="divider"></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-heroku-and-connect-without-local-dev">Getting Started on Heroku with Heroku Connect</a></li>
+            <li><a href="https://devcenter.heroku.com/articles/getting-started-with-jruby">Getting Started with Ruby on Heroku (Microsoft Windows)</a></li>
+          </ul>
+      </li>
+    </ul>
+    <ul class="nav navbar-nav navbar-right">
+      <li class="navbar-right">
+        <a href="https://devcenter.heroku.com"><span class="glyphicon glyphicon-book"></span> Heroku Dev Center</a>
+      </li>
+    </ul>
+  </div>
+</nav>
+
+{% block content %}{% endblock %}
+
+</body>
+</html>
diff --git a/test/fixtures/collectstatic/hello/templates/db.html b/test/fixtures/collectstatic/hello/templates/db.html
new file mode 100644
index 0000000000000000000000000000000000000000..e0e03d4c668c45141231e0e2dec05f38ab98434e
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/templates/db.html
@@ -0,0 +1,21 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block content %}
+  <div class="container">
+
+
+<h2>Page View Report</h2>
+
+
+<ul>
+
+{% for greeting in greetings %}
+    <li>{{ greeting.when }}</li>
+{% endfor %}
+
+</ul>
+
+</div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/test/fixtures/collectstatic/hello/templates/index.html b/test/fixtures/collectstatic/hello/templates/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..8af29028b6026693932f36b04f4ceae32f075998
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/templates/index.html
@@ -0,0 +1,58 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block content %}
+
+<div class="jumbotron text-center">
+  <div class="container">
+    <a href="/" class="lang-logo">
+      <img src="{% static 'lang-logo.png'%}">
+    </a>
+    <h1>Getting Started with Python on Heroku</h1>
+    <p>This is a sample Python application deployed to Heroku. It's a reasonably simple app - but a good foundation for understanding how to get the most out of the Heroku platform.</p>
+    <a type="button" class="btn btn-lg btn-default" href="https://devcenter.heroku.com/articles/getting-started-with-python"><span class="glyphicon glyphicon-flash"></span> Getting Started with Python</a>
+    <a type="button" class="btn btn-lg btn-primary" href="https://github.com/heroku/python-getting-started"><span class="glyphicon glyphicon-download"></span> Source on GitHub</a>
+  </div>
+</div>
+<div class="container">
+  <div class="alert alert-info text-center" role="alert">
+    To deploy your own copy, and learn the fundamentals of the Heroku platform, head over to the <a href="https://devcenter.heroku.com/articles/getting-started-with-python" class="alert-link">Getting Started with Python on Heroku</a> tutorial.
+  </div>
+  <hr>
+  <div class="row">
+    <div class="col-md-6">
+      <h3><span class="glyphicon glyphicon-info-sign"></span> How this sample app works</h3>
+      <ul>
+        <li>This app was deployed to Heroku, either using Git or by using <a href="https://github.com/heroku/python-getting-started">Heroku Button</a> on the repository.</li>
+
+        <li>When Heroku received the source code, it fetched all the dependencies in the <a href="https://github.com/heroku/python-getting-started/blob/master/Pipfile">Pipfile</a>, creating a deployable slug.</li>
+        <li>The platform then spins up a dyno, a lightweight container that provides an isolated environment in which the slug can be mounted and executed.</li>
+        <li>You can scale your app, manage it, and deploy over <a href="https://addons.heroku.com/">150 add-on services</a>, from the Dashboard or CLI.</li>
+      </ul>
+    </div>
+    <div class="col-md-6">
+      <h3><span class="glyphicon glyphicon-link"></span> Next Steps</h3>
+      <ul>
+        <li>If you are following the <a href="https://devcenter.heroku.com/articles/getting-started-with-python">Getting Started</a> guide, then please head back to the tutorial and follow the next steps!</li>
+        <li>If you deployed this app by deploying the Heroku Button, then in a command line shell, run:</li>
+        <ul>
+          <li><code>git clone https://github.com/heroku/python-getting-started.git</code> - this will create a local copy of the source code for the app</li>
+          <li><code>cd python-getting-started</code> - change directory into the local source code repository</li>
+          <li><code>heroku git:remote -a &lt;your-app-name></code> - associate the Heroku app with the repository</li>
+          <li>You'll now be set up to run the app locally, or <a href="https://devcenter.heroku.com/articles/getting-started-with-python#push-local-changes">deploy changes</a> to Heroku</li>
+        </ul>
+      </ul>
+      <h3><span class="glyphicon glyphicon-link"></span> Helpful Links</h3>
+      <ul>
+        <li><a href="https://www.heroku.com/home">Heroku</a></li>
+        <li><a href="https://devcenter.heroku.com/">Heroku Dev Center</a></li>
+        <li><a href="https://devcenter.heroku.com/articles/getting-started-with-python">Getting Started with Python on Heroku</a></li>
+        <li><a href="https://devcenter.heroku.com/articles/django-app-configuration">Configuring Django Apps for Heroku</a></li>
+      </ul>
+    </div>
+  </div> <!-- row -->
+   <div class="alert alert-info text-center" role="alert">
+    Please do work through the Getting Started guide, even if you do know how to build such an application.  The guide covers the basics of working with Heroku, and will familiarize you with all the concepts you need in order to build and deploy your own apps.
+  </div>
+</div>
+{% endblock %}
diff --git a/test/fixtures/collectstatic/hello/tests.py b/test/fixtures/collectstatic/hello/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..1d69113fe06f5fa0b4ee361cc886dd21b39e4225
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/tests.py
@@ -0,0 +1,18 @@
+from django.contrib.auth.models import AnonymousUser, User
+from django.test import TestCase, RequestFactory
+
+from .views import index
+
+class SimpleTest(TestCase):
+    def setUp(self):
+        # Every test needs access to the request factory.
+        self.factory = RequestFactory()
+
+    def test_details(self):
+        # Create an instance of a GET request.
+        request = self.factory.get('/')
+        request.user = AnonymousUser()
+
+        # Test my_view() as if it were deployed at /customer/details
+        response = index(request)
+        self.assertEqual(response.status_code, 200)
\ No newline at end of file
diff --git a/test/fixtures/collectstatic/hello/views.py b/test/fixtures/collectstatic/hello/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..8558d84510ad7788322f2b5cf1d8d5cd39790974
--- /dev/null
+++ b/test/fixtures/collectstatic/hello/views.py
@@ -0,0 +1,20 @@
+from django.shortcuts import render
+from django.http import HttpResponse
+
+from .models import Greeting
+
+# Create your views here.
+def index(request):
+    # return HttpResponse('Hello from Python!')
+    return render(request, 'index.html')
+
+
+def db(request):
+
+    greeting = Greeting()
+    greeting.save()
+
+    greetings = Greeting.objects.all()
+
+    return render(request, 'db.html', {'greetings': greetings})
+
diff --git a/test/fixtures/collectstatic/manage.py b/test/fixtures/collectstatic/manage.py
new file mode 100755
index 0000000000000000000000000000000000000000..eb3ab8af52a0eb50a0d6f376f0850b807204e893
--- /dev/null
+++ b/test/fixtures/collectstatic/manage.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gettingstarted.settings")
+
+    from django.core.management import execute_from_command_line
+
+    execute_from_command_line(sys.argv)
diff --git a/test/run b/test/run
index 62e902f42632fc966c719e203ba91ae8cc8b274a..82baf795654490b9c43e0a9ab51087b417605442 100755
--- a/test/run
+++ b/test/run
@@ -27,6 +27,11 @@ testNoRequirements() {
   assertCapturedError
 }
 
+testCollectstatic() {
+  compile "collectstatic"
+  assertCaptured "collectstatic"
+}
+
 testGEOS() {
   BUILD_WITH_GEO_LIBRARIES=1 compile "geos"
   assertCaptured "geos"