diff --git a/aos/build/build.py b/aos/build/build.py
index ac316ce..dd93026 100755
--- a/aos/build/build.py
+++ b/aos/build/build.py
@@ -67,6 +67,7 @@
     def compiler(self):
       return 'gcc'
 
+    # TODO(brians): test this
     def deploy(self, dry_run):
       self.do_deploy(dry_run,
                      ('ncftpput', get_ip('robot'), '/',
@@ -119,6 +120,7 @@
     def outname(self):
       return str(self)
 
+    # TODO(brians): test this
     def deploy(self, dry_run):
       """Downloads code to the prime in a way that avoids clashing too badly with starter
       """
@@ -273,6 +275,12 @@
       help="don't actually download anything",
       action='store_true')
 
+    tests_parser = subparsers.add_parser(
+        'tests',
+        help='run tests')
+    AddCommonArgs(tests_parser)
+    AddBuildArgs(tests_parser)
+
     return parser.parse_args(args)
 
   try:
@@ -354,7 +362,7 @@
         return True
       else:
         raise e
-    pattern = re.compile('.*\.gyp[i]$')
+    pattern = re.compile('.*\.gypi?$')
     for dirname, _, files in os.walk(os.path.join(aos_path(), '..')):
       for f in [f for f in files if pattern.match(f)]:
         if (os.stat(os.path.join(dirname, f)).st_mtime > build_mtime):
@@ -419,8 +427,13 @@
 
     if args.action_name == 'deploy':
       platform.deploy(args.dry_run)
+    elif args.action_name == 'tests':
+      dirname = os.path.join(platform.outdir(), 'tests')
+      for f in targets or os.listdir(dirname):
+        print('Running test %s...' % f, file=sys.stderr)
+        subprocess.check_call(os.path.join(dirname, f))
+        print('Test %s succeeded' % f, file=sys.stderr)
 
-    # TODO(brians): tests
     print('Done building %s...' % platform, file=sys.stderr)
 
 if __name__ == '__main__':
