(bug #623642) Add --no-xfail and -F to subunit-filter.
[third_party/subunit] / filters / subunit-filter
index c06a03a827f5580c49eb43ff386ab3b70c1c8429..ffd43e5968cc9f489e8eb43052f271c2f0adad66 100755 (executable)
@@ -51,18 +51,34 @@ parser.add_option("--no-passthrough", action="store_true",
     help="Hide all non subunit input.", default=False, dest="no_passthrough")
 parser.add_option("-s", "--success", action="store_false",
     help="include successes", dest="success")
-parser.add_option("--no-skip", action="store_true",
-    help="exclude skips", dest="skip")
 parser.add_option("--no-success", action="store_true",
     help="exclude successes", default=True, dest="success")
+parser.add_option("--no-skip", action="store_true",
+    help="exclude skips", dest="skip")
+parser.add_option("--xfail", action="store_false",
+    help="include expected falures", default=True, dest="xfail")
+parser.add_option("--no-xfail", action="store_true",
+    help="exclude expected falures", default=True, dest="xfail")
 parser.add_option("-m", "--with", type=str,
     help="regexp to include (case-sensitive by default)",
     action="append", dest="with_regexps")
 parser.add_option("--without", type=str,
     help="regexp to exclude (case-sensitive by default)",
     action="append", dest="without_regexps")
+# TODO: This could be done as a callback to allow following options to override
+# parts. As is, we just use it as a big hammer...
+parser.add_option("-F", "--only-genuine-failures", action="store_true",
+    default=False,
+    help="Only pass through failures and exceptions.")
 
 (options, args) = parser.parse_args()
+if options.only_genuine_failures:
+    options.success = True
+    options.skip = True
+    options.xfail = True
+    options.no_passthrough = True
+    # options.error = False
+    # options.failures = False
 
 
 def _compile_re_from_list(l):
@@ -94,7 +110,7 @@ regexp_filter = _make_regexp_filter(options.with_regexps,
 result = TestProtocolClient(sys.stdout)
 result = TestResultFilter(result, filter_error=options.error,
     filter_failure=options.failure, filter_success=options.success,
-    filter_skip=options.skip,
+    filter_skip=options.skip, filter_xfail=options.xfail,
     filter_predicate=regexp_filter)
 if options.no_passthrough:
     passthrough_stream = DiscardStream()