Change the handling in response_replacer and jsonhandler.replace so that numerals are preserved. The primary change here is that replace does not always return a str: it returns the found data. The remaining changes cascade from this fix. * If the 'message' being replaced is fully the regex, don't do regex-based replacement (which requires a string). Instead return the new value. * Do template replacing on test data _before_ dumping it to a string. This allows the small 'message' replacements described in the previous point. * Assure we can recurse through lists, not just dicts, when replacing in data structures. In the pull request at #206 there is a different mode of coercing and preserving data types operates by adding a coerce method to content handlers. While inspecting this it seemed like it might be too complex, so this alternate option has been explored. This might work, or perhaps a hybrid of the two. The coerce.yaml file from #206 was copied here and adapted to fit the different assumptions that are made in this change. Some of the assumptions in 206 don't map well to YAML handling of literal data formats.
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
#
|
|
# Licensed 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.
|
|
"""Test pytest driving of tests.
|
|
|
|
Unittest loaders don't see this file and pytest doesn't see load_tests,
|
|
so we manage to get coverage across both types of drivers, from tox,
|
|
without duplication.
|
|
"""
|
|
|
|
import os
|
|
|
|
from gabbi import driver
|
|
# TODO(cdent): this test_* needs to be imported bare or things do not work
|
|
from gabbi.driver import test_pytest # noqa
|
|
from gabbi.tests import simple_wsgi
|
|
from gabbi.tests import test_intercept
|
|
from gabbi.tests import util
|
|
|
|
TESTS_DIR = 'gabbits_intercept'
|
|
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
util.set_test_environ()
|
|
test_dir = os.path.join(os.path.dirname(__file__), TESTS_DIR)
|
|
driver.py_test_generator(
|
|
test_dir, intercept=simple_wsgi.SimpleWsgi,
|
|
fixture_module=test_intercept,
|
|
response_handlers=[test_intercept.TestResponseHandler],
|
|
metafunc=metafunc)
|