Diff of the two buildlogs: -- --- b1/build.log 2024-12-19 17:21:13.543417252 +0000 +++ b2/build.log 2024-12-19 17:23:38.536898568 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Dec 19 05:17:39 -12 2024 -I: pbuilder-time-stamp: 1734628659 +I: Current time: Thu Jan 22 13:44:16 +14 2026 +I: pbuilder-time-stamp: 1769039056 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: unpacking python-gabbi_3.0.0-3.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1511819/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/D01_modify_environment starting +debug: Running on codethink01-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Jan 21 23:44 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='0ffb7ddbd268472095a0d8720c4d35fb' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1511819' - PS1='# ' - PS2='> ' + INVOCATION_ID=56c2f0afe0bc4f8780af1a4beb2b12d2 + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=83677 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.ldTLkXjv/pbuilderrc_GzKo --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ldTLkXjv/b1 --logfile b1/build.log python-gabbi_3.0.0-3.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.ldTLkXjv/pbuilderrc_Omsf --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ldTLkXjv/b2 --logfile b2/build.log python-gabbi_3.0.0-3.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink04-arm64 6.1.0-28-cloud-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-28-cloud-arm64 #1 SMP Debian 6.1.119-1 (2024-11-22) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1511819/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -304,7 +336,7 @@ Get: 158 http://deb.debian.org/debian unstable/main arm64 subunit all 1.4.2-3 [5248 B] Get: 159 http://deb.debian.org/debian unstable/main arm64 python3-stestr all 4.1.0-3 [56.9 kB] Get: 160 http://deb.debian.org/debian unstable/main arm64 python3-wsgi-intercept all 1.13.0-2 [18.6 kB] -Fetched 50.3 MB in 0s (158 MB/s) +Fetched 50.3 MB in 0s (149 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libjs-jquery. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20084 files and directories currently installed.) @@ -828,8 +860,8 @@ Setting up tzdata (2024b-4) ... Current default time zone: 'Etc/UTC' -Local time is now: Thu Dec 19 17:18:03 UTC 2024. -Universal Time is now: Thu Dec 19 17:18:03 UTC 2024. +Local time is now: Wed Jan 21 23:44:46 UTC 2026. +Universal Time is now: Wed Jan 21 23:44:46 UTC 2026. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libpython3.13-minimal:arm64 (3.13.1-2) ... @@ -990,7 +1022,11 @@ fakeroot is already the newest version (1.36-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/python-gabbi-3.0.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../python-gabbi_3.0.0-3_source.changes +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/python-gabbi-3.0.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../python-gabbi_3.0.0-3_source.changes dpkg-buildpackage: info: source package python-gabbi dpkg-buildpackage: info: source version 3.0.0-3 dpkg-buildpackage: info: source distribution unstable @@ -1126,21 +1162,26 @@ py3versions: no X-Python3-Version in control file, using supported versions pkgos-dh_auto_install --no-py2 --in-tmp + PKGOS_IN_TMP=no -+ echo WARNING: --no-py2 is deprecated and always on. ++ for i in $@ ++ case "${1}" in ++ echo 'WARNING: --no-py2 is deprecated and always on.' WARNING: --no-py2 is deprecated and always on. + shift ++ for i in $@ ++ case "${1}" in + PKGOS_IN_TMP=yes + shift -+ dpkg-parsechangelog -SSource +++ dpkg-parsechangelog -SSource + SRC_PKG_NAME=python-gabbi -+ echo python-gabbi -+ sed s/python-// +++ echo python-gabbi +++ sed s/python-// + PY_MODULE_NAME=gabbi -+ py3versions -vr -+ PYTHON3S=3.13 3.12 -+ [ yes = yes ] +++ py3versions -vr ++ PYTHON3S='3.13 3.12' ++ '[' yes = yes ']' + TARGET_DIR=tmp -+ pwd ++ for pyvers in ${PYTHON3S} +++ pwd + python3.13 setup.py install --install-layout=deb --root /build/reproducible-path/python-gabbi-3.0.0/debian/tmp /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! @@ -1185,6 +1226,12 @@ [pbr] AUTHORS complete (0.0s) running build running build_py +creating build/lib/gabbi/handlers +copying gabbi/handlers/yaml_disk_loading_jsonhandler.py -> build/lib/gabbi/handlers +copying gabbi/handlers/jsonhandler.py -> build/lib/gabbi/handlers +copying gabbi/handlers/core.py -> build/lib/gabbi/handlers +copying gabbi/handlers/base.py -> build/lib/gabbi/handlers +copying gabbi/handlers/__init__.py -> build/lib/gabbi/handlers creating build/lib/gabbi/tests copying gabbi/tests/util.py -> build/lib/gabbi/tests copying gabbi/tests/test_yaml_disk_loading_jsonhandler.py -> build/lib/gabbi/tests @@ -1210,12 +1257,6 @@ copying gabbi/tests/simple_wsgi.py -> build/lib/gabbi/tests copying gabbi/tests/custom_response_handler.py -> build/lib/gabbi/tests copying gabbi/tests/__init__.py -> build/lib/gabbi/tests -creating build/lib/gabbi/handlers -copying gabbi/handlers/yaml_disk_loading_jsonhandler.py -> build/lib/gabbi/handlers -copying gabbi/handlers/jsonhandler.py -> build/lib/gabbi/handlers -copying gabbi/handlers/core.py -> build/lib/gabbi/handlers -copying gabbi/handlers/base.py -> build/lib/gabbi/handlers -copying gabbi/handlers/__init__.py -> build/lib/gabbi/handlers copying gabbi/utils.py -> build/lib/gabbi copying gabbi/suitemaker.py -> build/lib/gabbi copying gabbi/suite.py -> build/lib/gabbi @@ -1261,12 +1302,6 @@ copying build/lib/gabbi/suite.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi copying build/lib/gabbi/suitemaker.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi copying build/lib/gabbi/utils.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi -creating /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers -copying build/lib/gabbi/handlers/__init__.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers -copying build/lib/gabbi/handlers/base.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers -copying build/lib/gabbi/handlers/core.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers -copying build/lib/gabbi/handlers/jsonhandler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers -copying build/lib/gabbi/handlers/yaml_disk_loading_jsonhandler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers creating /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests copying build/lib/gabbi/tests/__init__.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests copying build/lib/gabbi/tests/custom_response_handler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests @@ -1292,6 +1327,12 @@ copying build/lib/gabbi/tests/test_utils.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests copying build/lib/gabbi/tests/test_yaml_disk_loading_jsonhandler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests copying build/lib/gabbi/tests/util.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests +creating /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers +copying build/lib/gabbi/handlers/__init__.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers +copying build/lib/gabbi/handlers/base.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers +copying build/lib/gabbi/handlers/core.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers +copying build/lib/gabbi/handlers/jsonhandler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers +copying build/lib/gabbi/handlers/yaml_disk_loading_jsonhandler.py -> /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/__init__.py to __init__.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/case.py to case.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/driver.py to driver.cpython-313.pyc @@ -1305,11 +1346,6 @@ byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/suite.py to suite.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/suitemaker.py to suitemaker.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/utils.py to utils.cpython-313.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/__init__.py to __init__.cpython-313.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/base.py to base.cpython-313.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/core.py to core.cpython-313.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/jsonhandler.py to jsonhandler.cpython-313.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/yaml_disk_loading_jsonhandler.py to yaml_disk_loading_jsonhandler.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/__init__.py to __init__.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/custom_response_handler.py to custom_response_handler.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/simple_wsgi.py to simple_wsgi.cpython-313.pyc @@ -1334,12 +1370,18 @@ byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/test_utils.py to test_utils.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/test_yaml_disk_loading_jsonhandler.py to test_yaml_disk_loading_jsonhandler.cpython-313.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/util.py to util.cpython-313.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/__init__.py to __init__.cpython-313.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/base.py to base.cpython-313.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/core.py to core.cpython-313.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/jsonhandler.py to jsonhandler.cpython-313.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/yaml_disk_loading_jsonhandler.py to yaml_disk_loading_jsonhandler.cpython-313.pyc running install_egg_info Copying gabbi.egg-info to /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi-3.0.0.egg-info Skipping SOURCES.txt running install_scripts Installing gabbi-run script to /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/bin -+ pwd ++ for pyvers in ${PYTHON3S} +++ pwd + python3.12 setup.py install --install-layout=deb --root /build/reproducible-path/python-gabbi-3.0.0/debian/tmp /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! @@ -1405,11 +1447,6 @@ byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/suite.py to suite.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/suitemaker.py to suitemaker.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/utils.py to utils.cpython-312.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/__init__.py to __init__.cpython-312.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/base.py to base.cpython-312.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/core.py to core.cpython-312.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/jsonhandler.py to jsonhandler.cpython-312.pyc -byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/yaml_disk_loading_jsonhandler.py to yaml_disk_loading_jsonhandler.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/__init__.py to __init__.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/custom_response_handler.py to custom_response_handler.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/simple_wsgi.py to simple_wsgi.cpython-312.pyc @@ -1434,16 +1471,21 @@ byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/test_utils.py to test_utils.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/test_yaml_disk_loading_jsonhandler.py to test_yaml_disk_loading_jsonhandler.cpython-312.pyc byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/tests/util.py to util.cpython-312.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/__init__.py to __init__.cpython-312.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/base.py to base.cpython-312.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/core.py to core.cpython-312.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/jsonhandler.py to jsonhandler.cpython-312.pyc +byte-compiling /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi/handlers/yaml_disk_loading_jsonhandler.py to yaml_disk_loading_jsonhandler.cpython-312.pyc running install_egg_info removing '/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi-3.0.0.egg-info' (and everything under it) Copying gabbi.egg-info to /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages/gabbi-3.0.0.egg-info Skipping SOURCES.txt running install_scripts Installing gabbi-run script to /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/bin -+ pwd -+ rm -rf /build/reproducible-path/python-gabbi-3.0.0/debian/python*/usr/lib/python*/dist-packages/*.pth -+ pwd -+ rm -rf /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python*/dist-packages/*.pth +++ pwd ++ rm -rf '/build/reproducible-path/python-gabbi-3.0.0/debian/python*/usr/lib/python*/dist-packages/*.pth' +++ pwd ++ rm -rf '/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python*/dist-packages/*.pth' # test_live are doing internet access. pkgos-dh_auto_test --no-py2 'gabbi\.tests\.(?!test_live.*|test_intercept\.prefix_get_that_link\.test_request|test_intercept\.prefix_get_relative_link\.test_request|test_intercept\.prefix_provide_a_link\.test_request)' + PKGOS_TEST_PARALLEL=yes @@ -1452,45 +1494,52 @@ + PYTHON3S=disabled + TEST_PARALLEL_OPT=--parallel + TEST_SERIAL_OPT= -+ echo WARNING: --no-py2 is deprecated, and always on. ++ for i in $@ ++ case "${1}" in ++ echo 'WARNING: --no-py2 is deprecated, and always on.' WARNING: --no-py2 is deprecated, and always on. + shift -+ py3versions -vr -+ PYTHON3S=3.13 3.12 -+ [ yes = no ] -+ [ no = yes ] -+ [ 3.13 = disabled ] -+ cut -d. -f1 -+ echo 3.13 ++ for i in $@ ++ case "${1}" in +++ py3versions -vr ++ PYTHON3S='3.13 3.12' ++ '[' yes = no ']' ++ '[' no = yes ']' ++ for pyvers in ${PYTHON3S} ++ '[' 3.13 = disabled ']' +++ echo 3.13 +++ cut -d. -f1 + PYMAJOR=3 -+ echo ===> Testing with python (python3) ++ echo '===> Testing with python (python3)' ===> Testing with python (python3) -+ pwd -+ [ -d /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ] -+ [ -z ] -+ pwd -+ echo Implicitly adding PYTHONPATH=/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages +++ pwd ++ '[' -d /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ']' ++ '[' -z '' ']' +++ pwd ++ echo 'Implicitly adding PYTHONPATH=/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages' Implicitly adding PYTHONPATH=/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages -+ pwd +++ pwd + export PYTHONPATH=/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages -+ [ -e .stestr.conf ] -+ [ -x /usr/bin/python3-stestr ] ++ PYTHONPATH=/build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ++ '[' -e .stestr.conf ']' ++ '[' -x /usr/bin/python3-stestr ']' + STESTR=stestr + rm -rf .stestr ++ PYTHON=python3.13 ++ stestr run --parallel --subunit 'gabbi\.tests\.(?!test_live.*|test_intercept\.prefix_get_that_link\.test_request|test_intercept\.prefix_get_relative_link\.test_request|test_intercept\.prefix_provide_a_link\.test_request)' + subunit2pyunit -+ PYTHON=python3.13 stestr run --parallel --subunit gabbi\.tests\.(?!test_live.*|test_intercept\.prefix_get_that_link\.test_request|test_intercept\.prefix_get_relative_link\.test_request|test_intercept\.prefix_provide_a_link\.test_request) -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_inner_fixture.inner_get_one.test_request -gabbi.tests.test_inner_fixture.inner_get_one.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception +gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception ... ok +gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop +gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop ... ok gabbi.tests.test_handlers.HandlersTest.test_empty_response_handler gabbi.tests.test_handlers.HandlersTest.test_empty_response_handler ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", gabbi.tests.test_handlers.HandlersTest.test_resonse_headers_stringify gabbi.tests.test_handlers.HandlersTest.test_resonse_headers_stringify ... ok gabbi.tests.test_handlers.HandlersTest.test_response_headers @@ -1515,203 +1564,186 @@ gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_noregex ... ok gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_regex gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_regex ... ok -gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request -gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request ... ok -gabbi.tests.test_history.HistoryTest.test_cookie_replace_history -gabbi.tests.test_history.HistoryTest.test_cookie_replace_history ... ok -gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior -gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior ... ok -gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior_regex -gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior_regex ... ok -gabbi.tests.test_history.HistoryTest.test_header_replace_prior -gabbi.tests.test_history.HistoryTest.test_header_replace_prior ... ok -gabbi.tests.test_history.HistoryTest.test_header_replace_with_history -gabbi.tests.test_history.HistoryTest.test_header_replace_with_history ... ok -gabbi.tests.test_history.HistoryTest.test_header_replace_with_history_regex -gabbi.tests.test_history.HistoryTest.test_header_replace_with_history_regex ... ok -gabbi.tests.test_history.HistoryTest.test_location_replace_history -gabbi.tests.test_history.HistoryTest.test_location_replace_history ... ok -gabbi.tests.test_history.HistoryTest.test_location_replace_prior -gabbi.tests.test_history.HistoryTest.test_location_replace_prior ... ok -gabbi.tests.test_history.HistoryTest.test_location_replace_prior_regex -gabbi.tests.test_history.HistoryTest.test_location_replace_prior_regex ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types -gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types ... ok -gabbi.tests.test_inner_fixture.inner_get_two.test_request -gabbi.tests.test_inner_fixture.inner_get_two.test_request ... ok -gabbi.tests.test_intercept.self_get_simple_page.test_request -gabbi.tests.test_intercept.self_get_simple_page.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", gabbi.tests.test_data_to_string.TestDataToString.testHappyPath gabbi.tests.test_data_to_string.TestDataToString.testHappyPath ... ok gabbi.tests.test_data_to_string.TestDataToString.testNoContentType gabbi.tests.test_data_to_string.TestDataToString.testNoContentType ... ok gabbi.tests.test_data_to_string.TestDataToString.testNoHandler gabbi.tests.test_data_to_string.TestDataToString.testNoHandler ... ok -gabbi.tests.test_history.HistoryTest.test_response_replace_prior -gabbi.tests.test_history.HistoryTest.test_response_replace_prior ... ok /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request -gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request ... ok -gabbi.tests.test_intercept.self_query_returned.test_request -gabbi.tests.test_intercept.self_query_returned.test_request ... ok +gabbi.tests.test_inner_fixture.inner_get_three.test_request +gabbi.tests.test_inner_fixture.inner_get_three.test_request ... ok /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_bogus_method.test_request -gabbi.tests.test_intercept.self_bogus_method.test_request ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request +gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_inner_fixture.inner_get_two.test_request +gabbi.tests.test_inner_fixture.inner_get_two.test_request ... ok +gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types +gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types ... ok +gabbi.tests.test_inner_fixture.inner_get_one.test_request +gabbi.tests.test_inner_fixture.inner_get_one.test_request ... ok +gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request +gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths gabbi.tests.test_handlers.HandlersTest.test_response_json_paths ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type ... ok -gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex -gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex ... ok -gabbi.tests.test_intercept.self_get_location_from_headers.test_request -gabbi.tests.test_intercept.self_get_location_from_headers.test_request ... ok /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", gabbi.tests.test_intercept.self_use_prior_location.test_request gabbi.tests.test_intercept.self_use_prior_location.test_request ... ok -gabbi.tests.test_intercept.regex_regex_header_test.test_request -gabbi.tests.test_intercept.regex_regex_header_test.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data ... ok -gabbi.tests.test_history.HistoryTest.test_response_replace_with_history -gabbi.tests.test_history.HistoryTest.test_response_replace_with_history ... ok -gabbi.tests.test_history.HistoryTest.test_url_replace_history -gabbi.tests.test_history.HistoryTest.test_url_replace_history ... ok -gabbi.tests.test_history.HistoryTest.test_url_replace_prior -gabbi.tests.test_history.HistoryTest.test_url_replace_prior ... ok -gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex -gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex ... ok -gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request -gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request ... ok +gabbi.tests.test_intercept.self_checklimit.test_request +gabbi.tests.test_intercept.self_checklimit.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_path gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_path ... ok -gabbi.tests.test_intercept.queryparams_multi_params.test_request -gabbi.tests.test_intercept.queryparams_multi_params.test_request ... ok -gabbi.tests.test_intercept.last-url_add_some_query_params.test_request -gabbi.tests.test_intercept.last-url_add_some_query_params.test_request ... ok -gabbi.tests.test_intercept.self_confirm_environ.test_request -gabbi.tests.test_intercept.self_confirm_environ.test_request ... ok +gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request +gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request ... ok /usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_post_a_body_with_query.test_request -gabbi.tests.test_intercept.self_post_a_body_with_query.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path ... ok -gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request -gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail ... ok +gabbi.tests.test_intercept.skipall_a_skipped_test.test_request +gabbi.tests.test_intercept.skipall_a_skipped_test.test_request ... skipped 'entire suite skipped' +gabbi.tests.test_intercept.poll_poller.test_request +gabbi.tests.test_intercept.poll_poller.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request +gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request ... ok gabbi.tests.test_intercept.regex_regex_string_test_json.test_request gabbi.tests.test_intercept.regex_regex_string_test_json.test_request ... ok -gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request -gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path ... ok +gabbi.tests.test_intercept.self_post_a_body_with_query.test_request +gabbi.tests.test_intercept.self_post_a_body_with_query.test_request ... ok gabbi.tests.test_intercept.self_get_ssl_page.test_request gabbi.tests.test_intercept.self_get_ssl_page.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex ... ok -Exception ignored in: -Traceback (most recent call last): - File "/usr/lib/python3.13/http/client.py", line 434, in close - if self.fp: -AttributeError: 'HTTPResponse' object has no attribute 'fp' -Exception ignored in: -Traceback (most recent call last): - File "/usr/lib/python3.13/http/client.py", line 434, in close - if self.fp: -AttributeError: 'HTTPResponse' object has no attribute 'fp' -Exception ignored in: -Traceback (most recent call last): - File "/usr/lib/python3.13/http/client.py", line 434, in close - if self.fp: -AttributeError: 'HTTPResponse' object has no attribute 'fp' -gabbi.tests.test_intercept.skipall_a_skipped_test.test_request -gabbi.tests.test_intercept.skipall_a_skipped_test.test_request ... skipped 'entire suite skipped' +gabbi.tests.test_intercept.self_bogus_method.test_request +gabbi.tests.test_intercept.self_bogus_method.test_request ... ok +gabbi.tests.test_intercept.self_confirm_environ.test_request +gabbi.tests.test_intercept.self_confirm_environ.test_request ... ok +gabbi.tests.test_intercept.self_query_returned.test_request +gabbi.tests.test_intercept.self_query_returned.test_request ... ok gabbi.tests.test_intercept.self_simple_post.test_request gabbi.tests.test_intercept.self_simple_post.test_request ... ok -gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request -gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request ... ok -gabbi.tests.test_intercept.host-header_ssl_no_host.test_request -gabbi.tests.test_intercept.host-header_ssl_no_host.test_request ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex ... ok +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... expected failure +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_number gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_number ... ok +gabbi.tests.test_intercept.json-extensions_test_len.test_request +gabbi.tests.test_intercept.json-extensions_test_len.test_request ... ok +gabbi.tests.test_intercept.self_test_binary_handling.test_request +gabbi.tests.test_intercept.self_test_binary_handling.test_request ... ok +gabbi.tests.test_intercept.last-url_get_prior_url.test_request +gabbi.tests.test_intercept.last-url_get_prior_url.test_request ... ok +gabbi.tests.test_intercept.self_fail_pluggable_response.test_request +gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... expected failure +gabbi.tests.test_intercept.self_fail_pluggable_response.test_request +gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", gabbi.tests.test_intercept.self_use_a_historical_location.test_request gabbi.tests.test_intercept.self_use_a_historical_location.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_match gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_match ... ok -gabbi.tests.test_intercept.queryparams_unicode.test_request -gabbi.tests.test_intercept.queryparams_unicode.test_request ... ok -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... expected failure -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... ok -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request ... ok +Exception ignored in: +Traceback (most recent call last): + File "/usr/lib/python3.13/http/client.py", line 434, in close + if self.fp: +AttributeError: 'HTTPResponse' object has no attribute 'fp' gabbi.tests.test_intercept.self_post_a_body.test_request gabbi.tests.test_intercept.self_post_a_body.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_nomatch gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_nomatch ... ok +gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request +gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request ... ok +gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request ... ok gabbi.tests.test_intercept.poll_create_a_thing.test_request gabbi.tests.test_intercept.poll_create_a_thing.test_request ... ok -gabbi.tests.test_intercept.self_json_derived_content_type.test_request -gabbi.tests.test_intercept.self_json_derived_content_type.test_request ... ok -gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request -gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request ... ok -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... expected failure -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... ok -gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request -gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request ... ok -gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request -gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request ... ok +Exception ignored in: +Traceback (most recent call last): + File "/usr/lib/python3.13/http/client.py", line 434, in close +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... expected failure + if self.fp: +AttributeError: 'HTTPResponse' object has no attribute 'fp' gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_esc_regex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_esc_regex ... ok -gabbi.tests.test_intercept.host-header_host_without_ssl.test_request -gabbi.tests.test_intercept.host-header_host_without_ssl.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_two.test_request -gabbi.tests.test_intercept.fixture_just_to_see_two.test_request ... ok -gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request -gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request ... ok -gabbi.tests.test_intercept.self_test_binary_handling.test_request -gabbi.tests.test_intercept.self_test_binary_handling.test_request ... ok +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... ok +gabbi.tests.test_intercept.queryparams_joined_params.test_request +gabbi.tests.test_intercept.queryparams_joined_params.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request +gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request ... ok +gabbi.tests.test_intercept.queryparams_simple_param.test_request +gabbi.tests.test_intercept.queryparams_simple_param.test_request ... ok +gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request +gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_noregex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_noregex ... ok -gabbi.tests.test_intercept.self_fail_pluggable_response.test_request -gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... expected failure -gabbi.tests.test_intercept.self_fail_pluggable_response.test_request -gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... ok -gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request -gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see.test_request -gabbi.tests.test_intercept.fixture_just_to_see.test_request ... ok +gabbi.tests.test_intercept.self_json_derived_content_type.test_request +gabbi.tests.test_intercept.self_json_derived_content_type.test_request ... ok +gabbi.tests.test_intercept.failskip_wrong_status.test_request +gabbi.tests.test_intercept.failskip_wrong_status.test_request ... expected failure +gabbi.tests.test_intercept.failskip_wrong_status.test_request +gabbi.tests.test_intercept.failskip_wrong_status.test_request ... ok +gabbi.tests.test_intercept.self_test_pluggable_response.test_request +gabbi.tests.test_intercept.self_test_pluggable_response.test_request ... ok +gabbi.tests.test_intercept.poll_loop_location.test_request +gabbi.tests.test_intercept.poll_loop_location.test_request ... ok +gabbi.tests.test_intercept.last-url_add_some_query_params.test_request +gabbi.tests.test_intercept.last-url_add_some_query_params.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex ... ok -gabbi.tests.test_intercept.data_load_data_dictionary.test_request -gabbi.tests.test_intercept.data_load_data_dictionary.test_request ... ok -gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request -gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_one.test_request -gabbi.tests.test_intercept.fixture_just_to_see_one.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request +gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request ... ok +gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request +gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request ... ok +gabbi.tests.test_intercept.host-header_ssl_no_host.test_request +gabbi.tests.test_intercept.host-header_ssl_no_host.test_request ... ok +gabbi.tests.test_intercept.json-extensions_test_sort.test_request +gabbi.tests.test_intercept.json-extensions_test_sort.test_request ... ok +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request +gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request ... ok +gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request +gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request ... ok gabbi.tests.test_intercept.poll_poller_fail.test_request gabbi.tests.test_intercept.poll_poller_fail.test_request ... expected failure gabbi.tests.test_intercept.poll_poller_fail.test_request gabbi.tests.test_intercept.poll_poller_fail.test_request ... ok -gabbi.tests.test_intercept.self_non_json_response_failure.test_request -gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... expected failure -gabbi.tests.test_intercept.self_non_json_response_failure.test_request -gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request -gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request -gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request ... ok +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... expected failure +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... ok +gabbi.tests.test_intercept.queryparams_url_in_param.test_request +gabbi.tests.test_intercept.queryparams_url_in_param.test_request ... ok +gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request +gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request ... ok +gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request +gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request ... ok +gabbi.tests.test_intercept.host-header_ssl_with_host.test_request +gabbi.tests.test_intercept.host-header_ssl_with_host.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see.test_request +gabbi.tests.test_intercept.fixture_just_to_see.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_one.test_request +gabbi.tests.test_intercept.fixture_just_to_see_one.test_request ... ok +gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request +gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request +gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_yamlhandler gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_yamlhandler ... ok gabbi.tests.test_handlers.HandlersTest.test_response_string_list_type @@ -1724,218 +1756,119 @@ gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_output ... ok gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_payload gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_payload ... ok -Exception ignored in: +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... expected failure +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... ok +gabbi.tests.test_intercept.json-extensions_test_filtered.test_request +gabbi.tests.test_intercept.json-extensions_test_filtered.test_request ... ok +Exception ignored in: Traceback (most recent call last): File "/usr/lib/python3.13/http/client.py", line 434, in close -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... expected failure +gabbi.tests.test_intercept.self_get_simple_page.test_request +gabbi.tests.test_intercept.self_get_simple_page.test_request ... ok if self.fp: AttributeError: 'HTTPResponse' object has no attribute 'fp' -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... ok -gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request -gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request ... ok -gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request -gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_three.test_request -gabbi.tests.test_intercept.fixture_just_to_see_three.test_request ... ok -gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request -gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request ... ok -gabbi.tests.test_intercept.failskip_wrong_status.test_request -gabbi.tests.test_intercept.failskip_wrong_status.test_request ... expected failure -gabbi.tests.test_intercept.failskip_wrong_status.test_request -gabbi.tests.test_intercept.failskip_wrong_status.test_request ... ok -gabbi.tests.test_inner_fixture.inner_get_three.test_request -gabbi.tests.test_inner_fixture.inner_get_three.test_request ... ok -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... expected failure -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... ok -gabbi.tests.test_intercept.failskip_non_existent_header.test_request -gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... expected failure -gabbi.tests.test_intercept.failskip_non_existent_header.test_request -gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... ok -gabbi.tests.test_intercept.contenttype_put_content-type.test_request -gabbi.tests.test_intercept.contenttype_put_content-type.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_simple_post.test_request -gabbi.tests.test_intercept.method-shortcut_simple_post.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request -gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request ... ok -gabbi.tests.test_intercept.queryparams_simple_param.test_request -gabbi.tests.test_intercept.queryparams_simple_param.test_request ... ok -gabbi.tests.test_intercept.data_load_image_file.test_request -gabbi.tests.test_intercept.data_load_image_file.test_request ... ok -gabbi.tests.test_intercept.cookie_get_a_cookie.test_request -gabbi.tests.test_intercept.cookie_get_a_cookie.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request -gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request ... ok -gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request -gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request ... ok -gabbi.tests.test_intercept.header-key_header_named_http.test_request -gabbi.tests.test_intercept.header-key_header_named_http.test_request ... ok -gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request -gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request ... ok -gabbi.tests.test_intercept.self_checklimit.test_request -gabbi.tests.test_intercept.self_checklimit.test_request ... ok -gabbi.tests.test_intercept.queryparams_url_in_param.test_request -gabbi.tests.test_intercept.queryparams_url_in_param.test_request ... ok -gabbi.tests.test_intercept.poll_poller.test_request -gabbi.tests.test_intercept.poll_poller.test_request ... ok -gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request -gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request ... ok -gabbi.tests.test_intercept.coerce_post_data.test_request -gabbi.tests.test_intercept.coerce_post_data.test_request ... ok -gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request -gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request ... ok -gabbi.tests.test_intercept.failskip_skip_me.test_request -gabbi.tests.test_intercept.failskip_skip_me.test_request ... skipped "Skipping for now because we can't do it" -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... expected failure -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... ok -gabbi.tests.test_intercept.contenttype_post_content-type.test_request -gabbi.tests.test_intercept.contenttype_post_content-type.test_request ... ok -gabbi.tests.test_intercept.self_test_pluggable_response.test_request -gabbi.tests.test_intercept.self_test_pluggable_response.test_request ... ok -gabbi.tests.test_intercept.coerce_from_environ.test_request -gabbi.tests.test_intercept.coerce_from_environ.test_request ... ok -gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request -gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request ... ok -gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request -gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_simple_get.test_request +gabbi.tests.test_intercept.method-shortcut_simple_get.test_request ... ok +gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request +gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request ... ok +gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request +gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request ... ok gabbi.tests.test_intercept.json-left-side_check_key_and_value.test_request gabbi.tests.test_intercept.json-left-side_check_key_and_value.test_request ... ok +gabbi.tests.test_intercept.data_load_data_list.test_request +gabbi.tests.test_intercept.data_load_data_list.test_request ... ok +gabbi.tests.test_intercept.contenttype_put_content-type.test_request +gabbi.tests.test_intercept.contenttype_put_content-type.test_request ... ok gabbi.tests.test_intercept.host-header_ssl_with_capitalised_host.test_request gabbi.tests.test_intercept.host-header_ssl_with_capitalised_host.test_request ... ok -gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request -gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request ... ok -gabbi.tests.test_intercept.json-extensions_test_len.test_request -gabbi.tests.test_intercept.json-extensions_test_len.test_request ... ok -gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request -gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request ... ok -gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request ... ok -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... expected failure -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... ok -gabbi.tests.test_intercept.poll_loop_location.test_request -gabbi.tests.test_intercept.poll_loop_location.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_simple_get.test_request -gabbi.tests.test_intercept.method-shortcut_simple_get.test_request ... ok -gabbi.tests.test_intercept.last-url_get_prior_url.test_request -gabbi.tests.test_intercept.last-url_get_prior_url.test_request ... ok -gabbi.tests.test_intercept.host-header_ssl_with_host.test_request -gabbi.tests.test_intercept.host-header_ssl_with_host.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request -gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request ... ok +gabbi.tests.test_intercept.host-header_host_without_ssl.test_request +gabbi.tests.test_intercept.host-header_host_without_ssl.test_request ... ok +gabbi.tests.test_intercept.header-key_header_named_http.test_request +gabbi.tests.test_intercept.header-key_header_named_http.test_request ... ok gabbi.tests.test_intercept.casting_default_casts.test_request gabbi.tests.test_intercept.casting_default_casts.test_request ... ok -gabbi.tests.test_intercept.data_load_data_list.test_request -gabbi.tests.test_intercept.data_load_data_list.test_request ... ok -gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request ... ok -gabbi.tests.test_intercept.json-extensions_test_sort.test_request -gabbi.tests.test_intercept.json-extensions_test_sort.test_request ... ok -gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request ... ok -gabbi.tests.test_intercept.coerce_object_with_list.test_request -gabbi.tests.test_intercept.coerce_object_with_list.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_simple_post.test_request +gabbi.tests.test_intercept.method-shortcut_simple_post.test_request ... ok +gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request +gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request ... ok gabbi.tests.test_intercept.casting_cast_to_string.test_request gabbi.tests.test_intercept.casting_cast_to_string.test_request ... ok -gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request -gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request ... ok -gabbi.tests.test_intercept.casting_internal_json_fail.test_request -gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... expected failure -gabbi.tests.test_intercept.casting_internal_json_fail.test_request -gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... ok -gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean -gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean ... ok -gabbi.tests.test_utils.BinaryTypesTest.test_binary -gabbi.tests.test_utils.BinaryTypesTest.test_binary ... ok -gabbi.tests.test_utils.BinaryTypesTest.test_not_binary -gabbi.tests.test_utils.BinaryTypesTest.test_not_binary ... ok -gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color -gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color ... ok -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... expected failure -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... ok -gabbi.tests.test_intercept.backref_post_some_json.test_request -gabbi.tests.test_intercept.backref_post_some_json.test_request ... ok -gabbi.tests.test_intercept.data_partial_json_from_disk.test_request -gabbi.tests.test_intercept.data_partial_json_from_disk.test_request ... ok -gabbi.tests.test_intercept.coerce_use_data.test_request -gabbi.tests.test_intercept.coerce_use_data.test_request ... ok -gabbi.tests.test_intercept.data_load_json_file.test_request -gabbi.tests.test_intercept.data_load_json_file.test_request ... ok -gabbi.tests.test_intercept.casting_internal_json_fine.test_request -gabbi.tests.test_intercept.casting_internal_json_fine.test_request ... ok -gabbi.tests.test_intercept.data_load_encoded_text.test_request -gabbi.tests.test_intercept.data_load_encoded_text.test_request ... ok -gabbi.tests.test_intercept.data_post_data_for_next.test_request -gabbi.tests.test_intercept.data_post_data_for_next.test_request ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request ... ok -#### get simple page #### -> GET http://75719d68-0391-40d4-9d8b-4ab5fbbe9a20:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://75719d68-0391-40d4-9d8b-4ab5fbbe9a20:8001/ - -{} - -#### json encoded value from disk #### -> POST http://2dd50cbd-d390-4532-88a5-435d92b8ce26:8001/ -> content-type: application/json +gabbi.tests.test_intercept.self_get_location_from_headers.test_request +gabbi.tests.test_intercept.self_get_location_from_headers.test_request ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file +gabbi.tests.test_load_data_file.DataFileTest.test_load_file ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory ... ok +gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request +gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request ... ok +gabbi.tests.test_intercept.cookie_get_a_cookie.test_request +gabbi.tests.test_intercept.cookie_get_a_cookie.test_request ... ok +gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params +gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_http +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_http ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https_no_ssl +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https_no_ssl ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_int +gabbi.tests.test_parse_url.UrlParseTest.test_default_port_int ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params +gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params_full_url +gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params_full_url ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_https_port_80_ssl +gabbi.tests.test_parse_url.UrlParseTest.test_https_port_80_ssl ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_full_url +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_full_url ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_no_double_colon_wacky_ssl +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_no_double_colon_wacky_ssl ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_url +gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_url ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_parse_full +gabbi.tests.test_parse_url.UrlParseTest.test_parse_full ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_parse_prefix +gabbi.tests.test_parse_url.UrlParseTest.test_parse_prefix ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_parse_url +gabbi.tests.test_parse_url.UrlParseTest.test_parse_url ... ok +gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl +gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl ... ok +#### confirm notempty #### +> GET http://2c2c963d-9cda-422d-b92f-94c861d947cf:8001/notempty > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "foo": { - "b\u00e1r": 1 - } -} < 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://2dd50cbd-d390-4532-88a5-435d92b8ce26:8001/ -< Location: http://2dd50cbd-d390-4532-88a5-435d92b8ce26:8001/ -{ - "foo": { - "b\u00e1r": 1 - } -} +notempty -#### left side json one #### -> POST http://f1c398eb-84ae-4290-8788-8f666fad3f72:8001/ -> content-type: application/json +#### get simple page #### +> GET http://c5e5d672-1eb5-4d39-aaa5-c3903e17f025:8001/ +> x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "alpha": "alpha1", - "beta": "beta1" -} < 200 OK -< X-Gabbi-method: POST +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1c398eb-84ae-4290-8788-8f666fad3f72:8001/ -< Location: http://f1c398eb-84ae-4290-8788-8f666fad3f72:8001/ +< X-Gabbi-url: http://c5e5d672-1eb5-4d39-aaa5-c3903e17f025:8001/ -{ - "alpha": "alpha1", - "beta": "beta1" -} +{} #### default casts #### -> POST http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ +> POST http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -1951,8 +1884,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -< Location: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ +< X-Gabbi-url: http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ +< Location: http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ { "int": 1, @@ -1963,7 +1896,7 @@ } #### cast to string #### -> POST http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ +> POST http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -1975,83 +1908,96 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -< Location: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ +< X-Gabbi-url: http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ +< Location: http://1fef3b61-5d0d-4d66-93d3-130a3f026397:8001/ { "string": "2" } -#### json set up #### -> POST http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -> content-type: application/json -> accept: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -< Location: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ - -{ - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false -} - -#### send casted json #### -> POST http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -> content-type: application/json -> accept: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "casted": 2 -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -< Location: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ - -{ - "casted": 2 -} - -#### historic casted json #### -> POST http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -> content-type: application/json -> accept: application/json +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... expected failure +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_two.test_request +gabbi.tests.test_intercept.fixture_just_to_see_two.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_three.test_request +gabbi.tests.test_intercept.fixture_just_to_see_three.test_request ... ok +gabbi.tests.test_intercept.data_load_json_file.test_request +gabbi.tests.test_intercept.data_load_json_file.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request +gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request ... ok +gabbi.tests.test_intercept.data_load_data_dictionary.test_request +gabbi.tests.test_intercept.data_load_data_dictionary.test_request ... ok +gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request +gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request ... ok +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... expected failure +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... ok +gabbi.tests.test_intercept.regex_regex_header_test.test_request +gabbi.tests.test_intercept.regex_regex_header_test.test_request ... ok +gabbi.tests.test_intercept.data_json_value_from_disk.test_request +gabbi.tests.test_intercept.data_json_value_from_disk.test_request ... ok +gabbi.tests.test_intercept.data_load_image_file.test_request +gabbi.tests.test_intercept.data_load_image_file.test_request ... ok +gabbi.tests.test_intercept.data_post_data_for_next.test_request +gabbi.tests.test_intercept.data_post_data_for_next.test_request ... ok +gabbi.tests.test_intercept.contenttype_post_content-type.test_request +gabbi.tests.test_intercept.contenttype_post_content-type.test_request ... ok +gabbi.tests.test_intercept.contenttype_patch_content-type.test_request +gabbi.tests.test_intercept.contenttype_patch_content-type.test_request ... ok +gabbi.tests.test_intercept.queryparams_multi_params.test_request +gabbi.tests.test_intercept.queryparams_multi_params.test_request ... ok +gabbi.tests.test_intercept.queryparams_unicode.test_request +gabbi.tests.test_intercept.queryparams_unicode.test_request ... ok +gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request +gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request ... ok +gabbi.tests.test_intercept.coerce_use_data.test_request +gabbi.tests.test_intercept.coerce_use_data.test_request ... ok +gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request +gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request ... ok +gabbi.tests.test_intercept.coerce_post_data.test_request +gabbi.tests.test_intercept.coerce_post_data.test_request ... ok +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... expected failure +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... ok +gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request +gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request ... ok +gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request ... ok +gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request +gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request ... ok +gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request +gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request ... ok +gabbi.tests.test_intercept.failskip_skip_me.test_request +gabbi.tests.test_intercept.failskip_skip_me.test_request ... skipped "Skipping for now because we can't do it" +gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request +gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request ... ok +#### get simple page #### +> GET http://679dc823-1966-4948-a431-fa7eca713c42:8001/ +> x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "casted": 2 -} < 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ -< Location: http://f82c1ae8-e397-494a-bbf2-248571bf6caa:8001/ +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://679dc823-1966-4948-a431-fa7eca713c42:8001/ -{ - "casted": 2 -} +{} #### yaml encoded value from disk #### -> POST http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +> POST http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2064,8 +2010,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere -< Location: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +< X-Gabbi-url: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere +< Location: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere { "foo": { @@ -2074,7 +2020,7 @@ } #### json encoded value from disk #### -> POST http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +> POST http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2087,8 +2033,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere -< Location: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +< X-Gabbi-url: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere +< Location: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere { "foo": { @@ -2097,7 +2043,7 @@ } #### yaml parital from disk #### -> POST http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +> POST http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2109,8 +2055,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere -< Location: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +< X-Gabbi-url: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere +< Location: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere { "type": "cat", @@ -2118,7 +2064,7 @@ } #### yaml partial both sides #### -> POST http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +> POST http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2136,8 +2082,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere -< Location: http://3f43886a-fd17-4d99-a5de-9d7aa3703027:8001/somewhere +< X-Gabbi-url: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere +< Location: http://aef7e7a7-de42-44ca-bc27-36723b771a74:8001/somewhere [ { @@ -2150,42 +2096,32 @@ } ] -gabbi.tests.test_intercept.data_json_value_from_disk.test_request -gabbi.tests.test_intercept.data_json_value_from_disk.test_request ... ok -gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params -gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_http -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_http ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https_no_ssl -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_https_no_ssl ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_int -gabbi.tests.test_parse_url.UrlParseTest.test_default_port_int ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params -gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params_full_url -gabbi.tests.test_parse_url.UrlParseTest.test_extend_query_params_full_url ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_https_port_80_ssl -gabbi.tests.test_parse_url.UrlParseTest.test_https_port_80_ssl ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_full_url -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_full_url ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_no_double_colon_wacky_ssl -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_no_double_colon_wacky_ssl ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_url -gabbi.tests.test_parse_url.UrlParseTest.test_ipv6_url ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_parse_full -gabbi.tests.test_parse_url.UrlParseTest.test_parse_full ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_parse_prefix -gabbi.tests.test_parse_url.UrlParseTest.test_parse_prefix ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_parse_url -gabbi.tests.test_parse_url.UrlParseTest.test_parse_url ... ok -gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl -gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl ... ok +gabbi.tests.test_intercept.data_load_encoded_text.test_request +gabbi.tests.test_intercept.data_load_encoded_text.test_request ... ok +gabbi.tests.test_intercept.coerce_from_environ.test_request +gabbi.tests.test_intercept.coerce_from_environ.test_request ... ok +gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers +gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset ... ok +gabbi.tests.test_intercept.casting_send_casted_json.test_request +gabbi.tests.test_intercept.casting_send_casted_json.test_request ... ok +gabbi.tests.test_intercept.data_partial_json_from_disk.test_request +gabbi.tests.test_intercept.data_partial_json_from_disk.test_request ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request ... ok +gabbi.tests.test_intercept.coerce_with_list.test_request +gabbi.tests.test_intercept.coerce_with_list.test_request ... ok #### get simple page #### -> GET http://092e4ebe-9840-4dd1-ae97-d7e5ca943ed9:8001/ +> GET http://94f79857-82a2-454d-9d9a-b2914c22b6e3:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2193,135 +2129,121 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://092e4ebe-9840-4dd1-ae97-d7e5ca943ed9:8001/ +< X-Gabbi-url: http://94f79857-82a2-454d-9d9a-b2914c22b6e3:8001/ {} -#### loop location #### -> GET http://f95b1c51-9c69-46e9-85ae-d40e69c37cc5:8001/poller?count=2&x=1&y=2&z=3.4 -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 400 Bad Reqest - - -#### loop location #### -> GET http://f95b1c51-9c69-46e9-85ae-d40e69c37cc5:8001/poller?count=2&x=1&y=2&z=3.4 +#### json encoded value from disk #### +> POST http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "foo": { + "b\u00e1r": 1 + } +} -< 400 Bad Reqest +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ +< Location: http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ +{ + "foo": { + "b\u00e1r": 1 + } +} -#### loop location #### -> GET http://f95b1c51-9c69-46e9-85ae-d40e69c37cc5:8001/poller?count=2&x=1&y=2&z=3.4 +#### json parital from disk #### +> POST http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "type": "cat", + "sound": "meow" +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f95b1c51-9c69-46e9-85ae-d40e69c37cc5:8001/poller?count=2&x=1&y=2&z=3.4 +< X-Gabbi-url: http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ +< Location: http://c689b99d-e577-43d4-9db7-e7ad9f399d56:8001/ { - "count": [ - "2" - ], - "x": [ - "1" - ], - "y": [ - "2" - ], - "z": [ - "3.4" - ] + "type": "cat", + "sound": "meow" } -gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request -gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request ... ok -gabbi.tests.test_intercept.coerce_post_extra_data.test_request -gabbi.tests.test_intercept.coerce_post_extra_data.test_request ... ok -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... expected failure -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... ok -#### get simple page #### -> GET http://3b0b5e9c-a327-40f6-ab9e-482d6bbfa868:8001/ -> x-random-header: ya +#### post data #### +> POST http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://3b0b5e9c-a327-40f6-ab9e-482d6bbfa868:8001/ +< X-Gabbi-url: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +< Location: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ -{} +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} -gabbi.tests.test_intercept.coerce_with_list.test_request -gabbi.tests.test_intercept.coerce_with_list.test_request ... ok -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match -gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling -gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list -gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list -gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list -gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling -gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling ... ok -gabbi.tests.test_intercept.backref_get_a_historical_response.test_request -gabbi.tests.test_intercept.backref_get_a_historical_response.test_request ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request ... ok -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request ... ok -#### get simple page #### -> GET http://7dcbe86d-7f17-4631-abc5-82fc668266be:8001/ -> x-random-header: ya +#### use data #### +> POST http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://7dcbe86d-7f17-4631-abc5-82fc668266be:8001/ +< X-Gabbi-url: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +< Location: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ -{} +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} -#### header named http #### -> GET http://b87a8a34-6535-47de-a4f5-13ff62799ffe:8001/header_key -> http: some-scheme +#### from environ #### +> POST http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "one_environ": 1 +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b87a8a34-6535-47de-a4f5-13ff62799ffe:8001/header_key -< HTTP: some-scheme +< X-Gabbi-url: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ +< Location: http://cbc1e4ea-dfa2-4918-83e6-0e1fcbf4a27a:8001/ -{} +{ + "one_environ": 1 +} #### yaml encoded value from disk #### -> POST http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere +> POST http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2334,8 +2256,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere -< Location: http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere +< X-Gabbi-url: http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere +< Location: http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere { "foo": { @@ -2344,7 +2266,7 @@ } #### json encoded value from disk #### -> POST http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere +> POST http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2357,8 +2279,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere -< Location: http://89720370-a376-4ba4-9bf2-2deb545550b0:8001/somewhere +< X-Gabbi-url: http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere +< Location: http://04bc8ac9-8a58-49f7-ab74-a86dcf44dab1:8001/somewhere { "foo": { @@ -2366,8 +2288,38 @@ } } +gabbi.tests.test_intercept.casting_internal_json_fine.test_request +gabbi.tests.test_intercept.casting_internal_json_fine.test_request ... ok +gabbi.tests.test_intercept.coerce_post_extra_data.test_request +gabbi.tests.test_intercept.coerce_post_extra_data.test_request ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon +gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 +gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_port +gabbi.tests.test_utils.CreateURLTest.test_create_url_port ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix +gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query +gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_simple +gabbi.tests.test_utils.CreateURLTest.test_create_url_simple ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 ... ok #### get simple page #### -> GET http://214b1369-40b2-412f-abda-9cf80af228c4:8001/ +> GET http://c039fb55-f1dd-456b-bb75-d4f6fc6ecff7:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2375,89 +2327,311 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://214b1369-40b2-412f-abda-9cf80af228c4:8001/ +< X-Gabbi-url: http://c039fb55-f1dd-456b-bb75-d4f6fc6ecff7:8001/ {} -#### json encoded value from disk #### -> POST http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +#### post data #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ -< Location: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ { - "foo": { - "b\u00e1r": 1 - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### json parital from disk #### -> POST http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +#### use data #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ -< Location: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ { - "type": "cat", - "sound": "meow" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### json partial both sides #### -> POST http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +#### from environ #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "one_environ": 1 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ + +{ + "one_environ": 1 +} + +#### with list #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) [ - { - "type": "cat", - "sound": "meow" - }, - { - "type": "dog", - "sound": "woof" - } + 1, + 2, + "3" ] < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ -< Location: http://0210c84b-2311-45b7-bbe5-001e921dcea2:8001/ +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ [ - { - "type": "cat", - "sound": "meow" + 1, + 2, + "3" +] + +#### object with list #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "collection": [ + { + "alpha": 1, + "beta": "max" + }, + { + "alpha": 2, + "beta": "climb" + } + ] +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ + +{ + "collection": [ + { + "alpha": 1, + "beta": "max" + }, + { + "alpha": 2, + "beta": "climb" + } + ] +} + +#### post extra data #### +> POST http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" }, - { - "type": "dog", - "sound": "woof" + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } } -] +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ +< Location: http://0cd020c9-bd7d-4234-9906-f5ee81bf93c2:8001/ + +{ + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } +} + +gabbi.tests.test_intercept.backref_post_some_more_json.test_request +gabbi.tests.test_intercept.backref_post_some_more_json.test_request ... ok +gabbi.tests.test_intercept.backref_post_even_more_json.test_request +gabbi.tests.test_intercept.backref_post_even_more_json.test_request ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match +gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling +gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list +gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list +gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list +gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list ... ok +gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request +gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling +gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request +gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request ... ok +gabbi.tests.test_runner.RunnerTest.test_custom_response_handler +gabbi.tests.test_runner.RunnerTest.test_custom_response_handler ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request +gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request ... ok +gabbi.tests.test_runner.RunnerTest.test_data_dir_good +gabbi.tests.test_runner.RunnerTest.test_data_dir_good ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_exit_code +gabbi.tests.test_runner.RunnerTest.test_exit_code ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_input_files +gabbi.tests.test_runner.RunnerTest.test_input_files ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet +gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet ... ok +gabbi.tests.test_intercept.backref_get_a_historical_response.test_request +gabbi.tests.test_intercept.backref_get_a_historical_response.test_request ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir +gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing ... ok +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port ... ok +gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail +gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail ... ok +#### get simple page #### +> GET http://5847db1a-085e-4b4a-a6cb-73c31314c2f4:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://5847db1a-085e-4b4a-a6cb-73c31314c2f4:8001/ + +{} + +#### left side json one #### +> POST http://c1bec04e-bf80-49ba-8d80-6414acd9c02b:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "alpha": "alpha1", + "beta": "beta1" +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://c1bec04e-bf80-49ba-8d80-6414acd9c02b:8001/ +< Location: http://c1bec04e-bf80-49ba-8d80-6414acd9c02b:8001/ + +{ + "alpha": "alpha1", + "beta": "beta1" +} #### post data #### -> POST http://026cd397-a7fa-4b94-a6f6-fda58c23d52c:8001/ +> POST http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ +< Location: http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +#### use data #### +> POST http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2470,8 +2644,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://026cd397-a7fa-4b94-a6f6-fda58c23d52c:8001/ -< Location: http://026cd397-a7fa-4b94-a6f6-fda58c23d52c:8001/ +< X-Gabbi-url: http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ +< Location: http://7fc2e35f-b3c1-4991-8887-42c95fed1c73:8001/ { "one_string": "1", @@ -2480,7 +2654,7 @@ } #### default casts #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +> POST http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2496,8 +2670,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< X-Gabbi-url: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ +< Location: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ { "int": 1, @@ -2508,7 +2682,7 @@ } #### cast to string #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +> POST http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2520,15 +2694,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< X-Gabbi-url: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ +< Location: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ { "string": "2" } #### json set up #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +> POST http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2544,8 +2718,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< X-Gabbi-url: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ +< Location: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ { "int": 1, @@ -2556,7 +2730,7 @@ } #### send casted json #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +> POST http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2568,59 +2742,231 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< X-Gabbi-url: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ +< Location: http://bc1022e5-0018-47a2-bf62-1faf025da42d:8001/ { "casted": 2 } -#### historic casted json #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml +gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting +gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request +gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request ... ok +gabbi.tests.test_utils.BinaryTypesTest.test_binary +gabbi.tests.test_utils.BinaryTypesTest.test_binary ... ok +gabbi.tests.test_utils.BinaryTypesTest.test_not_binary +gabbi.tests.test_utils.BinaryTypesTest.test_not_binary ... ok +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... expected failure +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... ok +gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean +gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean ... ok +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none ... ok +gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color +gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color ... ok +#### get simple page #### +> GET http://a305563f-512a-4a29-b4aa-cc6b27075f24:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://a305563f-512a-4a29-b4aa-cc6b27075f24:8001/ + +{} + +#### json encoded value from disk #### +> POST http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ +< Location: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ { - "casted": 2 + "foo": { + "b\u00e1r": 1 + } } -#### internal json fine #### -> POST http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +#### json parital from disk #### +> POST http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": "in this 2 is not errors" + "type": "cat", + "sound": "meow" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ -< Location: http://fcd7c862-e37f-4468-854d-76ff09797126:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ +< Location: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ { - "casted": "in this 2 is not errors" + "type": "cat", + "sound": "meow" } -gabbi.tests.test_intercept.coerce_check_posted_data.test_request -gabbi.tests.test_intercept.coerce_check_posted_data.test_request ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request ... ok +#### json partial both sides #### +> POST http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ +< Location: http://9662d362-5aa5-4f89-b0f1-b0ef5a2e1761:8001/ + +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] + +#### post data #### +> POST http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +< Location: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +#### use data #### +> POST http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +< Location: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ + +{ + "one_string": "1", + "one_int": 1, + "one_float": 1.1 +} + +#### from environ #### +> POST http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "one_environ": 1 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +< Location: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ + +{ + "one_environ": 1 +} + +#### with list #### +> POST http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +[ + 1, + 2, + "3" +] + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ +< Location: http://bdb99da1-833d-4090-843e-563eaaa958e6:8001/ + +[ + 1, + 2, + "3" +] + #### get simple page #### -> GET http://8a54651d-6308-4fa9-9518-4de36c189759:8001/ +> GET http://59f0edd2-cb44-413a-aef1-351ba09e8750:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2628,12 +2974,53 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://8a54651d-6308-4fa9-9518-4de36c189759:8001/ +< X-Gabbi-url: http://59f0edd2-cb44-413a-aef1-351ba09e8750:8001/ {} +#### loop location #### +> GET http://d08bc6fd-8b0d-4735-9426-4a3010205444:8001/poller?count=2&x=1&y=2&z=3.4 +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 400 Bad Reqest + + +#### loop location #### +> GET http://d08bc6fd-8b0d-4735-9426-4a3010205444:8001/poller?count=2&x=1&y=2&z=3.4 +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 400 Bad Reqest + + +#### loop location #### +> GET http://d08bc6fd-8b0d-4735-9426-4a3010205444:8001/poller?count=2&x=1&y=2&z=3.4 +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://d08bc6fd-8b0d-4735-9426-4a3010205444:8001/poller?count=2&x=1&y=2&z=3.4 + +{ + "count": [ + "2" + ], + "x": [ + "1" + ], + "y": [ + "2" + ], + "z": [ + "3.4" + ] +} + #### left side json one #### -> POST http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +> POST http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2645,8 +3032,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ -< Location: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +< X-Gabbi-url: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ +< Location: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ { "alpha": "alpha1", @@ -2654,7 +3041,7 @@ } #### expand left side #### -> POST http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +> POST http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2666,8 +3053,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ -< Location: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +< X-Gabbi-url: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ +< Location: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ { "alpha1": "alpha", @@ -2675,7 +3062,7 @@ } #### expand environ left side #### -> POST http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +> POST http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2688,8 +3075,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ -< Location: http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/ +< X-Gabbi-url: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ +< Location: http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/ { "alpha1": "alpha", @@ -2698,7 +3085,7 @@ } #### set key and value #### -> GET http://b2ba0427-f3f2-44d7-85e8-9f40323f3f87:8001/jsonator?key=1&value=10 +> GET http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/jsonator?key=1&value=10 > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2710,224 +3097,175 @@ "1": "10" } -#### post data #### -> POST http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +#### check key and value #### +> GET http://8d3b3728-c24a-4ff4-9823-e078646ce0cc:8001/jsonator?key=1&value=10 > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} < 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -< Location: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +< Content-Type: application/json { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "1": "10" } -#### use data #### -> POST http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -> content-type: application/json +#### header named http #### +> GET http://bbbdd1cb-f726-409a-9789-b02d13eec7c5:8001/header_key +> http: some-scheme > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} < 200 OK -< X-Gabbi-method: POST +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -< Location: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +< X-Gabbi-url: http://bbbdd1cb-f726-409a-9789-b02d13eec7c5:8001/header_key +< HTTP: some-scheme -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} +{} -#### from environ #### -> POST http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +#### default casts #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "one_environ": 1 + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -< Location: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ { - "one_environ": 1 + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } -#### with list #### -> POST http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +#### cast to string #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) -[ - 1, - 2, - "3" -] +{ + "string": "2" +} < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -< Location: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ -[ - 1, - 2, - "3" -] +{ + "string": "2" +} -#### object with list #### -> POST http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +#### json set up #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ -< Location: http://f1eca71c-2740-43dc-8899-8c206871267c:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ { - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false } -#### yaml encoded value from disk #### -> POST http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +#### send casted json #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere -< Location: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } -#### json encoded value from disk #### -> POST http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +#### historic casted json #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere -< Location: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } -#### yaml parital from disk #### -> POST http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +#### internal json fine #### +> POST http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "casted": "in this 2 is not errors" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere -< Location: http://79e143a2-04ac-418c-8a86-91409d584cfe:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ +< Location: http://ac176b27-2dbf-4f3c-86ac-1a98258f7831:8001/ { - "type": "cat", - "sound": "meow" + "casted": "in this 2 is not errors" } -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key -gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors -gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required ... ok +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request ... ok #### get simple page #### -> GET http://0ff6e6a6-9430-4bec-b3da-c67d642184f1:8001/ +> GET http://83ab7ea5-11bd-48f5-a104-ef641522e0d7:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2935,12 +3273,12 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ff6e6a6-9430-4bec-b3da-c67d642184f1:8001/ +< X-Gabbi-url: http://83ab7ea5-11bd-48f5-a104-ef641522e0d7:8001/ {} #### left side json one #### -> POST http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +> POST http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2952,8 +3290,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ -< Location: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +< X-Gabbi-url: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ +< Location: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ { "alpha": "alpha1", @@ -2961,7 +3299,7 @@ } #### expand left side #### -> POST http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +> POST http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2973,8 +3311,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ -< Location: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +< X-Gabbi-url: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ +< Location: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ { "alpha1": "alpha", @@ -2982,7 +3320,7 @@ } #### expand environ left side #### -> POST http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +> POST http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -2995,8 +3333,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ -< Location: http://4e934313-9028-4f9a-b50d-3a14cf0216c6:8001/ +< X-Gabbi-url: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ +< Location: http://a2b3ac17-7be7-4729-b797-e947c55605c0:8001/ { "alpha1": "alpha", @@ -3004,8 +3342,169 @@ "1": "cow" } +#### yaml encoded value from disk #### +> POST http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "foo": { + "b\u00e1r": 1 + } +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +< Location: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere + +{ + "foo": { + "b\u00e1r": 1 + } +} + +#### json encoded value from disk #### +> POST http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "foo": { + "b\u00e1r": 1 + } +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +< Location: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere + +{ + "foo": { + "b\u00e1r": 1 + } +} + +#### yaml parital from disk #### +> POST http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "type": "cat", + "sound": "meow" +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere +< Location: http://4bccc087-8fcb-4604-8333-96e47c5b7512:8001/somewhere + +{ + "type": "cat", + "sound": "meow" +} + +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_driver.DriverTest.test_build_require_ssl +gabbi.tests.test_driver.DriverTest.test_build_require_ssl ... ok +gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept +gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_target +gabbi.tests.test_driver.DriverTest.test_build_url_target ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl +gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test +gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test ... ok +gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host +gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host ... ok +gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests +gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests ... ok +gabbi.tests.test_driver.DriverTest.test_driver_prefix +gabbi.tests.test_driver.DriverTest.test_driver_prefix ... ok +gabbi.tests.test_history.HistoryTest.test_cookie_replace_history +gabbi.tests.test_history.HistoryTest.test_cookie_replace_history ... ok +gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior +gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior ... ok +gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior_regex +gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior_regex ... ok +gabbi.tests.test_history.HistoryTest.test_header_replace_prior +gabbi.tests.test_history.HistoryTest.test_header_replace_prior ... ok +gabbi.tests.test_history.HistoryTest.test_header_replace_with_history +gabbi.tests.test_history.HistoryTest.test_header_replace_with_history ... ok +gabbi.tests.test_history.HistoryTest.test_header_replace_with_history_regex +gabbi.tests.test_history.HistoryTest.test_header_replace_with_history_regex ... ok +gabbi.tests.test_history.HistoryTest.test_location_replace_history +gabbi.tests.test_history.HistoryTest.test_location_replace_history ... ok +gabbi.tests.test_history.HistoryTest.test_location_replace_prior +gabbi.tests.test_history.HistoryTest.test_location_replace_prior ... ok +gabbi.tests.test_history.HistoryTest.test_location_replace_prior_regex +gabbi.tests.test_history.HistoryTest.test_location_replace_prior_regex ... ok +gabbi.tests.test_history.HistoryTest.test_response_replace_prior +gabbi.tests.test_history.HistoryTest.test_response_replace_prior ... ok +gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex +gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex ... ok +gabbi.tests.test_history.HistoryTest.test_response_replace_with_history +gabbi.tests.test_history.HistoryTest.test_response_replace_with_history ... ok +gabbi.tests.test_history.HistoryTest.test_url_replace_history +gabbi.tests.test_history.HistoryTest.test_url_replace_history ... ok +gabbi.tests.test_history.HistoryTest.test_url_replace_prior +gabbi.tests.test_history.HistoryTest.test_url_replace_prior ... ok +gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex +gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex ... ok +/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files +gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true ... ok +#### get simple page #### +> GET http://13887b86-c5b7-4ff8-aade-d523e010b6d4:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://13887b86-c5b7-4ff8-aade-d523e010b6d4:8001/ + +{} + +#### json encoded value from disk #### +> POST http://e15de9d9-1e61-4b46-a536-576686523922:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "foo": { + "b\u00e1r": 1 + } +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://e15de9d9-1e61-4b46-a536-576686523922:8001/ +< Location: http://e15de9d9-1e61-4b46-a536-576686523922:8001/ + +{ + "foo": { + "b\u00e1r": 1 + } +} + #### post data #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3018,8 +3517,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { "one_string": "1", @@ -3028,7 +3527,7 @@ } #### use data #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3041,8 +3540,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { "one_string": "1", @@ -3051,7 +3550,7 @@ } #### from environ #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3062,15 +3561,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { "one_environ": 1 } #### with list #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3083,8 +3582,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ [ 1, @@ -3093,7 +3592,7 @@ ] #### object with list #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3113,8 +3612,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { "collection": [ @@ -3130,7 +3629,7 @@ } #### post extra data #### -> POST http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3159,8 +3658,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ -< Location: http://28946151-af1f-493e-8f98-1460df9123cb:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { "a": 1, @@ -3184,135 +3683,152 @@ } } -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_driver.DriverTest.test_build_require_ssl -gabbi.tests.test_driver.DriverTest.test_build_require_ssl ... ok -gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept -gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_target -gabbi.tests.test_driver.DriverTest.test_build_url_target ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl -gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test -gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test ... ok -gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host -gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host ... ok -#### confirm notempty #### -> GET http://4b8f7118-abef-4881-b47b-4eac6ef1a6c2:8001/notempty -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK - -notempty - -#### get simple page #### -> GET http://18a80635-7e22-428d-980a-ccdae6a0b85e:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://18a80635-7e22-428d-980a-ccdae6a0b85e:8001/ - -{} - -#### left side json one #### -> POST http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ +#### check posted data #### +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha": "alpha1", - "beta": "beta1" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ -< Location: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { - "alpha": "alpha1", - "beta": "beta1" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } -#### expand left side #### -> POST http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ +#### Post again and check the results #### +> POST http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ -< Location: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ +< X-Gabbi-url: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ +< Location: http://178c4220-722c-424e-a1c7-e2a648a6bea5:8001/ { - "alpha1": "alpha", - "beta1": "beta" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } -#### expand environ left side #### -> POST http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ -> content-type: application/json +Exception ignored in: +Traceback (most recent call last): + File "/usr/lib/python3.13/http/client.py", line 434, in close + if self.fp: +AttributeError: 'HTTPResponse' object has no attribute 'fp' +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request ... ok +gabbi.tests.test_intercept.self_non_json_response_failure.test_request +gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... expected failure +gabbi.tests.test_intercept.self_non_json_response_failure.test_request +gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request +gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request ... ok +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request ... ok +gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request +gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request ... ok +gabbi.tests.test_intercept.failskip_non_existent_header.test_request +gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... expected failure +gabbi.tests.test_intercept.failskip_non_existent_header.test_request +gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... ok +#### get simple page #### +> GET http://ca4e876b-9c79-46ee-9adc-d27e53a0fab3:8001/ +> x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" -} < 200 OK -< X-Gabbi-method: POST +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ -< Location: http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/ - -{ - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" -} - -#### set key and value #### -> GET http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/jsonator?key=1&value=10 -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< Content-Type: application/json - -{ - "1": "10" -} - -#### check key and value #### -> GET http://866603e0-7cd3-4139-b580-5ab9c65ceee2:8001/jsonator?key=1&value=10 -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< Content-Type: application/json +< X-Gabbi-url: http://ca4e876b-9c79-46ee-9adc-d27e53a0fab3:8001/ -{ - "1": "10" -} +{} #### post data #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3325,8 +3841,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "one_string": "1", @@ -3335,7 +3851,7 @@ } #### use data #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3348,8 +3864,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "one_string": "1", @@ -3358,7 +3874,7 @@ } #### from environ #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3369,15 +3885,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "one_environ": 1 } #### with list #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3390,8 +3906,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ [ 1, @@ -3400,7 +3916,7 @@ ] #### object with list #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3420,8 +3936,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "collection": [ @@ -3437,7 +3953,7 @@ } #### post extra data #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3466,8 +3982,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "a": 1, @@ -3492,7 +4008,7 @@ } #### check posted data #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3521,8 +4037,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "a": 1, @@ -3547,7 +4063,7 @@ } #### Post again and check the results #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3576,8 +4092,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "a": 1, @@ -3602,7 +4118,7 @@ } #### Post again and check the results (reversed) #### -> POST http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3631,8 +4147,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ -< Location: http://b34e231e-a596-4bd0-936e-f2398c07e0d3:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ { "a": 1, @@ -3654,47 +4170,31 @@ "more_key": 1 } } -}gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests -gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests ... ok -gabbi.tests.test_driver.DriverTest.test_driver_prefix -gabbi.tests.test_driver.DriverTest.test_driver_prefix ... ok -gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception -gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception ... ok -gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop -gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop ... ok -gabbi.tests.test_intercept.queryparams_joined_params.test_request -gabbi.tests.test_intercept.queryparams_joined_params.test_request ... ok -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files -gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset ... ok -#### get simple page #### -> GET http://36117e50-0ff2-4729-95d1-e75a3afbd62c:8001/ -> x-random-header: ya +} + +#### string internal replace #### +> POST http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "endpoint_resp": "/api/0.1/item/1", + "endpoint_var": "/api/0.1/item/1" +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://36117e50-0ff2-4729-95d1-e75a3afbd62c:8001/ +< X-Gabbi-url: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ +< Location: http://ec3a3b34-0616-492d-9bec-e942e641d13a:8001/ -{} +{ + "endpoint_resp": "/api/0.1/item/1", + "endpoint_var": "/api/0.1/item/1" +} #### default casts #### -> POST http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ +> POST http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3710,8 +4210,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ -< Location: http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ +< X-Gabbi-url: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +< Location: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ { "int": 1, @@ -3722,7 +4222,7 @@ } #### cast to string #### -> POST http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ +> POST http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3734,72 +4234,142 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ -< Location: http://fb2b98e3-6ff8-408d-aeef-4fe135516664:8001/ +< X-Gabbi-url: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +< Location: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ { "string": "2" } -#### get simple page #### -> GET http://f9a4e54e-3647-47ea-a410-50e743535936:8001/ -> x-random-header: ya +#### json set up #### +> POST http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +> content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false +} < 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f9a4e54e-3647-47ea-a410-50e743535936:8001/ +< X-Gabbi-method: POST +< Content-Type: application/json +< X-Gabbi-url: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +< Location: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ -{} +{ + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false +}gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... expected failure +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... ok +gabbi.tests.test_intercept.casting_historic_casted_json.test_request +gabbi.tests.test_intercept.casting_historic_casted_json.test_request ... ok +gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request +gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request ... ok -#### json encoded value from disk #### -> POST http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ + +#### send casted json #### +> POST http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ -< Location: http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +< Location: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } -#### json parital from disk #### -> POST http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ +#### historic casted json #### +> POST http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ -< Location: http://4a313e39-01a7-4a43-8a25-17e7299cfd4d:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ +< Location: http://612a735f-c1a6-4a2e-a809-09c34bd59654:8001/ { - "type": "cat", - "sound": "meow" + "casted": 2 } +gabbi.tests.test_intercept.coerce_object_with_list.test_request +gabbi.tests.test_intercept.coerce_object_with_list.test_request ... ok +gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request +gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key +gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors +gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple ... ok +#### get simple page #### +> GET http://67266628-9f3c-4839-80f8-cd0a3889f52f:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://67266628-9f3c-4839-80f8-cd0a3889f52f:8001/ + +{} + #### left side json one #### -> POST http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ +> POST http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3811,8 +4381,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ -< Location: http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ +< X-Gabbi-url: http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ +< Location: http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ { "alpha": "alpha1", @@ -3820,7 +4390,7 @@ } #### expand left side #### -> POST http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ +> POST http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3832,8 +4402,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ -< Location: http://b0a97959-1f1c-4f88-9c89-97cb76fc8981:8001/ +< X-Gabbi-url: http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ +< Location: http://75973db6-6e45-4f36-a18e-65a605ba234e:8001/ { "alpha1": "alpha", @@ -3841,7 +4411,7 @@ } #### post data #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3854,8 +4424,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "one_string": "1", @@ -3864,7 +4434,7 @@ } #### use data #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3877,8 +4447,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "one_string": "1", @@ -3887,7 +4457,7 @@ } #### from environ #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3898,15 +4468,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "one_environ": 1 } #### with list #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3919,8 +4489,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ [ 1, @@ -3929,7 +4499,7 @@ ] #### object with list #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3949,8 +4519,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "collection": [ @@ -3966,7 +4536,7 @@ } #### post extra data #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -3995,8 +4565,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "a": 1, @@ -4021,7 +4591,7 @@ } #### check posted data #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4050,8 +4620,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "a": 1, @@ -4076,7 +4646,7 @@ } #### Post again and check the results #### -> POST http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4105,8 +4675,63 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ -< Location: http://9e6ec28a-e541-44d1-8759-c4bf078d2b11:8001/ +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ + +{ + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } +} + +#### Post again and check the results (reversed) #### +> POST http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ +< Location: http://dbec6474-3891-4473-9b30-90881b3421d3:8001/ { "a": 1, @@ -4131,7 +4756,7 @@ } #### default casts #### -> POST http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +> POST http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4147,8 +4772,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ -< Location: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +< X-Gabbi-url: http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ +< Location: http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ { "int": 1, @@ -4159,7 +4784,7 @@ } #### cast to string #### -> POST http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +> POST http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4171,218 +4796,110 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ -< Location: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +< X-Gabbi-url: http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ +< Location: http://f5af428c-6494-41f3-8d9f-ac19020b30fe:8001/ { "string": "2" } -#### json set up ####gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon -gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 -gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_port -gabbi.tests.test_utils.CreateURLTest.test_create_url_port ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix -gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query -gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_simple -gabbi.tests.test_utils.CreateURLTest.test_create_url_simple ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple ... ok - - -gabbi.tests.test_intercept.json-extensions_test_filtered.test_request -gabbi.tests.test_intercept.json-extensions_test_filtered.test_request ... ok -gabbi.tests.test_intercept.casting_historic_casted_json.test_request -gabbi.tests.test_intercept.casting_historic_casted_json.test_request ... ok -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... expected failure -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... ok -gabbi.tests.test_intercept.contenttype_patch_content-type.test_request -gabbi.tests.test_intercept.contenttype_patch_content-type.test_request ... ok +gabbi.tests.test_intercept.coerce_check_posted_data.test_request +gabbi.tests.test_intercept.coerce_check_posted_data.test_request ... ok gabbi.tests.test_intercept.casting_json_set_up.test_request gabbi.tests.test_intercept.casting_json_set_up.test_request ... ok -gabbi.tests.test_intercept.backref_post_some_more_json.test_request -gabbi.tests.test_intercept.backref_post_some_more_json.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_custom_response_handler -gabbi.tests.test_runner.RunnerTest.test_custom_response_handler ... ok -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_data_dir_good -gabbi.tests.test_runner.RunnerTest.test_data_dir_good ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_exit_code -gabbi.tests.test_runner.RunnerTest.test_exit_code ... ok -gabbi.tests.test_intercept.casting_send_casted_json.test_request -gabbi.tests.test_intercept.casting_send_casted_json.test_request ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_input_files -gabbi.tests.test_runner.RunnerTest.test_input_files ... ok -gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet -gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir -gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir ... ok -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing ... ok -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml -gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml ... ok -gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting -gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", - ... ok -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers ... ok -/usr/lib/python3.13/unittest/case.py:597: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none ... ok +#### get simple page #### +> GET http://f920c920-fb62-4f37-8370-20dd4c8487c4:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://f920c920-fb62-4f37-8370-20dd4c8487c4:8001/ -> POST http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +{} + +#### left side json one #### +> POST http://22770650-1d37-44db-9200-183003cd6741:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "alpha": "alpha1", + "beta": "beta1" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ -< Location: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://22770650-1d37-44db-9200-183003cd6741:8001/ +< Location: http://22770650-1d37-44db-9200-183003cd6741:8001/ { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "alpha": "alpha1", + "beta": "beta1" } -#### send casted json #### -> POST http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +#### expand left side #### +> POST http://22770650-1d37-44db-9200-183003cd6741:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ -< Location: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://22770650-1d37-44db-9200-183003cd6741:8001/ +< Location: http://22770650-1d37-44db-9200-183003cd6741:8001/ { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta" } -#### historic casted json #### -> POST http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +#### expand environ left side #### +> POST http://22770650-1d37-44db-9200-183003cd6741:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ -< Location: http://0ed036de-1349-4cfd-9ae0-7b833f28ea86:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://22770650-1d37-44db-9200-183003cd6741:8001/ +< Location: http://22770650-1d37-44db-9200-183003cd6741:8001/ { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" } -gabbi.tests.test_intercept.backref_post_even_more_json.test_request -gabbi.tests.test_intercept.backref_post_even_more_json.test_request ... ok -gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request -gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request ... ok -gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers -gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers ... ok -#### get simple page #### -> GET http://6117bc8d-94e8-4638-b7e3-95e8cafa1af4:8001/ -> x-random-header: ya +#### set key and value #### +> GET http://22770650-1d37-44db-9200-183003cd6741:8001/jsonator?key=1&value=10 +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) < 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://6117bc8d-94e8-4638-b7e3-95e8cafa1af4:8001/ +< Content-Type: application/json -{} +{ + "1": "10" +} #### post data #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4395,8 +4912,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "one_string": "1", @@ -4405,7 +4922,7 @@ } #### use data #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4418,8 +4935,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "one_string": "1", @@ -4428,7 +4945,7 @@ } #### from environ #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4439,15 +4956,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "one_environ": 1 } #### with list #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4460,8 +4977,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ [ 1, @@ -4470,7 +4987,7 @@ ] #### object with list #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4490,8 +5007,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "collection": [ @@ -4507,7 +5024,7 @@ } #### post extra data #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4536,8 +5053,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "a": 1, @@ -4562,7 +5079,7 @@ } #### check posted data #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +> POST http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4591,8 +5108,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ +< X-Gabbi-url: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ +< Location: http://ec711774-243d-46dc-9074-08be799ad3d9:8001/ { "a": 1, @@ -4616,179 +5133,8 @@ } } -#### Post again and check the results #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ - -{ - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } -} - -#### Post again and check the results (reversed) #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ - -{ - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } -} - -#### string internal replace #### -> POST http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "endpoint_resp": "/api/0.1/item/1", - "endpoint_var": "/api/0.1/item/1" -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ -< Location: http://cd63fa0e-deca-4994-a6a2-dd299b15cde7:8001/ - -{ - "endpoint_resp": "/api/0.1/item/1", - "endpoint_var": "/api/0.1/item/1" -} - -gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file -gabbi.tests.test_load_data_file.DataFileTest.test_load_file ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory ... ok -gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail -gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail ... ok -gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request -gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url ... ok #### default casts #### -> POST http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +> POST http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4804,8 +5150,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ -< Location: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +< X-Gabbi-url: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +< Location: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ { "int": 1, @@ -4816,7 +5162,7 @@ } #### cast to string #### -> POST http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +> POST http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4828,15 +5174,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ -< Location: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +< X-Gabbi-url: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +< Location: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ { "string": "2" } #### json set up #### -> POST http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +> POST http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4852,8 +5198,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ -< Location: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +< X-Gabbi-url: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +< Location: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ { "int": 1, @@ -4864,7 +5210,7 @@ } #### send casted json #### -> POST http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +> POST http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -4876,8 +5222,58 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ -< Location: http://0a1c4920-bc6e-4c28-9d45-f25132e248f7:8001/ +< X-Gabbi-url: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +< Location: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ + +{ + "casted": 2 +} + +#### historic casted json #### +> POST http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +> content-type: application/jsongabbi.tests.test_intercept.casting_internal_json_fail.test_request +gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... expected failure +gabbi.tests.test_intercept.casting_internal_json_fail.test_request +gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... ok +gabbi.tests.test_intercept.backref_post_some_json.test_request +gabbi.tests.test_intercept.backref_post_some_json.test_request ... ok +gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url ... ok + +> accept: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "casted": 2 +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json +< X-Gabbi-url: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ +< Location: http://7cf65226-6fa3-4601-b0f3-86b795c732a3:8001/ { "casted": 2 @@ -4885,42 +5281,52 @@ ---------------------------------------------------------------------- -Ran 314 tests in 45.622s +Ran 314 tests in 19.590s OK (skipped=2, expected failures=15) + stestr slowest -Test id Runtime (s) --------------------------------------------------------------------------------------- ----------- -gabbi.tests.test_driver.DriverTest.test_build_require_ssl 23.278 -gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files 13.407 -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request 12.424 -gabbi.tests.test_intercept.coerce_check_posted_data.test_request 11.532 -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request 9.862 -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request 9.411 -gabbi.tests.test_intercept.backref_get_a_historical_response.test_request 8.521 -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request 7.716 -gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request 7.003 -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request 5.960 +Test id Runtime (s) +------------------------------------------------------------------------------------------ ----------- +gabbi.tests.test_driver.DriverTest.test_build_require_ssl 7.760 +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request 6.026 +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request 5.482 +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request 5.085 +gabbi.tests.test_intercept.coerce_post_extra_data.test_request 2.186 +gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request 2.116 +gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request 1.992 +gabbi.tests.test_intercept.casting_internal_json_fine.test_request 1.878 +gabbi.tests.test_intercept.casting_send_casted_json.test_request 1.443 +gabbi.tests.test_intercept.self_json_derived_content_type.test_request 1.395 + rm -rf .stestr -+ [ 3.12 = disabled ] -+ cut -d. -f1 -+ echo 3.12 ++ for pyvers in ${PYTHON3S} ++ '[' 3.12 = disabled ']' +++ cut -d. -f1 +++ echo 3.12 + PYMAJOR=3 -+ echo ===> Testing with python (python3) ++ echo '===> Testing with python (python3)' ===> Testing with python (python3) -+ pwd -+ [ -d /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ] -+ [ -z /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ] -+ [ -e .stestr.conf ] -+ [ -x /usr/bin/python3-stestr ] +++ pwd ++ '[' -d /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ']' ++ '[' -z /build/reproducible-path/python-gabbi-3.0.0/debian/tmp/usr/lib/python3/dist-packages ']' ++ '[' -e .stestr.conf ']' ++ '[' -x /usr/bin/python3-stestr ']' + STESTR=stestr + rm -rf .stestr ++ PYTHON=python3.12 + subunit2pyunit -+ PYTHON=python3.12 stestr run --parallel --subunit gabbi\.tests\.(?!test_live.*|test_intercept\.prefix_get_that_link\.test_request|test_intercept\.prefix_get_relative_link\.test_request|test_intercept\.prefix_provide_a_link\.test_request) ++ stestr run --parallel --subunit 'gabbi\.tests\.(?!test_live.*|test_intercept\.prefix_get_that_link\.test_request|test_intercept\.prefix_get_relative_link\.test_request|test_intercept\.prefix_provide_a_link\.test_request)' +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", gabbi.tests.test_history.HistoryTest.test_cookie_replace_history gabbi.tests.test_history.HistoryTest.test_cookie_replace_history ... ok +gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types +gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types ... ok gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior ... ok gabbi.tests.test_history.HistoryTest.test_cookie_replace_prior_regex @@ -4939,6 +5345,8 @@ gabbi.tests.test_history.HistoryTest.test_location_replace_prior_regex ... ok /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_inner_fixture.inner_get_three.test_request +gabbi.tests.test_inner_fixture.inner_get_three.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_empty_response_handler gabbi.tests.test_handlers.HandlersTest.test_empty_response_handler ... ok gabbi.tests.test_handlers.HandlersTest.test_resonse_headers_stringify @@ -4949,6 +5357,8 @@ gabbi.tests.test_handlers.HandlersTest.test_response_headers_fail_data ... ok gabbi.tests.test_handlers.HandlersTest.test_response_headers_fail_header gabbi.tests.test_handlers.HandlersTest.test_response_headers_fail_header ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", gabbi.tests.test_handlers.HandlersTest.test_response_headers_noregex_path_match gabbi.tests.test_handlers.HandlersTest.test_response_headers_noregex_path_match ... ok gabbi.tests.test_handlers.HandlersTest.test_response_headers_noregex_path_nomatch @@ -4965,28 +5375,38 @@ gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_noregex ... ok gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_regex gabbi.tests.test_handlers.HandlersTest.test_response_headers_substitute_regex ... ok -gabbi.tests.test_history.HistoryTest.test_response_replace_prior -gabbi.tests.test_history.HistoryTest.test_response_replace_prior ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types -gabbi.tests.test_handlers.TestJSONHandlerAccept.test_many_content_types ... ok -gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex -gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception +gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception ... ok +gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop +gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop ... ok gabbi.tests.test_data_to_string.TestDataToString.testHappyPath gabbi.tests.test_data_to_string.TestDataToString.testHappyPath ... ok gabbi.tests.test_data_to_string.TestDataToString.testNoContentType gabbi.tests.test_data_to_string.TestDataToString.testNoContentType ... ok gabbi.tests.test_data_to_string.TestDataToString.testNoHandler gabbi.tests.test_data_to_string.TestDataToString.testNoHandler ... ok +gabbi.tests.test_inner_fixture.inner_get_one.test_request +gabbi.tests.test_inner_fixture.inner_get_one.test_request ... ok /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_inner_fixture.inner_get_two.test_request -gabbi.tests.test_inner_fixture.inner_get_two.test_request ... ok -gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request -gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request ... ok +gabbi.tests.test_intercept.self_get_simple_page.test_request +gabbi.tests.test_intercept.self_get_simple_page.test_request ... ok +gabbi.tests.test_history.HistoryTest.test_response_replace_prior +gabbi.tests.test_history.HistoryTest.test_response_replace_prior ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type ... ok +gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex +gabbi.tests.test_history.HistoryTest.test_response_replace_prior_regex ... ok +gabbi.tests.test_intercept.self_simple_post.test_request +gabbi.tests.test_intercept.self_simple_post.test_request ... ok +gabbi.tests.test_intercept.self_use_a_historical_location.test_request +gabbi.tests.test_intercept.self_use_a_historical_location.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request +gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request ... ok gabbi.tests.test_history.HistoryTest.test_response_replace_with_history gabbi.tests.test_history.HistoryTest.test_response_replace_with_history ... ok gabbi.tests.test_history.HistoryTest.test_url_replace_history @@ -4995,160 +5415,152 @@ gabbi.tests.test_history.HistoryTest.test_url_replace_prior ... ok gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex gabbi.tests.test_history.HistoryTest.test_url_replace_prior_regex ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_use_prior_location.test_request -gabbi.tests.test_intercept.self_use_prior_location.test_request ... ok -gabbi.tests.test_intercept.self_checklimit.test_request -gabbi.tests.test_intercept.self_checklimit.test_request ... ok -gabbi.tests.test_intercept.regex_regex_header_test.test_request -gabbi.tests.test_intercept.regex_regex_header_test.test_request ... ok gabbi.tests.test_intercept.queryparams_joined_params.test_request gabbi.tests.test_intercept.queryparams_joined_params.test_request ... ok -gabbi.tests.test_intercept.self_get_location_from_headers.test_request -gabbi.tests.test_intercept.self_get_location_from_headers.test_request ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request -gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data ... ok /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_inner_fixture.inner_get_one.test_request -gabbi.tests.test_inner_fixture.inner_get_one.test_request ... ok gabbi.tests.test_intercept.self_bogus_method.test_request gabbi.tests.test_intercept.self_bogus_method.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_dict_type ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_query_returned.test_request -gabbi.tests.test_intercept.self_query_returned.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_data ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_path gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_fail_path ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_use_a_historical_location.test_request -gabbi.tests.test_intercept.self_use_a_historical_location.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_json.test_request -gabbi.tests.test_intercept.regex_regex_string_test_json.test_request ... ok -gabbi.tests.test_intercept.skipall_a_skipped_test.test_request -gabbi.tests.test_intercept.skipall_a_skipped_test.test_request ... skipped 'entire suite skipped' -gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request -gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request ... ok -gabbi.tests.test_intercept.queryparams_unicode.test_request -gabbi.tests.test_intercept.queryparams_unicode.test_request ... ok -gabbi.tests.test_intercept.self_confirm_environ.test_request -gabbi.tests.test_intercept.self_confirm_environ.test_request ... ok +gabbi.tests.test_intercept.self_query_returned.test_request +gabbi.tests.test_intercept.self_query_returned.test_request ... ok +gabbi.tests.test_intercept.self_post_a_body.test_request +gabbi.tests.test_intercept.self_post_a_body.test_request ... ok +gabbi.tests.test_intercept.self_get_location_from_headers.test_request +gabbi.tests.test_intercept.self_get_location_from_headers.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path ... ok -gabbi.tests.test_intercept.self_test_binary_handling.test_request -gabbi.tests.test_intercept.self_test_binary_handling.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request +gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request ... ok +gabbi.tests.test_intercept.self_confirm_environ.test_request +gabbi.tests.test_intercept.self_confirm_environ.test_request ... ok +gabbi.tests.test_intercept.queryparams_simple_param.test_request +gabbi.tests.test_intercept.queryparams_simple_param.test_request ... ok gabbi.tests.test_intercept.self_post_a_body_with_query.test_request gabbi.tests.test_intercept.self_post_a_body_with_query.test_request ... ok -gabbi.tests.test_intercept.poll_poller.test_request -gabbi.tests.test_intercept.poll_poller.test_request ... ok -gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request -gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request ... ok -gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request -gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request ... ok -gabbi.tests.test_intercept.last-url_get_prior_url.test_request -gabbi.tests.test_intercept.last-url_get_prior_url.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request -gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request ... ok -gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request -gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request ... ok -gabbi.tests.test_intercept.last-url_add_some_query_params.test_request -gabbi.tests.test_intercept.last-url_add_some_query_params.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail ... ok -gabbi.tests.test_intercept.queryparams_multi_params.test_request -gabbi.tests.test_intercept.queryparams_multi_params.test_request ... ok +gabbi.tests.test_intercept.skipall_a_skipped_test.test_request +gabbi.tests.test_intercept.skipall_a_skipped_test.test_request ... skipped 'entire suite skipped' +gabbi.tests.test_intercept.poll_poller_fail.test_request +gabbi.tests.test_intercept.poll_poller_fail.test_request ... expected failure +gabbi.tests.test_intercept.poll_poller_fail.test_request +gabbi.tests.test_intercept.poll_poller_fail.test_request ... ok +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... expected failure +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request +gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... ok +gabbi.tests.test_intercept.self_test_pluggable_response.test_request +gabbi.tests.test_intercept.self_test_pluggable_response.test_request ... ok gabbi.tests.test_intercept.self_fail_pluggable_response.test_request gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... expected failure gabbi.tests.test_intercept.self_fail_pluggable_response.test_request gabbi.tests.test_intercept.self_fail_pluggable_response.test_request ... ok -gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request -gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request ... ok -gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_three.test_request -gabbi.tests.test_intercept.fixture_just_to_see_three.test_request ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_from_disk_json_path_fail ... ok +gabbi.tests.test_intercept.method-shortcut_simple_post.test_request +gabbi.tests.test_intercept.method-shortcut_simple_post.test_request ... ok +gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request +gabbi.tests.test_intercept.last-url_now_last_url_does_not_have_those_query_params.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_inner_fixture.inner_get_two.test_request +gabbi.tests.test_inner_fixture.inner_get_two.test_request ... ok +gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request +gabbi.tests.test_intercept.verbosity_confirm_notempty.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex ... ok -gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request -gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request ... ok -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... expected failure +gabbi.tests.test_intercept.queryparams_url_in_param.test_request +gabbi.tests.test_intercept.queryparams_url_in_param.test_request ... ok +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... expected failure +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request +gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_simple_get.test_request +gabbi.tests.test_intercept.method-shortcut_simple_get.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_number gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_number ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request -gabbi.tests.test_intercept.self_confirm_environ_no_key_fail.test_request ... ok -gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request -gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request ... ok gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request gabbi.tests.test_intercept.last-url_last_with_adjusted_parameters.test_request ... ok -gabbi.tests.test_intercept.self_get_ssl_page.test_request -gabbi.tests.test_intercept.self_get_ssl_page.test_request ... ok +gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request +gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request ... ok +gabbi.tests.test_intercept.self_json_derived_content_type.test_request +gabbi.tests.test_intercept.self_json_derived_content_type.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_json.test_request +gabbi.tests.test_intercept.regex_regex_string_test_json.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_match gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_match ... ok -gabbi.tests.test_intercept.failskip_wrong_status.test_request -gabbi.tests.test_intercept.failskip_wrong_status.test_request ... expected failure -gabbi.tests.test_intercept.failskip_wrong_status.test_request -gabbi.tests.test_intercept.failskip_wrong_status.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request +gabbi.tests.test_intercept.self_get_historical_location_from_headers.test_request ... ok +gabbi.tests.test_intercept.regex_regex_header_test.test_request +gabbi.tests.test_intercept.regex_regex_header_test.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request +gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_nomatch gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_regex_path_nomatch ... ok -gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request -gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request ... ok +gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request +gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request ... ok +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... expected failure +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request +gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_esc_regex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_esc_regex ... ok -gabbi.tests.test_intercept.host-header_host_without_ssl.test_request -gabbi.tests.test_intercept.host-header_host_without_ssl.test_request ... ok -gabbi.tests.test_intercept.json-extensions_test_filtered.test_request -gabbi.tests.test_intercept.json-extensions_test_filtered.test_request ... ok -gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request -gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request ... ok -gabbi.tests.test_intercept.host-header_ssl_no_host.test_request -gabbi.tests.test_intercept.host-header_ssl_no_host.test_request ... ok -gabbi.tests.test_intercept.failskip_skip_me.test_request -gabbi.tests.test_intercept.failskip_skip_me.test_request ... skipped "Skipping for now because we can't do it" -gabbi.tests.test_intercept.cookie_get_a_cookie.test_request -gabbi.tests.test_intercept.cookie_get_a_cookie.test_request ... ok -gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request ... ok -gabbi.tests.test_intercept.contenttype_put_content-type.test_request -gabbi.tests.test_intercept.contenttype_put_content-type.test_request ... ok -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request ... ok +gabbi.tests.test_intercept.self_use_prior_location.test_request +gabbi.tests.test_intercept.self_use_prior_location.test_request ... ok +gabbi.tests.test_intercept.poll_create_a_thing.test_request +gabbi.tests.test_intercept.poll_create_a_thing.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see.test_request +gabbi.tests.test_intercept.fixture_just_to_see.test_request ... ok +gabbi.tests.test_intercept.data_load_data_list.test_request +gabbi.tests.test_intercept.data_load_data_list.test_request ... ok +gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request +gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request ... ok +gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request +gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request +gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_noregex gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_noregex ... ok -gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request -gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request ... ok -gabbi.tests.test_intercept.contenttype_patch_content-type.test_request -gabbi.tests.test_intercept.contenttype_patch_content-type.test_request ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_intercept.self_json_derived_content_type.test_request -gabbi.tests.test_intercept.self_json_derived_content_type.test_request ... ok -gabbi.tests.test_intercept.self_test_pluggable_response.test_request -gabbi.tests.test_intercept.self_test_pluggable_response.test_request ... ok -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex -gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex ... ok -gabbi.tests.test_intercept.json-extensions_test_len.test_request -gabbi.tests.test_intercept.json-extensions_test_len.test_request ... ok +gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request +gabbi.tests.test_intercept.method-shortcut_arbitrary_method.test_request ... ok +gabbi.tests.test_intercept.host-header_ssl_with_host.test_request +gabbi.tests.test_intercept.host-header_ssl_with_host.test_request ... ok gabbi.tests.test_intercept.host-header_ssl_with_capitalised_host.test_request gabbi.tests.test_intercept.host-header_ssl_with_capitalised_host.test_request ... ok -gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request ... ok -gabbi.tests.test_intercept.self_non_json_response_failure.test_request -gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... expected failure -gabbi.tests.test_intercept.self_non_json_response_failure.test_request -gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... ok +gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_not_there_basic.test_request ... ok +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex +gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_substitution_regex ... ok +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... expected failure +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request +gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... ok +gabbi.tests.test_intercept.queryparams_multi_params.test_request +gabbi.tests.test_intercept.queryparams_multi_params.test_request ... ok +gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request +gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request ... ok +gabbi.tests.test_intercept.contenttype_post_content-type.test_request +gabbi.tests.test_intercept.contenttype_post_content-type.test_request ... ok +gabbi.tests.test_intercept.contenttype_patch_content-type.test_request +gabbi.tests.test_intercept.contenttype_patch_content-type.test_request ... ok +gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request +gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request ... ok +gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request +gabbi.tests.test_intercept.last-url_get_that_same_url_again.test_request ... ok +gabbi.tests.test_intercept.queryparams_unicode.test_request +gabbi.tests.test_intercept.queryparams_unicode.test_request ... ok +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... expected failure +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request +gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request ... ok +gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request +gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request ... ok gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_yamlhandler gabbi.tests.test_handlers.HandlersTest.test_response_json_paths_yamlhandler ... ok gabbi.tests.test_handlers.HandlersTest.test_response_string_list_type @@ -5161,192 +5573,120 @@ gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_output ... ok gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_payload gabbi.tests.test_handlers.HandlersTest.test_response_strings_fail_big_payload ... ok -gabbi.tests.test_intercept.poll_loop_location.test_request -gabbi.tests.test_intercept.poll_loop_location.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request -gabbi.tests.test_intercept.regex_regex_string_test_multiline.test_request ... ok -gabbi.tests.test_inner_fixture.inner_get_three.test_request -gabbi.tests.test_inner_fixture.inner_get_three.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request -gabbi.tests.test_intercept.regex_regex_string_test_mix.test_request ... ok +gabbi.tests.test_intercept.failskip_non_existent_header.test_request +gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... expected failure +gabbi.tests.test_intercept.failskip_non_existent_header.test_request +gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... ok +gabbi.tests.test_intercept.cookie_get_a_cookie.test_request +gabbi.tests.test_intercept.cookie_get_a_cookie.test_request ... ok +gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_put_no_content-type.test_request ... ok gabbi.tests.test_intercept.json-left-side_check_key_and_value.test_request gabbi.tests.test_intercept.json-left-side_check_key_and_value.test_request ... ok -gabbi.tests.test_intercept.data_load_json_file.test_request -gabbi.tests.test_intercept.data_load_json_file.test_request ... ok -gabbi.tests.test_intercept.poll_poller_fail.test_request -gabbi.tests.test_intercept.poll_poller_fail.test_request ... expected failure -gabbi.tests.test_intercept.poll_poller_fail.test_request -gabbi.tests.test_intercept.poll_poller_fail.test_request ... ok -gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request -gabbi.tests.test_intercept.json-left-side_left_side_json_one.test_request ... ok -gabbi.tests.test_intercept.queryparams_url_in_param.test_request -gabbi.tests.test_intercept.queryparams_url_in_param.test_request ... ok -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... expected failure -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request -gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_fail.test_request ... ok -gabbi.tests.test_intercept.self_post_a_body.test_request -gabbi.tests.test_intercept.self_post_a_body.test_request ... ok -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... expected failure -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request -gabbi.tests.test_intercept.self_xml_derived_content_type.test_request ... ok -gabbi.tests.test_intercept.coerce_from_environ.test_request -gabbi.tests.test_intercept.coerce_from_environ.test_request ... ok -gabbi.tests.test_intercept.data_load_data_dictionary.test_request -gabbi.tests.test_intercept.data_load_data_dictionary.test_request ... ok -gabbi.tests.test_intercept.poll_create_a_thing.test_request -gabbi.tests.test_intercept.poll_create_a_thing.test_request ... ok -gabbi.tests.test_intercept.data_partial_json_from_disk.test_request -gabbi.tests.test_intercept.data_partial_json_from_disk.test_request ... ok -gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request -gabbi.tests.test_intercept.regex_regex_jsonpath_test.test_request ... ok -gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request -gabbi.tests.test_intercept.last-url_get_a_historical_url.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_simple_get.test_request -gabbi.tests.test_intercept.method-shortcut_simple_get.test_request ... ok -gabbi.tests.test_intercept.data_load_image_file.test_request -gabbi.tests.test_intercept.data_load_image_file.test_request ... ok -gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request -gabbi.tests.test_intercept.cookie_use_that_cookie_in_a_url.test_request ... ok -gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request -gabbi.tests.test_intercept.jsonbody_test_empty_dict.test_request ... ok -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... expected failure -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request -gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... ok -gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request -gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request ... ok -gabbi.tests.test_intercept.contenttype_post_content-type.test_request -gabbi.tests.test_intercept.contenttype_post_content-type.test_request ... ok -gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request -gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request ... ok +gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request +gabbi.tests.test_intercept.json-left-side_expand_left_side.test_request ... ok +gabbi.tests.test_intercept.failskip_skip_me.test_request +gabbi.tests.test_intercept.failskip_skip_me.test_request ... skipped "Skipping for now because we can't do it" +gabbi.tests.test_intercept.host-header_host_without_ssl.test_request +gabbi.tests.test_intercept.host-header_host_without_ssl.test_request ... ok gabbi.tests.test_intercept.header-key_header_named_http.test_request gabbi.tests.test_intercept.header-key_header_named_http.test_request ... ok +gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request +gabbi.tests.test_intercept.self_inheritance_of_defaults.test_request ... ok +gabbi.tests.test_intercept.data_post_data_for_next.test_request +gabbi.tests.test_intercept.data_post_data_for_next.test_request ... ok +gabbi.tests.test_intercept.failskip_wrong_status.test_request +gabbi.tests.test_intercept.failskip_wrong_status.test_request ... expected failure +gabbi.tests.test_intercept.failskip_wrong_status.test_request +gabbi.tests.test_intercept.failskip_wrong_status.test_request ... ok +gabbi.tests.test_intercept.contenttype_put_content-type.test_request +gabbi.tests.test_intercept.contenttype_put_content-type.test_request ... ok +gabbi.tests.test_intercept.self_checklimit.test_request +gabbi.tests.test_intercept.self_checklimit.test_request ... ok +gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request +gabbi.tests.test_intercept.last-url_get_a_url_the_first_time.test_request ... ok +gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request +gabbi.tests.test_intercept.last-url_get_it_a_third_time.test_request ... ok +gabbi.tests.test_intercept.last-url_add_some_query_params.test_request +gabbi.tests.test_intercept.last-url_add_some_query_params.test_request ... ok +gabbi.tests.test_intercept.json-extensions_test_len.test_request +gabbi.tests.test_intercept.json-extensions_test_len.test_request ... ok +gabbi.tests.test_intercept.self_non_json_response_failure.test_request +gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... expected failure +gabbi.tests.test_intercept.self_non_json_response_failure.test_request +gabbi.tests.test_intercept.self_non_json_response_failure.test_request ... ok +gabbi.tests.test_intercept.host-header_ssl_no_host.test_request +gabbi.tests.test_intercept.host-header_ssl_no_host.test_request ... ok +gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request +gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request ... ok +gabbi.tests.test_intercept.poll_poller.test_request +gabbi.tests.test_intercept.poll_poller.test_request ... ok +gabbi.tests.test_intercept.last-url_get_prior_url.test_request +gabbi.tests.test_intercept.last-url_get_prior_url.test_request ... ok +gabbi.tests.test_intercept.data_load_data_dictionary.test_request +gabbi.tests.test_intercept.data_load_data_dictionary.test_request ... ok +gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request +gabbi.tests.test_intercept.cookie_use_a_historical_cookie.test_request ... ok +gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request +gabbi.tests.test_intercept.json-right-side_json_encoded_value_from_disk.test_request ... ok +gabbi.tests.test_intercept.data_load_json_file.test_request +gabbi.tests.test_intercept.data_load_json_file.test_request ... ok +gabbi.tests.test_intercept.backref_post_some_more_json.test_request +gabbi.tests.test_intercept.backref_post_some_more_json.test_request ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port +gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon +gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 +gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_port +gabbi.tests.test_utils.CreateURLTest.test_create_url_port ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix +gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query +gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_simple +gabbi.tests.test_utils.CreateURLTest.test_create_url_simple ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl ... ok +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 +gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 ... ok gabbi.tests.test_intercept.json-extensions_test_sort.test_request gabbi.tests.test_intercept.json-extensions_test_sort.test_request ... ok -gabbi.tests.test_intercept.host-header_ssl_with_host.test_request -gabbi.tests.test_intercept.host-header_ssl_with_host.test_request ... ok -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... expected failure -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request -gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see.test_request -gabbi.tests.test_intercept.fixture_just_to_see.test_request ... ok gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... expected failure gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request gabbi.tests.test_intercept.forbiddenheaders_header_is_there_fail_case_insensitive.test_request ... ok -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... expected failure -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request -gabbi.tests.test_intercept.self_test_exception_wrapper.test_request ... ok -gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request -gabbi.tests.test_intercept.json-left-side_expand_environ_left_side.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_two.test_request -gabbi.tests.test_intercept.fixture_just_to_see_two.test_request ... ok -gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request -gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request ... ok -gabbi.tests.test_intercept.failskip_non_existent_header.test_request -gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... expected failure -gabbi.tests.test_intercept.failskip_non_existent_header.test_request -gabbi.tests.test_intercept.failskip_non_existent_header.test_request ... ok -gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request -gabbi.tests.test_intercept.regex_regex_string_test_splat.test_request ... ok -gabbi.tests.test_intercept.queryparams_simple_param.test_request -gabbi.tests.test_intercept.queryparams_simple_param.test_request ... ok -gabbi.tests.test_intercept.data_load_data_list.test_request -gabbi.tests.test_intercept.data_load_data_list.test_request ... ok -gabbi.tests.test_intercept.casting_default_casts.test_request -gabbi.tests.test_intercept.casting_default_casts.test_request ... ok -gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request -gabbi.tests.test_intercept.queryparams_replacers_in_params.test_request ... ok -gabbi.tests.test_intercept.data_load_encoded_text.test_request -gabbi.tests.test_intercept.data_load_encoded_text.test_request ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key -gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error -gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last -gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors -gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required ... ok -gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required -gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params ... ok -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset -gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset ... ok -#### get simple page #### -> GET http://dbf6f9b4-8f04-4211-969c-1cee5ce2231b:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dbf6f9b4-8f04-4211-969c-1cee5ce2231b:8001/ - -{} - -#### left side json one #### -> POST http://cd058ec3-d391-4af7-8d1a-adb3f43ca250:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "alpha": "alpha1", - "beta": "beta1" -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cd058ec3-d391-4af7-8d1a-adb3f43ca250:8001/ -< Location: http://cd058ec3-d391-4af7-8d1a-adb3f43ca250:8001/ - -{ - "alpha": "alpha1", - "beta": "beta1" -} - -gabbi.tests.test_intercept.method-shortcut_simple_post.test_request -gabbi.tests.test_intercept.method-shortcut_simple_post.test_request ... ok -gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request -gabbi.tests.test_intercept.jsonbody_test_fully_body.test_request ... ok -gabbi.tests.test_intercept.casting_internal_json_fine.test_request -gabbi.tests.test_intercept.casting_internal_json_fine.test_request ... ok -gabbi.tests.test_intercept.coerce_with_list.test_request -gabbi.tests.test_intercept.coerce_with_list.test_request ... ok +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request +gabbi.tests.test_intercept.disable-response-handler_get_some_not_json_gloss.test_request ... ok +gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_post_no_content-type.test_request ... ok +gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request +gabbi.tests.test_intercept.json-right-side_json_parital_from_disk.test_request ... ok +gabbi.tests.test_intercept.data_json_value_from_disk.test_request +gabbi.tests.test_intercept.data_json_value_from_disk.test_request ... ok gabbi.tests.test_intercept.coerce_use_data.test_request gabbi.tests.test_intercept.coerce_use_data.test_request ... ok -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... expected failure -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... ok -gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request -gabbi.tests.test_intercept.jsonbody_test_empty_list.test_request ... ok +gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request +gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request ... ok +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... expected failure +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request +gabbi.tests.test_intercept.cookie_confirm_no_cookies_causes_error.test_request ... ok +gabbi.tests.test_intercept.data_partial_json_from_disk.test_request +gabbi.tests.test_intercept.data_partial_json_from_disk.test_request ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request ... ok #### get simple page #### -> GET http://fc2ae223-e1ed-4b1b-8438-84933353c161:8001/ +> GET http://a7bb6815-1cd6-49be-8b79-6eaa82b2d342:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5354,60 +5694,84 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://fc2ae223-e1ed-4b1b-8438-84933353c161:8001/ +< X-Gabbi-url: http://a7bb6815-1cd6-49be-8b79-6eaa82b2d342:8001/ {} -#### left side json one #### -> POST http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ +#### yaml encoded value from disk #### +> POST http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha": "alpha1", - "beta": "beta1" + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ -< Location: http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ +< X-Gabbi-url: http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere +< Location: http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere { - "alpha": "alpha1", - "beta": "beta1" + "foo": { + "b\u00e1r": 1 + } } -#### expand left side #### -> POST http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ +#### json encoded value from disk #### +> POST http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta" + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ -< Location: http://0933c0e8-dfa1-4cb5-8737-11343d306c1a:8001/ +< X-Gabbi-url: http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere +< Location: http://6d21059a-0e57-4841-97ab-b9378583de9f:8001/somewhere { - "alpha1": "alpha", - "beta1": "beta" + "foo": { + "b\u00e1r": 1 + } } -gabbi.tests.test_intercept.backref_post_some_json.test_request -gabbi.tests.test_intercept.backref_post_some_json.test_request ... ok -gabbi.tests.test_utils.BinaryTypesTest.test_binary -gabbi.tests.test_utils.BinaryTypesTest.test_binary ... ok -gabbi.tests.test_utils.BinaryTypesTest.test_not_binary -gabbi.tests.test_utils.BinaryTypesTest.test_not_binary ... ok +gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request +gabbi.tests.test_intercept.json-left-side_set_key_and_value.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_two.test_request +gabbi.tests.test_intercept.fixture_just_to_see_two.test_request ... ok +gabbi.tests.test_intercept.data_load_encoded_text.test_request +gabbi.tests.test_intercept.data_load_encoded_text.test_request ... ok +gabbi.tests.test_intercept.json-extensions_test_filtered.test_request +gabbi.tests.test_intercept.json-extensions_test_filtered.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_one.test_request +gabbi.tests.test_intercept.fixture_just_to_see_one.test_request ... ok +gabbi.tests.test_intercept.coerce_object_with_list.test_request +gabbi.tests.test_intercept.coerce_object_with_list.test_request ... ok +gabbi.tests.test_intercept.coerce_post_data.test_request +gabbi.tests.test_intercept.coerce_post_data.test_request ... ok +gabbi.tests.test_intercept.casting_cast_to_string.test_request +gabbi.tests.test_intercept.casting_cast_to_string.test_request ... ok +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... expected failure +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request +gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... ok +gabbi.tests.test_intercept.casting_default_casts.test_request +gabbi.tests.test_intercept.casting_default_casts.test_request ... ok +gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail +gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail ... ok +gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color +gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color ... ok #### get simple page #### -> GET http://2aab4afb-e433-480e-ae0d-47929366f755:8001/ +> GET http://fa59d56c-8d2e-42f8-875d-e4f5ab56b02e:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5415,155 +5779,207 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://2aab4afb-e433-480e-ae0d-47929366f755:8001/ +< X-Gabbi-url: http://fa59d56c-8d2e-42f8-875d-e4f5ab56b02e:8001/ {} -#### left side json one #### -> POST http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +#### post data #### +> POST http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha": "alpha1", - "beta": "beta1" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ -< Location: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +< X-Gabbi-url: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ +< Location: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ { - "alpha": "alpha1", - "beta": "beta1" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### expand left side #### -> POST http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +#### use data #### +> POST http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ -< Location: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +< X-Gabbi-url: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ +< Location: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ { - "alpha1": "alpha", - "beta1": "beta" + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### expand environ left side #### -> POST http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +#### from environ #### +> POST http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" + "one_environ": 1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ -< Location: http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/ +< X-Gabbi-url: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ +< Location: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ { - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" + "one_environ": 1 } -#### set key and value #### -> GET http://38dc6ec8-09ad-465e-8630-8e86b81d391b:8001/jsonator?key=1&value=10 +#### with list #### +> POST http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +[ + 1, + 2, + "3" +] < 200 OK -< Content-Type: application/json +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ +< Location: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ -{ - "1": "10" -} +[ + 1, + 2, + "3" +] -#### post data #### -> POST http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +#### object with list #### +> POST http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "collection": [ + { + "alpha": 1, + "beta": "max" + }, + { + "alpha": 2, + "beta": "climb" + } + ] } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ -< Location: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +< X-Gabbi-url: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ +< Location: http://62d6595c-997d-4641-9a40-55f5223da90e:8001/ { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "collection": [ + { + "alpha": 1, + "beta": "max" + }, + { + "alpha": 2, + "beta": "climb" + } + ] } -#### use data #### -> POST http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +#### default casts #### +> POST http://0fc3ceea-a567-4dc5-a2a1-9d1e34288abf:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ -< Location: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://0fc3ceea-a567-4dc5-a2a1-9d1e34288abf:8001/ +< Location: http://0fc3ceea-a567-4dc5-a2a1-9d1e34288abf:8001/ { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } -#### from environ #### -> POST http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +gabbi.tests.test_intercept.data_load_image_file.test_request +gabbi.tests.test_intercept.data_load_image_file.test_request ... ok +gabbi.tests.test_intercept.casting_json_set_up.test_request +gabbi.tests.test_intercept.casting_json_set_up.test_request ... ok +gabbi.tests.test_intercept.coerce_from_environ.test_request +gabbi.tests.test_intercept.coerce_from_environ.test_request ... ok +gabbi.tests.test_intercept.casting_historic_casted_json.test_request +gabbi.tests.test_intercept.casting_historic_casted_json.test_request ... ok +#### get simple page #### +> GET http://8bfeaab3-9ce7-4da5-a10b-78acd3e382db:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://8bfeaab3-9ce7-4da5-a10b-78acd3e382db:8001/ + +{} + +#### left side json one #### +> POST http://2a5508b4-3383-4a07-809a-9dbb2d9ef4be:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "one_environ": 1 + "alpha": "alpha1", + "beta": "beta1" } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ -< Location: http://e4f19fd9-542d-4f19-997f-ff98550269be:8001/ +< X-Gabbi-url: http://2a5508b4-3383-4a07-809a-9dbb2d9ef4be:8001/ +< Location: http://2a5508b4-3383-4a07-809a-9dbb2d9ef4be:8001/ { - "one_environ": 1 + "alpha": "alpha1", + "beta": "beta1" } #### default casts #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +> POST http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5579,8 +5995,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +< X-Gabbi-url: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ +< Location: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ { "int": 1, @@ -5591,7 +6007,7 @@ } #### cast to string #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +> POST http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5603,15 +6019,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +< X-Gabbi-url: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ +< Location: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ { "string": "2" } #### json set up #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +> POST http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5627,8 +6043,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +< X-Gabbi-url: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ +< Location: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ { "int": 1, @@ -5639,7 +6055,7 @@ } #### send casted json #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +> POST http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5651,15 +6067,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +< X-Gabbi-url: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ +< Location: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ { "casted": 2 } #### historic casted json #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +> POST http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5671,35 +6087,43 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ +< X-Gabbi-url: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ +< Location: http://160cf498-cb9b-4ecf-8bf7-aaab3f6e0c3f:8001/ { "casted": 2 } -#### internal json fine #### -> POST http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -> content-type: application/json -> accept: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "casted": "in this 2 is not errors" -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ -< Location: http://e30083ea-2e0a-4f48-9966-6fe46b61f911:8001/ - -{ - "casted": "in this 2 is not errors" -} - -gabbi.tests.test_intercept.coerce_object_with_list.test_request -gabbi.tests.test_intercept.coerce_object_with_list.test_request ... ok +gabbi.tests.test_intercept.coerce_with_list.test_request +gabbi.tests.test_intercept.coerce_with_list.test_request ... ok +gabbi.tests.test_intercept.casting_internal_json_fine.test_request +gabbi.tests.test_intercept.casting_internal_json_fine.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_driver.DriverTest.test_build_require_ssl +gabbi.tests.test_driver.DriverTest.test_build_require_ssl ... ok +gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept +gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_target +gabbi.tests.test_driver.DriverTest.test_build_url_target ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl +gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl ... ok +gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test +gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test ... ok +gabbi.tests.test_intercept.casting_send_casted_json.test_request +gabbi.tests.test_intercept.casting_send_casted_json.test_request ... ok +gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host +gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host ... ok +gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests +gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests ... ok +gabbi.tests.test_intercept.coerce_post_extra_data.test_request +gabbi.tests.test_intercept.coerce_post_extra_data.test_request ... ok +gabbi.tests.test_driver.DriverTest.test_driver_prefix +gabbi.tests.test_driver.DriverTest.test_driver_prefix ... ok +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... expected failure +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_end.test_request ... ok gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params gabbi.tests.test_parse_url.UrlParseTest.test_add_query_params ... ok gabbi.tests.test_parse_url.UrlParseTest.test_default_port_http @@ -5730,16 +6154,12 @@ gabbi.tests.test_parse_url.UrlParseTest.test_parse_url ... ok gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl gabbi.tests.test_parse_url.UrlParseTest.test_with_ssl ... ok -gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail -gabbi.tests.test_suite.SuiteTest.test_suite_catches_fixture_fail ... ok -gabbi.tests.test_intercept.data_json_value_from_disk.test_request -gabbi.tests.test_intercept.data_json_value_from_disk.test_request ... ok -gabbi.tests.test_intercept.data_post_data_for_next.test_request -gabbi.tests.test_intercept.data_post_data_for_next.test_request ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request ... ok +gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request +gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request ... ok +gabbi.tests.test_intercept.backref_post_some_json.test_request +gabbi.tests.test_intercept.backref_post_some_json.test_request ... ok #### get simple page #### -> GET http://61b28abc-2bc1-4437-ba15-b0fc5e47508d:8001/ +> GET http://53e98a30-9026-4e44-9085-3672e9d45015:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5747,12 +6167,84 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://61b28abc-2bc1-4437-ba15-b0fc5e47508d:8001/ +< X-Gabbi-url: http://53e98a30-9026-4e44-9085-3672e9d45015:8001/ {} +gabbi.tests.test_intercept.backref_post_even_more_json.test_request +gabbi.tests.test_intercept.backref_post_even_more_json.test_request ... ok +gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request +gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_custom_response_handler +gabbi.tests.test_runner.RunnerTest.test_custom_response_handler ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_data_dir_good +gabbi.tests.test_runner.RunnerTest.test_data_dir_good ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_exit_code +gabbi.tests.test_runner.RunnerTest.test_exit_code ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_intercept.self_get_ssl_page.test_request +gabbi.tests.test_intercept.self_get_ssl_page.test_request ... ok +gabbi.tests.test_intercept.self_test_binary_handling.test_request +gabbi.tests.test_intercept.self_test_binary_handling.test_request ... ok +gabbi.tests.test_runner.RunnerTest.test_input_files +gabbi.tests.test_runner.RunnerTest.test_input_files ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet +gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir +gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing ... ok +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port +gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port ... ok +gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request +gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request ... ok +gabbi.tests.test_utils.BinaryTypesTest.test_binary +gabbi.tests.test_utils.BinaryTypesTest.test_binary ... ok +gabbi.tests.test_utils.BinaryTypesTest.test_not_binary +gabbi.tests.test_utils.BinaryTypesTest.test_not_binary ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml +gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting +gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_encoded_value_from_disk.test_request ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none +gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none ... ok #### left side json one #### -> POST http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +> POST http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5764,8 +6256,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ -< Location: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +< X-Gabbi-url: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ +< Location: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ { "alpha": "alpha1", @@ -5773,7 +6265,7 @@ } #### expand left side #### -> POST http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +> POST http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5785,8 +6277,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ -< Location: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +< X-Gabbi-url: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ +< Location: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ { "alpha1": "alpha", @@ -5794,7 +6286,7 @@ } #### expand environ left side #### -> POST http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +> POST http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5807,8 +6299,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ -< Location: http://e87f3ef0-78c9-43e9-a4a9-5e0c4f9c8175:8001/ +< X-Gabbi-url: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ +< Location: http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/ { "alpha1": "alpha", @@ -5816,8 +6308,34 @@ "1": "cow" } +#### set key and value #### +> GET http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/jsonator?key=1&value=10 +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< Content-Type: application/json + +{ + "1": "10" +} + +#### check key and value #### +> GET http://0065c4c4-fa0f-4d16-b39d-085e8ace3e01:8001/jsonator?key=1&value=10 +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< Content-Type: application/json + +{ + "1": "10" +} + #### post data #### -> POST http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +> POST http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5830,8 +6348,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -< Location: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +< X-Gabbi-url: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ +< Location: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ { "one_string": "1", @@ -5840,7 +6358,7 @@ } #### use data #### -> POST http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +> POST http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5853,8 +6371,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -< Location: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +< X-Gabbi-url: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ +< Location: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ { "one_string": "1", @@ -5863,7 +6381,7 @@ } #### from environ #### -> POST http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +> POST http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5874,15 +6392,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -< Location: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +< X-Gabbi-url: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ +< Location: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ { "one_environ": 1 } #### with list #### -> POST http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +> POST http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5895,8 +6413,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -< Location: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +< X-Gabbi-url: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ +< Location: http://b6a68a63-4ec9-43ed-8665-76d377e9fe98:8001/ [ 1, @@ -5904,45 +6422,30 @@ "3" ] -#### object with list #### -> POST http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -> content-type: application/json +#### confirm notempty #### +> GET http://132279f4-278d-4758-b0b8-945ee768ccb9:8001/notempty > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] -} < 200 OK -< X-Gabbi-method: POST + +notempty + +#### get simple page #### +> GET http://0f3b52d0-a947-4f0c-9621-b9102599a146:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ -< Location: http://dda5c074-6401-4fa7-be32-9f76e37efa82:8001/ +< X-Gabbi-url: http://0f3b52d0-a947-4f0c-9621-b9102599a146:8001/ -{ - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] -} +{} -#### yaml encoded value from disk #### -> POST http://43824de6-b7ef-43c3-8aad-4c7b1022a48e:8001/somewhere +#### json encoded value from disk #### +> POST http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -5955,8 +6458,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://43824de6-b7ef-43c3-8aad-4c7b1022a48e:8001/somewhere -< Location: http://43824de6-b7ef-43c3-8aad-4c7b1022a48e:8001/somewhere +< X-Gabbi-url: http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ +< Location: http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ { "foo": { @@ -5964,263 +6467,146 @@ } } -gabbi.tests.test_intercept.coerce_check_posted_data.test_request -gabbi.tests.test_intercept.coerce_check_posted_data.test_request ... ok -gabbi.tests.test_intercept.coerce_post_data.test_request -gabbi.tests.test_intercept.coerce_post_data.test_request ... ok -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match -gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match ... ok -gabbi.tests.test_driver.DriverTest.test_build_require_ssl -gabbi.tests.test_driver.DriverTest.test_build_require_ssl ... ok -gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept -gabbi.tests.test_driver.DriverTest.test_build_requires_host_or_intercept ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling -gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list -gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list ... ok -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request ... ok -gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers -gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list -gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_target -gabbi.tests.test_driver.DriverTest.test_build_url_target ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_custom_response_handler -gabbi.tests.test_runner.RunnerTest.test_custom_response_handler ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list -gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list ... ok -gabbi.tests.test_intercept.casting_historic_casted_json.test_request -gabbi.tests.test_intercept.casting_historic_casted_json.test_request ... ok -gabbi.tests.test_intercept.casting_internal_json_fail.test_request -gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... expected failure -gabbi.tests.test_intercept.casting_internal_json_fail.test_request -gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... ok -#### get simple page #### -> GET http://a57cc271-dc13-4b0b-bcfb-c00b58d06688:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://a57cc271-dc13-4b0b-bcfb-c00b58d06688:8001/ - -{} - -#### post data #### -> POST http://14bcea88-96ad-4ea9-a5e5-8aaac745a904:8001/ +#### json parital from disk #### +> POST http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "type": "cat", + "sound": "meow" } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://14bcea88-96ad-4ea9-a5e5-8aaac745a904:8001/ -< Location: http://14bcea88-96ad-4ea9-a5e5-8aaac745a904:8001/ +< X-Gabbi-url: http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ +< Location: http://59be5699-8443-44d5-bfed-ea3e1a04cb38:8001/ { - "one_string": "1", - "one_int": 1, - "one_float": 1.1 + "type": "cat", + "sound": "meow" } -#### default casts #### -> POST http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +#### left side json one #### +> POST http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "alpha": "alpha1", + "beta": "beta1" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ -< Location: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ +< Location: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "alpha": "alpha1", + "beta": "beta1" } -#### cast to string #### -> POST http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +#### expand left side #### +> POST http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "string": "2" + "alpha1": "alpha", + "beta1": "beta" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ -< Location: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ +< Location: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ { - "string": "2" + "alpha1": "alpha", + "beta1": "beta" } -#### json set up #### -> POST http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +#### expand environ left side #### +> POST http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ -< Location: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ +< Location: http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/ { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" } -#### send casted json #### -> POST http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +#### set key and value #### +> GET http://9639a365-18b3-4cb2-b66f-121b97e55939:8001/jsonator?key=1&value=10 > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "casted": 2 -} < 200 OK -< X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ -< Location: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ { - "casted": 2 + "1": "10" } -#### historic casted json #### -> POST http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +#### yaml encoded value from disk #### +> POST http://3c13406c-558d-4cec-9d00-17ef396322a5:8001/somewhere > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ -< Location: http://119a6494-75e4-4989-a5ea-7b9f5bcc1d51:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://3c13406c-558d-4cec-9d00-17ef396322a5:8001/somewhere +< Location: http://3c13406c-558d-4cec-9d00-17ef396322a5:8001/somewhere { - "casted": 2 + "foo": { + "b\u00e1r": 1 + } } -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_data_dir_good -gabbi.tests.test_runner.RunnerTest.test_data_dir_good ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling -gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl -gabbi.tests.test_driver.DriverTest.test_build_url_target_forced_ssl ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_exit_code -gabbi.tests.test_runner.RunnerTest.test_exit_code ... ok -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list -gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_input_files -gabbi.tests.test_runner.RunnerTest.test_input_files ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet -gabbi.tests.test_runner.RunnerTest.test_quiet_is_quiet ... ok -gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test -gabbi.tests.test_driver.DriverTest.test_build_url_use_prior_test ... ok -gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host -gabbi.tests.test_driver.DriverTest.test_build_with_url_provides_host ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir -gabbi.tests.test_runner.RunnerTest.test_stdin_data_dir ... ok -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing ... ok -gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests -gabbi.tests.test_driver.DriverTest.test_driver_loads_three_tests ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port -gabbi.tests.test_runner.RunnerTest.test_target_url_parsing_standard_port ... ok -gabbi.tests.test_driver.DriverTest.test_driver_prefix -gabbi.tests.test_driver.DriverTest.test_driver_prefix ... ok -gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception -gabbi.tests.test_fixtures.FixtureTest.test_fixture_informs_on_exception ... ok -gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop -gabbi.tests.test_fixtures.FixtureTest.test_fixture_starts_and_stop ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml -gabbi.tests.test_runner.RunnerTest.test_unsafe_yaml ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting -gabbi.tests.test_runner.RunnerTest.test_verbose_output_formatting ... ok -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_json_encoded_value_from_disk.test_request ... ok -#### confirm notempty #### -> GET http://11c45f24-4593-4339-b561-42f971542e15:8001/notempty -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK - -notempty - +gabbi.tests.test_intercept.backref_get_a_historical_response.test_request +gabbi.tests.test_intercept.backref_get_a_historical_response.test_request ... ok +gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request +gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_bad_params ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_both ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_default_charset ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_multiple_params ... ok +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset +gabbi.tests.test_utils.ExtractContentTypeTest.test_extract_content_type_with_charset ... ok +gabbi.tests.test_intercept.poll_loop_location.test_request +gabbi.tests.test_intercept.poll_loop_location.test_request ... ok #### get simple page #### -> GET http://cb2a3288-8643-40d6-8089-0916d5293f10:8001/ +> GET http://b4c0af2c-4e94-415b-80a7-6fdaa73bcbf0:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6228,53 +6614,35 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://cb2a3288-8643-40d6-8089-0916d5293f10:8001/ +< X-Gabbi-url: http://b4c0af2c-4e94-415b-80a7-6fdaa73bcbf0:8001/ {} -#### loop location #### -> GET http://e54932dc-9a1d-497b-9659-984eba3ccb67:8001/poller?count=2&x=1&y=2&z=3.4 -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 400 Bad Reqest - - -#### loop location #### -> GET http://e54932dc-9a1d-497b-9659-984eba3ccb67:8001/poller?count=2&x=1&y=2&z=3.4 -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 400 Bad Reqest - - -#### loop location #### -> GET http://e54932dc-9a1d-497b-9659-984eba3ccb67:8001/poller?count=2&x=1&y=2&z=3.4 +#### json encoded value from disk #### +> POST http://fffe1275-2ad6-400f-b15e-6f7c77258f48:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "foo": { + "b\u00e1r": 1 + } +} < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://e54932dc-9a1d-497b-9659-984eba3ccb67:8001/poller?count=2&x=1&y=2&z=3.4 +< X-Gabbi-url: http://fffe1275-2ad6-400f-b15e-6f7c77258f48:8001/ +< Location: http://fffe1275-2ad6-400f-b15e-6f7c77258f48:8001/ { - "count": [ - "2" - ], - "x": [ - "1" - ], - "y": [ - "2" - ], - "z": [ - "3.4" - ] + "foo": { + "b\u00e1r": 1 + } } #### post data #### -> POST http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +> POST http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6287,8 +6655,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ -< Location: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +< X-Gabbi-url: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ +< Location: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ { "one_string": "1", @@ -6297,7 +6665,7 @@ } #### use data #### -> POST http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +> POST http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6310,8 +6678,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ -< Location: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +< X-Gabbi-url: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ +< Location: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ { "one_string": "1", @@ -6320,7 +6688,7 @@ } #### from environ #### -> POST http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +> POST http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6331,211 +6699,123 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ -< Location: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ +< X-Gabbi-url: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ +< Location: http://141d9512-5ddf-4b56-ba86-fc2408d6c46d:8001/ { "one_environ": 1 } -#### with list #### -> POST http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -[ - 1, - 2, - "3" -] - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ -< Location: http://776aa00f-2d03-4083-91b4-7e5c67529c9a:8001/ - -[ - 1, - 2, - "3" -] - -#### yaml encoded value from disk #### -> POST http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "foo": { - "b\u00e1r": 1 - } -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere -< Location: http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere - -{ - "foo": { - "b\u00e1r": 1 - } -} - -#### json encoded value from disk #### -> POST http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere +#### default casts #### +> POST http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere -< Location: http://32c5c6a1-14fa-4fc9-9b50-92f9d8758cbf:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ +< Location: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ { - "foo": { - "b\u00e1r": 1 - } + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } -gabbi.tests.test_intercept.self_get_simple_page.test_request -gabbi.tests.test_intercept.self_get_simple_page.test_request ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_all ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_body ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_headers ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none -gabbi.tests.test_runner.RunnerTest.test_verbosity_arg_none ... ok -#### get simple page #### -> GET http://9a7b42d6-5be6-4efc-9236-88aba50ef7e2:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9a7b42d6-5be6-4efc-9236-88aba50ef7e2:8001/ - -{} - -#### json encoded value from disk #### -> POST http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ +#### cast to string #### +> POST http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "string": "2" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ -< Location: http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ +< Location: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ { - "foo": { - "b\u00e1r": 1 - } + "string": "2" } -#### json parital from disk #### -> POST http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ +#### json set up #### +> POST http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ -< Location: http://30016364-f3f5-4285-bc07-c83d80e35e86:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ +< Location: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ { - "type": "cat", - "sound": "meow" + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false } -#### header named http #### -> GET http://72cc1f1e-10c5-4db5-888d-83f20fd2b5ef:8001/header_key -> http: some-scheme -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://72cc1f1e-10c5-4db5-888d-83f20fd2b5ef:8001/header_key -< HTTP: some-scheme - -{} - -#### default casts #### -> POST http://1965c28b-8bb9-47cc-b093-281c01fd4f12:8001/ +#### send casted json #### +> POST http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "casted": 2 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://1965c28b-8bb9-47cc-b093-281c01fd4f12:8001/ -< Location: http://1965c28b-8bb9-47cc-b093-281c01fd4f12:8001/ +< X-Gabbi-url: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ +< Location: http://c4a52362-9060-41d6-8028-06a3c140644a:8001/ { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "casted": 2 } -gabbi.tests.test_intercept.self_simple_post.test_request -gabbi.tests.test_intercept.self_simple_post.test_request ... ok -gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request -gabbi.tests.test_intercept.method-shortcut_post_with_query.test_request ... ok -gabbi.tests.test_intercept.fixture_just_to_see_one.test_request -gabbi.tests.test_intercept.fixture_just_to_see_one.test_request ... ok -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request ... ok -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request ... ok +gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request +gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request ... ok +gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers +gabbi.tests.test_replacers.TestReplaceHeaders.test_empty_headers ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false ... ok +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true +gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true ... ok +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request ... ok #### get simple page #### -> GET http://5c70db50-1f0b-49b4-af4a-bc77571cc1d7:8001/ +> GET http://7a06eb8b-1da6-42b4-bac2-25c96fe7575f:8001/ > x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6543,89 +6823,77 @@ < 200 OK < X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://5c70db50-1f0b-49b4-af4a-bc77571cc1d7:8001/ +< X-Gabbi-url: http://7a06eb8b-1da6-42b4-bac2-25c96fe7575f:8001/ {} -#### json encoded value from disk #### -> POST http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +#### left side json one #### +> POST http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "alpha": "alpha1", + "beta": "beta1" } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ -< Location: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +< X-Gabbi-url: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ +< Location: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ { - "foo": { - "b\u00e1r": 1 - } + "alpha": "alpha1", + "beta": "beta1" } -#### json parital from disk #### -> POST http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +#### expand left side #### +> POST http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "alpha1": "alpha", + "beta1": "beta" } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ -< Location: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +< X-Gabbi-url: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ +< Location: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ { - "type": "cat", - "sound": "meow" + "alpha1": "alpha", + "beta1": "beta" } -#### json partial both sides #### -> POST http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +#### expand environ left side #### +> POST http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) -[ - { - "type": "cat", - "sound": "meow" - }, - { - "type": "dog", - "sound": "woof" - } -] +{ + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" +} < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ -< Location: http://f2275e0c-e126-4d79-82cb-fb5bd1a2870e:8001/ +< X-Gabbi-url: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ +< Location: http://a96018d5-91df-4f8d-8820-eceb1cc52042:8001/ -[ - { - "type": "cat", - "sound": "meow" - }, - { - "type": "dog", - "sound": "woof" - } -] +{ + "alpha1": "alpha", + "beta1": "beta", + "1": "cow" +} #### post data #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6638,8 +6906,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ { "one_string": "1", @@ -6648,7 +6916,7 @@ } #### use data #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6661,8 +6929,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ { "one_string": "1", @@ -6671,7 +6939,7 @@ } #### from environ #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6682,15 +6950,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ { "one_environ": 1 } #### with list #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6703,8 +6971,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ [ 1, @@ -6713,7 +6981,7 @@ ] #### object with list #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6733,8 +7001,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ { "collection": [ @@ -6750,7 +7018,7 @@ } #### post extra data #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +> POST http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6779,8 +7047,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ +< Location: http://4f0b001f-ce91-4dc4-b5f8-247be43b3310:8001/ { "a": 1, @@ -6804,173 +7072,115 @@ } } -#### check posted data #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +#### get simple page #### +> GET http://b4d4c8bd-ddae-46f4-aec9-0f39696c3dff:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://b4d4c8bd-ddae-46f4-aec9-0f39696c3dff:8001/ + +{} + +#### post data #### +> POST http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ +< Location: http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### Post again and check the results #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +#### use data #### +> POST http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< X-Gabbi-url: http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ +< Location: http://8dd5e0d4-9cf5-45ca-9426-00c7a6890cf4:8001/ { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "one_string": "1", + "one_int": 1, + "one_float": 1.1 } -#### Post again and check the results (reversed) #### -> POST http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +#### default casts #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ -< Location: http://9426fd48-cd1d-4841-a860-7ca41bf1acf4:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false } -#### default casts #### -> POST http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ +#### cast to string #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +> content-type: application/json +> accept: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "string": "2" +} + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ + +{ + "string": "2" +} + +#### json set up #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -6978,7 +7188,7 @@ { "int": 1, "float": 1.5, - "string": 2, + "string": "2", "tbool": true, "fbool": false } @@ -6986,113 +7196,274 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ -< Location: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/#### get simple page #### -> GET http://d37f8059-b95c-4ed1-bed5-ea6844dd5886:8001/ -> x-random-header: ya +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ + +{ + "int": 1, + "float": 1.5, + "string": "2", + "tbool": true, + "fbool": false +} + +#### send casted json #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +> content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "casted": 2 +} < 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://d37f8059-b95c-4ed1-bed5-ea6844dd5886:8001/ +< X-Gabbi-method: POST +< Content-Type: application/json +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ -{} +{ + "casted": 2 +} -#### left side json one #### -> POST http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +#### historic casted json #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha": "alpha1", - "beta": "beta1" + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ -< Location: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ { - "alpha": "alpha1", - "beta": "beta1" + "casted": 2 } -#### expand left side #### -> POST http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +#### internal json fine #### +> POST http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta" + "casted": "in this 2 is not errors" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ -< Location: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +< Content-Type: application/json +< X-Gabbi-url: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ +< Location: http://55b91ea2-8175-4ba9-9574-5cf30905a069:8001/ { - "alpha1": "alpha", - "beta1": "beta" + "casted": "in this 2 is not errors" } -#### expand environ left side #### -> POST http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +#### yaml encoded value from disk #### +> POST http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ -< Location: http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/ +< X-Gabbi-url: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere +< Location: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere { - "alpha1": "alpha", - "beta1": "beta", - "1": "cow" + "foo": { + "b\u00e1r": 1 + } } -#### set key and value #### -> GET http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/jsonator?key=1&value=10 +#### json encoded value from disk #### +> POST http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "foo": { + "b\u00e1r": 1 + } +} < 200 OK -< Content-Type: application/json +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere +< Location: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere { - "1": "10" + "foo": { + "b\u00e1r": 1 + } } -#### check key and value #### -> GET http://0ae09c03-f27b-4395-816d-b93360d47eb3:8001/jsonator?key=1&value=10 +#### yaml parital from disk #### +> POST http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +{ + "type": "cat", + "sound": "meow" +} < 200 OK -< Content-Type: application/json +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere +< Location: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere { - "1": "10" + "type": "cat", + "sound": "meow" } +#### yaml partial both sides #### +> POST http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere +> content-type: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] + +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere +< Location: http://c5ad042b-6178-4fb8-b4ba-9f72228f80f6:8001/somewhere + +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] + +gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request +gabbi.tests.test_intercept.json-right-side_json_partial_both_sides.test_request ... ok +gabbi.tests.test_intercept.fixture_just_to_see_three.test_request +gabbi.tests.test_intercept.fixture_just_to_see_three.test_request ... ok +gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request +gabbi.tests.test_intercept.contenttype_patch_no_content-type.test_request ... ok +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request ... ok +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request ... ok +gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request +gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match +gabbi.tests.test_jsonpath.JSONPathTest.test_basic_match ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling +gabbi.tests.test_jsonpath.JSONPathTest.test_embedded_list_handling ... ok +gabbi.tests.test_intercept.coerce_check_posted_data.test_request +gabbi.tests.test_intercept.coerce_check_posted_data.test_request ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list +gabbi.tests.test_jsonpath.JSONPathTest.test_filtered_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list +gabbi.tests.test_jsonpath.JSONPathTest.test_len_object_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list +gabbi.tests.test_jsonpath.JSONPathTest.test_len_simple_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling +gabbi.tests.test_jsonpath.JSONPathTest.test_list_handling ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_object_list ... ok +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list +gabbi.tests.test_jsonpath.JSONPathTest.test_sorted_simple_list ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key +gabbi.tests.test_suitemaker.SuiteMakerTest.test_dict_on_invalid_key ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_inner_list_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_duplication_format_error ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error +gabbi.tests.test_suitemaker.SuiteMakerTest.test_method_url_pair_format_error ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_name_key_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_first ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last +gabbi.tests.test_suitemaker.SuiteMakerTest.test_response_handlers_same_test_key_yaml_last ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_tests_key_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors +gabbi.tests.test_suitemaker.SuiteMakerTest.test_unsupported_key_errors ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_upper_dict_required ... ok +gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required +gabbi.tests.test_suitemaker.SuiteMakerTest.test_url_key_required ... ok +gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request +gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url ... ok +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url +gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url ... ok +/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method + warnings.warn("TestResult has no addDuration method", +gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files +gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files ... ok +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request ... ok +#### get simple page #### +> GET http://875a48fa-6621-4baf-97c5-cdf17bca2651:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://875a48fa-6621-4baf-97c5-cdf17bca2651:8001/ + +{} + #### post data #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7105,8 +7476,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "one_string": "1", @@ -7115,7 +7486,7 @@ } #### use data #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7128,8 +7499,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "one_string": "1", @@ -7138,7 +7509,7 @@ } #### from environ #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7149,15 +7520,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "one_environ": 1 } #### with list #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7170,8 +7541,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ [ 1, @@ -7180,7 +7551,7 @@ ] #### object with list #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7200,8 +7571,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "collection": [ @@ -7217,7 +7588,7 @@ } #### post extra data #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7246,8 +7617,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "a": 1, @@ -7272,7 +7643,7 @@ } #### check posted data #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7301,8 +7672,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "a": 1, @@ -7327,7 +7698,7 @@ } #### Post again and check the results #### -> POST http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7356,8 +7727,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ -< Location: http://0ce72f68-bf1a-4211-bdd3-7686b30838d8:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "a": 1, @@ -7381,219 +7752,8 @@ } } -#### default casts #### -> POST http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -> content-type: application/json -> accept: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -< Location: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ - -{ - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false -} - -#### cast to string #### -> POST http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -> content-type: application/json -> accept: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "string": "2" -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -< Location: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request -gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_default_true ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_false ... ok -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true -gabbi.tests.test_use_prior_test.UsePriorTest.test_use_prior_true ... ok -#### get simple page #### -> GET http://9d4b855f-248c-49fb-8213-440138df9133:8001/ -> x-random-header: ya -> user-agent: gabbi/3.0.0 (Python urllib3) - - -< 200 OK -< X-Gabbi-method: GET -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://9d4b855f-248c-49fb-8213-440138df9133:8001/ - -{} - -#### json encoded value from disk #### -> POST http://fb0332c1-9b0c-4f6b-9724-eaffe96f96ec:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "foo": { - "b\u00e1r": 1 - } -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://fb0332c1-9b0c-4f6b-9724-eaffe96f96ec:8001/ -< Location: http://fb0332c1-9b0c-4f6b-9724-eaffe96f96ec:8001/ - -{ - "foo": { - "b\u00e1r": 1 - } -} - -#### post data #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ - -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} - -#### use data #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ - -{ - "one_string": "1", - "one_int": 1, - "one_float": 1.1 -} - -#### from environ #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "one_environ": 1 -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ - -{ - "one_environ": 1 -} - -#### with list #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -[ - 1, - 2, - "3" -] - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ - -[ - 1, - 2, - "3" -] - -#### object with list #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ - -{ - "collection": [ - { - "alpha": 1, - "beta": "max" - }, - { - "alpha": 2, - "beta": "climb" - } - ] -} - -#### post extra data #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ +#### Post again and check the results (reversed) #### +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7622,8 +7782,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { "a": 1, @@ -7647,271 +7807,167 @@ } } -#### check posted data #### -> POST http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ +#### string internal replace #### +> POST http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "endpoint_resp": "/api/0.1/item/1", + "endpoint_var": "/api/0.1/item/1" } < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ -< Location: http://59d1a9c4-863b-4934-aa80-e946b3556f57:8001/ +< X-Gabbi-url: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ +< Location: http://116ab958-b2d5-412d-81b6-e7ad0c140c6b:8001/ { - "a": 1, - "b": 1.0, - "c": "[1,2,3]", - "d": true, - "e": false, - "f": { - "key": "val" - }, - "g": null, - "h": { - "key": { - "less_key": [ - 1, - true, - null - ], - "more_key": 1 - } - } + "endpoint_resp": "/api/0.1/item/1", + "endpoint_var": "/api/0.1/item/1" } -#### default casts #### -> POST http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +#### yaml encoded value from disk #### +> POST http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ -< Location: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere +< Location: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "foo": { + "b\u00e1r": 1 + } } -#### cast to string #### -> POST http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +#### json encoded value from disk #### +> POST http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "string": "2" + "foo": { + "b\u00e1r": 1 + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ -< Location: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere +< Location: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere { - "string": "2" + "foo": { + "b\u00e1r": 1 + } } -#### json set up #### -> POST http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +#### yaml parital from disk #### +> POST http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "type": "cat", + "sound": "meow" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ -< Location: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewhere +< Location: http://96f07a45-149d-44a4-9a45-a9877cc9bcd9:8001/somewheregabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request +gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request ... ok + { - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false + "type": "cat", + "sound": "meow" } -#### send casted json #### -> POST http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +#### get simple page #### +> GET http://97a9cf94-0e23-42f9-ac04-f2239f9a7e77:8001/ +> x-random-header: ya +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://97a9cf94-0e23-42f9-ac04-f2239f9a7e77:8001/ + +{} + +#### left side json one #### +> POST http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "alpha": "alpha1", + "beta": "beta1" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ -< Location: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ +< Location: http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ { - "casted": 2 + "alpha": "alpha1", + "beta": "beta1" } -#### historic casted json #### -> POST http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +#### expand left side #### +> POST http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta" } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ -< Location: http://c659bcdd-e670-4f18-bdce-5cde4bb3655c:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ +< Location: http://79a4b2c3-12d0-48a1-9d4d-90ee045d751d:8001/ { - "casted": 2 + "alpha1": "alpha", + "beta1": "beta" } -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... expected failure -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request -gabbi.tests.test_intercept.casting_cast_to_int_internal.test_request ... ok -gabbi.tests.test_intercept.casting_json_set_up.test_request -gabbi.tests.test_intercept.casting_json_set_up.test_request ... ok -gabbi.tests.test_intercept.casting_send_casted_json.test_request -gabbi.tests.test_intercept.casting_send_casted_json.test_request ... ok -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request ... ok -gabbi.tests.test_intercept.coerce_post_extra_data.test_request -gabbi.tests.test_intercept.coerce_post_extra_data.test_request ... ok -gabbi.tests.test_intercept.casting_cast_to_string.test_request -gabbi.tests.test_intercept.casting_cast_to_string.test_request ... ok -gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request -gabbi.tests.test_intercept.backref_post_even_more_json_quote_different.test_request ... ok -gabbi.tests.test_intercept.backref_post_some_more_json.test_request -gabbi.tests.test_intercept.backref_post_some_more_json.test_request ... ok -gabbi.tests.test_intercept.backref_get_a_historical_response.test_request -gabbi.tests.test_intercept.backref_get_a_historical_response.test_request ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file -gabbi.tests.test_load_data_file.DataFileTest.test_load_file ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory ... ok -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory -gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory ... ok -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request ... ok -gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color -gabbi.tests.test_utils.ColorizeTest.test_colorize_missing_color ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_host_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_hostport_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_localhost ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ipv6_url_long ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_no_port ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_plain_url_with_port ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_simple_hostport_with_prefix ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port80_url ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_port_url ... ok -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url -gabbi.tests.test_utils.UtilsHostInfoFromTarget.test_ssl_url ... ok -gabbi.tests.test_intercept.backref_post_even_more_json.test_request -gabbi.tests.test_intercept.backref_post_even_more_json.test_request ... ok -gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request -gabbi.tests.test_intercept.backref_backref_json_fail_start.test_request ... ok -gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean -gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean ... ok -gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request -gabbi.tests.test_unsafe_yaml.nan_test_nan.test_request ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_already_bracket ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_full ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port -gabbi.tests.test_utils.CreateURLTest.test_create_url_ipv6_ssl_weird_port ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon -gabbi.tests.test_utils.CreateURLTest.test_create_url_no_double_colon ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 -gabbi.tests.test_utils.CreateURLTest.test_create_url_not_ssl_on_443 ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_port -gabbi.tests.test_utils.CreateURLTest.test_create_url_port ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_port_and_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix -gabbi.tests.test_utils.CreateURLTest.test_create_url_prefix ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query -gabbi.tests.test_utils.CreateURLTest.test_create_url_preserve_query ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_simple -gabbi.tests.test_utils.CreateURLTest.test_create_url_simple ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl ... ok -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 -gabbi.tests.test_utils.CreateURLTest.test_create_url_ssl_on_80 ... ok +#### header named http #### +> GET http://e9bd1533-c4f5-4912-97eb-93ffcd8dc1d0:8001/header_key +> http: some-scheme +> user-agent: gabbi/3.0.0 (Python urllib3) + + +< 200 OK +< X-Gabbi-method: GET +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://e9bd1533-c4f5-4912-97eb-93ffcd8dc1d0:8001/header_key +< HTTP: some-scheme + +{} + #### post data #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7924,8 +7980,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "one_string": "1", @@ -7934,7 +7990,7 @@ } #### use data #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7947,8 +8003,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "one_string": "1", @@ -7957,7 +8013,7 @@ } #### from environ #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7968,15 +8024,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "one_environ": 1 } #### with list #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -7989,8 +8045,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ [ 1, @@ -7999,7 +8055,7 @@ ] #### object with list #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8019,8 +8075,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "collection": [ @@ -8036,7 +8092,7 @@ } #### post extra data #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8065,8 +8121,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "a": 1, @@ -8091,7 +8147,7 @@ } #### check posted data #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8120,8 +8176,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "a": 1, @@ -8146,7 +8202,7 @@ } #### Post again and check the results #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8175,8 +8231,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "a": 1, @@ -8201,7 +8257,7 @@ } #### Post again and check the results (reversed) #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +> POST http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8230,8 +8286,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ +< X-Gabbi-url: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ +< Location: http://d27bb6e9-09a9-4d08-a52d-9b6260eba1a5:8001/ { "a": 1, @@ -8255,124 +8311,62 @@ } } -#### string internal replace #### -> POST http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -> content-type: application/json +#### get simple page #### +> GET http://5695ebe4-7e5a-4a9e-8f7c-27ee40f2e333:8001/ +> x-random-header: ya > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "endpoint_resp": "/api/0.1/item/1", - "endpoint_var": "/api/0.1/item/1" -} < 200 OK -< X-Gabbi-method: POST +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ -< Location: http://f76c8c53-fd82-4b09-9704-a512b84a7647:8001/ - -{ - "endpoint_resp": "/api/0.1/item/1", - "endpoint_var": "/api/0.1/item/1" -} - -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_parital_from_disk.test_request ... ok -/usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method - warnings.warn("TestResult has no addDuration method", -gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files -gabbi.tests.test_syntax_warning.DriverTest.test_driver_warnings_on_files ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default ... ok -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple -gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple ... ok - +< X-Gabbi-url: http://5695ebe4-7e5a-4a9e-8f7c-27ee40f2e333:8001/ -{ - "string": "2" -} +{} -#### json set up #### -> POST http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -> content-type: application/json -> accept: application/json +#### loop location #### +> GET http://c9895704-b094-456e-987b-f69a64cc730c:8001/poller?count=2&x=1&y=2&z=3.4 > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false -} -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -< Location: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ +< 400 Bad Reqest -{ - "int": 1, - "float": 1.5, - "string": "2", - "tbool": true, - "fbool": false -} -#### send casted json #### -> POST http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -> content-type: application/json -> accept: application/json +#### loop location #### +> GET http://c9895704-b094-456e-987b-f69a64cc730c:8001/poller?count=2&x=1&y=2&z=3.4 > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "casted": 2 -} -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ -< Location: http://16f8c18d-d204-4cf9-b9d5-849f3120b14b:8001/ +< 400 Bad Reqest -{ - "casted": 2 -} -#### yaml encoded value from disk #### -> POST http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere -> content-type: application/json +#### loop location #### +> GET http://c9895704-b094-456e-987b-f69a64cc730c:8001/poller?count=2&x=1&y=2&z=3.4 > user-agent: gabbi/3.0.0 (Python urllib3) -{ - "foo": { - "b\u00e1r": 1 - } -} < 200 OK -< X-Gabbi-method: POST +< X-Gabbi-method: GET < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere -< Location: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere +< X-Gabbi-url: http://c9895704-b094-456e-987b-f69a64cc730c:8001/poller?count=2&x=1&y=2&z=3.4 { - "foo": { - "b\u00e1r": 1 - } + "count": [ + "2" + ], + "x": [ + "1" + ], + "y": [ + "2" + ], + "z": [ + "3.4" + ] } #### json encoded value from disk #### -> POST http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere +> POST http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8385,8 +8379,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere -< Location: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere +< X-Gabbi-url: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ +< Location: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ { "foo": { @@ -8394,8 +8388,8 @@ } } -#### yaml parital from disk #### -> POST http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere +#### json parital from disk #### +> POST http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8407,29 +8401,49 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere -< Location: http://c3e8a2c7-e8ef-4817-bb35-ed5bd20920e9:8001/somewhere +< X-Gabbi-url: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ +< Location: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ { "type": "cat", "sound": "meow" } -#### get simple page #### -> GET http://c63c27df-ae80-4bee-89b1-7b5169376d69:8001/ -> x-random-header: ya +#### json partial both sides #### +> POST http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ +> content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] < 200 OK -< X-Gabbi-method: GET +< X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c63c27df-ae80-4bee-89b1-7b5169376d69:8001/ +< X-Gabbi-url: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ +< Location: http://e87b5131-f373-4eb0-bd42-3d2bd9b2f23d:8001/ -{} +[ + { + "type": "cat", + "sound": "meow" + }, + { + "type": "dog", + "sound": "woof" + } +] #### post data #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8442,8 +8456,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { "one_string": "1", @@ -8452,7 +8466,7 @@ } #### use data #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8465,8 +8479,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { "one_string": "1", @@ -8475,7 +8489,7 @@ } #### from environ #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8486,15 +8500,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { "one_environ": 1 } #### with list #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8507,8 +8521,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ [ 1, @@ -8517,7 +8531,7 @@ ] #### object with list #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8537,8 +8551,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { "collection": [ @@ -8554,7 +8568,7 @@ } #### post extra data #### -> POST http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8583,8 +8597,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ -< Location: http://c1cbde05-b2a5-466a-b180-26281dd6ab5e:8001/ +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { "a": 1, @@ -8608,57 +8622,135 @@ } } -#### default casts #### -> POST http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ +#### check posted data #### +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ -< Location: http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { - "int": 1, - "float": 1.5, - "string": 2, - "tbool": true, - "fbool": false + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } -#### cast to string #### -> POST http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ +#### Post again and check the results #### +> POST http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ > content-type: application/json -> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "string": "2" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json -< X-Gabbi-url: http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ -< Location: http://26cd14ec-55e6-4e6b-988d-404a1eb24a86:8001/ +< Content-Type: application/json ; charset=utf-8 ; stop=no +< X-Gabbi-url: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ +< Location: http://28ec1630-3839-41fd-b0b6-a75050663a22:8001/ { - "string": "2" + "a": 1, + "b": 1.0, + "c": "[1,2,3]", + "d": true, + "e": false, + "f": { + "key": "val" + }, + "g": null, + "h": { + "key": { + "less_key": [ + 1, + true, + null + ], + "more_key": 1 + } + } } -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request -gabbi.tests.test_yaml_disk_loading_jsonhandler.yaml-from-disk_yaml_partial_both_sides.test_request ... ok +#### default casts #### +> POST http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +> content-type: application/json +> accept: application/json +> user-agent: gabbi/3.0.0 (Python urllib3) + +{ + "int": 1, + "float": 1.5, + "string": 2, + "tbool": true, + "fbool": false +} +< 200 OK +< X-Gabbi-method: POST +< Content-Type: application/json +< X-Gabbi-url: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +< Location: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ { "int": 1, @@ -8668,8 +8760,38 @@ "fbool": false } -#### cast to string #### -> POST http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ +#### cast to string ####gabbi.tests.test_intercept.casting_internal_json_fail.test_request +gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... expected failure +gabbi.tests.test_intercept.casting_internal_json_fail.test_request +gabbi.tests.test_intercept.casting_internal_json_fail.test_request ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file +gabbi.tests.test_load_data_file.DataFileTest.test_load_file ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_directory ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_parent_dir ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_in_root ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_not_within_test_directory ... ok +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory +gabbi.tests.test_load_data_file.DataFileTest.test_load_file_within_test_directory ... ok +gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean +gabbi.tests.test_replacers.EnvironReplaceTest.test_environ_boolean ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_error_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_extra ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_nocharset_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_override_default ... ok +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple +gabbi.tests.test_utils.ParseContentTypeTest.test_parse_simple ... ok + +> POST http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8681,15 +8803,15 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ -< Location: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ +< X-Gabbi-url: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +< Location: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ { "string": "2" } #### json set up #### -> POST http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ +> POST http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ > content-type: application/json > accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) @@ -8705,8 +8827,8 @@ < 200 OK < X-Gabbi-method: POST < Content-Type: application/json -< X-Gabbi-url: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ -< Location: http://bcbaa910-3673-4684-aa60-62cf2c653873:8001/ +< X-Gabbi-url: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +< Location: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ { "int": 1, @@ -8716,124 +8838,64 @@ "fbool": false } -#### yaml encoded value from disk #### -> POST http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -{ - "foo": { - "b\u00e1r": 1 - } -} - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -< Location: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere - -{ - "foo": { - "b\u00e1r": 1 - } -} - -#### json encoded value from disk #### -> POST http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere +#### send casted json #### +> POST http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -< Location: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +< Location: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ { - "foo": { - "b\u00e1r": 1 - } + "casted": 2 } -#### yaml parital from disk #### -> POST http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere +#### historic casted json #### +> POST http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ > content-type: application/json +> accept: application/json > user-agent: gabbi/3.0.0 (Python urllib3) { - "type": "cat", - "sound": "meow" + "casted": 2 } < 200 OK < X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -< Location: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere +< Content-Type: application/json +< X-Gabbi-url: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ +< Location: http://04a94bce-faa0-4b6f-8cee-7e262e779983:8001/ { - "type": "cat", - "sound": "meow" + "casted": 2 } -#### yaml partial both sides #### -> POST http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -> content-type: application/json -> user-agent: gabbi/3.0.0 (Python urllib3) - -[ - { - "type": "cat", - "sound": "meow" - }, - { - "type": "dog", - "sound": "woof" - } -] - -< 200 OK -< X-Gabbi-method: POST -< Content-Type: application/json ; charset=utf-8 ; stop=no -< X-Gabbi-url: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere -< Location: http://ff4fdab7-eeeb-4996-b774-77af0bd293cf:8001/somewhere - -[ - { - "type": "cat", - "sound": "meow" - }, - { - "type": "dog", - "sound": "woof" - } -] - ---------------------------------------------------------------------- -Ran 314 tests in 43.304s +Ran 314 tests in 13.410s OK (skipped=2, expected failures=15) + stestr slowest Test id Runtime (s) ------------------------------------------------------------------------------------------ ----------- -gabbi.tests.test_driver.DriverTest.test_build_require_ssl 17.569 -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request 16.549 -gabbi.tests.test_intercept.coerce_string_internal_replace.test_request 14.645 -gabbi.tests.test_intercept.coerce_check_posted_data.test_request 11.132 -gabbi.tests.test_intercept.coerce_post_again_and_check_the_results.test_request 8.178 -gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request 6.757 -gabbi.tests.test_intercept.casting_internal_json_fine.test_request 5.620 -gabbi.tests.test_intercept.backref_use_raw_json_from_response.test_request 5.174 -gabbi.tests.test_intercept.coerce_object_with_list.test_request 4.526 -gabbi.tests.test_intercept.backref_repost_that_raw_int.test_request 4.204 +gabbi.tests.test_intercept.coerce_string_internal_replace.test_request 2.361 +gabbi.tests.test_intercept.coerce_post_again_and_check_the_results_(reversed).test_request 2.328 +gabbi.tests.test_driver.DriverTest.test_build_require_ssl 2.302 +gabbi.tests.test_intercept.backref_get_a_historical_response_via_jsonpath.test_request 1.104 +gabbi.tests.test_intercept.coerce_post_extra_data.test_request 0.924 +gabbi.tests.test_intercept.backref_get_a_historical_response.test_request 0.890 +gabbi.tests.test_intercept.coerce_object_with_list.test_request 0.836 +gabbi.tests.test_intercept.backref_post_a_raw_int_as_json.test_request 0.746 +gabbi.tests.test_intercept.data_post_data_from_prior_response.test_request 0.721 +gabbi.tests.test_intercept.json-extensions_test_filtered.test_request 0.691 + rm -rf .stestr make[1]: Leaving directory '/build/reproducible-path/python-gabbi-3.0.0' dh_install -O--buildsystem=pybuild @@ -8938,14 +9000,14 @@ cat /usr/share/openstack-pkg-tools/init-script-template >>$MYINIT.init ; \ pkgos-gen-systemd-unit $i ; \ done -+ ls -1 debian/*.init.in +++ ls -1 'debian/*.init.in' ls: cannot access 'debian/*.init.in': No such file or directory # If there's a service.in file, use that one instead of the generated one set -e ; set -x ; for i in `ls -1 debian/*.service.in`; do \ MYPKG=`echo $i | sed s/.service.in//` ; \ cp $MYPKG.service.in $MYPKG.service ; \ done -+ ls -1 debian/*.service.in +++ ls -1 'debian/*.service.in' ls: cannot access 'debian/*.service.in': No such file or directory # Generate the systemd unit if there's no already existing .service.in set -e ; set -x ; for i in `ls debian/*.init.in` ; do \ @@ -8954,7 +9016,7 @@ pkgos-gen-systemd-unit $i ; \ fi \ done -+ ls debian/*.init.in +++ ls 'debian/*.init.in' ls: cannot access 'debian/*.init.in': No such file or directory dh_installinit --error-handler=true make[1]: Leaving directory '/build/reproducible-path/python-gabbi-3.0.0' @@ -8969,14 +9031,14 @@ cat /usr/share/openstack-pkg-tools/init-script-template >>$MYINIT.init ; \ pkgos-gen-systemd-unit $i ; \ done -+ ls -1 debian/*.init.in +++ ls -1 'debian/*.init.in' ls: cannot access 'debian/*.init.in': No such file or directory # If there's a service.in file, use that one instead of the generated one set -e ; set -x ; for i in `ls -1 debian/*.service.in`; do \ MYPKG=`echo $i | sed s/.service.in//` ; \ cp $MYPKG.service.in $MYPKG.service ; \ done -+ ls -1 debian/*.service.in +++ ls -1 'debian/*.service.in' ls: cannot access 'debian/*.service.in': No such file or directory # Generate the systemd unit if there's no already existing .service.in set -e ; set -x ; for i in `ls debian/*.init.in` ; do \ @@ -8985,7 +9047,7 @@ pkgos-gen-systemd-unit $i ; \ fi \ done -+ ls debian/*.init.in +++ ls 'debian/*.init.in' ls: cannot access 'debian/*.init.in': No such file or directory dh_installsystemd make[1]: Leaving directory '/build/reproducible-path/python-gabbi-3.0.0' @@ -9008,7 +9070,6 @@ dpkg-gencontrol: warning: package python-gabbi-doc: substitution variable ${sphinxdoc:Built-Using} unused, but is defined make[1]: Leaving directory '/build/reproducible-path/python-gabbi-3.0.0' dh_md5sums -O--buildsystem=pybuild -libfakeroot internal error: payload not recognized! dh_builddeb -O--buildsystem=pybuild dpkg-deb: building package 'python-gabbi-doc' in '../python-gabbi-doc_3.0.0-3_all.deb'. dpkg-deb: building package 'python3-gabbi' in '../python3-gabbi_3.0.0-3_all.deb'. @@ -9020,12 +9081,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/83677/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/1511819 and its subdirectories -I: Current time: Thu Dec 19 05:21:12 -12 2024 -I: pbuilder-time-stamp: 1734628872 +I: removing directory /srv/workspace/pbuilder/83677 and its subdirectories +I: Current time: Thu Jan 22 13:46:37 +14 2026 +I: pbuilder-time-stamp: 1769039197