#       Licensed to the Apache Software Foundation (ASF) under one
#       or more contributor license agreements.  See the NOTICE file
#       distributed with this work for additional information
#       regarding copyright ownership.  The ASF licenses this file
#       to you under the Apache License, Version 2.0 (the
#       "License"); you may not use this file except in compliance
#       with the License.  You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#       Unless required by applicable law or agreed to in writing,
#       software distributed under the License is distributed on an
#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#       KIND, either express or implied.  See the License for the
#       specific language governing permissions and limitations
#       under the License.

[pytest]
# see python -W and pytest filterwarnings
# https://docs.python.org/3/using/cmdline.html#cmdoption-w
# https://docs.pytest.org/en/6.2.x/reference.html#ini-options-ref
filterwarnings =
    # https://github.com/html5lib/html5lib-python/issues/443
    ignore::DeprecationWarning:html5lib.filters.sanitizer
    # https://github.com/TurboGears/Ming/issues/48
    ignore::DeprecationWarning:ming
    # not sure why timermiddleware is surfacing pymongo warnings, but it does:
    ignore:insert is deprecated. Use insert_one or insert_many instead.:DeprecationWarning:timermiddleware
    ignore:update is deprecated. Use replace_one, update_one or update_many instead.:DeprecationWarning:timermiddleware
    ignore:remove is deprecated. Use delete_one or delete_many instead.:DeprecationWarning:timermiddleware
    # other packages' issues:
    ignore:Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning:pkg_resources
    # https://github.com/pallets/jinja/issues/1156
    error:invalid escape sequence::jinja2.lexer

addopts = --pyargs -p no:flaky --tb=short

# our patterns are listed first:  then ".*" and following are defaults from https://github.com/pytest-dev/pytest/blob/main/src/_pytest/main.py#L52
norecursedirs = templates_responsive resources images js data docs public *.egg-info __pycache__ .* *.egg _darcs build CVS dist node_modules venv {arch}

# legacy|xunit1|xunit2
#junit_family = legacy

# no|log|system-out|system-err|out-err|all
junit_logging = all
