diff --git a/tests/gem5/test_build/test_build.py b/tests/gem5/test_build/test_build.py
new file mode 100644
index 0000000..d6893d7
--- /dev/null
+++ b/tests/gem5/test_build/test_build.py
@@ -0,0 +1,54 @@
+# Copyright (c) 2018 The Regents of the University of California.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Authors: Sean Wilson
+
+'''
+Test file for simply building gem5
+'''
+import re
+import os
+from testlib import *
+
+common_isas = [constants.x86_tag, constants.arm_tag, constants.riscv_tag]
+
+for isa in constants.supported_isas:
+    if isa is constants.null_tag: continue
+
+    for variant in constants.supported_variants:
+        if isa in common_isas:
+            length = constants.quick_tag
+        else:
+            length = constants.long_tag
+
+        tags = [isa, length, variant]
+
+        name = 'build-{isa}-{var}'.format(isa=isa, var=variant)
+        fixture = Gem5Fixture(isa, variant)
+
+        function = TestFunction(lambda fixtures: True, name,
+                                fixtures=[fixture])
+        TestSuite(name=name, tests=[function], tags=tags)
