Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 743493 Details for
Bug 816642
[guru] dev-python/gabbi-2.3.0 fails tests
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
build.log
build.log (text/plain), 290.76 KB, created by
Agostino Sarubbo
on 2021-10-06 11:24:15 UTC
(
hide
)
Description:
build.log
Filename:
MIME Type:
Creator:
Agostino Sarubbo
Created:
2021-10-06 11:24:15 UTC
Size:
290.76 KB
patch
obsolete
> * Package: dev-python/gabbi-2.3.0 > * Repository: guru > * Maintainer: lssndrbarbieri@gmail.com > * Upstream: https://github.com/cdent/gabbi/issues > * USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_8 test userland_GNU > * FEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This information may help you to understand if this is a duplicate or if this bug exists after you pushed a fix; >This ebuild was merged at the following commit: >https://github.com/gentoo/gentoo/commit/977a9e516eb47bfe30028ea3b024f5a0bf43b129 (Wed Oct 6 01:09:22 UTC 2021) >@@@@@ END @@@@@ > > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This information may help you to understand if this is a duplicate or if this bug exists after you pushed a fix; >This ebuild was merged at the following commit: >https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4e71e1e1991456a55be491a1437cce655c00f694 (Wed Oct 6 00:12:24 UTC 2021) >@@@@@ END @@@@@ > > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This ebuild was merged (directly or as a dependency) because of the following commit: >https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=1c7f5db693f5cc0bad71144a404ec4c110fdad42 >@@@@@ END @@@@@ > > > >################## ># emerge --info: # >################## >Portage 3.0.28 (python 3.9.7-final-0, default/linux/amd64/17.1, gcc-11.2.0, glibc-2.33-r7, 4.19.174-gentoo x86_64) >================================================================= >System uname: Linux-4.19.174-gentoo-x86_64-Intel-R-_Xeon-R-_CPU_E5-2650_v4_@_2.20GHz-with-glibc2.33 >KiB Mem: 264046488 total, 114023796 free >KiB Swap: 0 total, 0 free >sh bash 5.1_p8 >ld GNU ld (Gentoo 2.37_p1 p0) 2.37 >app-shells/bash: 5.1_p8::gentoo >dev-lang/perl: 5.34.0-r2::gentoo >dev-lang/python: 2.7.18_p13::gentoo, 3.8.12::gentoo, 3.9.7::gentoo, 3.10.0::gentoo >dev-lang/rust: 1.55.0::gentoo >dev-util/cmake: 3.21.3::gentoo >sys-apps/baselayout: 2.8::gentoo >sys-apps/openrc: 0.44.6::gentoo >sys-apps/sandbox: 2.25::gentoo >sys-devel/autoconf: 2.13-r1::gentoo, 2.71-r1::gentoo >sys-devel/automake: 1.16.5::gentoo >sys-devel/binutils: 2.37_p1::gentoo >sys-devel/gcc: 11.2.0::gentoo >sys-devel/gcc-config: 2.4::gentoo >sys-devel/libtool: 2.4.6-r6::gentoo >sys-devel/make: 4.3::gentoo >sys-kernel/linux-headers: 5.14::gentoo (virtual/os-headers) >sys-libs/glibc: 2.33-r7::gentoo >Repositories: > >gentoo > location: /usr/portage > sync-type: rsync > sync-uri: rsync://rsync.gentoo.org/gentoo-portage > priority: -1000 > sync-rsync-verify-jobs: 1 > sync-rsync-verify-max-age: 24 > sync-rsync-extra-opts: > sync-rsync-verify-metamanifest: yes > >guru > location: /opt/guru > masters: gentoo > priority: 0 > >ACCEPT_KEYWORDS="amd64 ~amd64" >ACCEPT_LICENSE="* Apache-2.0" >CBUILD="x86_64-pc-linux-gnu" >CFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >CHOST="x86_64-pc-linux-gnu" >CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" >CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" >CXXFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >DISTDIR="/var/tmp/portage/dev-python/gabbi-2.3.0/distdir" >EMERGE_DEFAULT_OPTS="--with-bdeps=y -1 -k -b" >ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR" >FCFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms sign split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" >FFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >GENTOO_MIRRORS="http://distfiles.gentoo.org" >LANG="C.UTF8" >LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" >MAKEOPTS="-j4" >PKGDIR="/root/.packages" >PORTAGE_CONFIGROOT="/" >PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" >PORTAGE_TMPDIR="/var/tmp" >USE="acl amd64 bzip2 cli crypt dri elogind fortran gdbm iconv ipv6 jumbo-build libglvnd libtirpc multilib native-symlinks ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl tcpd test unicode xattr zlib" ABI_X86="64" ELIBC="glibc" KERNEL="linux" PYTHON_TARGETS="python3_8" USERLAND="GNU" >Unset: CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS > > > > > >############################## ># emerge history (qlop -mv): # >############################## >2021-10-06T12:42:27 >>> dev-libs/libyaml-0.2.5 >2021-10-06T12:42:30 >>> dev-python/six-1.16.0 >2021-10-06T12:42:36 >>> dev-python/pbr-5.6.0 >2021-10-06T12:42:43 >>> dev-python/pyyaml-5.4.1 >2021-10-06T12:42:50 >>> dev-python/wsgi_intercept-1.9.2 >2021-10-06T12:42:56 >>> dev-python/colorama-0.4.4 >2021-10-06T12:43:03 >>> dev-python/decorator-5.1.0 >2021-10-06T12:43:09 >>> dev-python/ply-3.11-r1 >2021-10-06T12:43:16 >>> dev-python/iniconfig-1.1.1 >2021-10-06T12:43:22 >>> dev-python/jsonpath-rw-1.4.0 >2021-10-06T12:43:29 >>> dev-python/more-itertools-8.10.0 >2021-10-06T12:43:35 >>> dev-python/jsonpath-rw-ext-1.2.2 >2021-10-06T12:43:41 >>> dev-python/py-1.10.0 >2021-10-06T12:43:49 >>> dev-python/typing-extensions-3.10.0.2 >2021-10-06T12:43:56 >>> dev-python/zipp-3.6.0 >2021-10-06T12:44:02 >>> dev-python/cython-0.29.24-r1 >2021-10-06T12:44:11 >>> dev-python/importlib_metadata-4.8.1 >2021-10-06T12:44:19 >>> dev-python/toml-0.10.2 >2021-10-06T12:44:26 >>> dev-python/namespace-zope-1-r1 >2021-10-06T12:44:32 >>> dev-python/pluggy-1.0.0 >2021-10-06T12:44:39 >>> dev-python/zope-interface-5.4.0 >2021-10-06T12:44:51 >>> dev-python/attrs-21.2.0 >2021-10-06T12:44:59 >>> dev-python/pytest-6.2.5 >2021-10-06T12:45:09 >>> dev-python/gabbi-2.3.0 >2021-10-06T12:45:41 >>> dev-util/cppunit-1.15.1-r3 >2021-10-06T12:45:44 >>> x11-libs/libICE-1.0.10 >2021-10-06T12:45:51 >>> dev-libs/check-0.15.2-r1 >2021-10-06T12:45:57 >>> x11-misc/xsel-1.2.0-r1 >2021-10-06T12:46:04 >>> dev-python/extras-1.0.0-r1 >2021-10-06T12:46:10 >>> dev-python/wcwidth-0.2.5-r1 >2021-10-06T12:46:17 >>> dev-python/pycodestyle-2.6.0 >2021-10-06T12:46:24 >>> dev-python/future-0.18.2-r1 >2021-10-06T12:46:31 >>> dev-python/voluptuous-0.12.2 >2021-10-06T12:46:40 >>> dev-python/python-mimeparse-1.6.0-r3 >2021-10-06T12:46:46 >>> dev-python/pyrsistent-0.18.0 >2021-10-06T12:46:53 >>> dev-python/autopage-0.4.0 >2021-10-06T12:47:00 >>> dev-python/prettytable-2.2.1 >2021-10-06T12:47:07 >>> dev-python/stevedore-3.4.0 >2021-10-06T12:47:13 >>> dev-python/pyperclip-1.8.2 >2021-10-06T12:47:20 >>> x11-libs/libSM-1.2.3-r1 >2021-10-06T12:47:26 >>> dev-python/pyflakes-2.2.0 >2021-10-06T12:47:33 >>> x11-libs/libXt-1.2.1 >2021-10-06T12:47:40 >>> dev-python/pyproject2setuppy-20 >2021-10-06T12:47:47 >>> dev-python/cmd2-2.2.0 >2021-10-06T12:47:53 >>> dev-python/testtools-2.5.0 >2021-10-06T12:48:01 >>> dev-python/cliff-3.9.0 >2021-10-06T12:48:08 >>> dev-python/fixtures-3.0.0-r1 >2021-10-06T12:48:15 >>> dev-python/flake8-3.8.4 >2021-10-06T12:48:22 >>> dev-python/subunit-1.4.0_p20210729 >2021-10-06T12:48:30 >>> dev-python/mccabe-0.6.1-r2 >2021-10-06T12:48:36 >>> dev-python/stestr-3.2.1 >2021-10-06T12:48:43 >>> dev-python/hacking-4.1.0 > > > > >####################################### ># installed packages (qlist -ICvUSS): # >####################################### >acct-group/input-0-r1:0 >acct-group/kvm-0-r1:0 >acct-group/man-0-r1:0 >acct-group/messagebus-0-r1:0 >acct-group/polkitd-0-r1:0 >acct-group/portage-0:0 >acct-group/render-0-r1:0 >acct-group/sshd-0-r1:0 >acct-user/man-1-r1:0 >acct-user/messagebus-0-r1:0 >acct-user/polkitd-0-r1:0 >acct-user/portage-0:0 >acct-user/sshd-0-r1:0 >app-admin/eselect-1.4.17:0 -doc -emacs -vim-syntax >app-admin/perl-cleaner-2.30:0 >app-arch/bzip2-1.0.8-r1:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static -static-libs >app-arch/gzip-1.11:0 -pic -static >app-arch/libarchive-3.5.2:0/13 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -blake2 bzip2 e2fsprogs -expat iconv -lz4 lzma -lzo -nettle -static-libs xattr zlib -zstd >app-arch/tar-1.34:0 acl -minimal nls -selinux xattr >app-arch/unzip-6.0_p26:0 bzip2 -natspec unicode >app-arch/xz-utils-5.2.5-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 extra-filters nls split-usr -static-libs >app-arch/zstd-1.5.0:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -lz4 -static-libs threads >app-crypt/gnupg-2.2.31:0 bzip2 -doc -ldap nls readline -selinux smartcard ssl -tofu -tools -usb -user-socket -wks-server >app-crypt/gpgme-1.16.0:1/11 -common-lisp cxx -python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -qt5 -static-libs >app-crypt/libb2-0.98.1-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -native-cflags openmp -static-libs >app-crypt/libmd-1.0.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >app-crypt/openpgp-keys-gentoo-release-20200704:0 -test >app-crypt/pinentry-1.2.0:0 -caps -efl -emacs -gnome-keyring -gtk ncurses -qt5 >app-crypt/rhash-1.4.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug nls ssl -static-libs >app-editors/nano-5.8-r2:0 -debug -justify -magic -minimal ncurses nls spell split-usr -static unicode >app-eselect/eselect-fontconfig-1.1-r1:0 >app-eselect/eselect-iptables-20200508:0 >app-eselect/eselect-lib-bin-symlink-0.1.1-r1:0 >app-eselect/eselect-pinentry-0.7.2:0 >app-eselect/eselect-rust-20210703:0 >app-i18n/man-pages-ja-20180315-r1:0 >app-i18n/man-pages-l10n-4.10.0:0 l10n_de l10n_es l10n_fr l10n_it l10n_nl l10n_pl l10n_pt-BR l10n_ro >app-i18n/man-pages-ru-5.03.2390.2390.20191017-r1:0 >app-i18n/man-pages-zh_CN-1.6.3.2:0 >app-misc/c_rehash-1.7-r1:0 >app-misc/ca-certificates-20210119.3.70:0 -cacert >app-misc/editor-wrapper-4-r1:0 >app-misc/mime-types-9:0 >app-misc/pax-utils-1.3.3:0 -caps -debug -python -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 seccomp >app-misc/tmux-3.2a:0 -debug -selinux -utempter -vim-syntax >app-portage/eix-0.36.0:0 -debug -doc nls -sqlite >app-portage/elt-patches-20210924:0 >app-portage/gemato-16.2:0 gpg python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -tools >app-portage/gentoolkit-0.5.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >app-portage/portage-utils-0.92:0 nls openmp qmanifest qtegrity -static >app-shells/bash-5.1_p8:0 -afs -bashlogger -examples -mem-scramble net nls -plugins readline >app-shells/push-3.4:0 >app-shells/quoter-4.2:0 >app-text/ansifilter-2.18:0 -qt5 >app-text/build-docbook-catalog-2.0:0 >app-text/docbook-xml-dtd-4.5-r2:4.5 >app-text/docbook-xml-dtd-4.4-r3:4.4 >app-text/docbook-xml-dtd-4.2-r3:4.2 >app-text/docbook-xml-dtd-4.1.2-r7:4.1.2 >app-text/docbook-xsl-stylesheets-1.79.1-r2:0 -ruby >app-text/manpager-1:0 >app-text/opensp-1.5.2-r6:0 -doc nls -static-libs -test >app-text/po4a-0.64:0 -test >app-text/sgml-common-0.6.3-r7:0 >app-text/xmlto-0.0.28-r6:0 -latex -text >dev-db/sqlite-3.35.5:3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -icu readline -secure-delete -static-libs -tcl -test -tools >dev-lang/perl-5.34.0-r2:0/5.34 -berkdb -debug -doc gdbm -ithreads -minimal >dev-lang/python-3.10.0:3.10 -bluetooth -build -examples gdbm -hardened ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-3.9.7:3.9 -bluetooth -build -examples gdbm -hardened ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-3.8.12:3.8 -bluetooth -build -examples gdbm -hardened ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml >dev-lang/python-2.7.18_p13:2.7 -berkdb -bluetooth -build -examples gdbm -hardened ncurses readline sqlite ssl -tk -verify-sig -wininst xml >dev-lang/python-exec-2.4.8:2 native-symlinks python_targets_pypy3 python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-lang/python-exec-conf-2.4.6:2 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-lang/rust-1.55.0:stable/1.55 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -clippy cpu_flags_x86_sse2 -debug -doc -llvm_targets_AArch64 -llvm_targets_AMDGPU -llvm_targets_ARM -llvm_targets_AVR -llvm_targets_BPF -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 -llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore -miri -nightly -parallel-compiler -rls rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm >dev-lang/spidermonkey-78.14.0:78 -clang -cpu_flags_arm_neon -debug jit -lto -test >dev-lang/tcl-8.6.11:0/8.6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug threads >dev-libs/check-0.15.2-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -subunit -test >dev-libs/elfutils-0.185:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzma nls -static-libs -test -threads utils -valgrind -zstd >dev-libs/expat-2.4.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples split-usr -static-libs unicode >dev-libs/glib-2.70.0:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -dbus -debug elf -fam -gtk-doc mime -selinux -static-libs -sysprof -systemtap -test -utils xattr >dev-libs/gmp-6.2.1-r1:0/10.4 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm cxx -doc -pic -static-libs >dev-libs/gobject-introspection-1.70.0:0 -doctool -gtk-doc -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 -test >dev-libs/gobject-introspection-common-1.70.0:0 >dev-libs/icu-69.1-r1:0/69.1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -examples -static-libs >dev-libs/isl-0.24:0/23 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/jsoncpp-1.9.4:0/24 -doc -test >dev-libs/libassuan-2.5.5:0 >dev-libs/libbsd-0.11.3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/libevent-2.1.12:0/2.1-7 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 clock-gettime -debug -malloc-replacement ssl -static-libs -test threads -verbose-debug >dev-libs/libffi-3.4.2-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -exec-static-trampoline -pax-kernel -static-libs -test >dev-libs/libgcrypt-1.9.4:0/20 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_neon cpu_flags_x86_aes cpu_flags_x86_avx cpu_flags_x86_avx2 -cpu_flags_x86_padlock -cpu_flags_x86_sha cpu_flags_x86_sse4_1 -doc -o-flag-munging -static-libs >dev-libs/libgpg-error-1.42:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -common-lisp nls -static-libs >dev-libs/libksba-1.6.0:0 -static-libs >dev-libs/libltdl-2.4.6:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/libpcre-8.45:3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 cxx jit -libedit pcre16 pcre32 readline recursion-limit split-usr -static-libs unicode zlib >dev-libs/libpcre2-10.38:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 jit -libedit pcre16 pcre32 readline recursion-limit split-usr -static-libs unicode zlib >dev-libs/libpipeline-1.5.3:0 -static-libs -test >dev-libs/libtasn1-4.17.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs -test -valgrind >dev-libs/libunistring-0.9.10-r1:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs >dev-libs/libuv-1.42.0:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >dev-libs/libxml2-2.9.12-r5:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -examples -icu ipv6 -lzma python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 readline -static-libs -test -verify-sig >dev-libs/libxslt-1.1.34-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 crypt -debug -examples -static-libs -verify-sig >dev-libs/libyaml-0.2.5:0 -doc -static-libs -test >dev-libs/lzo-2.10:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples split-usr -static-libs >dev-libs/mpc-1.2.1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/mpfr-4.1.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >dev-libs/nettle-3.7.3:0/8-6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_neon cpu_flags_x86_aes -cpu_flags_x86_sha -doc gmp -static-libs -test >dev-libs/npth-1.6-r1:0 >dev-libs/nspr-4.32:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug >dev-libs/openssl-1.1.1l:0/1.1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -bindist cpu_flags_x86_sse2 -rfc3779 -sctp -sslv3 -static-libs -test -tls-compression -tls-heartbeat -vanilla >dev-libs/popt-1.18:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static-libs >dev-perl/Encode-EUCJPASCII-0.30.0-r1:0 -test >dev-perl/Encode-HanExtra-0.230.0-r3:0 >dev-perl/Encode-Locale-1.50.0:0 -test >dev-perl/File-Listing-6.140.0:0 -test >dev-perl/HTML-Parser-3.760.0:0 -test >dev-perl/HTML-Tagset-3.200.0-r2:0 >dev-perl/HTTP-Cookies-6.100.0:0 -test >dev-perl/HTTP-Date-6.50.0:0 >dev-perl/HTTP-Message-6.320.0:0 -test >dev-perl/HTTP-Negotiate-6.10.0-r1:0 >dev-perl/IO-HTML-1.4.0:0 -test >dev-perl/IO-Socket-INET6-2.720.0-r1:0 >dev-perl/IO-Socket-SSL-2.71.0:0 -examples -idn -test >dev-perl/libwww-perl-6.550.0:0 ssl -test >dev-perl/Locale-gettext-1.70.0:0 >dev-perl/LWP-MediaTypes-6.40.0:0 -test >dev-perl/LWP-Protocol-https-6.100.0:0 -test >dev-perl/MIME-Charset-1.12.2:0 l10n_ja l10n_zh >dev-perl/Module-Build-0.423.100:0 -test >dev-perl/Mozilla-CA-20999999:0 >dev-perl/Net-HTTP-6.210.0:0 -minimal -test >dev-perl/Net-SSLeay-1.900.0:0 -examples -examples -minimal -test >dev-perl/Pod-Parser-1.630.0-r1:0 -test >dev-perl/SGMLSpm-1.1-r2:0 -test >dev-perl/Socket6-0.290.0:0 -test >dev-perl/TermReadKey-2.380.0:0 -examples -test >dev-perl/Text-CharWidth-0.40.0-r2:0 -test >dev-perl/Text-WrapI18N-0.60.0-r2:0 -test >dev-perl/TimeDate-2.330.0-r1:0 -test >dev-perl/Try-Tiny-0.300.0-r1:0 -minimal -test >dev-perl/Unicode-LineBreak-2019.1.0:0 >dev-perl/URI-5.90.0:0 -test >dev-perl/WWW-RobotRules-6.20.0-r2:0 -test >dev-perl/XML-Parser-2.460.0:0 >dev-perl/YAML-Tiny-1.730.0:0 -minimal -test >dev-python/attrs-21.2.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/autopage-0.4.0:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/certifi-10001-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/charset_normalizer-2.0.6:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/cliff-3.9.0:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/cmd2-2.2.0:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -test >dev-python/colorama-0.4.4:0 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/cython-0.29.24-r1:0 -doc -emacs python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/decorator-5.1.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/extras-1.0.0-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/fixtures-3.0.0-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/flake8-3.8.4:0 -doc python_targets_pypy3 python_targets_python3_8 python_targets_python3_9 -test >dev-python/future-0.18.2-r1:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/gabbi-2.3.0:0 python_targets_python3_8 -test >dev-python/hacking-4.1.0:0 -doc python_targets_python3_8 python_targets_python3_9 -test >dev-python/idna-3.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/importlib_metadata-4.8.1:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/iniconfig-1.1.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/jinja-3.0.2:0 -doc -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/jsonpath-rw-1.4.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/jsonpath-rw-ext-1.2.2:0 python_targets_python3_8 -test >dev-python/markupsafe-2.0.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/mccabe-0.6.1-r2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/more-itertools-8.10.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/namespace-zope-1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/packaging-21.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pbr-5.6.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pluggy-1.0.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/ply-3.11-r1:0/3.11 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/prettytable-2.2.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/py-1.10.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pycodestyle-2.6.0:0 -doc python_targets_pypy3 python_targets_python3_8 python_targets_python3_9 >dev-python/pyflakes-2.2.0:0 python_targets_pypy3 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pyparsing-2.4.7-r1:0 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/pyperclip-1.8.2:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pyproject2setuppy-20:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/pypy3-7.3.5_p1:0/pypy37-pp73 bzip2 gdbm jit ncurses -sqlite -test -tk >dev-python/pypy3-exe-7.3.5:7.3.5 bzip2 -cpu_flags_x86_sse2 jit -low-memory ncurses >dev-python/pyrsistent-0.18.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/PySocks-1.7.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/pytest-6.2.5:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/python-mimeparse-1.6.0-r3:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/pyyaml-5.4.1:0 -examples libyaml python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/requests-2.26.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -socks5 -test >dev-python/setuptools-57.5.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/setuptools_scm-6.3.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/six-1.16.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/stestr-3.2.1:0 python_targets_python3_8 python_targets_python3_9 -test >dev-python/stevedore-3.4.0:0 -doc -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/subunit-1.4.0_p20210729:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -static-libs -test >dev-python/testtools-2.5.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/toml-0.10.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -test >dev-python/tomli-1.2.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/typing-extensions-3.10.0.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-python/urllib3-1.26.7:0 -brotli python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/voluptuous-0.12.2:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/wcwidth-0.2.5-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/wsgi_intercept-1.9.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/zipp-3.6.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-python/zope-interface-5.4.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-util/cmake-3.21.3:0 -doc -emacs ncurses -qt5 -test -test >dev-util/cppunit-1.15.1-r3:0/1.15 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -examples >dev-util/desktop-file-utils-0.26-r1:0 -emacs >dev-util/glib-utils-2.70.0:0 -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 >dev-util/gperf-3.1:0 >dev-util/gtk-doc-am-1.33.2:0 >dev-util/intltool-0.51.0-r2:0 >dev-util/itstool-2.0.6-r1:0 -python_single_target_python3_8 python_single_target_python3_9 >dev-util/meson-0.59.2:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test >dev-util/meson-format-array-0:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 >dev-util/ninja-1.10.2-r1:0 -doc -emacs -test -vim-syntax >dev-util/pkgconf-1.8.0-r1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -test >dev-util/re2c-2.2:0 -debug -test >dev-vcs/git-2.33.0-r1:0 blksha1 -cgi curl -cvs -doc -emacs -gnome-keyring gpg -highlight iconv -mediawiki -mediawiki-experimental nls pcre -perforce -perl -ppcsha1 -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 -subversion -test threads -tk webdav -xinetd >media-fonts/liberation-fonts-2.1.3:0 -fontforge -X -X >media-gfx/graphite2-1.3.14:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -perl -test >media-libs/fontconfig-2.13.1-r2:1.0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs >media-libs/freetype-2.11.0-r1:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 adobe-cff -brotli bzip2 cleartype-hinting -debug -doc -fontforge harfbuzz -infinality png -static-libs -utils -X >media-libs/harfbuzz-2.9.1:0/0.9.18 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cairo -debug -doc -experimental glib graphite -icu introspection -test truetype >media-libs/libpng-1.6.37-r2:0/16 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -apng -cpu_flags_arm_neon cpu_flags_x86_sse -static-libs >net-dns/libidn2-2.3.2:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -verify-sig >net-firewall/iptables-1.8.7:0/1.8.3 -conntrack ipv6 -netlink -nftables -pcap split-usr -static-libs >net-libs/gnutls-3.7.2:0/30 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cxx -dane -doc -examples -guile idn nls openssl -pkcs11 seccomp -sslv2 -sslv3 -static-libs -test -test-full tls-heartbeat -tools -valgrind >net-libs/libmnl-1.0.4:0/0.2.0 -examples split-usr -static-libs >net-libs/libnsl-2.0.0-r1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >net-libs/libtirpc-1.3.2:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 ipv6 -kerberos split-usr -static-libs >net-libs/nghttp2-1.45.1-r1:0/1.14 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cxx -debug -hpack-tools -jemalloc -static-libs -test threads -utils -xml >net-misc/curl-7.79.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -adns -alt-svc -brotli -curl_ssl_gnutls -curl_ssl_mbedtls -curl_ssl_nss curl_ssl_openssl -curl_ssl_winssl ftp -gnutls -gopher -hsts http2 -idn imap ipv6 -kerberos -ldap -mbedtls -nghttp3 -nss openssl pop3 progress-meter -quiche -rtmp -samba smtp -ssh ssl -sslv3 -static-libs -telnet -test tftp -threads -winssl -zstd >net-misc/iputils-20210722:0 arping -caps -clockdiff -doc filecaps -gcrypt -idn ipv6 -nettle nls -rarpd -rdisc ssl -static -test -tftpd -tracepath -traceroute6 >net-misc/netifrc-0.7.3:0 >net-misc/openssh-8.8_p1:0 -abi_mips_n32 -audit -bindist -debug -hpn -kerberos -ldns -libedit -livecd pam pie scp -sctp -security-key -selinux ssl -static -test -X -X509 -xmss >net-misc/rsync-3.2.3-r4:0 acl -examples iconv ipv6 -lz4 ssl -stunnel -system-zlib xattr -xxhash -zstd >net-misc/wget-1.21.2:0 -cookie_check -debug -gnutls -idn ipv6 -metalink nls -ntlm pcre ssl -static -test -uuid zlib >perl-core/Encode-3.120.0:0 >perl-core/File-Temp-0.231.100:0 >perl-core/Scalar-List-Utils-1.560.0:0 >sys-apps/acl-2.3.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls split-usr -static-libs >sys-apps/attr-2.5.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug nls split-usr -static-libs >sys-apps/baselayout-2.8:0 -build split-usr >sys-apps/coreutils-9.0-r1:0 acl -caps -gmp -hostname -kill -multicall nls -selinux split-usr -static -test -vanilla xattr >sys-apps/dbus-1.12.20-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc elogind -selinux -static-libs -systemd -test -test -user-session -X >sys-apps/debianutils-5.4:0 installkernel -static >sys-apps/diffutils-3.8:0 nls -static >sys-apps/file-5.40-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzma -python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -seccomp -static-libs zlib >sys-apps/findutils-4.8.0:0 nls -selinux -static -test >sys-apps/gawk-5.1.0:0 -mpfr nls readline >sys-apps/gentoo-functions-0.15:0 >sys-apps/grep-3.7:0 nls pcre -static >sys-apps/groff-1.22.4:0 -examples -uchardet -X >sys-apps/help2man-1.48.5:0 nls >sys-apps/hwids-20210613-r1:0 net pci -systemd udev usb >sys-apps/install-xattr-0.8:0 >sys-apps/iproute2-5.14.0:0 -atm -berkdb -bpf -caps -elf iptables ipv6 -libbsd -minimal -selinux >sys-apps/kbd-2.4.0:0 nls pam -test >sys-apps/kmod-29:0 -debug -doc lzma -pkcs7 -python python_targets_python3_8 python_targets_python3_9 -static-libs tools zlib -zstd >sys-apps/less-590:0 pcre unicode >sys-apps/man-db-2.9.4-r1:0 -berkdb gdbm manpager nls seccomp -selinux -static-libs zlib >sys-apps/man-pages-5.13:0 l10n_de l10n_es l10n_fr l10n_it l10n_ja l10n_nl l10n_pl l10n_pt-BR l10n_ro l10n_ru l10n_zh-CN >sys-apps/man-pages-posix-2017a:0 >sys-apps/net-tools-2.10:0 arp hostname ipv6 -nis nls -plipconfig -selinux -slattach -static >sys-apps/openrc-0.44.6:0 -audit -bash -debug ncurses netifrc -newnet pam -selinux -sysv-utils unicode >sys-apps/portage-3.0.28:0 -apidoc -build -doc -gentoo-dev ipc native-extensions python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 rsync-verify -selinux -test xattr >sys-apps/sandbox-2.25:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 >sys-apps/sed-4.8:0 acl nls -selinux -static >sys-apps/shadow-4.9-r2:0 acl -audit -bcrypt -cracklib nls pam -selinux -skey split-usr su xattr >sys-apps/systemd-tmpfiles-249.2:0 -selinux -test >sys-apps/sysvinit-3.00:0 -ibm -selinux -static >sys-apps/texinfo-6.8:0 nls standalone -static >sys-apps/util-linux-2.37.2-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -build -caps cramfs -cryptsetup -fdformat hardlink -kill logger -magic ncurses nls pam -python python_targets_python3_8 python_targets_python3_9 readline -selinux -slang split-usr -static-libs -su suid -systemd -test -tty-helpers -udev unicode >sys-apps/which-2.21:0 >sys-auth/elogind-246.10-r1:0 acl -audit -debug -doc pam policykit -selinux >sys-auth/pambase-20210201.1:0 -caps -debug elogind -gnome-keyring -homed -minimal -mktemp nullok -pam_krb5 -pam_ssh passwdqc -pwhistory -pwquality -securetty -selinux sha512 -systemd >sys-auth/passwdqc-2.0.2-r1:0 >sys-auth/polkit-0.120-r1:0 -examples -gtk introspection -kde pam -selinux -systemd -test >sys-devel/autoconf-2.71-r1:2.71 -emacs >sys-devel/autoconf-2.13-r1:2.1 >sys-devel/autoconf-archive-2021.02.19-r1:0 >sys-devel/autoconf-wrapper-15:0 >sys-devel/automake-1.16.5:1.16 -test >sys-devel/automake-wrapper-11:0 >sys-devel/binutils-2.37_p1:2.37 -cet -default-gold -doc gold -multitarget nls plugins -static-libs -test -vanilla >sys-devel/binutils-config-5.4:0 native-symlinks >sys-devel/bison-3.8.2:0 -examples nls -static -test >sys-devel/flex-2.6.4-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static -test >sys-devel/gcc-11.2.0:11 -ada -custom-cflags cxx -d -debug -doc -fixed-point fortran -go graphite -hardened -jit -libssp lto multilib nls nptl -objc -objc++ -objc-gc openmp pch -pgo pie sanitize ssp -systemtap -test -valgrind -vanilla -vtv -zstd >sys-devel/gcc-config-2.4:0 cc-wrappers native-symlinks >sys-devel/gettext-0.21-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -cvs cxx -doc -emacs -git -java -java ncurses nls openmp -static-libs >sys-devel/gnuconfig-20210107:0 >sys-devel/libtool-2.4.6-r6:2 -vanilla >sys-devel/llvm-12.0.1:12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -doc -exegesis -gold -libedit libffi -llvm_targets_AArch64 llvm_targets_AMDGPU -llvm_targets_ARC -llvm_targets_ARM -llvm_targets_AVR llvm_targets_BPF -llvm_targets_CSKY -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_VE -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore ncurses -test -xar -xml -z3 >sys-devel/llvm-common-13.0.0:0 >sys-devel/m4-1.4.19:0 -examples nls >sys-devel/make-4.3:0 -guile nls -static >sys-devel/patch-2.7.6-r4:0 -static -test xattr >sys-fs/e2fsprogs-1.46.4:0 -cron -fuse -lto nls split-usr -static-libs threads >sys-fs/eudev-3.2.10-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 hwdb -introspection kmod -rule-generator -selinux -static-libs -test >sys-fs/udev-init-scripts-35:0 >sys-kernel/installkernel-gentoo-3:0 >sys-kernel/linux-headers-5.14:0 -headers-only >sys-libs/binutils-libs-2.37_p1:0/2.37 -64-bit-bfd -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cet -multitarget nls -static-libs >sys-libs/e2fsprogs-libs-1.46.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static-libs >sys-libs/gdbm-1.21:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 berkdb nls readline -static-libs >sys-libs/glibc-2.33-r7:2.2 -audit -caps -cet -compile-locales -crypt -custom-cflags -doc -gd -headers-only multiarch multilib -multilib-bootstrap -nscd -profile -selinux ssp static-libs -static-pie -suid -systemd -systemtap -test -vanilla >sys-libs/libcap-2.59:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 pam split-usr -static-libs -tools >sys-libs/libseccomp-2.5.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -python python_targets_python3_8 python_targets_python3_9 -static-libs >sys-libs/libxcrypt-4.4.26:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 compat split-usr -static-libs system -test >sys-libs/ncurses-6.2_p20210619:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 -ada cxx -debug -doc -gpm -minimal -profile split-usr -static-libs -test tinfo -trace >sys-libs/pam-1.5.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -berkdb -debug filecaps -nis -selinux split-usr >sys-libs/readline-8.1_p1-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static-libs unicode -utils >sys-libs/timezone-data-2021a-r1:0 -leaps-timezone nls -zic-slim >sys-libs/zlib-1.2.11-r4:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32 minizip split-usr -static-libs >sys-process/procps-3.3.17-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 elogind kill -modern-top ncurses nls -selinux split-usr -static-libs -systemd -test unicode >sys-process/psmisc-23.4-r1:0 ipv6 nls -selinux -X >virtual/acl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >virtual/awk-1:0 >virtual/dev-manager-0-r2:0 >virtual/editor-0-r3:0 >virtual/libc-1-r1:0 >virtual/libcrypt-2:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs >virtual/libelf-3:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libiconv-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libintl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >virtual/libudev-232-r5:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -systemd >virtual/man-0-r4:0 >virtual/os-headers-0-r2:0 >virtual/package-manager-1:0 >virtual/pager-0:0 >virtual/perl-Carp-1.520.0-r1:0 >virtual/perl-Compress-Raw-Bzip2-2.101.0:0 >virtual/perl-Compress-Raw-Zlib-2.101.0:0 >virtual/perl-CPAN-Meta-2.150.10-r5:0 >virtual/perl-CPAN-Meta-Requirements-2.140.0-r7:0 >virtual/perl-CPAN-Meta-YAML-0.18.0-r7:0 >virtual/perl-Data-Dumper-2.179.0:0 >virtual/perl-Digest-MD5-2.580.0:0 >virtual/perl-Encode-3.120.0:0 >virtual/perl-Exporter-5.760.0:0 >virtual/perl-ExtUtils-CBuilder-0.280.236:0 >virtual/perl-ExtUtils-Install-2.200.0:0 >virtual/perl-ExtUtils-MakeMaker-7.620.0:0 >virtual/perl-ExtUtils-Manifest-1.730.0:0 >virtual/perl-ExtUtils-ParseXS-3.430.0:0 >virtual/perl-File-Spec-3.800.0:0 >virtual/perl-File-Temp-0.231.100:0 >virtual/perl-Getopt-Long-2.520.0:0 >virtual/perl-IO-1.460.0:0 >virtual/perl-IO-Compress-2.102.0:0 >virtual/perl-IO-Socket-IP-0.410.0:0 >virtual/perl-JSON-PP-4.60.0:0 >virtual/perl-libnet-3.130.0:0 ssl >virtual/perl-MIME-Base64-3.160.0:0 >virtual/perl-Module-Metadata-1.0.37-r1:0 >virtual/perl-parent-0.238.0-r1:0 >virtual/perl-Parse-CPAN-Meta-2.150.10-r5:0 >virtual/perl-Perl-OSType-1.10.0-r5:0 >virtual/perl-podlators-4.140.0-r2:0 >virtual/perl-Scalar-List-Utils-1.560.0:0 >virtual/perl-Test-Harness-3.430.0:0 >virtual/perl-Text-ParseWords-3.300.0-r8:0 >virtual/perl-Time-Local-1.300.0:0 >virtual/perl-version-0.992.800:0 >virtual/perl-XSLoader-0.300.0-r4:0 >virtual/pkgconfig-2-r1:0 >virtual/rust-1.55.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -rustfmt >virtual/service-manager-1:0 >virtual/ssh-0:0 -minimal >virtual/tmpfiles-0-r1:0 >virtual/ttf-fonts-1-r1:0 >virtual/udev-217-r3:0 >virtual/yacc-0:0 >www-client/pybugz-0.13-r1:0 python_targets_python3_8 python_targets_python3_9 >x11-base/xcb-proto-1.14.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 python_targets_python3_8 python_targets_python3_9 >x11-base/xorg-proto-2021.5:0 -test >x11-libs/cairo-1.16.0-r4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -aqua -debug -gles2-only glib -opengl -static-libs svg -utils -valgrind -X >x11-libs/libICE-1.0.10:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 ipv6 >x11-libs/libSM-1.2.3-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc ipv6 uuid >x11-libs/libX11-1.7.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc ipv6 -test >x11-libs/libXau-1.0.9-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libxcb-1.14:0/1.12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -doc -selinux -test xkb >x11-libs/libXdmcp-1.1.3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libXext-1.3.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc >x11-libs/libXrender-0.9.10-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 >x11-libs/libXt-1.2.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -test >x11-libs/pixman-0.40.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cpu_flags_arm_iwmmxt -cpu_flags_arm_iwmmxt2 -cpu_flags_arm_neon -cpu_flags_ppc_altivec cpu_flags_x86_mmxext cpu_flags_x86_sse2 cpu_flags_x86_ssse3 -loongson2f -static-libs >x11-libs/xtrans-1.4.0:0 -doc >x11-misc/compose-tables-1.7.2:0 >x11-misc/shared-mime-info-2.1:0 >x11-misc/xsel-1.2.0-r1:0 > > >####################### ># build.log # >####################### >>>> Unpacking source... >>>> Unpacking gabbi-2.3.0.tar.gz to /var/tmp/portage/dev-python/gabbi-2.3.0/work >>>> Source unpacked in /var/tmp/portage/dev-python/gabbi-2.3.0/work >>>> Preparing source in /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0 ... >>>> Source prepared. >>>> Configuring source in /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0 ... >>>> Source configured. >>>> Compiling source in /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0 ... > * python3_8: running distutils-r1_run_phase distutils-r1_python_compile >python3.8 setup.py build -j 4 >running build >running build_py >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/handlers/__init__.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/handlers/base.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/handlers/core.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/handlers/jsonhandler.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/handlers/yaml_disk_loading_jsonhandler.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/handlers >copying gabbi/__init__.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/case.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/driver.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/exception.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/fixture.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/httpclient.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/json_parser.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/pytester.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/reporter.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/runner.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/suite.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/suitemaker.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >copying gabbi/utils.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/__init__.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/custom_response_handler.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/simple_wsgi.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_data_to_string.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_driver.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_fixtures.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_handlers.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_history.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_inner_fixture.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_intercept.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_jsonpath.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_live.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_load_data_file.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_parse_url.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_replacers.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_runner.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_suite.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_suitemaker.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_syntax_warning.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_unsafe_yaml.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_use_prior_test.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_utils.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/test_yaml_disk_loading_jsonhandler.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >copying gabbi/tests/util.py -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >running egg_info >writing gabbi.egg-info/PKG-INFO >writing dependency_links to gabbi.egg-info/dependency_links.txt >writing entry points to gabbi.egg-info/entry_points.txt >writing requirements to gabbi.egg-info/requires.txt >writing top-level names to gabbi.egg-info/top_level.txt >[pbr] Reusing existing SOURCES.txt >copying gabbi/tests/README -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >copying gabbi/tests/gabbits_handlers/cat.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >copying gabbi/tests/gabbits_handlers/data.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >copying gabbi/tests/gabbits_handlers/pets.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >copying gabbi/tests/gabbits_handlers/values.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >copying gabbi/tests/gabbits_handlers/yaml-from-disk.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers/subdir >copying gabbi/tests/gabbits_handlers/subdir/data.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers/subdir >copying gabbi/tests/gabbits_handlers/subdir/pets.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers/subdir >copying gabbi/tests/gabbits_handlers/subdir/values.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_handlers/subdir >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_inner >copying gabbi/tests/gabbits_inner/inner.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_inner >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/backref.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/casting.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/cat.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/coerce.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/contenttype.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/cookie.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/data.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/data.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/disable-response-handler.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/failskip.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/fixture.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/forbiddenheaders.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/header-key.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/horse -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/json-extensions.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/json-left-side.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/json-right-side.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/jsonbody.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/kitten.png -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/last-url.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/method-shortcut.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/pets.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/poll.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/prefix.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/queryparams.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/regex.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/self.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/skipall.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/utf8.txt -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/values.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >copying gabbi/tests/gabbits_intercept/verbosity.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept/subdir >copying gabbi/tests/gabbits_intercept/subdir/values.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_intercept/subdir >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_live >copying gabbi/tests/gabbits_live/google.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_live >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/failure.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/nan.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/success.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/success_alt.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/test_data.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/test_verbose.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >copying gabbi/tests/gabbits_runner/verbosity.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner/subdir >copying gabbi/tests/gabbits_runner/subdir/sample.json -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_runner/subdir >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_unsafe_yaml >copying gabbi/tests/gabbits_unsafe_yaml/nan.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/gabbits_unsafe_yaml >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/test_gabbits >copying gabbi/tests/test_gabbits/sample.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/test_gabbits >creating /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/warning_gabbits >copying gabbi/tests/warning_gabbits/underscore_sample.yaml -> /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0-python3_8/lib/gabbi/tests/warning_gabbits >warning: build_py: byte-compiling is disabled, skipping. > >>>> Source compiled. >>>> Test phase: dev-python/gabbi-2.3.0 > * python3_8: running distutils-r1_run_phase python_test >python3.8 -m pytest -vv -ra -l -Wdefault >============================= test session starts ============================== >platform linux -- Python 3.8.12, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- /usr/bin/python3.8 >cachedir: .pytest_cache >rootdir: /var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0 >collecting ... collected 355 items > >gabbi/tests/test_data_to_string.py::TestDataToString::testHappyPath PASSED [ 0%] >gabbi/tests/test_data_to_string.py::TestDataToString::testNoContentType PASSED [ 0%] >gabbi/tests/test_data_to_string.py::TestDataToString::testNoHandler PASSED [ 1%] >gabbi/tests/test_driver.py::DriverTest::test_build_require_ssl PASSED [ 1%] >gabbi/tests/test_driver.py::DriverTest::test_build_requires_host_or_intercept PASSED [ 1%] >gabbi/tests/test_driver.py::DriverTest::test_build_url_target PASSED [ 2%] >gabbi/tests/test_driver.py::DriverTest::test_build_url_target_forced_ssl PASSED [ 2%] >gabbi/tests/test_driver.py::DriverTest::test_build_url_use_prior_test PASSED [ 2%] >gabbi/tests/test_driver.py::DriverTest::test_build_with_url_provides_host PASSED [ 3%] >gabbi/tests/test_driver.py::DriverTest::test_driver_loads_three_tests PASSED [ 3%] >gabbi/tests/test_driver.py::DriverTest::test_driver_prefix PASSED [ 3%] >gabbi/tests/test_fixtures.py::FixtureTest::test_fixture_informs_on_exception PASSED [ 4%] >gabbi/tests/test_fixtures.py::FixtureTest::test_fixture_starts_and_stop PASSED [ 4%] >gabbi/tests/test_handlers.py::HandlersTest::test_empty_response_handler PASSED [ 4%] >gabbi/tests/test_handlers.py::HandlersTest::test_resonse_headers_stringify PASSED [ 5%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers PASSED [ 5%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_fail_data PASSED [ 5%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_fail_header PASSED [ 6%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_noregex_path_match PASSED [ 6%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_noregex_path_nomatch PASSED [ 6%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_regex PASSED [ 7%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_regex_path_match PASSED [ 7%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_regex_path_nomatch PASSED [ 7%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_substitute_esc_regex PASSED [ 8%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_substitute_noregex PASSED [ 8%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_headers_substitute_regex PASSED [ 8%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths PASSED [ 9%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_dict_type PASSED [ 9%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_fail_data PASSED [ 9%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_fail_path PASSED [ 10%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_from_disk_json_path PASSED [ 10%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_from_disk_json_path_fail PASSED [ 10%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_regex PASSED [ 11%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_regex_number PASSED [ 11%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_regex_path_match PASSED [ 11%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_regex_path_nomatch PASSED [ 12%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_substitution_esc_regex PASSED [ 12%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_substitution_noregex PASSED [ 12%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_substitution_regex PASSED [ 13%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_json_paths_yamlhandler PASSED [ 13%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_string_list_type PASSED [ 13%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_strings PASSED [ 14%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_strings_fail PASSED [ 14%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_strings_fail_big_output PASSED [ 14%] >gabbi/tests/test_handlers.py::HandlersTest::test_response_strings_fail_big_payload PASSED [ 15%] >gabbi/tests/test_handlers.py::TestJSONHandlerAccept::test_many_content_types PASSED [ 15%] >gabbi/tests/test_history.py::HistoryTest::test_cookie_replace_history PASSED [ 15%] >gabbi/tests/test_history.py::HistoryTest::test_cookie_replace_prior PASSED [ 16%] >gabbi/tests/test_history.py::HistoryTest::test_cookie_replace_prior_regex PASSED [ 16%] >gabbi/tests/test_history.py::HistoryTest::test_header_replace_prior PASSED [ 16%] >gabbi/tests/test_history.py::HistoryTest::test_header_replace_with_history PASSED [ 17%] >gabbi/tests/test_history.py::HistoryTest::test_header_replace_with_history_regex PASSED [ 17%] >gabbi/tests/test_history.py::HistoryTest::test_location_replace_history PASSED [ 17%] >gabbi/tests/test_history.py::HistoryTest::test_location_replace_prior PASSED [ 18%] >gabbi/tests/test_history.py::HistoryTest::test_location_replace_prior_regex PASSED [ 18%] >gabbi/tests/test_history.py::HistoryTest::test_response_replace_prior PASSED [ 18%] >gabbi/tests/test_history.py::HistoryTest::test_response_replace_prior_regex PASSED [ 19%] >gabbi/tests/test_history.py::HistoryTest::test_response_replace_with_history PASSED [ 19%] >gabbi/tests/test_history.py::HistoryTest::test_url_replace_history PASSED [ 19%] >gabbi/tests/test_history.py::HistoryTest::test_url_replace_prior PASSED [ 20%] >gabbi/tests/test_history.py::HistoryTest::test_url_replace_prior_regex PASSED [ 20%] >gabbi/tests/test_inner_fixture.py::test_pytest[driver_inner_get_one] <- gabbi/driver.py PASSED [ 20%] >gabbi/tests/test_inner_fixture.py::test_pytest[driver_inner_get_two] <- gabbi/driver.py PASSED [ 21%] >gabbi/tests/test_inner_fixture.py::test_pytest[driver_inner_get_three] <- gabbi/driver.py PASSED [ 21%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_post_some_json] <- gabbi/driver.py PASSED [ 21%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_post_some_more_json] <- gabbi/driver.py PASSED [ 22%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_post_even_more_json] <- gabbi/driver.py PASSED [ 22%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_post_even_more_json_quote_different] <- gabbi/driver.py PASSED [ 22%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_use_raw_json_from_response] <- gabbi/driver.py PASSED [ 23%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_post_a_raw_int_as_json] <- gabbi/driver.py PASSED [ 23%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_repost_that_raw_int] <- gabbi/driver.py PASSED [ 23%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_backref_json_fail_start] <- gabbi/driver.py PASSED [ 24%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_backref_json_fail_end] <- gabbi/driver.py XFAIL [ 24%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_get_a_historical_response] <- gabbi/driver.py PASSED [ 24%] >gabbi/tests/test_intercept.py::test_pytest[driver_backref_get_a_historical_response_via_jsonpath] <- gabbi/driver.py PASSED [ 25%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_default_casts] <- gabbi/driver.py PASSED [ 25%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_cast_to_string] <- gabbi/driver.py PASSED [ 25%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_cast_to_int_internal] <- gabbi/driver.py XFAIL [ 26%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_json_set_up] <- gabbi/driver.py PASSED [ 26%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_send_casted_json] <- gabbi/driver.py PASSED [ 26%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_historic_casted_json] <- gabbi/driver.py PASSED [ 27%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_internal_json_fail] <- gabbi/driver.py XFAIL [ 27%] >gabbi/tests/test_intercept.py::test_pytest[driver_casting_internal_json_fine] <- gabbi/driver.py PASSED [ 27%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_post_data] <- gabbi/driver.py PASSED [ 28%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_use_data] <- gabbi/driver.py PASSED [ 28%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_from_environ] <- gabbi/driver.py PASSED [ 28%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_with_list] <- gabbi/driver.py PASSED [ 29%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_object_with_list] <- gabbi/driver.py PASSED [ 29%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_post_extra_data] <- gabbi/driver.py PASSED [ 29%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_check_posted_data] <- gabbi/driver.py PASSED [ 30%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_post_again_and_check_the_results] <- gabbi/driver.py PASSED [ 30%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_post_again_and_check_the_results_(reversed)] <- gabbi/driver.py PASSED [ 30%] >gabbi/tests/test_intercept.py::test_pytest[driver_coerce_string_internal_replace] <- gabbi/driver.py PASSED [ 31%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_put_no_content-type] <- gabbi/driver.py PASSED [ 31%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_post_no_content-type] <- gabbi/driver.py PASSED [ 31%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_patch_no_content-type] <- gabbi/driver.py PASSED [ 32%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_put_content-type] <- gabbi/driver.py PASSED [ 32%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_post_content-type] <- gabbi/driver.py PASSED [ 32%] >gabbi/tests/test_intercept.py::test_pytest[driver_contenttype_patch_content-type] <- gabbi/driver.py PASSED [ 33%] >gabbi/tests/test_intercept.py::test_pytest[driver_cookie_get_a_cookie] <- gabbi/driver.py PASSED [ 33%] >gabbi/tests/test_intercept.py::test_pytest[driver_cookie_use_that_cookie_in_a_url] <- gabbi/driver.py PASSED [ 33%] >gabbi/tests/test_intercept.py::test_pytest[driver_cookie_confirm_no_cookies_causes_error] <- gabbi/driver.py XFAIL [ 34%] >gabbi/tests/test_intercept.py::test_pytest[driver_cookie_use_a_historical_cookie] <- gabbi/driver.py PASSED [ 34%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_load_data_dictionary] <- gabbi/driver.py PASSED [ 34%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_load_data_list] <- gabbi/driver.py PASSED [ 35%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_load_json_file] <- gabbi/driver.py PASSED [ 35%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_load_image_file] <- gabbi/driver.py PASSED [ 35%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_load_encoded_text] <- gabbi/driver.py PASSED [ 36%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_json_value_from_disk] <- gabbi/driver.py PASSED [ 36%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_partial_json_from_disk] <- gabbi/driver.py PASSED [ 36%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_post_data_for_next] <- gabbi/driver.py PASSED [ 37%] >gabbi/tests/test_intercept.py::test_pytest[driver_data_post_data_from_prior_response] <- gabbi/driver.py PASSED [ 37%] >gabbi/tests/test_intercept.py::test_pytest[driver_disable-response-handler_get_some_not_json_fail] <- gabbi/driver.py XFAIL [ 37%] >gabbi/tests/test_intercept.py::test_pytest[driver_disable-response-handler_get_some_not_json_gloss] <- gabbi/driver.py PASSED [ 38%] >gabbi/tests/test_intercept.py::test_pytest[driver_failskip_wrong_status] <- gabbi/driver.py XFAIL [ 38%] >gabbi/tests/test_intercept.py::test_pytest[driver_failskip_non_existent_header] <- gabbi/driver.py XFAIL [ 38%] >gabbi/tests/test_intercept.py::test_pytest[driver_failskip_skip_me] <- gabbi/driver.py SKIPPED [ 39%] >gabbi/tests/test_intercept.py::test_pytest[driver_fixture_just_to_see] <- gabbi/driver.py PASSED [ 39%] >gabbi/tests/test_intercept.py::test_pytest[driver_fixture_just_to_see_one] <- gabbi/driver.py PASSED [ 39%] >gabbi/tests/test_intercept.py::test_pytest[driver_fixture_just_to_see_two] <- gabbi/driver.py PASSED [ 40%] >gabbi/tests/test_intercept.py::test_pytest[driver_fixture_just_to_see_three] <- gabbi/driver.py PASSED [ 40%] >gabbi/tests/test_intercept.py::test_pytest[driver_forbiddenheaders_header_not_there_basic] <- gabbi/driver.py PASSED [ 40%] >gabbi/tests/test_intercept.py::test_pytest[driver_forbiddenheaders_header_is_there_fail] <- gabbi/driver.py XFAIL [ 41%] >gabbi/tests/test_intercept.py::test_pytest[driver_forbiddenheaders_header_is_there_fail_case_insensitive] <- gabbi/driver.py XFAIL [ 41%] >gabbi/tests/test_intercept.py::test_pytest[driver_header-key_header_named_http] <- gabbi/driver.py PASSED [ 41%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-extensions_test_len] <- gabbi/driver.py PASSED [ 42%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-extensions_test_sort] <- gabbi/driver.py PASSED [ 42%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-extensions_test_filtered] <- gabbi/driver.py PASSED [ 42%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-left-side_left_side_json_one] <- gabbi/driver.py PASSED [ 43%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-left-side_expand_left_side] <- gabbi/driver.py PASSED [ 43%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-left-side_expand_environ_left_side] <- gabbi/driver.py PASSED [ 43%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-left-side_set_key_and_value] <- gabbi/driver.py PASSED [ 44%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-left-side_check_key_and_value] <- gabbi/driver.py PASSED [ 44%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-right-side_json_encoded_value_from_disk] <- gabbi/driver.py PASSED [ 44%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-right-side_json_parital_from_disk] <- gabbi/driver.py PASSED [ 45%] >gabbi/tests/test_intercept.py::test_pytest[driver_json-right-side_json_partial_both_sides] <- gabbi/driver.py PASSED [ 45%] >gabbi/tests/test_intercept.py::test_pytest[driver_jsonbody_test_fully_body] <- gabbi/driver.py PASSED [ 45%] >gabbi/tests/test_intercept.py::test_pytest[driver_jsonbody_test_empty_dict] <- gabbi/driver.py PASSED [ 46%] >gabbi/tests/test_intercept.py::test_pytest[driver_jsonbody_test_empty_list] <- gabbi/driver.py PASSED [ 46%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_get_a_url_the_first_time] <- gabbi/driver.py PASSED [ 46%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_get_that_same_url_again] <- gabbi/driver.py PASSED [ 47%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_get_it_a_third_time] <- gabbi/driver.py PASSED [ 47%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_add_some_query_params] <- gabbi/driver.py PASSED [ 47%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_now_last_url_does_not_have_those_query_params] <- gabbi/driver.py PASSED [ 48%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_last_with_adjusted_parameters] <- gabbi/driver.py PASSED [ 48%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_get_a_historical_url] <- gabbi/driver.py PASSED [ 48%] >gabbi/tests/test_intercept.py::test_pytest[driver_last-url_get_prior_url] <- gabbi/driver.py PASSED [ 49%] >gabbi/tests/test_intercept.py::test_pytest[driver_method-shortcut_simple_post] <- gabbi/driver.py PASSED [ 49%] >gabbi/tests/test_intercept.py::test_pytest[driver_method-shortcut_post_with_query] <- gabbi/driver.py PASSED [ 49%] >gabbi/tests/test_intercept.py::test_pytest[driver_method-shortcut_simple_get] <- gabbi/driver.py PASSED [ 50%] >gabbi/tests/test_intercept.py::test_pytest[driver_method-shortcut_arbitrary_method] <- gabbi/driver.py PASSED [ 50%] >gabbi/tests/test_intercept.py::test_pytest[driver_poll_poller] <- gabbi/driver.py PASSED [ 50%] >gabbi/tests/test_intercept.py::test_pytest[driver_poll_poller_fail] <- gabbi/driver.py XFAIL [ 51%] >gabbi/tests/test_intercept.py::test_pytest[driver_poll_create_a_thing] <- gabbi/driver.py PASSED [ 51%] >gabbi/tests/test_intercept.py::test_pytest[driver_poll_loop_location] <- gabbi/driver.py PASSED [ 51%] >gabbi/tests/test_intercept.py::test_pytest[driver_prefix_provide_a_link] <- gabbi/driver.py FAILED [ 52%] >gabbi/tests/test_intercept.py::test_pytest[driver_prefix_get_that_link] <- gabbi/driver.py FAILED [ 52%] >gabbi/tests/test_intercept.py::test_pytest[driver_prefix_get_relative_link] <- gabbi/driver.py FAILED [ 52%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_simple_param] <- gabbi/driver.py PASSED [ 53%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_joined_params] <- gabbi/driver.py PASSED [ 53%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_multi_params] <- gabbi/driver.py PASSED [ 53%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_replacers_in_params] <- gabbi/driver.py PASSED [ 54%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_unicode] <- gabbi/driver.py PASSED [ 54%] >gabbi/tests/test_intercept.py::test_pytest[driver_queryparams_url_in_param] <- gabbi/driver.py PASSED [ 54%] >gabbi/tests/test_intercept.py::test_pytest[driver_regex_regex_header_test] <- gabbi/driver.py PASSED [ 55%] >gabbi/tests/test_intercept.py::test_pytest[driver_regex_regex_jsonpath_test] <- gabbi/driver.py PASSED [ 55%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_get_simple_page] <- gabbi/driver.py PASSED [ 55%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_inheritance_of_defaults] <- gabbi/driver.py PASSED [ 56%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_bogus_method] <- gabbi/driver.py PASSED [ 56%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_query_returned] <- gabbi/driver.py PASSED [ 56%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_simple_post] <- gabbi/driver.py PASSED [ 57%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_use_prior_location] <- gabbi/driver.py PASSED [ 57%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_use_a_historical_location] <- gabbi/driver.py PASSED [ 57%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_checklimit] <- gabbi/driver.py PASSED [ 58%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_post_a_body] <- gabbi/driver.py PASSED [ 58%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_get_location_from_headers] <- gabbi/driver.py PASSED [ 58%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_get_historical_location_from_headers] <- gabbi/driver.py PASSED [ 59%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_post_a_body_with_query] <- gabbi/driver.py PASSED [ 59%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_get_ssl_page] <- gabbi/driver.py PASSED [ 59%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_test_binary_handling] <- gabbi/driver.py PASSED [ 60%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_confirm_environ] <- gabbi/driver.py PASSED [ 60%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_confirm_environ_no_key_fail] <- gabbi/driver.py XFAIL [ 60%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_test_pluggable_response] <- gabbi/driver.py PASSED [ 61%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_fail_pluggable_response] <- gabbi/driver.py XFAIL [ 61%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_test_exception_wrapper] <- gabbi/driver.py XFAIL [ 61%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_non_json_response_failure] <- gabbi/driver.py XFAIL [ 62%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_json_derived_content_type] <- gabbi/driver.py PASSED [ 62%] >gabbi/tests/test_intercept.py::test_pytest[driver_self_xml_derived_content_type] <- gabbi/driver.py XFAIL [ 62%] >gabbi/tests/test_intercept.py::test_pytest[driver_skipall_a_skipped_test] <- gabbi/driver.py SKIPPED [ 63%] >gabbi/tests/test_intercept.py::test_pytest[driver_verbosity_confirm_notempty] <- gabbi/driver.py PASSED [ 63%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_basic_match PASSED [ 63%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_embedded_list_handling PASSED [ 64%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_filtered_list PASSED [ 64%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_len_object_list PASSED [ 64%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_len_simple_list PASSED [ 65%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_list_handling PASSED [ 65%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_sorted_object_list PASSED [ 65%] >gabbi/tests/test_jsonpath.py::JSONPathTest::test_sorted_simple_list PASSED [ 66%] >gabbi/tests/test_live.py::test_pytest[driver_google_google] <- gabbi/driver.py FAILED [ 66%] >gabbi/tests/test_live.py::test_pytest[driver_google_follow_redirects] <- gabbi/driver.py FAILED [ 66%] >gabbi/tests/test_live.py::test_pytest[driver_google_google_full_url] <- gabbi/driver.py FAILED [ 67%] >gabbi/tests/test_live.py::test_pytest[driver_google_google_russia] <- gabbi/driver.py FAILED [ 67%] >gabbi/tests/test_live.py::test_pytest[driver_google_follow_redirects_full_url] <- gabbi/driver.py FAILED [ 67%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file PASSED [ 68%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file_in_directory PASSED [ 68%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file_in_parent_dir PASSED [ 68%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file_in_root PASSED [ 69%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file_not_within_test_directory PASSED [ 69%] >gabbi/tests/test_load_data_file.py::DataFileTest::test_load_file_within_test_directory PASSED [ 69%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_add_query_params PASSED [ 70%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_default_port_http PASSED [ 70%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_default_port_https PASSED [ 70%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_default_port_https_no_ssl PASSED [ 71%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_default_port_int PASSED [ 71%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_extend_query_params PASSED [ 71%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_extend_query_params_full_url PASSED [ 72%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_https_port_80_ssl PASSED [ 72%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_ipv6_full_url PASSED [ 72%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_ipv6_no_double_colon_wacky_ssl PASSED [ 73%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_ipv6_url PASSED [ 73%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_parse_full PASSED [ 73%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_parse_prefix PASSED [ 74%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_parse_url PASSED [ 74%] >gabbi/tests/test_parse_url.py::UrlParseTest::test_with_ssl PASSED [ 74%] >gabbi/tests/test_replacers.py::EnvironReplaceTest::test_environ_boolean PASSED [ 75%] >gabbi/tests/test_replacers.py::TestReplaceHeaders::test_empty_headers PASSED [ 75%] >gabbi/tests/test_runner.py::RunnerTest::test_custom_response_handler PASSED [ 75%] >gabbi/tests/test_runner.py::RunnerTest::test_data_dir_good PASSED [ 76%] >gabbi/tests/test_runner.py::RunnerTest::test_exit_code PASSED [ 76%] >gabbi/tests/test_runner.py::RunnerTest::test_input_files PASSED [ 76%] >gabbi/tests/test_runner.py::RunnerTest::test_quiet_is_quiet PASSED [ 77%] >gabbi/tests/test_runner.py::RunnerTest::test_stdin_data_dir PASSED [ 77%] >gabbi/tests/test_runner.py::RunnerTest::test_target_url_parsing PASSED [ 77%] >gabbi/tests/test_runner.py::RunnerTest::test_target_url_parsing_standard_port PASSED [ 78%] >gabbi/tests/test_runner.py::RunnerTest::test_unsafe_yaml PASSED [ 78%] >gabbi/tests/test_runner.py::RunnerTest::test_verbose_output_formatting PASSED [ 78%] >gabbi/tests/test_runner.py::RunnerTest::test_verbosity_arg_all PASSED [ 79%] >gabbi/tests/test_runner.py::RunnerTest::test_verbosity_arg_body PASSED [ 79%] >gabbi/tests/test_runner.py::RunnerTest::test_verbosity_arg_headers PASSED [ 79%] >gabbi/tests/test_runner.py::RunnerTest::test_verbosity_arg_none PASSED [ 80%] >gabbi/tests/test_suite.py::SuiteTest::test_suite_catches_fixture_fail PASSED [ 80%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_dict_on_invalid_key PASSED [ 80%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_inner_list_required PASSED [ 81%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_method_url_pair_duplication_format_error PASSED [ 81%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_method_url_pair_format_error PASSED [ 81%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_name_key_required PASSED [ 82%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_response_handlers_same_test_key_yaml_first PASSED [ 82%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_response_handlers_same_test_key_yaml_last PASSED [ 82%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_tests_key_required PASSED [ 83%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_unsupported_key_errors PASSED [ 83%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_upper_dict_required PASSED [ 83%] >gabbi/tests/test_suitemaker.py::SuiteMakerTest::test_url_key_required PASSED [ 84%] >gabbi/tests/test_syntax_warning.py::DriverTest::test_driver_warnings_on_files PASSED [ 84%] >gabbi/tests/test_unsafe_yaml.py::test_pytest[driver_nan_test_nan] <- gabbi/driver.py PASSED [ 84%] >gabbi/tests/test_use_prior_test.py::UsePriorTest::test_use_prior_default_true PASSED [ 85%] >gabbi/tests/test_use_prior_test.py::UsePriorTest::test_use_prior_false PASSED [ 85%] >gabbi/tests/test_use_prior_test.py::UsePriorTest::test_use_prior_true PASSED [ 85%] >gabbi/tests/test_utils.py::BinaryTypesTest::test_binary PASSED [ 86%] >gabbi/tests/test_utils.py::BinaryTypesTest::test_not_binary PASSED [ 86%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_default PASSED [ 86%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_error_default PASSED [ 87%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_extra PASSED [ 87%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_nocharset_default PASSED [ 87%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_override_default PASSED [ 88%] >gabbi/tests/test_utils.py::ParseContentTypeTest::test_parse_simple PASSED [ 88%] >gabbi/tests/test_utils.py::ExtractContentTypeTest::test_extract_content_type_bad_params PASSED [ 88%] >gabbi/tests/test_utils.py::ExtractContentTypeTest::test_extract_content_type_default_both PASSED [ 89%] >gabbi/tests/test_utils.py::ExtractContentTypeTest::test_extract_content_type_default_charset PASSED [ 89%] >gabbi/tests/test_utils.py::ExtractContentTypeTest::test_extract_content_type_multiple_params PASSED [ 89%] >gabbi/tests/test_utils.py::ExtractContentTypeTest::test_extract_content_type_with_charset PASSED [ 90%] >gabbi/tests/test_utils.py::ColorizeTest::test_colorize_missing_color PASSED [ 90%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ipv6_already_bracket PASSED [ 90%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ipv6_full PASSED [ 91%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ipv6_ssl PASSED [ 91%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ipv6_ssl_weird_port PASSED [ 91%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_no_double_colon PASSED [ 92%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_not_ssl_on_443 PASSED [ 92%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_port PASSED [ 92%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_port_and_ssl PASSED [ 93%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_prefix PASSED [ 93%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_preserve_query PASSED [ 93%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_simple PASSED [ 94%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ssl PASSED [ 94%] >gabbi/tests/test_utils.py::CreateURLTest::test_create_url_ssl_on_80 PASSED [ 94%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ipv6_host_localhost PASSED [ 95%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ipv6_hostport_localhost PASSED [ 95%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ipv6_url_localhost PASSED [ 95%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ipv6_url_long PASSED [ 96%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_plain_url_no_port PASSED [ 96%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_plain_url_with_port PASSED [ 96%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_simple_hostport PASSED [ 97%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_simple_hostport_with_prefix PASSED [ 97%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ssl_port80_url PASSED [ 97%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ssl_port_url PASSED [ 98%] >gabbi/tests/test_utils.py::UtilsHostInfoFromTarget::test_ssl_url PASSED [ 98%] >gabbi/tests/test_yaml_disk_loading_jsonhandler.py::test_pytest[driver_yaml-from-disk_yaml_encoded_value_from_disk] <- gabbi/driver.py PASSED [ 98%] >gabbi/tests/test_yaml_disk_loading_jsonhandler.py::test_pytest[driver_yaml-from-disk_json_encoded_value_from_disk] <- gabbi/driver.py PASSED [ 99%] >gabbi/tests/test_yaml_disk_loading_jsonhandler.py::test_pytest[driver_yaml-from-disk_yaml_parital_from_disk] <- gabbi/driver.py PASSED [ 99%] >gabbi/tests/test_yaml_disk_loading_jsonhandler.py::test_pytest[driver_yaml-from-disk_yaml_partial_both_sides] <- gabbi/driver.py PASSED [100%] > >=================================== FAILURES =================================== >__________________ test_pytest[driver_prefix_provide_a_link] ___________________ > >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >message = "$ENVIRON['GABBI_PREFIX']/barnabas", escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) >> message = replace(message, escape_regex=escape_regex) > >escape_regex = False >message = "$ENVIRON['GABBI_PREFIX']/barnabas" >method = '_environ_replace' >replace = <bound method HTTPTestCase._environ_replace of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >replacer = 'ENVIRON' >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >template = '$ENVIRON' > >gabbi/case.py:192: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >message = "$ENVIRON['GABBI_PREFIX']/barnabas", escape_regex = False > > def _environ_replace(self, message, escape_regex=False): > """Replace an indicator in a message with the environment value. > > If value can be a number, cast it as such. If value is a form of > "null", "true", or "false" cast it to None, True, False. > """ >> value = re.sub(self._replacer_regex('ENVIRON'), > self._regex_replacer(self._environ_replacer, > escape_regex), > message) > >escape_regex = False >message = "$ENVIRON['GABBI_PREFIX']/barnabas" >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > >gabbi/case.py:250: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >pattern = '(?:\\$HISTORY\\[(?P<quote1>[\'\\"])(?P<case>.+?)(?P=quote1)\\]\\.)??\\$ENVIRON(:(?P<cast>\\w+))?\\[(?P<quote>[\'\\"])(?P<arg>.+?)(?P=quote)\\]' >repl = <bound method HTTPTestCase._environ_replacer of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >string = "$ENVIRON['GABBI_PREFIX']/barnabas", count = 0, flags = 0 > > def sub(pattern, repl, string, count=0, flags=0): > """Return the string obtained by replacing the leftmost > non-overlapping occurrences of the pattern in string by the > replacement repl. repl can be either a string or a callable; > if a string, backslash escapes in it are processed. If it is > a callable, it's passed the Match object and must return > a replacement string to be used.""" >> return _compile(pattern, flags).sub(repl, string, count) > >count = 0 >flags = 0 >pattern = '(?:\\$HISTORY\\[(?P<quote1>[\'\\"])(?P<case>.+?)(?P=quote1)\\]\\.)??\\$ENVIRON(:(?P<cast>\\w+))?\\[(?P<quote>[\'\\"])(?P<arg>.+?)(?P=quote)\\]' >repl = <bound method HTTPTestCase._environ_replacer of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >string = "$ENVIRON['GABBI_PREFIX']/barnabas" > >/usr/lib/python3.8/re.py:210: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >match = <re.Match object; span=(0, 24), match="$ENVIRON['GABBI_PREFIX']"> > > def _environ_replacer(self, match): > """Replace a regex match with an environment value. > > Let KeyError raise if variable not present. Capture > the 'cast' if any. > """ > environ_name = match.group('arg') > self.cast = match.group('cast') >> return os.environ[environ_name] > >environ_name = 'GABBI_PREFIX' >match = <re.Match object; span=(0, 24), match="$ENVIRON['GABBI_PREFIX']"> >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > >gabbi/case.py:281: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = environ({'SANDBOX_MESSAGE_P@TH': '/proc/4/fd/2', 'LDCXXSHARED': 'x86_64-pc-linux-gnu-g++ -shared', 'PYTHONPATH': '/var...LL': 'null', 'PYTEST_CURRENT_TEST': 'gabbi/tests/test_intercept.py::test_pytest[driver_prefix_provide_a_link] (call)'}) >key = 'GABBI_PREFIX' > > def __getitem__(self, key): > try: > value = self._data[self.encodekey(key)] > except KeyError: > # raise KeyError with the original key value >> raise KeyError(key) from None >E KeyError: 'GABBI_PREFIX' > >key = 'GABBI_PREFIX' > >/usr/lib/python3.8/os.py:675: KeyError > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> >test = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=92 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160f37880> > result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:600: in _feedErrorsToResult > result.addFailure(test, exc_info) > errors = [] > exc_info = (<class 'AssertionError'>, > AssertionError("unable to replace $ENVIRON in $ENVIRON['GABBI_PREFIX']/barnabas, data unavailable: 'GABBI_PREFIX'"), > <traceback object at 0x7fb160eb4b40>) > result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > test = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >gabbi/reporter.py:117: in addFailure > raise err[1] > err = (<class 'AssertionError'>, > AssertionError("unable to replace $ENVIRON in $ENVIRON['GABBI_PREFIX']/barnabas, data unavailable: 'GABBI_PREFIX'"), > <traceback object at 0x7fb160eb4b40>) > self = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > test = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb160f37880> > test_case = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160f37880> > result = <gabbi.reporter.PyTestResult run=92 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > skip = '' >gabbi/case.py:567: in _run_test > body = self._test_data_to_string( > base_url = '/' > full_url = 'http://bf8d6866-a496-4f09-b1f7-8ab263a6aa68:8001/' > headers = {'content-type': 'application/json'} > method = 'POST' > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> > test = {'cert_validate': True, > 'data': {'link': "$ENVIRON['GABBI_PREFIX']/barnabas", 'relative': 'link'}, > 'desc': '', > 'disable_response_handler': False, > 'method': 'POST', > 'name': 'provide a link', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {'content-type': 'application/json'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'response_test': [], > 'skip': '', > 'ssl': False, > 'status': '200', > 'url': '/', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:628: in _test_data_to_string > data = self.replace_template(data) > content_type = 'application/json' > data = {'link': "$ENVIRON['GABBI_PREFIX']/barnabas", 'relative': 'link'} > dumper_class = <gabbi.handlers.jsonhandler.JSONHandler object at 0x7fb16138fa30> > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >gabbi/case.py:177: in replace_template > message[k] = self.replace_template(message[k], > escape_regex = False > k = 'link' > message = {'link': "$ENVIRON['GABBI_PREFIX']/barnabas", 'relative': 'link'} > self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >message = "$ENVIRON['GABBI_PREFIX']/barnabas", escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) > message = replace(message, escape_regex=escape_regex) > except (KeyError, AttributeError, ValueError) as exc: >> raise AssertionError( > 'unable to replace %s in %s, data unavailable: %s' > % (template, message, exc)) >E AssertionError: unable to replace $ENVIRON in $ENVIRON['GABBI_PREFIX']/barnabas, data unavailable: 'GABBI_PREFIX' > >escape_regex = False >message = "$ENVIRON['GABBI_PREFIX']/barnabas" >method = '_environ_replace' >replace = <bound method HTTPTestCase._environ_replace of <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request>> >replacer = 'ENVIRON' >self = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >template = '$ENVIRON' > >gabbi/case.py:194: AssertionError >___________________ test_pytest[driver_prefix_get_that_link] ___________________ > >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >message = "$RESPONSE['$.link']", escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) >> message = replace(message, escape_regex=escape_regex) > >escape_regex = False >message = "$RESPONSE['$.link']" >method = '_response_replace' >replace = <bound method HTTPTestCase._response_replace of <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>> >replacer = 'RESPONSE' >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >template = '$RESPONSE' > >gabbi/case.py:192: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >message = "$RESPONSE['$.link']", escape_regex = False > > def _response_replace(self, message, escape_regex=False): > """Replace a content path with the value from a previous response. > > If the match would replace the entire message, then don't cast it > to a string. > """ > regex = self._replacer_regex('RESPONSE') > match = re.match('^%s$' % regex, message) > if match: >> return self._response_replacer(match, preserve=True) > >escape_regex = False >match = <re.Match object; span=(0, 19), match="$RESPONSE['$.link']"> >message = "$RESPONSE['$.link']" >regex = '(?:\\$HISTORY\\[(?P<quote1>[\'\\"])(?P<case>.+?)(?P=quote1)\\]\\.)??\\$RESPONSE(:(?P<cast>\\w+))?\\[(?P<quote>[\'\\"])(?P<arg>.+?)(?P=quote)\\]' >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > >gabbi/case.py:453: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >match = <re.Match object; span=(0, 19), match="$RESPONSE['$.link']"> >preserve = True > > def _response_replacer(self, match, preserve=False): > """Replace a regex match with the value from a previous response.""" > response_path = match.group('arg') > case = match.group('case') > self.cast = match.group('cast') > if not preserve and self.cast: > raise RuntimeError( > 'Unable to process cast <%s> within message: %s' > % (self.cast, match.string)) > if case: > referred_case = self.history[case] > else: > referred_case = self.prior > replacer_class = self.get_content_handler( >> referred_case.response.get('content-type')) >E AttributeError: 'driver_prefix_provide_a_link' object has no attribute 'response' > >case = None >match = <re.Match object; span=(0, 19), match="$RESPONSE['$.link']"> >preserve = True >referred_case = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >response_path = '$.link' >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > >gabbi/case.py:473: AttributeError > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> >test = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=93 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160a272b0> > result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:600: in _feedErrorsToResult > result.addFailure(test, exc_info) > errors = [] > exc_info = (<class 'AssertionError'>, > AssertionError("unable to replace $RESPONSE in $RESPONSE['$.link'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response'"), > <traceback object at 0x7fb160fbac00>) > result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > test = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >gabbi/reporter.py:117: in addFailure > raise err[1] > err = (<class 'AssertionError'>, > AssertionError("unable to replace $RESPONSE in $RESPONSE['$.link'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response'"), > <traceback object at 0x7fb160fbac00>) > self = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > test = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb160a272b0> > test_case = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160a272b0> > result = <gabbi.reporter.PyTestResult run=93 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > skip = '' >gabbi/case.py:551: in _run_test > base_url = self.replace_template(test['url']) > self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': '', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'get that link', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {}, > 'response_forbidden_headers': [], > 'response_headers': {'x-gabbi-url': "///[a-f0-9:-]+$ENVIRON['GABBI_PREFIX']/barnabas/"}, > 'response_json_paths': {}, > 'response_strings': [], > 'response_test': [], > 'skip': '', > 'ssl': False, > 'status': '200', > 'url': "$RESPONSE['$.link']", > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >message = "$RESPONSE['$.link']", escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) > message = replace(message, escape_regex=escape_regex) > except (KeyError, AttributeError, ValueError) as exc: >> raise AssertionError( > 'unable to replace %s in %s, data unavailable: %s' > % (template, message, exc)) >E AssertionError: unable to replace $RESPONSE in $RESPONSE['$.link'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response' > >escape_regex = False >message = "$RESPONSE['$.link']" >method = '_response_replace' >replace = <bound method HTTPTestCase._response_replace of <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request>> >replacer = 'RESPONSE' >self = <gabbi.suitemaker.driver_prefix_get_that_link testMethod=test_request> >template = '$RESPONSE' > >gabbi/case.py:194: AssertionError >_________________ test_pytest[driver_prefix_get_relative_link] _________________ > >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) >> message = replace(message, escape_regex=escape_regex) > >escape_regex = False >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >method = '_response_replace' >replace = <bound method HTTPTestCase._response_replace of <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>> >replacer = 'RESPONSE' >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >template = '$RESPONSE' > >gabbi/case.py:192: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >escape_regex = False > > def _response_replace(self, message, escape_regex=False): > """Replace a content path with the value from a previous response. > > If the match would replace the entire message, then don't cast it > to a string. > """ > regex = self._replacer_regex('RESPONSE') > match = re.match('^%s$' % regex, message) > if match: >> return self._response_replacer(match, preserve=True) > >escape_regex = False >match = <re.Match object; span=(0, 50), match="$HISTORY['provide a link'].$RESPONSE['$.relative'> >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >regex = '(?:\\$HISTORY\\[(?P<quote1>[\'\\"])(?P<case>.+?)(?P=quote1)\\]\\.)??\\$RESPONSE(:(?P<cast>\\w+))?\\[(?P<quote>[\'\\"])(?P<arg>.+?)(?P=quote)\\]' >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > >gabbi/case.py:453: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >match = <re.Match object; span=(0, 50), match="$HISTORY['provide a link'].$RESPONSE['$.relative'> >preserve = True > > def _response_replacer(self, match, preserve=False): > """Replace a regex match with the value from a previous response.""" > response_path = match.group('arg') > case = match.group('case') > self.cast = match.group('cast') > if not preserve and self.cast: > raise RuntimeError( > 'Unable to process cast <%s> within message: %s' > % (self.cast, match.string)) > if case: > referred_case = self.history[case] > else: > referred_case = self.prior > replacer_class = self.get_content_handler( >> referred_case.response.get('content-type')) >E AttributeError: 'driver_prefix_provide_a_link' object has no attribute 'response' > >case = 'provide a link' >match = <re.Match object; span=(0, 50), match="$HISTORY['provide a link'].$RESPONSE['$.relative'> >preserve = True >referred_case = <gabbi.suitemaker.driver_prefix_provide_a_link testMethod=test_request> >response_path = '$.relative' >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > >gabbi/case.py:473: AttributeError > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> >test = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=94 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160bf2c10> > result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:600: in _feedErrorsToResult > result.addFailure(test, exc_info) > errors = [] > exc_info = (<class 'AssertionError'>, > AssertionError("unable to replace $RESPONSE in $HISTORY['provide a link'].$RESPONSE['$.relative'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response'"), > <traceback object at 0x7fb162398e00>) > result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > test = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >gabbi/reporter.py:117: in addFailure > raise err[1] > err = (<class 'AssertionError'>, > AssertionError("unable to replace $RESPONSE in $HISTORY['provide a link'].$RESPONSE['$.relative'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response'"), > <traceback object at 0x7fb162398e00>) > self = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > test = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb160bf2c10> > test_case = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160bf2c10> > result = <gabbi.reporter.PyTestResult run=94 errors=0 failures=0> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > skip = '' >gabbi/case.py:551: in _run_test > base_url = self.replace_template(test['url']) > self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': '', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'get relative link', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {}, > 'response_forbidden_headers': [], > 'response_headers': {'x-gabbi-url': "///[a-f0-9:-]+$ENVIRON['GABBI_PREFIX']/link/"}, > 'response_json_paths': {}, > 'response_strings': [], > 'response_test': [], > 'skip': '', > 'ssl': False, > 'status': '200', > 'url': "$HISTORY['provide a link'].$RESPONSE['$.relative']", > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >escape_regex = False > > def replace_template(self, message, escape_regex=False): > """Replace magic strings in message.""" > if isinstance(message, dict): > for k in message: > message[k] = self.replace_template(message[k], > escape_regex=escape_regex) > return message > > if isinstance(message, list): > return [self.replace_template(line, escape_regex=escape_regex) > for line in message] > > for replacer in REPLACERS: > template = '$%s' % replacer > method = '_%s_replace' % replacer.lower() > try: > if template in message: > try: > replace = getattr(self, method) > message = replace(message, escape_regex=escape_regex) > except (KeyError, AttributeError, ValueError) as exc: >> raise AssertionError( > 'unable to replace %s in %s, data unavailable: %s' > % (template, message, exc)) >E AssertionError: unable to replace $RESPONSE in $HISTORY['provide a link'].$RESPONSE['$.relative'], data unavailable: 'driver_prefix_provide_a_link' object has no attribute 'response' > >escape_regex = False >message = "$HISTORY['provide a link'].$RESPONSE['$.relative']" >method = '_response_replace' >replace = <bound method HTTPTestCase._response_replace of <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request>> >replacer = 'RESPONSE' >self = <gabbi.suitemaker.driver_prefix_get_relative_link testMethod=test_request> >template = '$RESPONSE' > >gabbi/case.py:194: AssertionError >______________________ test_pytest[driver_google_google] _______________________ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: >> conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:174: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >address = ('google.com', 443), timeout = <object object at 0x7fb1629e9a20> >source_address = None, socket_options = [(6, 1, 1)] > > def create_connection( > address, > timeout=socket._GLOBAL_DEFAULT_TIMEOUT, > source_address=None, > socket_options=None, > ): > """Connect to *address* and return the socket object. > > Convenience function. Connect to *address* (a 2-tuple ``(host, > port)``) and return the socket object. Passing the optional > *timeout* parameter will set the timeout on the socket instance > before attempting to connect. If no *timeout* is supplied, the > global default timeout setting returned by :func:`socket.getdefaulttimeout` > is used. If *source_address* is set it must be a tuple of (host, port) > for the socket to bind as a source address before making the connection. > An host of '' or port 0 tells the OS to use the default. > """ > > host, port = address > if host.startswith("["): > host = host.strip("[]") > err = None > > # Using the value from allowed_gai_family() in the context of getaddrinfo lets > # us select whether to work with IPv4 DNS records, IPv6 records, or both. > # The original create_connection function always returns all records. > family = allowed_gai_family() > > try: > host.encode("idna") > except UnicodeError: > return six.raise_from( > LocationParseError(u"'%s', label empty or too long" % host), None > ) > >> for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): > >address = ('google.com', 443) >err = None >family = <AddressFamily.AF_UNSPEC: 0> >host = 'google.com' >port = 443 >socket_options = [(6, 1, 1)] >source_address = None >timeout = <object object at 0x7fb1629e9a20> > >/usr/lib/python3.8/site-packages/urllib3/util/connection.py:73: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >host = 'google.com', port = 443, family = <AddressFamily.AF_UNSPEC: 0> >type = <SocketKind.SOCK_STREAM: 1>, proto = 0, flags = 0 > > def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): > """Resolve host and port into list of address info entries. > > Translate the host/port argument into a sequence of 5-tuples that contain > all the necessary arguments for creating a socket connected to that service. > host is a domain name, a string representation of an IPv4/v6 address or > None. port is a string service name such as 'http', a numeric port number or > None. By passing None as the value of host and port, you can pass NULL to > the underlying C API. > > The family, type and proto arguments can be optionally specified in order to > narrow the list of addresses returned. Passing zero as a value for each of > these arguments selects the full range of results. > """ > # We override this function since we want to translate the numeric family > # and socket type values to enum constants. > addrlist = [] >> for res in _socket.getaddrinfo(host, port, family, type, proto, flags): >E socket.gaierror: [Errno -3] Temporary failure in name resolution > >addrlist = [] >family = <AddressFamily.AF_UNSPEC: 0> >flags = 0 >host = 'google.com' >port = 443 >proto = 0 >type = <SocketKind.SOCK_STREAM: 1> > >/usr/lib/python3.8/socket.py:918: gaierror > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_google_google testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> >test = <gabbi.suitemaker.driver_google_google testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=1 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160c50190> > result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:602: in _feedErrorsToResult > result.addError(test, exc_info) > errors = [] > exc_info = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb160fa23c0>) > result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > test = <gabbi.suitemaker.driver_google_google testMethod=test_request> >gabbi/reporter.py:120: in addError > raise err[1] > err = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb160fa23c0>) > self = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > test = <gabbi.suitemaker.driver_google_google testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb160c50190> > test_case = <gabbi.suitemaker.driver_google_google testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160c50190> > result = <gabbi.reporter.PyTestResult run=1 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google testMethod=test_request>> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_google_google testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > skip = '' >gabbi/case.py:599: in _run_test > self._run_request(full_url, method, headers, body, > base_url = '/' > body = b'' > full_url = 'https://google.com/' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': '', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'google', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'skip': '', > 'ssl': True, > 'status': '302 || 301', > 'url': '/', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:498: in _run_request > response, content = self.http.request( > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > self = <gabbi.suitemaker.driver_google_google testMethod=test_request> > url = 'https://google.com/' >gabbi/httpclient.py:43: in request > response = super(Http, self).request( > __class__ = <class 'gabbi.httpclient.Http'> > absolute_uri = 'https://google.com/' > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > retry = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <gabbi.httpclient.Http object at 0x7fb161218520> >/usr/lib/python3.8/site-packages/urllib3/request.py:74: in request > return self.request_encode_url( > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218520> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/request.py:96: in request_encode_url > return self.urlopen(method, url, **extra_kw) > extra_kw = {'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218520> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/poolmanager.py:375: in urlopen > response = conn.urlopen(method, u.request_uri, **kw) > conn = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> > kw = {'assert_same_host': False, > 'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'redirect': False, > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > method = 'GET' > redirect = True > self = <gabbi.httpclient.Http object at 0x7fb161218520> > u = Url(scheme='https', auth=None, host='google.com', port=None, path='/', query=None, fragment=None) > url = 'https://google.com/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen > retries = retries.increment( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/util/retry.py:507: in increment > raise six.reraise(type(error), error, _stacktrace) > _pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> > _stacktrace = <traceback object at 0x7fb160fa2080> > error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > method = 'GET' > response = None > self = Retry(total=False, connect=None, read=None, redirect=0, status=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/packages/six.py:770: in reraise > raise value > tb = None > tp = <class 'urllib3.exceptions.NewConnectionError'> > value = None >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:699: in urlopen > httplib_response = self._make_request( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:382: in _make_request > self._validate_conn(conn) > chunked = False > conn = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} > method = 'GET' > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> > timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1010: in _validate_conn > conn.connect() > __class__ = <class 'urllib3.connectionpool.HTTPSConnectionPool'> > conn = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160f89d30> >/usr/lib/python3.8/site-packages/urllib3/connection.py:358: in connect > conn = self._new_conn() > self = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: > conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > > except SocketTimeout: > raise ConnectTimeoutError( > self, > "Connection to %s timed out. (connect timeout=%s)" > % (self.host, self.timeout), > ) > > except SocketError as e: >> raise NewConnectionError( > self, "Failed to establish a new connection: %s" % e > ) >E urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb160f89ca0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:186: NewConnectionError >_________________ test_pytest[driver_google_follow_redirects] __________________ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: >> conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:174: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >address = ('google.com', 443), timeout = <object object at 0x7fb1629e9a20> >source_address = None, socket_options = [(6, 1, 1)] > > def create_connection( > address, > timeout=socket._GLOBAL_DEFAULT_TIMEOUT, > source_address=None, > socket_options=None, > ): > """Connect to *address* and return the socket object. > > Convenience function. Connect to *address* (a 2-tuple ``(host, > port)``) and return the socket object. Passing the optional > *timeout* parameter will set the timeout on the socket instance > before attempting to connect. If no *timeout* is supplied, the > global default timeout setting returned by :func:`socket.getdefaulttimeout` > is used. If *source_address* is set it must be a tuple of (host, port) > for the socket to bind as a source address before making the connection. > An host of '' or port 0 tells the OS to use the default. > """ > > host, port = address > if host.startswith("["): > host = host.strip("[]") > err = None > > # Using the value from allowed_gai_family() in the context of getaddrinfo lets > # us select whether to work with IPv4 DNS records, IPv6 records, or both. > # The original create_connection function always returns all records. > family = allowed_gai_family() > > try: > host.encode("idna") > except UnicodeError: > return six.raise_from( > LocationParseError(u"'%s', label empty or too long" % host), None > ) > >> for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): > >address = ('google.com', 443) >err = None >family = <AddressFamily.AF_UNSPEC: 0> >host = 'google.com' >port = 443 >socket_options = [(6, 1, 1)] >source_address = None >timeout = <object object at 0x7fb1629e9a20> > >/usr/lib/python3.8/site-packages/urllib3/util/connection.py:73: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >host = 'google.com', port = 443, family = <AddressFamily.AF_UNSPEC: 0> >type = <SocketKind.SOCK_STREAM: 1>, proto = 0, flags = 0 > > def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): > """Resolve host and port into list of address info entries. > > Translate the host/port argument into a sequence of 5-tuples that contain > all the necessary arguments for creating a socket connected to that service. > host is a domain name, a string representation of an IPv4/v6 address or > None. port is a string service name such as 'http', a numeric port number or > None. By passing None as the value of host and port, you can pass NULL to > the underlying C API. > > The family, type and proto arguments can be optionally specified in order to > narrow the list of addresses returned. Passing zero as a value for each of > these arguments selects the full range of results. > """ > # We override this function since we want to translate the numeric family > # and socket type values to enum constants. > addrlist = [] >> for res in _socket.getaddrinfo(host, port, family, type, proto, flags): >E socket.gaierror: [Errno -3] Temporary failure in name resolution > >addrlist = [] >family = <AddressFamily.AF_UNSPEC: 0> >flags = 0 >host = 'google.com' >port = 443 >proto = 0 >type = <SocketKind.SOCK_STREAM: 1> > >/usr/lib/python3.8/socket.py:918: gaierror > >During handling of the above exception, another exception occurred: > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >method = 'GET', url = '/', body = b'' >headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} >retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) >redirect = False, assert_same_host = False >timeout = <object object at 0x7fb161898c40>, pool_timeout = None >release_conn = True, chunked = False, body_pos = None >response_kw = {'request_url': 'https://google.com/'} >parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) >destination_scheme = None, conn = None, release_this_conn = True >http_tunnel_required = False, err = None, clean_exit = False > > def urlopen( > self, > method, > url, > body=None, > headers=None, > retries=None, > redirect=True, > assert_same_host=True, > timeout=_Default, > pool_timeout=None, > release_conn=None, > chunked=False, > body_pos=None, > **response_kw > ): > """ > Get a connection from the pool and perform an HTTP request. This is the > lowest level call for making a request, so you'll need to specify all > the raw details. > > .. note:: > > More commonly, it's appropriate to use a convenience method provided > by :class:`.RequestMethods`, such as :meth:`request`. > > .. note:: > > `release_conn` will only behave as expected if > `preload_content=False` because we want to make > `preload_content=False` the default behaviour someday soon without > breaking backwards compatibility. > > :param method: > HTTP request method (such as GET, POST, PUT, etc.) > > :param url: > The URL to perform the request on. > > :param body: > Data to send in the request body, either :class:`str`, :class:`bytes`, > an iterable of :class:`str`/:class:`bytes`, or a file-like object. > > :param headers: > Dictionary of custom headers to send, such as User-Agent, > If-None-Match, etc. If None, pool headers are used. If provided, > these headers completely replace any pool-specific headers. > > :param retries: > Configure the number of retries to allow before raising a > :class:`~urllib3.exceptions.MaxRetryError` exception. > > Pass ``None`` to retry until you receive a response. Pass a > :class:`~urllib3.util.retry.Retry` object for fine-grained control > over different types of retries. > Pass an integer number to retry connection errors that many times, > but no other types of errors. Pass zero to never retry. > > If ``False``, then retries are disabled and any exception is raised > immediately. Also, instead of raising a MaxRetryError on redirects, > the redirect response will be returned. > > :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. > > :param redirect: > If True, automatically handle redirects (status codes 301, 302, > 303, 307, 308). Each redirect counts as a retry. Disabling retries > will disable redirect, too. > > :param assert_same_host: > If ``True``, will make sure that the host of the pool requests is > consistent else will raise HostChangedError. When ``False``, you can > use the pool on an HTTP proxy and request foreign hosts. > > :param timeout: > If specified, overrides the default timeout for this one > request. It may be a float (in seconds) or an instance of > :class:`urllib3.util.Timeout`. > > :param pool_timeout: > If set and the pool is set to block=True, then this method will > block for ``pool_timeout`` seconds and raise EmptyPoolError if no > connection is available within the time period. > > :param release_conn: > If False, then the urlopen call will not release the connection > back into the pool once a response is received (but will release if > you read the entire contents of the response such as when > `preload_content=True`). This is useful if you're not preloading > the response's content immediately. You will need to call > ``r.release_conn()`` on the response ``r`` to return the connection > back into the pool. If None, it takes the value of > ``response_kw.get('preload_content', True)``. > > :param chunked: > If True, urllib3 will send the body using chunked transfer > encoding. Otherwise, urllib3 will send the body using the standard > content-length form. Defaults to False. > > :param int body_pos: > Position to seek to in file-like body in the event of a retry or > redirect. Typically this won't need to be set because urllib3 will > auto-populate the value when needed. > > :param \\**response_kw: > Additional parameters are passed to > :meth:`urllib3.response.HTTPResponse.from_httplib` > """ > > parsed_url = parse_url(url) > destination_scheme = parsed_url.scheme > > if headers is None: > headers = self.headers > > if not isinstance(retries, Retry): > retries = Retry.from_int(retries, redirect=redirect, default=self.retries) > > if release_conn is None: > release_conn = response_kw.get("preload_content", True) > > # Check host > if assert_same_host and not self.is_same_host(url): > raise HostChangedError(self, url, retries) > > # Ensure that the URL we're connecting to is properly encoded > if url.startswith("/"): > url = six.ensure_str(_encode_target(url)) > else: > url = six.ensure_str(parsed_url.url) > > conn = None > > # Track whether `conn` needs to be released before > # returning/raising/recursing. Update this variable if necessary, and > # leave `release_conn` constant throughout the function. That way, if > # the function recurses, the original value of `release_conn` will be > # passed down into the recursive call, and its value will be respected. > # > # See issue #651 [1] for details. > # > # [1] <https://github.com/urllib3/urllib3/issues/651> > release_this_conn = release_conn > > http_tunnel_required = connection_requires_http_tunnel( > self.proxy, self.proxy_config, destination_scheme > ) > > # Merge the proxy headers. Only done when not using HTTP CONNECT. We > # have to copy the headers dict so we can safely change it without those > # changes being reflected in anyone else's copy. > if not http_tunnel_required: > headers = headers.copy() > headers.update(self.proxy_headers) > > # Must keep the exception bound to a separate variable or else Python 3 > # complains about UnboundLocalError. > err = None > > # Keep track of whether we cleanly exited the except block. This > # ensures we do proper cleanup in finally. > clean_exit = False > > # Rewind body position, if needed. Record current position > # for future rewinds in the event of a redirect/retry. > body_pos = set_file_position(body, body_pos) > > try: > # Request a connection from the queue. > timeout_obj = self._get_timeout(timeout) > conn = self._get_conn(timeout=pool_timeout) > > conn.timeout = timeout_obj.connect_timeout > > is_new_proxy_conn = self.proxy is not None and not getattr( > conn, "sock", None > ) > if is_new_proxy_conn and http_tunnel_required: > self._prepare_proxy(conn) > > # Make the request on the httplib connection object. >> httplib_response = self._make_request( > conn, > method, > url, > timeout=timeout_obj, > body=body, > headers=headers, > chunked=chunked, > ) > >assert_same_host = False >body = b'' >body_pos = None >chunked = False >clean_exit = False >conn = None >destination_scheme = None >err = None >headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} >http_tunnel_required = False >is_new_proxy_conn = False >method = 'GET' >parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) >pool_timeout = None >redirect = False >release_conn = True >release_this_conn = True >response_kw = {'request_url': 'https://google.com/'} >retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >timeout = <object object at 0x7fb161898c40> >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:699: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> >method = 'GET', url = '/' >timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >chunked = False >httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > > def _make_request( > self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw > ): > """ > Perform a request on a given urllib connection object taken from our > pool. > > :param conn: > a connection from one of our connection pools > > :param timeout: > Socket timeout in seconds for the request. This can be a > float or integer, which will set the same timeout value for > the socket connect and the socket read, or an instance of > :class:`urllib3.util.Timeout`, which gives you more fine-grained > control over your timeouts. > """ > self.num_requests += 1 > > timeout_obj = self._get_timeout(timeout) > timeout_obj.start_connect() > conn.timeout = timeout_obj.connect_timeout > > # Trigger any extra validation we need to do. > try: >> self._validate_conn(conn) > >chunked = False >conn = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> >httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} >method = 'GET' >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:382: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > > def _validate_conn(self, conn): > """ > Called right before a request is made, after the socket is created. > """ > super(HTTPSConnectionPool, self)._validate_conn(conn) > > # Force connect early to allow us to validate the connection. > if not getattr(conn, "sock", None): # AppEngine might not have `.sock` >> conn.connect() > >__class__ = <class 'urllib3.connectionpool.HTTPSConnectionPool'> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1010: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > > def connect(self): > # Add certificate verification >> conn = self._new_conn() > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:358: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: > conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > > except SocketTimeout: > raise ConnectTimeoutError( > self, > "Connection to %s timed out. (connect timeout=%s)" > % (self.host, self.timeout), > ) > > except SocketError as e: >> raise NewConnectionError( > self, "Failed to establish a new connection: %s" % e > ) >E urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1606be730> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:186: NewConnectionError > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> >test = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=2 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb1607a2580> > result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:602: in _feedErrorsToResult > result.addError(test, exc_info) > errors = [] > exc_info = (<class 'urllib3.exceptions.MaxRetryError'>, > MaxRetryError("HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))"), > <traceback object at 0x7fb160705ec0>) > result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > test = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >gabbi/reporter.py:120: in addError > raise err[1] > err = (<class 'urllib3.exceptions.MaxRetryError'>, > MaxRetryError("HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))"), > <traceback object at 0x7fb160705ec0>) > self = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > test = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb1607a2580> > test_case = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb1607a2580> > result = <gabbi.reporter.PyTestResult run=2 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request>> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > skip = '' >gabbi/case.py:599: in _run_test > self._run_request(full_url, method, headers, body, > base_url = '/' > body = b'' > full_url = 'https://google.com/' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': 'Confirm redirects are followed when we ask', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'follow redirects', > 'poll': {}, > 'query_parameters': {}, > 'redirects': True, > 'request_headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'skip': '', > 'ssl': True, > 'status': 200, > 'url': '/', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:498: in _run_request > response, content = self.http.request( > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = True > self = <gabbi.suitemaker.driver_google_follow_redirects testMethod=test_request> > url = 'https://google.com/' >gabbi/httpclient.py:43: in request > response = super(Http, self).request( > __class__ = <class 'gabbi.httpclient.Http'> > absolute_uri = 'https://google.com/' > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = True > retry = Retry(total=10, connect=None, read=None, redirect=5, status=None) > self = <gabbi.httpclient.Http object at 0x7fb161218ac0> >/usr/lib/python3.8/site-packages/urllib3/request.py:74: in request > return self.request_encode_url( > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218ac0> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} >/usr/lib/python3.8/site-packages/urllib3/request.py:96: in request_encode_url > return self.urlopen(method, url, **extra_kw) > extra_kw = {'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'request_url': 'https://google.com/', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218ac0> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} >/usr/lib/python3.8/site-packages/urllib3/poolmanager.py:375: in urlopen > response = conn.urlopen(method, u.request_uri, **kw) > conn = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > kw = {'assert_same_host': False, > 'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'redirect': False, > 'request_url': 'https://google.com/', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} > method = 'GET' > redirect = True > self = <gabbi.httpclient.Http object at 0x7fb161218ac0> > u = Url(scheme='https', auth=None, host='google.com', port=None, path='/', query=None, fragment=None) > url = 'https://google.com/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2b50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=9, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=8, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=7, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2fd0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=6, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a20a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=5, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=4, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be310>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=3, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=2, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=1, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606bea00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen > retries = retries.increment( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = Retry(total=0, connect=None, read=None, redirect=5, status=None) >method = 'GET', url = '/', response = None >error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') >_pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >_stacktrace = <traceback object at 0x7fb1607059c0> > > def increment( > self, > method=None, > url=None, > response=None, > error=None, > _pool=None, > _stacktrace=None, > ): > """Return a new Retry object with incremented retry counters. > > :param response: A response object, or None, if the server did not > return a response. > :type response: :class:`~urllib3.response.HTTPResponse` > :param Exception error: An error encountered during the request, or > None if the response was received successfully. > > :return: A new ``Retry`` object. > """ > if self.total is False and error: > # Disabled, indicate to re-raise the error. > raise six.reraise(type(error), error, _stacktrace) > > total = self.total > if total is not None: > total -= 1 > > connect = self.connect > read = self.read > redirect = self.redirect > status_count = self.status > other = self.other > cause = "unknown" > status = None > redirect_location = None > > if error and self._is_connection_error(error): > # Connect retry? > if connect is False: > raise six.reraise(type(error), error, _stacktrace) > elif connect is not None: > connect -= 1 > > elif error and self._is_read_error(error): > # Read retry? > if read is False or not self._is_method_retryable(method): > raise six.reraise(type(error), error, _stacktrace) > elif read is not None: > read -= 1 > > elif error: > # Other retry? > if other is not None: > other -= 1 > > elif response and response.get_redirect_location(): > # Redirect retry? > if redirect is not None: > redirect -= 1 > cause = "too many redirects" > redirect_location = response.get_redirect_location() > status = response.status > > else: > # Incrementing because of a server error like a 500 in > # status_forcelist and the given method is in the allowed_methods > cause = ResponseError.GENERIC_ERROR > if response and response.status: > if status_count is not None: > status_count -= 1 > cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) > status = response.status > > history = self.history + ( > RequestHistory(method, url, error, status, redirect_location), > ) > > new_retry = self.new( > total=total, > connect=connect, > read=read, > redirect=redirect, > status=status_count, > other=other, > history=history, > ) > > if new_retry.is_exhausted(): >> raise MaxRetryError(_pool, url, error or ResponseError(cause)) >E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) > >_pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607a24f0> >_stacktrace = <traceback object at 0x7fb1607059c0> >cause = 'unknown' >connect = None >error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') >history = (RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2b50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2fd0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a20a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be310>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606bea00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be730>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None)) >method = 'GET' >new_retry = Retry(total=-1, connect=None, read=None, redirect=5, status=None) >other = None >read = None >redirect = 5 >redirect_location = None >response = None >self = Retry(total=0, connect=None, read=None, redirect=5, status=None) >status = None >status_count = None >total = -1 >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/util/retry.py:574: MaxRetryError >------------------------------ Captured log call ------------------------------- >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=9, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2b50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=8, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=7, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2d90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=6, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a2fd0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=5, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607a20a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=4, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=3, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be310>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=2, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=1, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606be9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=0, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1606bea00>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >__________________ test_pytest[driver_google_google_full_url] __________________ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: >> conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:174: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >address = ('google.com', 443), timeout = <object object at 0x7fb1629e9a20> >source_address = None, socket_options = [(6, 1, 1)] > > def create_connection( > address, > timeout=socket._GLOBAL_DEFAULT_TIMEOUT, > source_address=None, > socket_options=None, > ): > """Connect to *address* and return the socket object. > > Convenience function. Connect to *address* (a 2-tuple ``(host, > port)``) and return the socket object. Passing the optional > *timeout* parameter will set the timeout on the socket instance > before attempting to connect. If no *timeout* is supplied, the > global default timeout setting returned by :func:`socket.getdefaulttimeout` > is used. If *source_address* is set it must be a tuple of (host, port) > for the socket to bind as a source address before making the connection. > An host of '' or port 0 tells the OS to use the default. > """ > > host, port = address > if host.startswith("["): > host = host.strip("[]") > err = None > > # Using the value from allowed_gai_family() in the context of getaddrinfo lets > # us select whether to work with IPv4 DNS records, IPv6 records, or both. > # The original create_connection function always returns all records. > family = allowed_gai_family() > > try: > host.encode("idna") > except UnicodeError: > return six.raise_from( > LocationParseError(u"'%s', label empty or too long" % host), None > ) > >> for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): > >address = ('google.com', 443) >err = None >family = <AddressFamily.AF_UNSPEC: 0> >host = 'google.com' >port = 443 >socket_options = [(6, 1, 1)] >source_address = None >timeout = <object object at 0x7fb1629e9a20> > >/usr/lib/python3.8/site-packages/urllib3/util/connection.py:73: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >host = 'google.com', port = 443, family = <AddressFamily.AF_UNSPEC: 0> >type = <SocketKind.SOCK_STREAM: 1>, proto = 0, flags = 0 > > def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): > """Resolve host and port into list of address info entries. > > Translate the host/port argument into a sequence of 5-tuples that contain > all the necessary arguments for creating a socket connected to that service. > host is a domain name, a string representation of an IPv4/v6 address or > None. port is a string service name such as 'http', a numeric port number or > None. By passing None as the value of host and port, you can pass NULL to > the underlying C API. > > The family, type and proto arguments can be optionally specified in order to > narrow the list of addresses returned. Passing zero as a value for each of > these arguments selects the full range of results. > """ > # We override this function since we want to translate the numeric family > # and socket type values to enum constants. > addrlist = [] >> for res in _socket.getaddrinfo(host, port, family, type, proto, flags): >E socket.gaierror: [Errno -3] Temporary failure in name resolution > >addrlist = [] >family = <AddressFamily.AF_UNSPEC: 0> >flags = 0 >host = 'google.com' >port = 443 >proto = 0 >type = <SocketKind.SOCK_STREAM: 1> > >/usr/lib/python3.8/socket.py:918: gaierror > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> >test = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=3 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160988430> > result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:602: in _feedErrorsToResult > result.addError(test, exc_info) > errors = [] > exc_info = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1609884c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb160bb3f00>) > result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > test = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >gabbi/reporter.py:120: in addError > raise err[1] > err = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1609884c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb160bb3f00>) > self = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > test = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb160988430> > test_case = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb160988430> > result = <gabbi.reporter.PyTestResult run=3 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request>> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_google_google_full_url testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > skip = '' >gabbi/case.py:599: in _run_test > self._run_request(full_url, method, headers, body, > base_url = 'https://google.com/' > body = b'' > full_url = 'https://google.com/' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': '', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'google full url', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'skip': '', > 'ssl': True, > 'status': '302 || 301', > 'url': 'https://google.com/', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:498: in _run_request > response, content = self.http.request( > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > self = <gabbi.suitemaker.driver_google_google_full_url testMethod=test_request> > url = 'https://google.com/' >gabbi/httpclient.py:43: in request > response = super(Http, self).request( > __class__ = <class 'gabbi.httpclient.Http'> > absolute_uri = 'https://google.com/' > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > retry = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <gabbi.httpclient.Http object at 0x7fb161218be0> >/usr/lib/python3.8/site-packages/urllib3/request.py:74: in request > return self.request_encode_url( > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218be0> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/request.py:96: in request_encode_url > return self.urlopen(method, url, **extra_kw) > extra_kw = {'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218be0> > url = 'https://google.com/' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/poolmanager.py:375: in urlopen > response = conn.urlopen(method, u.request_uri, **kw) > conn = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> > kw = {'assert_same_host': False, > 'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'redirect': False, > 'request_url': 'https://google.com/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > method = 'GET' > redirect = True > self = <gabbi.httpclient.Http object at 0x7fb161218be0> > u = Url(scheme='https', auth=None, host='google.com', port=None, path='/', query=None, fragment=None) > url = 'https://google.com/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen > retries = retries.increment( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/util/retry.py:507: in increment > raise six.reraise(type(error), error, _stacktrace) > _pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> > _stacktrace = <traceback object at 0x7fb160bb3c80> > error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1609884c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > method = 'GET' > response = None > self = Retry(total=False, connect=None, read=None, redirect=0, status=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/packages/six.py:770: in reraise > raise value > tb = None > tp = <class 'urllib3.exceptions.NewConnectionError'> > value = None >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:699: in urlopen > httplib_response = self._make_request( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:382: in _make_request > self._validate_conn(conn) > chunked = False > conn = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} > method = 'GET' > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> > timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1010: in _validate_conn > conn.connect() > __class__ = <class 'urllib3.connectionpool.HTTPSConnectionPool'> > conn = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb160988790> >/usr/lib/python3.8/site-packages/urllib3/connection.py:358: in connect > conn = self._new_conn() > self = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: > conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > > except SocketTimeout: > raise ConnectTimeoutError( > self, > "Connection to %s timed out. (connect timeout=%s)" > % (self.host, self.timeout), > ) > > except SocketError as e: >> raise NewConnectionError( > self, "Failed to establish a new connection: %s" % e > ) >E urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1609884c0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:186: NewConnectionError >___________________ test_pytest[driver_google_google_russia] ___________________ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: >> conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:174: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >address = ('www.google.ru', 443), timeout = <object object at 0x7fb1629e9a20> >source_address = None, socket_options = [(6, 1, 1)] > > def create_connection( > address, > timeout=socket._GLOBAL_DEFAULT_TIMEOUT, > source_address=None, > socket_options=None, > ): > """Connect to *address* and return the socket object. > > Convenience function. Connect to *address* (a 2-tuple ``(host, > port)``) and return the socket object. Passing the optional > *timeout* parameter will set the timeout on the socket instance > before attempting to connect. If no *timeout* is supplied, the > global default timeout setting returned by :func:`socket.getdefaulttimeout` > is used. If *source_address* is set it must be a tuple of (host, port) > for the socket to bind as a source address before making the connection. > An host of '' or port 0 tells the OS to use the default. > """ > > host, port = address > if host.startswith("["): > host = host.strip("[]") > err = None > > # Using the value from allowed_gai_family() in the context of getaddrinfo lets > # us select whether to work with IPv4 DNS records, IPv6 records, or both. > # The original create_connection function always returns all records. > family = allowed_gai_family() > > try: > host.encode("idna") > except UnicodeError: > return six.raise_from( > LocationParseError(u"'%s', label empty or too long" % host), None > ) > >> for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): > >address = ('www.google.ru', 443) >err = None >family = <AddressFamily.AF_UNSPEC: 0> >host = 'www.google.ru' >port = 443 >socket_options = [(6, 1, 1)] >source_address = None >timeout = <object object at 0x7fb1629e9a20> > >/usr/lib/python3.8/site-packages/urllib3/util/connection.py:73: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >host = 'www.google.ru', port = 443, family = <AddressFamily.AF_UNSPEC: 0> >type = <SocketKind.SOCK_STREAM: 1>, proto = 0, flags = 0 > > def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): > """Resolve host and port into list of address info entries. > > Translate the host/port argument into a sequence of 5-tuples that contain > all the necessary arguments for creating a socket connected to that service. > host is a domain name, a string representation of an IPv4/v6 address or > None. port is a string service name such as 'http', a numeric port number or > None. By passing None as the value of host and port, you can pass NULL to > the underlying C API. > > The family, type and proto arguments can be optionally specified in order to > narrow the list of addresses returned. Passing zero as a value for each of > these arguments selects the full range of results. > """ > # We override this function since we want to translate the numeric family > # and socket type values to enum constants. > addrlist = [] >> for res in _socket.getaddrinfo(host, port, family, type, proto, flags): >E socket.gaierror: [Errno -3] Temporary failure in name resolution > >addrlist = [] >family = <AddressFamily.AF_UNSPEC: 0> >flags = 0 >host = 'www.google.ru' >port = 443 >proto = 0 >type = <SocketKind.SOCK_STREAM: 1> > >/usr/lib/python3.8/socket.py:918: gaierror > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> >test = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=4 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb1607ee940> > result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_russia testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:602: in _feedErrorsToResult > result.addError(test, exc_info) > errors = [] > exc_info = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb1607d17c0>) > result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > test = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >gabbi/reporter.py:120: in addError > raise err[1] > err = (<class 'urllib3.exceptions.NewConnectionError'>, > NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), > <traceback object at 0x7fb1607d17c0>) > self = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > test = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb1607ee940> > test_case = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb1607ee940> > result = <gabbi.reporter.PyTestResult run=4 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_russia testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_google_russia testMethod=test_request>> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_google_google_russia testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > skip = '' >gabbi/case.py:599: in _run_test > self._run_request(full_url, method, headers, body, > base_url = 'https://www.google.ru/' > body = b'' > full_url = 'https://www.google.ru/' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': 'Test handling of non-utf-8 encoding', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'google russia', > 'poll': {}, > 'query_parameters': {}, > 'redirects': False, > 'request_headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'skip': '', > 'ssl': True, > 'status': '200', > 'url': 'https://www.google.ru/', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:498: in _run_request > response, content = self.http.request( > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > self = <gabbi.suitemaker.driver_google_google_russia testMethod=test_request> > url = 'https://www.google.ru/' >gabbi/httpclient.py:43: in request > response = super(Http, self).request( > __class__ = <class 'gabbi.httpclient.Http'> > absolute_uri = 'https://www.google.ru/' > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = False > retry = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <gabbi.httpclient.Http object at 0x7fb161218400> >/usr/lib/python3.8/site-packages/urllib3/request.py:74: in request > return self.request_encode_url( > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218400> > url = 'https://www.google.ru/' > urlopen_kw = {'body': b'', > 'request_url': 'https://www.google.ru/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/request.py:96: in request_encode_url > return self.urlopen(method, url, **extra_kw) > extra_kw = {'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'request_url': 'https://www.google.ru/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb161218400> > url = 'https://www.google.ru/' > urlopen_kw = {'body': b'', > 'request_url': 'https://www.google.ru/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} >/usr/lib/python3.8/site-packages/urllib3/poolmanager.py:375: in urlopen > response = conn.urlopen(method, u.request_uri, **kw) > conn = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> > kw = {'assert_same_host': False, > 'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'redirect': False, > 'request_url': 'https://www.google.ru/', > 'retries': Retry(total=False, connect=None, read=None, redirect=0, status=None)} > method = 'GET' > redirect = True > self = <gabbi.httpclient.Http object at 0x7fb161218400> > u = Url(scheme='https', auth=None, host='www.google.ru', port=None, path='/', query=None, fragment=None) > url = 'https://www.google.ru/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen > retries = retries.increment( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://www.google.ru/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/util/retry.py:507: in increment > raise six.reraise(type(error), error, _stacktrace) > _pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> > _stacktrace = <traceback object at 0x7fb1607d1b80> > error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > method = 'GET' > response = None > self = Retry(total=False, connect=None, read=None, redirect=0, status=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/packages/six.py:770: in reraise > raise value > tb = None > tp = <class 'urllib3.exceptions.NewConnectionError'> > value = None >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:699: in urlopen > httplib_response = self._make_request( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://www.google.ru/'} > retries = Retry(total=False, connect=None, read=None, redirect=0, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:382: in _make_request > self._validate_conn(conn) > chunked = False > conn = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} > method = 'GET' > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> > timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1010: in _validate_conn > conn.connect() > __class__ = <class 'urllib3.connectionpool.HTTPSConnectionPool'> > conn = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb1607eebb0> >/usr/lib/python3.8/site-packages/urllib3/connection.py:358: in connect > conn = self._new_conn() > self = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: > conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > > except SocketTimeout: > raise ConnectTimeoutError( > self, > "Connection to %s timed out. (connect timeout=%s)" > % (self.host, self.timeout), > ) > > except SocketError as e: >> raise NewConnectionError( > self, "Failed to establish a new connection: %s" % e > ) >E urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb1607eeee0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:186: NewConnectionError >_____________ test_pytest[driver_google_follow_redirects_full_url] _____________ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: >> conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:174: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >address = ('google.com', 443), timeout = <object object at 0x7fb1629e9a20> >source_address = None, socket_options = [(6, 1, 1)] > > def create_connection( > address, > timeout=socket._GLOBAL_DEFAULT_TIMEOUT, > source_address=None, > socket_options=None, > ): > """Connect to *address* and return the socket object. > > Convenience function. Connect to *address* (a 2-tuple ``(host, > port)``) and return the socket object. Passing the optional > *timeout* parameter will set the timeout on the socket instance > before attempting to connect. If no *timeout* is supplied, the > global default timeout setting returned by :func:`socket.getdefaulttimeout` > is used. If *source_address* is set it must be a tuple of (host, port) > for the socket to bind as a source address before making the connection. > An host of '' or port 0 tells the OS to use the default. > """ > > host, port = address > if host.startswith("["): > host = host.strip("[]") > err = None > > # Using the value from allowed_gai_family() in the context of getaddrinfo lets > # us select whether to work with IPv4 DNS records, IPv6 records, or both. > # The original create_connection function always returns all records. > family = allowed_gai_family() > > try: > host.encode("idna") > except UnicodeError: > return six.raise_from( > LocationParseError(u"'%s', label empty or too long" % host), None > ) > >> for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): > >address = ('google.com', 443) >err = None >family = <AddressFamily.AF_UNSPEC: 0> >host = 'google.com' >port = 443 >socket_options = [(6, 1, 1)] >source_address = None >timeout = <object object at 0x7fb1629e9a20> > >/usr/lib/python3.8/site-packages/urllib3/util/connection.py:73: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >host = 'google.com', port = 443, family = <AddressFamily.AF_UNSPEC: 0> >type = <SocketKind.SOCK_STREAM: 1>, proto = 0, flags = 0 > > def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): > """Resolve host and port into list of address info entries. > > Translate the host/port argument into a sequence of 5-tuples that contain > all the necessary arguments for creating a socket connected to that service. > host is a domain name, a string representation of an IPv4/v6 address or > None. port is a string service name such as 'http', a numeric port number or > None. By passing None as the value of host and port, you can pass NULL to > the underlying C API. > > The family, type and proto arguments can be optionally specified in order to > narrow the list of addresses returned. Passing zero as a value for each of > these arguments selects the full range of results. > """ > # We override this function since we want to translate the numeric family > # and socket type values to enum constants. > addrlist = [] >> for res in _socket.getaddrinfo(host, port, family, type, proto, flags): >E socket.gaierror: [Errno -3] Temporary failure in name resolution > >addrlist = [] >family = <AddressFamily.AF_UNSPEC: 0> >flags = 0 >host = 'google.com' >port = 443 >proto = 0 >type = <SocketKind.SOCK_STREAM: 1> > >/usr/lib/python3.8/socket.py:918: gaierror > >During handling of the above exception, another exception occurred: > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >method = 'GET', url = '/', body = b'' >headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} >retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) >redirect = False, assert_same_host = False >timeout = <object object at 0x7fb161898c40>, pool_timeout = None >release_conn = True, chunked = False, body_pos = None >response_kw = {'request_url': 'https://google.com'} >parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) >destination_scheme = None, conn = None, release_this_conn = True >http_tunnel_required = False, err = None, clean_exit = False > > def urlopen( > self, > method, > url, > body=None, > headers=None, > retries=None, > redirect=True, > assert_same_host=True, > timeout=_Default, > pool_timeout=None, > release_conn=None, > chunked=False, > body_pos=None, > **response_kw > ): > """ > Get a connection from the pool and perform an HTTP request. This is the > lowest level call for making a request, so you'll need to specify all > the raw details. > > .. note:: > > More commonly, it's appropriate to use a convenience method provided > by :class:`.RequestMethods`, such as :meth:`request`. > > .. note:: > > `release_conn` will only behave as expected if > `preload_content=False` because we want to make > `preload_content=False` the default behaviour someday soon without > breaking backwards compatibility. > > :param method: > HTTP request method (such as GET, POST, PUT, etc.) > > :param url: > The URL to perform the request on. > > :param body: > Data to send in the request body, either :class:`str`, :class:`bytes`, > an iterable of :class:`str`/:class:`bytes`, or a file-like object. > > :param headers: > Dictionary of custom headers to send, such as User-Agent, > If-None-Match, etc. If None, pool headers are used. If provided, > these headers completely replace any pool-specific headers. > > :param retries: > Configure the number of retries to allow before raising a > :class:`~urllib3.exceptions.MaxRetryError` exception. > > Pass ``None`` to retry until you receive a response. Pass a > :class:`~urllib3.util.retry.Retry` object for fine-grained control > over different types of retries. > Pass an integer number to retry connection errors that many times, > but no other types of errors. Pass zero to never retry. > > If ``False``, then retries are disabled and any exception is raised > immediately. Also, instead of raising a MaxRetryError on redirects, > the redirect response will be returned. > > :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. > > :param redirect: > If True, automatically handle redirects (status codes 301, 302, > 303, 307, 308). Each redirect counts as a retry. Disabling retries > will disable redirect, too. > > :param assert_same_host: > If ``True``, will make sure that the host of the pool requests is > consistent else will raise HostChangedError. When ``False``, you can > use the pool on an HTTP proxy and request foreign hosts. > > :param timeout: > If specified, overrides the default timeout for this one > request. It may be a float (in seconds) or an instance of > :class:`urllib3.util.Timeout`. > > :param pool_timeout: > If set and the pool is set to block=True, then this method will > block for ``pool_timeout`` seconds and raise EmptyPoolError if no > connection is available within the time period. > > :param release_conn: > If False, then the urlopen call will not release the connection > back into the pool once a response is received (but will release if > you read the entire contents of the response such as when > `preload_content=True`). This is useful if you're not preloading > the response's content immediately. You will need to call > ``r.release_conn()`` on the response ``r`` to return the connection > back into the pool. If None, it takes the value of > ``response_kw.get('preload_content', True)``. > > :param chunked: > If True, urllib3 will send the body using chunked transfer > encoding. Otherwise, urllib3 will send the body using the standard > content-length form. Defaults to False. > > :param int body_pos: > Position to seek to in file-like body in the event of a retry or > redirect. Typically this won't need to be set because urllib3 will > auto-populate the value when needed. > > :param \\**response_kw: > Additional parameters are passed to > :meth:`urllib3.response.HTTPResponse.from_httplib` > """ > > parsed_url = parse_url(url) > destination_scheme = parsed_url.scheme > > if headers is None: > headers = self.headers > > if not isinstance(retries, Retry): > retries = Retry.from_int(retries, redirect=redirect, default=self.retries) > > if release_conn is None: > release_conn = response_kw.get("preload_content", True) > > # Check host > if assert_same_host and not self.is_same_host(url): > raise HostChangedError(self, url, retries) > > # Ensure that the URL we're connecting to is properly encoded > if url.startswith("/"): > url = six.ensure_str(_encode_target(url)) > else: > url = six.ensure_str(parsed_url.url) > > conn = None > > # Track whether `conn` needs to be released before > # returning/raising/recursing. Update this variable if necessary, and > # leave `release_conn` constant throughout the function. That way, if > # the function recurses, the original value of `release_conn` will be > # passed down into the recursive call, and its value will be respected. > # > # See issue #651 [1] for details. > # > # [1] <https://github.com/urllib3/urllib3/issues/651> > release_this_conn = release_conn > > http_tunnel_required = connection_requires_http_tunnel( > self.proxy, self.proxy_config, destination_scheme > ) > > # Merge the proxy headers. Only done when not using HTTP CONNECT. We > # have to copy the headers dict so we can safely change it without those > # changes being reflected in anyone else's copy. > if not http_tunnel_required: > headers = headers.copy() > headers.update(self.proxy_headers) > > # Must keep the exception bound to a separate variable or else Python 3 > # complains about UnboundLocalError. > err = None > > # Keep track of whether we cleanly exited the except block. This > # ensures we do proper cleanup in finally. > clean_exit = False > > # Rewind body position, if needed. Record current position > # for future rewinds in the event of a redirect/retry. > body_pos = set_file_position(body, body_pos) > > try: > # Request a connection from the queue. > timeout_obj = self._get_timeout(timeout) > conn = self._get_conn(timeout=pool_timeout) > > conn.timeout = timeout_obj.connect_timeout > > is_new_proxy_conn = self.proxy is not None and not getattr( > conn, "sock", None > ) > if is_new_proxy_conn and http_tunnel_required: > self._prepare_proxy(conn) > > # Make the request on the httplib connection object. >> httplib_response = self._make_request( > conn, > method, > url, > timeout=timeout_obj, > body=body, > headers=headers, > chunked=chunked, > ) > >assert_same_host = False >body = b'' >body_pos = None >chunked = False >clean_exit = False >conn = None >destination_scheme = None >err = None >headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} >http_tunnel_required = False >is_new_proxy_conn = False >method = 'GET' >parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) >pool_timeout = None >redirect = False >release_conn = True >release_this_conn = True >response_kw = {'request_url': 'https://google.com'} >retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >timeout = <object object at 0x7fb161898c40> >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:699: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> >method = 'GET', url = '/' >timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >chunked = False >httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > > def _make_request( > self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw > ): > """ > Perform a request on a given urllib connection object taken from our > pool. > > :param conn: > a connection from one of our connection pools > > :param timeout: > Socket timeout in seconds for the request. This can be a > float or integer, which will set the same timeout value for > the socket connect and the socket read, or an instance of > :class:`urllib3.util.Timeout`, which gives you more fine-grained > control over your timeouts. > """ > self.num_requests += 1 > > timeout_obj = self._get_timeout(timeout) > timeout_obj.start_connect() > conn.timeout = timeout_obj.connect_timeout > > # Trigger any extra validation we need to do. > try: >> self._validate_conn(conn) > >chunked = False >conn = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> >httplib_request_kw = {'body': b'', 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}} >method = 'GET' >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >timeout = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:382: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > > def _validate_conn(self, conn): > """ > Called right before a request is made, after the socket is created. > """ > super(HTTPSConnectionPool, self)._validate_conn(conn) > > # Force connect early to allow us to validate the connection. > if not getattr(conn, "sock", None): # AppEngine might not have `.sock` >> conn.connect() > >__class__ = <class 'urllib3.connectionpool.HTTPSConnectionPool'> >conn = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> >self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:1010: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > > def connect(self): > # Add certificate verification >> conn = self._new_conn() > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:358: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > > def _new_conn(self): > """Establish a socket connection and set nodelay settings on it. > > :return: New socket connection. > """ > extra_kw = {} > if self.source_address: > extra_kw["source_address"] = self.source_address > > if self.socket_options: > extra_kw["socket_options"] = self.socket_options > > try: > conn = connection.create_connection( > (self._dns_host, self.port), self.timeout, **extra_kw > ) > > except SocketTimeout: > raise ConnectTimeoutError( > self, > "Connection to %s timed out. (connect timeout=%s)" > % (self.host, self.timeout), > ) > > except SocketError as e: >> raise NewConnectionError( > self, "Failed to establish a new connection: %s" % e > ) >E urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution > >extra_kw = {'socket_options': [(6, 1, 1)]} >self = <urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0> > >/usr/lib/python3.8/site-packages/urllib3/connection.py:186: NewConnectionError > >During handling of the above exception, another exception occurred: > >test = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > > def test_pytest(test, result): > if result: >> test(result) > >result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> >test = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > >gabbi/driver.py:226: >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/usr/lib/python3.8/unittest/case.py:736: in __call__ > return self.run(*args, **kwds) > args = (<gabbi.reporter.PyTestResult run=5 errors=0 failures=0>,) > kwds = {} > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >gabbi/case.py:143: in run > super(HTTPTestCase, self).run(result) > __class__ = <class 'gabbi.case.HTTPTestCase'> > result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:684: in run > self._feedErrorsToResult(result, outcome.errors) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb16086bbb0> > result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:602: in _feedErrorsToResult > result.addError(test, exc_info) > errors = [] > exc_info = (<class 'urllib3.exceptions.MaxRetryError'>, > MaxRetryError("HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))"), > <traceback object at 0x7fb160bb3dc0>) > result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > test = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >gabbi/reporter.py:120: in addError > raise err[1] > err = (<class 'urllib3.exceptions.MaxRetryError'>, > MaxRetryError("HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))"), > <traceback object at 0x7fb160bb3dc0>) > self = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > test = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:60: in testPartExecutor > yield > exc_info = None > isTest = True > old_success = True > self = <unittest.case._Outcome object at 0x7fb16086bbb0> > test_case = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >/usr/lib/python3.8/unittest/case.py:676: in run > self._callTestMethod(testMethod) > expecting_failure = False > expecting_failure_class = False > expecting_failure_method = False > orig_result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > outcome = <unittest.case._Outcome object at 0x7fb16086bbb0> > result = <gabbi.reporter.PyTestResult run=5 errors=0 failures=0> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > testMethod = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request>> >/usr/lib/python3.8/unittest/case.py:633: in _callTestMethod > method() > method = <bound method HTTPTestCase.test_request of <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request>> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >gabbi/suitemaker.py:97: in do_test > return test_method(*args, **kwargs) > args = (<gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request>,) > kwargs = {} > test_method = <function HTTPTestCase.test_request at 0x7fb16165daf0> >gabbi/case.py:97: in wrapper > func(self) > func = <function HTTPTestCase.test_request at 0x7fb16165da60> > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> >gabbi/case.py:164: in test_request > self._run_test() > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > skip = '' >gabbi/case.py:599: in _run_test > self._run_request(full_url, method, headers, body, > base_url = 'https://google.com' > body = b'' > full_url = 'https://google.com' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > test = {'cert_validate': True, > 'data': '', > 'desc': 'Confirm redirects are followed when we ask', > 'disable_response_handler': False, > 'method': 'GET', > 'name': 'follow redirects full url', > 'poll': {}, > 'query_parameters': {}, > 'redirects': True, > 'request_headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'response_forbidden_headers': [], > 'response_headers': {}, > 'response_json_paths': {}, > 'response_strings': [], > 'skip': '', > 'ssl': True, > 'status': 200, > 'url': 'https://google.com', > 'use_prior_test': True, > 'verbose': False, > 'xfail': False} >gabbi/case.py:498: in _run_request > response, content = self.http.request( > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = True > self = <gabbi.suitemaker.driver_google_follow_redirects_full_url testMethod=test_request> > url = 'https://google.com' >gabbi/httpclient.py:43: in request > response = super(Http, self).request( > __class__ = <class 'gabbi.httpclient.Http'> > absolute_uri = 'https://google.com' > body = b'' > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > redirect = True > retry = Retry(total=10, connect=None, read=None, redirect=5, status=None) > self = <gabbi.httpclient.Http object at 0x7fb1612185b0> >/usr/lib/python3.8/site-packages/urllib3/request.py:74: in request > return self.request_encode_url( > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb1612185b0> > url = 'https://google.com' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} >/usr/lib/python3.8/site-packages/urllib3/request.py:96: in request_encode_url > return self.urlopen(method, url, **extra_kw) > extra_kw = {'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'request_url': 'https://google.com', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} > fields = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > method = 'GET' > self = <gabbi.httpclient.Http object at 0x7fb1612185b0> > url = 'https://google.com' > urlopen_kw = {'body': b'', > 'request_url': 'https://google.com', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} >/usr/lib/python3.8/site-packages/urllib3/poolmanager.py:375: in urlopen > response = conn.urlopen(method, u.request_uri, **kw) > conn = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > kw = {'assert_same_host': False, > 'body': b'', > 'headers': {'user-agent': 'gabbi/2.3.0 (Python urllib3)'}, > 'redirect': False, > 'request_url': 'https://google.com', > 'retries': Retry(total=10, connect=None, read=None, redirect=5, status=None)} > method = 'GET' > redirect = True > self = <gabbi.httpclient.Http object at 0x7fb1612185b0> > u = Url(scheme='https', auth=None, host='google.com', port=None, path=None, query=None, fragment=None) > url = 'https://google.com' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bdf0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=9, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b910>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=8, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bf70>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=7, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b1c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=6, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca850>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=5, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab20>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=4, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=3, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcae50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=2, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab80>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=1, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:783: in urlopen > return self.urlopen( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca280>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >/usr/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen > retries = retries.increment( > assert_same_host = False > body = b'' > body_pos = None > chunked = False > clean_exit = False > conn = None > destination_scheme = None > err = None > headers = {'user-agent': 'gabbi/2.3.0 (Python urllib3)'} > http_tunnel_required = False > is_new_proxy_conn = False > method = 'GET' > parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/', query=None, fragment=None) > pool_timeout = None > redirect = False > release_conn = True > release_this_conn = True > response_kw = {'request_url': 'https://google.com'} > retries = Retry(total=0, connect=None, read=None, redirect=5, status=None) > self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> > timeout = <object object at 0x7fb161898c40> > timeout_obj = Timeout(connect=<object object at 0x7fb1629e9a20>, read=<object object at 0x7fb1629e9a20>, total=None) > url = '/' >_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > >self = Retry(total=0, connect=None, read=None, redirect=5, status=None) >method = 'GET', url = '/', response = None >error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') >_pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >_stacktrace = <traceback object at 0x7fb160bb3e00> > > def increment( > self, > method=None, > url=None, > response=None, > error=None, > _pool=None, > _stacktrace=None, > ): > """Return a new Retry object with incremented retry counters. > > :param response: A response object, or None, if the server did not > return a response. > :type response: :class:`~urllib3.response.HTTPResponse` > :param Exception error: An error encountered during the request, or > None if the response was received successfully. > > :return: A new ``Retry`` object. > """ > if self.total is False and error: > # Disabled, indicate to re-raise the error. > raise six.reraise(type(error), error, _stacktrace) > > total = self.total > if total is not None: > total -= 1 > > connect = self.connect > read = self.read > redirect = self.redirect > status_count = self.status > other = self.other > cause = "unknown" > status = None > redirect_location = None > > if error and self._is_connection_error(error): > # Connect retry? > if connect is False: > raise six.reraise(type(error), error, _stacktrace) > elif connect is not None: > connect -= 1 > > elif error and self._is_read_error(error): > # Read retry? > if read is False or not self._is_method_retryable(method): > raise six.reraise(type(error), error, _stacktrace) > elif read is not None: > read -= 1 > > elif error: > # Other retry? > if other is not None: > other -= 1 > > elif response and response.get_redirect_location(): > # Redirect retry? > if redirect is not None: > redirect -= 1 > cause = "too many redirects" > redirect_location = response.get_redirect_location() > status = response.status > > else: > # Incrementing because of a server error like a 500 in > # status_forcelist and the given method is in the allowed_methods > cause = ResponseError.GENERIC_ERROR > if response and response.status: > if status_count is not None: > status_count -= 1 > cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) > status = response.status > > history = self.history + ( > RequestHistory(method, url, error, status, redirect_location), > ) > > new_retry = self.new( > total=total, > connect=connect, > read=read, > redirect=redirect, > status=status_count, > other=other, > history=history, > ) > > if new_retry.is_exhausted(): >> raise MaxRetryError(_pool, url, error or ResponseError(cause)) >E urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) > >_pool = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7fb16086bb20> >_stacktrace = <traceback object at 0x7fb160bb3e00> >cause = 'unknown' >connect = None >error = NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution') >history = (RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bdf0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b910>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bf70>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b1c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca850>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab20>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcae50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab80>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca280>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None), > RequestHistory(method='GET', url='/', error=NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca1f0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'), status=None, redirect_location=None)) >method = 'GET' >new_retry = Retry(total=-1, connect=None, read=None, redirect=5, status=None) >other = None >read = None >redirect = 5 >redirect_location = None >response = None >self = Retry(total=0, connect=None, read=None, redirect=5, status=None) >status = None >status_count = None >total = -1 >url = '/' > >/usr/lib/python3.8/site-packages/urllib3/util/retry.py:574: MaxRetryError >------------------------------ Captured log call ------------------------------- >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=9, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bdf0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=8, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b910>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=7, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086bf70>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=6, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb16086b1c0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=5, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca850>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=4, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab20>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=3, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca9a0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=2, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcae50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=1, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bcab80>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >WARNING urllib3.connectionpool:connectionpool.py:780 Retrying (Retry(total=0, connect=None, read=None, redirect=5, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb160bca280>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': / >=============================== warnings summary =============================== >gabbi/tests/test_runner.py::RunnerTest::test_stdin_data_dir > /usr/lib/python3.8/site-packages/ply/yacc.py:3235: ResourceWarning: unclosed file <_io.FileIO name='/dev/null' mode='wb' closefd=True> > _items = [(k, getattr(module, k)) for k in dir(module)] > >-- Docs: https://docs.pytest.org/en/stable/warnings.html >=========================== short test summary info ============================ >SKIPPED [1] gabbi/reporter.py:123: Skipping for now because we can't do it >SKIPPED [1] gabbi/reporter.py: entire suite skipped >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_backref_backref_json_fail_end] > reason: unable to replace $RESPONSE in $RESPONSE['url'], data unavailable: JSONPath 'url' failed to match on data: '{}' >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_casting_cast_to_int_internal] > reason: unable to replace $ENVIRON in foo $ENVIRON:int['INT'] bar, data unavailable: invalid literal for int() with base 10: 'foo 1 bar' >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_casting_internal_json_fail] > reason: Unable to process cast <int> within message: in this $HISTORY['json set up'].$RESPONSE:int['$.string'] is errors >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_cookie_confirm_no_cookies_causes_error] > reason: unable to replace $COOKIE in /foobar?$COOKIE, data unavailable: 'set-cookie' >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_disable-response-handler_get_some_not_json_fail] > reason: unable to load data as application/json >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_failskip_wrong_status] > reason: '200' not found in ['404'], response: >{} >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_failskip_non_existent_header] > reason: 'unlikely_header' header not present in response: KeysView(HTTPHeaderDict({'X-Gabbi-method': 'GET', 'Content-Type': 'application/json ; charset=utf-8 ; stop=no', 'X-Gabbi-url': 'http://6395b9eb-ea9b-486b-a071-c18a1df4af99:8001/', 'status': '200', 'reason': 'OK'})) >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_forbiddenheaders_header_is_there_fail] > reason: 'x-gabbi-url' unexpectedly found in HTTPHeaderDict({'X-Gabbi-method': 'GET', 'Content-Type': 'application/json ; charset=utf-8 ; stop=no', 'X-Gabbi-url': 'http://96a76880-1b61-4ca2-8659-69ffe9aebb1e:8001/foobar', 'status': '200', 'reason': 'OK'}) : Forbidden header x-gabbi-url found in response >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_forbiddenheaders_header_is_there_fail_case_insensitive] > reason: 'x-gabbi-url' unexpectedly found in HTTPHeaderDict({'X-Gabbi-method': 'GET', 'Content-Type': 'application/json ; charset=utf-8 ; stop=no', 'X-Gabbi-url': 'http://96a76880-1b61-4ca2-8659-69ffe9aebb1e:8001/foobar', 'status': '200', 'reason': 'OK'}) : Forbidden header x-gabbi-url found in response >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_poll_poller_fail] > reason: '400' not found in ['200'] >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_self_confirm_environ_no_key_fail] > reason: unable to replace $ENVIRON in /$ENVIRON['1385F1EB-DC5C-4A95-8928-58673FB272DC'], data unavailable: '1385F1EB-DC5C-4A95-8928-58673FB272DC' >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_self_fail_pluggable_response] > reason: 'CO"alpha": ["1"]' not found in '{"alpha": ["1"]}\nAnother line' >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_self_test_exception_wrapper] > reason: because you asked me to >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_self_non_json_response_failure] > reason: left hand side json path $.data cannot match None >XFAIL gabbi/tests/test_intercept.py::test_pytest[driver_self_xml_derived_content_type] > reason: left hand side json path $.data[0] cannot match None >FAILED gabbi/tests/test_intercept.py::test_pytest[driver_prefix_provide_a_link] >FAILED gabbi/tests/test_intercept.py::test_pytest[driver_prefix_get_that_link] >FAILED gabbi/tests/test_intercept.py::test_pytest[driver_prefix_get_relative_link] >FAILED gabbi/tests/test_live.py::test_pytest[driver_google_google] - urllib3.... >FAILED gabbi/tests/test_live.py::test_pytest[driver_google_follow_redirects] >FAILED gabbi/tests/test_live.py::test_pytest[driver_google_google_full_url] >FAILED gabbi/tests/test_live.py::test_pytest[driver_google_google_russia] - u... >FAILED gabbi/tests/test_live.py::test_pytest[driver_google_follow_redirects_full_url] >======= 8 failed, 274 passed, 2 skipped, 15 xfailed, 1 warning in 12.31s ======= > * ERROR: dev-python/gabbi-2.3.0::guru failed (test phase): > * pytest failed with python3.8 > * > * Call stack: > * ebuild.sh, line 127: Called src_test > * environment, line 2977: Called distutils-r1_src_test > * environment, line 1289: Called _distutils-r1_run_foreach_impl 'python_test' > * environment, line 550: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' > * environment, line 2640: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2106: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2104: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' > * environment, line 842: Called distutils-r1_run_phase 'python_test' > * environment, line 1228: Called python_test > * environment, line 2936: Called distutils-r1_python_test > * environment, line 1185: Called epytest > * environment, line 1622: Called die > * The specific snippet of code: > * "${@}" || die -n "pytest failed with ${EPYTHON}"; > * > * If you need support, post the output of `emerge --info '=dev-python/gabbi-2.3.0::guru'`, > * the complete build log and the output of `emerge -pqv '=dev-python/gabbi-2.3.0::guru'`. > * The complete build log is located at '/var/log/emerge-log/build/dev-python/gabbi-2.3.0:20211006-104855.log'. > * For convenience, a symlink to the build log is located at '/var/tmp/portage/dev-python/gabbi-2.3.0/temp/build.log'. > * The ebuild environment file is located at '/var/tmp/portage/dev-python/gabbi-2.3.0/temp/environment'. > * Working directory: '/var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0' > * S: '/var/tmp/portage/dev-python/gabbi-2.3.0/work/gabbi-2.3.0' >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 816642
: 743493