#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
#
# This file can be used to specify test cases that should not run when all
# test cases are run by runtests.pl. Just add the plain test case numbers, one
# per line.
# Lines starting with '#' letters are treated as comments.
#
# Uses SRP to "a server not supporting it" but modern stunnel versions
# will silently accept it and remain happy
323
#
594
836
882
938
# test 1182 kills the test servers as a side effect
# of running runtests.pl as a child of itself sharing
# some of the directories.
1182
# test 1184 causes flakiness in CI builds, mostly visible on macOS
1184
1209
1211
# fnmatch differences are just too common to make testing them sensible
1307
1316
# test 1510 causes problems on the CI on github
# example: https://travis-ci.org/curl/curl/builds/81633600
1510
1512
# test 1801 causes problems on Mac OS X and github
# https://github.com/curl/curl/issues/380
1801
# test 2086 causes issues on Windows only
2086
#
#
# Tests that are disabled here for Hyper are SUPPOSED to work but
# still need adjustments in tests or code. Tests that cannot be
# fixed for hyper should be adjusted for it in the test file.
#
# hyper support remains EXPERIMENTAL as long as there's a test number
# listed below
#
# Several tests fail due to hyper's lack of trailers support: 266, 1417, 1540,
# 1591, 1943. See https://github.com/hyperium/hyper/issues/2699 for details.
%if hyper
266
579
587
# 1021 re-added here due to flakiness
1021
1117
1417
1533
1540
1591
1943
2301
2302
2305
# response body seem not to be handled by hyper
2307
%endif
2043
# The CRL test (313) doesn't work with rustls because rustls doesn't support
# CRLs.
# Tests that rely on connecting to an IP address over TLS don't work because
# rustls doesn't support IP address certificates yet. That's the 400 series of
# tests listed here, plus 1112 and 1272
%if rustls
313
400
401
403
404
406
407
408
409
987
988
989
1112
1272
%endif
# The CRL test doesn't work with wolfSSL
%if wolfssl
313
%endif
# The CRL test doesn't work with BearSSL
%if bearssl
313
%endif
