diff --git a/tests/run-tests.py b/tests/run-tests.py
index a06172e85fd4d605c49bd26df48549d4130747f2_dGVzdHMvcnVuLXRlc3RzLnB5..769198c6a62d1a829b62101094326d8b1bffea41_dGVzdHMvcnVuLXRlc3RzLnB5 100755
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -810,7 +810,15 @@
         for n, l in enumerate(lines):
             if not l.endswith('\n'):
                 l += '\n'
-            if l.startswith('#if'):
+            if l.startswith('#require'):
+                lsplit = l.split()
+                if len(lsplit) < 2 or lsplit[0] != '#require':
+                    after.setdefault(pos, []).append('  !!! invalid #require\n')
+                if not self._hghave(lsplit[1:]):
+                    script = ["exit 80\n"]
+                    break
+                after.setdefault(pos, []).append(l)
+            elif l.startswith('#if'):
                 lsplit = l.split()
                 if len(lsplit) < 2 or lsplit[0] != '#if':
                     after.setdefault(pos, []).append('  !!! invalid #if\n')
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
index a06172e85fd4d605c49bd26df48549d4130747f2_dGVzdHMvdGVzdC1ydW4tdGVzdHMudA==..769198c6a62d1a829b62101094326d8b1bffea41_dGVzdHMvdGVzdC1ydW4tdGVzdHMudA== 100644
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -309,7 +309,7 @@
 ================
   $ cat > test-skip.t <<EOF
   >   $ echo xyzzy
-  >   $ exit 80
+  > #require false
   > EOF
   $ $TESTDIR/run-tests.py --with-hg=`which hg` --nodiff
   !.s