14:00:11 Triggered by Gerrit: https://git.opendaylight.org/gerrit/c/transportpce/+/125666 14:00:11 Running as SYSTEM 14:00:11 [EnvInject] - Loading node environment variables. 14:00:11 Building remotely on prd-ubuntu2204-docker-4c-16g-46633 (ubuntu2204-docker-4c-16g) in workspace /w/workspace/transportpce-tox-verify-titanium 14:00:12 [ssh-agent] Looking for ssh-agent implementation... 14:00:12 [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) 14:00:12 $ ssh-agent 14:00:12 SSH_AUTH_SOCK=/tmp/ssh-XXXXXX6A7O9G/agent.1560 14:00:12 SSH_AGENT_PID=1562 14:00:12 [ssh-agent] Started. 14:00:12 Running ssh-add (command line suppressed) 14:00:12 Identity added: /w/workspace/transportpce-tox-verify-titanium@tmp/private_key_9006657999093831826.key (/w/workspace/transportpce-tox-verify-titanium@tmp/private_key_9006657999093831826.key) 14:00:12 [ssh-agent] Using credentials jenkins (jenkins-ssh) 14:00:12 The recommended git tool is: NONE 14:00:14 using credential jenkins-ssh 14:00:14 Wiping out workspace first. 14:00:14 Cloning the remote Git repository 14:00:14 Cloning repository git://devvexx.opendaylight.org/mirror/transportpce 14:00:14 > git init /w/workspace/transportpce-tox-verify-titanium # timeout=10 14:00:14 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 14:00:14 > git --version # timeout=10 14:00:14 > git --version # 'git version 2.34.1' 14:00:14 using GIT_SSH to set credentials jenkins-ssh 14:00:14 Verifying host key using known hosts file, will automatically accept unseen keys 14:00:14 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce +refs/heads/*:refs/remotes/origin/* # timeout=10 14:00:18 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 14:00:18 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 14:00:19 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 14:00:19 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 14:00:19 using GIT_SSH to set credentials jenkins-ssh 14:00:19 Verifying host key using known hosts file, will automatically accept unseen keys 14:00:19 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce refs/changes/66/125666/1 # timeout=10 14:00:19 > git rev-parse 44f8bc3b7a7e02e058d058a319cfe376e64284af^{commit} # timeout=10 14:00:19 Checking out Revision 44f8bc3b7a7e02e058d058a319cfe376e64284af (refs/changes/66/125666/1) 14:00:19 > git config core.sparsecheckout # timeout=10 14:00:19 > git checkout -f 44f8bc3b7a7e02e058d058a319cfe376e64284af # timeout=10 14:00:22 Commit message: "Bump project version to 11.3.0-SNAPSHOT" 14:00:22 > git rev-parse FETCH_HEAD^{commit} # timeout=10 14:00:23 > git rev-list --no-walk 4cee145efd35ba82ef0e4e0cfed0053ec2c69737 # timeout=10 14:00:23 > git remote # timeout=10 14:00:23 > git submodule init # timeout=10 14:00:23 > git submodule sync # timeout=10 14:00:23 > git config --get remote.origin.url # timeout=10 14:00:23 > git submodule init # timeout=10 14:00:23 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 14:00:23 ERROR: No submodules found. 14:00:23 provisioning config files... 14:00:23 copy managed file [npmrc] to file:/home/jenkins/.npmrc 14:00:23 copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf 14:00:23 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins14587685259073737917.sh 14:00:23 ---> python-tools-install.sh 14:00:23 Setup pyenv: 14:00:23 * system (set by /opt/pyenv/version) 14:00:23 * 3.8.20 (set by /opt/pyenv/version) 14:00:23 * 3.9.20 (set by /opt/pyenv/version) 14:00:23 3.10.15 14:00:23 3.11.10 14:00:28 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-M6XE 14:00:28 lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv 14:00:28 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:00:32 lf-activate-venv(): INFO: Installing additional packages: lftools 14:01:02 lf-activate-venv(): INFO: Adding /tmp/venv-M6XE/bin to PATH 14:01:02 Generating Requirements File 14:01:31 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 14:01:31 httplib2 0.30.2 requires pyparsing<4,>=3.0.4, but you have pyparsing 2.4.7 which is incompatible. 14:01:31 Python 3.11.10 14:01:31 pip 26.2.1 from /tmp/venv-M6XE/lib/python3.11/site-packages/pip (python 3.11) 14:01:32 aiohappyeyeballs==2.7.1 14:01:32 aiohttp==3.14.3 14:01:32 aiosignal==1.4.0 14:01:32 appdirs==1.4.4 14:01:32 argcomplete==3.7.2 14:01:32 aspy.yaml==1.3.0 14:01:32 attrs==26.1.0 14:01:32 autopage==0.6.0 14:01:32 beautifulsoup4==4.15.0 14:01:32 boto3==1.43.85 14:01:32 botocore==1.43.85 14:01:32 bs4==0.0.2 14:01:32 certifi==2026.7.22 14:01:32 cffi==2.1.1 14:01:32 cfgv==3.5.0 14:01:32 chardet==7.6.0 14:01:32 charset-normalizer==3.5.1 14:01:32 click==8.5.0 14:01:32 cliff==4.16.0 14:01:32 cmd2==4.2.2 14:01:32 cryptography==3.3.2 14:01:32 debtcollector==3.1.0 14:01:32 decorator==5.3.1 14:01:32 defusedxml==0.7.1 14:01:32 Deprecated==1.3.1 14:01:32 distlib==0.4.3 14:01:32 dnspython==2.8.0 14:01:32 docker==7.2.0 14:01:32 dogpile.cache==1.5.0 14:01:32 durationpy==0.11 14:01:32 email-validator==2.3.0 14:01:32 filelock==3.32.5 14:01:32 frozenlist==1.8.0 14:01:32 future==1.0.0 14:01:32 gitdb==4.0.12 14:01:32 GitPython==3.1.61 14:01:32 httplib2==0.30.2 14:01:32 identify==2.6.19 14:01:32 idna==3.19 14:01:32 importlib-resources==1.5.0 14:01:32 iso8601==2.1.0 14:01:32 Jinja2==3.1.6 14:01:32 jmespath==1.1.0 14:01:32 jsonpatch==1.33 14:01:32 jsonpointer==3.1.1 14:01:32 jsonschema==4.26.0 14:01:32 jsonschema-specifications==2025.9.1 14:01:32 keystoneauth1==5.17.0 14:01:32 kubernetes==36.0.3 14:01:32 lftools==0.37.23 14:01:32 lxml==6.1.2 14:01:32 markdown-it-py==4.2.0 14:01:32 MarkupSafe==3.0.3 14:01:32 mdurl==0.1.2 14:01:32 msgpack==1.2.2 14:01:32 multi_key_dict==2.0.3 14:01:32 multidict==6.7.1 14:01:32 munch==4.0.0 14:01:32 netaddr==1.3.0 14:01:32 niet==1.4.2 14:01:32 nodeenv==1.10.0 14:01:32 oauth2client==4.1.3 14:01:32 oauthlib==3.3.1 14:01:32 openstacksdk==4.20.0 14:01:32 os-service-types==1.9.0 14:01:32 osc-lib==4.7.0 14:01:32 oslo.config==10.7.0 14:01:32 oslo.context==6.5.0 14:01:32 oslo.i18n==6.9.0 14:01:32 oslo.log==8.3.1 14:01:32 oslo.serialization==5.11.0 14:01:32 oslo.utils==10.2.0 14:01:32 packaging==26.3 14:01:32 pbr==7.0.3 14:01:32 platformdirs==4.11.7 14:01:32 prettytable==3.18.0 14:01:32 prompt_toolkit==3.0.53 14:01:32 propcache==0.5.2 14:01:32 psutil==7.2.2 14:01:32 pyasn1==0.6.4 14:01:32 pyasn1_modules==0.4.2 14:01:32 pycparser==3.0 14:01:32 pygerrit2==2.0.15 14:01:32 PyGithub==2.10.0 14:01:32 Pygments==2.21.0 14:01:32 PyJWT==2.13.0 14:01:32 PyNaCl==1.6.2 14:01:32 pyparsing==2.4.7 14:01:32 pyperclip==1.11.0 14:01:32 pyrsistent==0.20.0 14:01:32 python-dateutil==2.9.0.post0 14:01:32 python-discovery==1.6.0 14:01:32 python-heatclient==5.3.0 14:01:32 python-jenkins==1.8.3 14:01:32 python-keystoneclient==6.0.0 14:01:32 python-magnumclient==5.0.0 14:01:32 python-manilaclient==6.3.0 14:01:32 python-openstackclient==10.3.0 14:01:32 python-swiftclient==4.11.0 14:01:32 PyYAML==6.0.3 14:01:32 referencing==0.37.0 14:01:32 requests==2.34.2 14:01:32 requests-oauthlib==2.0.0 14:01:32 rfc3986==2.0.0 14:01:32 rich==15.0.0 14:01:32 rich-argparse==1.8.0 14:01:32 rpds-py==2026.6.3 14:01:32 rsa==4.9.1 14:01:32 ruamel.yaml==0.19.1 14:01:32 ruamel.yaml.clib==0.2.15 14:01:32 s3transfer==0.19.2 14:01:32 simplejson==4.1.2 14:01:32 six==1.17.0 14:01:32 smmap==5.0.3 14:01:32 soupsieve==2.9.2 14:01:32 stevedore==5.9.1 14:01:32 tabulate==0.10.0 14:01:32 toml==0.10.2 14:01:32 tomlkit==0.15.1 14:01:32 tqdm==4.70.0 14:01:32 typing_extensions==4.16.0 14:01:32 urllib3==1.26.20 14:01:32 virtualenv==21.7.8 14:01:32 wcwidth==0.8.3 14:01:32 websocket-client==1.9.2 14:01:32 wrapt==2.4.0 14:01:32 xdg==6.0.0 14:01:32 xmltodict==1.0.4 14:01:32 yarl==1.24.5 14:01:32 yq==4.1.2 14:01:32 [transportpce-tox-verify-titanium] $ /bin/sh /tmp/jenkins11155870267512282307.sh 14:01:32 ---> uv-install.sh 14:01:32 Installing uv/uvx (latest) using shell installer 14:01:32 2026-09-01 14:01:32 URL:https://releases.astral.sh/installers/uv/latest/uv-installer.sh [71225/71225] -> "/tmp/uv-install-uaszcA.sh" [1] 14:01:32 downloading uv 0.12.8 x86_64-unknown-linux-gnu 14:01:32 installing to /home/jenkins/.local/bin 14:01:32 uv 14:01:32 uvx 14:01:32 everything's installed! 14:01:33 14:01:33 To add $HOME/.local/bin to your PATH, either restart your shell or run: 14:01:33 14:01:33 source $HOME/.local/bin/env (sh, bash, zsh) 14:01:33 source $HOME/.local/bin/env.fish (fish) 14:01:33 Adding install location to PATH 14:01:33 ---> Validating uv/uvx install 14:01:33 uvx 0.12.8 (x86_64-unknown-linux-gnu) 14:01:33 [EnvInject] - Injecting environment variables from a build step. 14:01:33 [EnvInject] - Injecting as environment variables the properties content 14:01:33 PYTHON=python3 14:01:33 14:01:33 [EnvInject] - Variables injected successfully. 14:01:33 [transportpce-tox-verify-titanium] $ /bin/bash -l /tmp/jenkins2329895754989816724.sh 14:01:33 ---> tox-install.sh 14:01:33 + source /home/jenkins/lf-env.sh 14:01:33 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 14:01:33 ++ mktemp -d /tmp/venv-XXXX 14:01:33 + lf_venv=/tmp/venv-YBsG 14:01:33 + local venv_file=/tmp/.os_lf_venv 14:01:33 + local python=python3 14:01:33 + local options 14:01:33 + local set_path=true 14:01:33 + local install_args= 14:01:33 ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 14:01:33 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 14:01:33 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 14:01:33 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 14:01:33 + true 14:01:33 + case $1 in 14:01:33 + venv_file=/tmp/.toxenv 14:01:33 + shift 2 14:01:33 + true 14:01:33 + case $1 in 14:01:33 + shift 14:01:33 + break 14:01:33 + case $python in 14:01:33 + local pkg_list= 14:01:33 + [[ -d /opt/pyenv ]] 14:01:33 + echo 'Setup pyenv:' 14:01:33 Setup pyenv: 14:01:33 + export PYENV_ROOT=/opt/pyenv 14:01:33 + PYENV_ROOT=/opt/pyenv 14:01:33 + export PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:33 + PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:33 + pyenv versions 14:01:33 system 14:01:33 3.8.20 14:01:33 3.9.20 14:01:33 3.10.15 14:01:33 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:01:33 + command -v pyenv 14:01:33 ++ pyenv init - --no-rehash 14:01:33 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 14:01:33 for i in ${!paths[@]}; do 14:01:33 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 14:01:33 fi; done; 14:01:33 echo "${paths[*]}"'\'')" 14:01:33 export PATH="/opt/pyenv/shims:${PATH}" 14:01:33 export PYENV_SHELL=bash 14:01:33 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 14:01:33 pyenv() { 14:01:33 local command 14:01:33 command="${1:-}" 14:01:33 if [ "$#" -gt 0 ]; then 14:01:33 shift 14:01:33 fi 14:01:33 14:01:33 case "$command" in 14:01:33 rehash|shell) 14:01:33 eval "$(pyenv "sh-$command" "$@")" 14:01:33 ;; 14:01:33 *) 14:01:33 command pyenv "$command" "$@" 14:01:33 ;; 14:01:33 esac 14:01:33 }' 14:01:33 +++ bash --norc -ec 'IFS=:; paths=($PATH); 14:01:33 for i in ${!paths[@]}; do 14:01:33 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 14:01:33 fi; done; 14:01:33 echo "${paths[*]}"' 14:01:33 ++ PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:33 ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:33 ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:33 ++ export PYENV_SHELL=bash 14:01:33 ++ PYENV_SHELL=bash 14:01:33 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 14:01:33 +++ complete -F _pyenv pyenv 14:01:33 ++ lf-pyver python3 14:01:33 ++ local py_version_xy=python3 14:01:33 ++ local py_version_xyz= 14:01:33 ++ pyenv versions 14:01:33 ++ local command 14:01:33 ++ command=versions 14:01:33 ++ sed 's/^[ *]* //' 14:01:33 ++ '[' 1 -gt 0 ']' 14:01:33 ++ shift 14:01:33 ++ case "$command" in 14:01:33 ++ command pyenv versions 14:01:33 ++ awk '{ print $1 }' 14:01:33 ++ grep -E '^[0-9.]*[0-9]$' 14:01:33 ++ [[ ! -s /tmp/.pyenv_versions ]] 14:01:33 +++ grep '^3' /tmp/.pyenv_versions 14:01:33 +++ sort -V 14:01:33 +++ tail -n 1 14:01:33 ++ py_version_xyz=3.11.10 14:01:33 ++ [[ -z 3.11.10 ]] 14:01:33 ++ echo 3.11.10 14:01:33 ++ return 0 14:01:33 + pyenv local 3.11.10 14:01:33 + local command 14:01:33 + command=local 14:01:33 + '[' 2 -gt 0 ']' 14:01:33 + shift 14:01:33 + case "$command" in 14:01:33 + command pyenv local 3.11.10 14:01:33 + for arg in "$@" 14:01:33 + case $arg in 14:01:33 + pkg_list+='tox ' 14:01:33 + for arg in "$@" 14:01:33 + case $arg in 14:01:33 + pkg_list+='virtualenv ' 14:01:33 + for arg in "$@" 14:01:33 + case $arg in 14:01:33 + pkg_list+='urllib3~=1.26.15 ' 14:01:33 + [[ -f /tmp/.toxenv ]] 14:01:33 + [[ ! -f /tmp/.toxenv ]] 14:01:33 + [[ -n '' ]] 14:01:33 + python3 -m venv /tmp/venv-YBsG 14:01:37 + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-YBsG' 14:01:37 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-YBsG 14:01:37 + echo /tmp/venv-YBsG 14:01:37 + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' 14:01:37 lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv 14:01:37 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 14:01:37 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:01:37 + local 'pip_opts=--upgrade --quiet' 14:01:37 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 14:01:37 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 14:01:37 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 14:01:37 + [[ -n '' ]] 14:01:37 + [[ -n '' ]] 14:01:37 + lf-venv-pip-install /tmp/venv-YBsG/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 14:01:37 + local venv_python=/tmp/venv-YBsG/bin/python3 14:01:37 + shift 14:01:37 + local upstream=https://pypi.org/simple 14:01:37 + /tmp/venv-YBsG/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 14:01:41 + return 0 14:01:41 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 14:01:41 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 14:01:41 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 14:01:41 + lf-venv-pip-install /tmp/venv-YBsG/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 14:01:41 + local venv_python=/tmp/venv-YBsG/bin/python3 14:01:41 + shift 14:01:41 + local upstream=https://pypi.org/simple 14:01:41 + /tmp/venv-YBsG/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 14:01:44 + return 0 14:01:44 + type python3 14:01:44 + true 14:01:44 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-YBsG/bin to PATH' 14:01:44 lf-activate-venv(): INFO: Adding /tmp/venv-YBsG/bin to PATH 14:01:44 + PATH=/tmp/venv-YBsG/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 + return 0 14:01:44 + python3 --version 14:01:44 Python 3.11.10 14:01:44 + python3 -m pip --version 14:01:44 pip 26.2.1 from /tmp/venv-YBsG/lib/python3.11/site-packages/pip (python 3.11) 14:01:44 + python3 -m pip freeze 14:01:44 cachetools==7.1.8 14:01:44 colorama==0.4.6 14:01:44 distlib==0.4.3 14:01:44 filelock==3.32.5 14:01:44 packaging==26.3 14:01:44 platformdirs==4.11.7 14:01:44 pluggy==1.6.0 14:01:44 pyproject-api==1.11.0 14:01:44 python-discovery==1.6.0 14:01:44 tomli_w==1.2.0 14:01:44 tox==4.61.2 14:01:44 typing_extensions==4.16.0 14:01:44 urllib3==1.26.20 14:01:44 virtualenv==21.7.8 14:01:44 [transportpce-tox-verify-titanium] $ /bin/sh -xe /tmp/jenkins15359066931035064777.sh 14:01:44 [EnvInject] - Injecting environment variables from a build step. 14:01:44 [EnvInject] - Injecting as environment variables the properties content 14:01:44 PARALLEL=True 14:01:44 14:01:44 [EnvInject] - Variables injected successfully. 14:01:44 [transportpce-tox-verify-titanium] $ /bin/bash -l /tmp/jenkins16117451304688260007.sh 14:01:44 ---> tox-run.sh 14:01:44 + PATH=/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 + ARCHIVE_TOX_DIR=/w/workspace/transportpce-tox-verify-titanium/archives/tox 14:01:44 + ARCHIVE_DOC_DIR=/w/workspace/transportpce-tox-verify-titanium/archives/docs 14:01:44 + mkdir -p /w/workspace/transportpce-tox-verify-titanium/archives/tox 14:01:44 + cd /w/workspace/transportpce-tox-verify-titanium/. 14:01:44 + source /home/jenkins/lf-env.sh 14:01:44 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 14:01:44 ++ mktemp -d /tmp/venv-XXXX 14:01:44 + lf_venv=/tmp/venv-qZ2j 14:01:44 + local venv_file=/tmp/.os_lf_venv 14:01:44 + local python=python3 14:01:44 + local options 14:01:44 + local set_path=true 14:01:44 + local install_args= 14:01:44 ++ getopt -o np:v: -l no-path,system-site-packages,python:,venv-file: -n lf-activate-venv -- --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 14:01:44 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 14:01:44 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 14:01:44 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 14:01:44 + true 14:01:44 + case $1 in 14:01:44 + venv_file=/tmp/.toxenv 14:01:44 + shift 2 14:01:44 + true 14:01:44 + case $1 in 14:01:44 + shift 14:01:44 + break 14:01:44 + case $python in 14:01:44 + local pkg_list= 14:01:44 + [[ -d /opt/pyenv ]] 14:01:44 + echo 'Setup pyenv:' 14:01:44 Setup pyenv: 14:01:44 + export PYENV_ROOT=/opt/pyenv 14:01:44 + PYENV_ROOT=/opt/pyenv 14:01:44 + export PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 + PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 + pyenv versions 14:01:44 system 14:01:44 3.8.20 14:01:44 3.9.20 14:01:44 3.10.15 14:01:44 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:01:44 + command -v pyenv 14:01:44 ++ pyenv init - --no-rehash 14:01:44 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 14:01:44 for i in ${!paths[@]}; do 14:01:44 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 14:01:44 fi; done; 14:01:44 echo "${paths[*]}"'\'')" 14:01:44 export PATH="/opt/pyenv/shims:${PATH}" 14:01:44 export PYENV_SHELL=bash 14:01:44 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 14:01:44 pyenv() { 14:01:44 local command 14:01:44 command="${1:-}" 14:01:44 if [ "$#" -gt 0 ]; then 14:01:44 shift 14:01:44 fi 14:01:44 14:01:44 case "$command" in 14:01:44 rehash|shell) 14:01:44 eval "$(pyenv "sh-$command" "$@")" 14:01:44 ;; 14:01:44 *) 14:01:44 command pyenv "$command" "$@" 14:01:44 ;; 14:01:44 esac 14:01:44 }' 14:01:44 +++ bash --norc -ec 'IFS=:; paths=($PATH); 14:01:44 for i in ${!paths[@]}; do 14:01:44 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 14:01:44 fi; done; 14:01:44 echo "${paths[*]}"' 14:01:44 ++ PATH=/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 ++ export PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 ++ PATH=/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:44 ++ export PYENV_SHELL=bash 14:01:44 ++ PYENV_SHELL=bash 14:01:44 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 14:01:44 +++ complete -F _pyenv pyenv 14:01:44 ++ lf-pyver python3 14:01:44 ++ local py_version_xy=python3 14:01:44 ++ local py_version_xyz= 14:01:44 ++ pyenv versions 14:01:44 ++ local command 14:01:44 ++ command=versions 14:01:44 ++ '[' 1 -gt 0 ']' 14:01:44 ++ shift 14:01:44 ++ case "$command" in 14:01:44 ++ command pyenv versions 14:01:44 ++ awk '{ print $1 }' 14:01:44 ++ sed 's/^[ *]* //' 14:01:44 ++ grep -E '^[0-9.]*[0-9]$' 14:01:44 ++ [[ ! -s /tmp/.pyenv_versions ]] 14:01:44 +++ grep '^3' /tmp/.pyenv_versions 14:01:44 +++ sort -V 14:01:44 +++ tail -n 1 14:01:44 ++ py_version_xyz=3.11.10 14:01:44 ++ [[ -z 3.11.10 ]] 14:01:44 ++ echo 3.11.10 14:01:44 ++ return 0 14:01:44 + pyenv local 3.11.10 14:01:44 + local command 14:01:44 + command=local 14:01:44 + '[' 2 -gt 0 ']' 14:01:44 + shift 14:01:44 + case "$command" in 14:01:44 + command pyenv local 3.11.10 14:01:44 + for arg in "$@" 14:01:44 + case $arg in 14:01:44 + pkg_list+='tox ' 14:01:44 + for arg in "$@" 14:01:44 + case $arg in 14:01:44 + pkg_list+='virtualenv ' 14:01:44 + for arg in "$@" 14:01:44 + case $arg in 14:01:44 + pkg_list+='urllib3~=1.26.15 ' 14:01:44 + [[ -f /tmp/.toxenv ]] 14:01:44 ++ cat /tmp/.toxenv 14:01:44 + lf_venv=/tmp/venv-YBsG 14:01:44 + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-YBsG from' file:/tmp/.toxenv 14:01:44 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-YBsG from file:/tmp/.toxenv 14:01:44 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 14:01:44 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:01:44 + local 'pip_opts=--upgrade --quiet' 14:01:44 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 14:01:44 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 14:01:44 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 14:01:44 + [[ -n '' ]] 14:01:44 + [[ -n '' ]] 14:01:44 + lf-venv-pip-install /tmp/venv-YBsG/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 14:01:44 + local venv_python=/tmp/venv-YBsG/bin/python3 14:01:44 + shift 14:01:44 + local upstream=https://pypi.org/simple 14:01:44 + /tmp/venv-YBsG/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 14:01:45 + return 0 14:01:45 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 14:01:45 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 14:01:45 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 14:01:45 + lf-venv-pip-install /tmp/venv-YBsG/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 14:01:45 + local venv_python=/tmp/venv-YBsG/bin/python3 14:01:45 + shift 14:01:45 + local upstream=https://pypi.org/simple 14:01:45 + /tmp/venv-YBsG/bin/python3 -m pip install --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org --upgrade-strategy eager tox virtualenv urllib3~=1.26.15 14:01:47 + return 0 14:01:47 + type python3 14:01:47 + true 14:01:47 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-YBsG/bin to PATH' 14:01:47 lf-activate-venv(): INFO: Adding /tmp/venv-YBsG/bin to PATH 14:01:47 + PATH=/tmp/venv-YBsG/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:47 + return 0 14:01:47 + [[ -d /opt/pyenv ]] 14:01:47 + echo '---> Setting up pyenv' 14:01:47 ---> Setting up pyenv 14:01:47 + export PYENV_ROOT=/opt/pyenv 14:01:47 + PYENV_ROOT=/opt/pyenv 14:01:47 + export PATH=/opt/pyenv/bin:/tmp/venv-YBsG/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:47 + PATH=/opt/pyenv/bin:/tmp/venv-YBsG/bin:/opt/pyenv/shims:/opt/pyenv/bin:/home/jenkins/.local/bin:/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin 14:01:47 ++ pwd 14:01:47 + PYTHONPATH=/w/workspace/transportpce-tox-verify-titanium 14:01:47 + export PYTHONPATH 14:01:47 + export TOX_TESTENV_PASSENV=PYTHONPATH 14:01:47 + TOX_TESTENV_PASSENV=PYTHONPATH 14:01:47 + tox --version 14:01:47 4.61.2 from /tmp/venv-YBsG/lib/python3.11/site-packages/tox/__init__.py 14:01:47 + PARALLEL=True 14:01:47 + TOX_OPTIONS_LIST= 14:01:47 + [[ -n '' ]] 14:01:47 + case ${PARALLEL,,} in 14:01:47 + TOX_OPTIONS_LIST=' --parallel auto --parallel-live' 14:01:47 + tox --parallel auto --parallel-live 14:01:47 + tee -a /w/workspace/transportpce-tox-verify-titanium/archives/tox/tox.log 14:01:48 docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt 14:01:48 buildcontroller: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:01:49 docs: install_deps> python -I -m pip install -r docs/requirements.txt 14:01:49 checkbashisms: freeze> python -m pip freeze --all 14:01:49 checkbashisms: pip==26.2.1,setuptools==84.0.0 14:01:49 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./fixCIcentOS8reposMirrors.sh 14:01:49 checkbashisms: commands[1] /w/workspace/transportpce-tox-verify-titanium/tests> sh -c 'command checkbashisms>/dev/null || sudo yum install -y devscripts-checkbashisms || sudo yum install -y devscripts-minimal || sudo yum install -y devscripts || sudo yum install -y https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Everything/x86_64/os/Packages/d/devscripts-checkbashisms-2.19.6-2.fc31.x86_64.rpm || (echo "checkbashisms command not found - please install it (e.g. sudo apt-get install devscripts | yum install devscripts-minimal )" >&2 && exit 1)' 14:01:49 checkbashisms: commands[2] /w/workspace/transportpce-tox-verify-titanium/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + 14:01:50 checkbashisms: OK ✔ in 3.08 seconds 14:01:50 pre-commit: install_deps> python -I -m pip install pre-commit 14:01:53 pre-commit: freeze> python -m pip freeze --all 14:01:53 pre-commit: cfgv==3.5.0,distlib==0.4.3,filelock==3.32.5,identify==2.6.19,nodeenv==1.10.0,pip==26.2.1,platformdirs==4.11.7,pre_commit==4.6.2,python-discovery==1.6.0,PyYAML==6.0.3,setuptools==84.0.0,virtualenv==21.7.8 14:01:53 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./fixCIcentOS8reposMirrors.sh 14:01:53 pre-commit: commands[1] /w/workspace/transportpce-tox-verify-titanium/tests> sh -c 'which cpan || sudo yum install -y perl-CPAN || (echo "cpan command not found - please install it (e.g. sudo apt-get install perl-modules | yum install perl-CPAN )" >&2 && exit 1)' 14:01:54 /usr/bin/cpan 14:01:54 pre-commit: commands[2] /w/workspace/transportpce-tox-verify-titanium/tests> pre-commit run --all-files --show-diff-on-failure 14:01:54 [WARNING] hook id `remove-tabs` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. 14:01:54 [WARNING] hook id `perltidy` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. 14:01:54 [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 14:01:54 [WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo. 14:01:54 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. 14:01:55 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. 14:01:55 [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. 14:01:56 buildcontroller: freeze> python -m pip freeze --all 14:01:56 buildcontroller: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:01:56 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./build_controller.sh 14:01:56 + update-java-alternatives -l 14:01:56 java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64 14:01:56 java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64 14:01:56 java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64 14:01:56 + sudo update-java-alternatives -s java-1.21.0-openjdk-amd64 14:01:56 update-alternatives: error: no alternatives for jaotc 14:01:56 update-alternatives: error: no alternatives for rmic 14:01:56 [INFO] Initializing environment for https://github.com/pre-commit/mirrors-autopep8. 14:01:57 + java -version 14:01:57 + sed -n ;s/.* version "\(.*\)\.\(.*\)\..*".*$/\1/p; 14:01:57 + JAVA_VER=21 14:01:57 + echo 21 14:01:57 21 14:01:57 + javac -version 14:01:57 + sed -n ;s/javac \(.*\)\.\(.*\)\..*.*$/\1/p; 14:01:57 [INFO] Initializing environment for https://github.com/perltidy/perltidy. 14:01:57 + JAVAC_VER=21 14:01:57 + echo 21 14:01:57 + [ 21 -ge 21 ] 14:01:57 + [ 21 -ge 21 ] 14:01:57 + echo ok, java is 21 or newer 14:01:57 + wget -nv https://dlcdn.apache.org/maven/maven-3/3.9.14/binaries/apache-maven-3.9.14-bin.tar.gz -P /tmp 14:01:57 21 14:01:57 ok, java is 21 or newer 14:01:57 https://dlcdn.apache.org/maven/maven-3/3.9.14/binaries/apache-maven-3.9.14-bin.tar.gz: 14:01:57 2026-09-01 14:01:57 ERROR 404: Not Found. 14:01:57 + sudo mkdir -p /opt 14:01:57 + sudo tar xf /tmp/apache-maven-3.9.14-bin.tar.gz -C /opt 14:01:57 tar: /tmp/apache-maven-3.9.14-bin.tar.gz: Cannot open: No such file or directory 14:01:57 tar: Error is not recoverable: exiting now 14:01:57 + sudo ln -s /opt/apache-maven-3.9.14 /opt/maven 14:01:57 + sudo ln -s /opt/maven/bin/mvn /usr/bin/mvn 14:01:57 + mvn --version 14:01:57 ./installMavenUbuntu.sh: 28: mvn: not found 14:01:57 buildcontroller: exit 127 (1.15 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./build_controller.sh pid=2731 14:01:57 buildcontroller: FAIL ✖ in 9.9 seconds 14:01:57 pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' 14:01:58 [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 14:01:58 [INFO] Once installed this environment will be reused. 14:01:58 [INFO] This may take a few minutes... 14:02:01 pylint: freeze> python -m pip freeze --all 14:02:01 pylint: astroid==4.0.4,dill==0.4.1,isort==9.0.1,mccabe==0.7.0,mypy_extensions==1.1.0,pip==26.2.1,platformdirs==4.11.7,pylint==4.0.8,setuptools==84.0.0,tomlkit==0.15.1 14:02:01 pylint: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> find transportpce_tests/ -name '*.py' -exec pylint --fail-under=10 --max-line-length=120 --disable=missing-docstring,import-error --disable=fixme --disable=duplicate-code '--module-rgx=([a-z0-9_]+$)|([0-9.]{1,30}$)' '--method-rgx=(([a-z_][a-zA-Z0-9_]{2,})|(_[a-z0-9_]*)|(__[a-zA-Z][a-zA-Z0-9_]+__))$' '--variable-rgx=[a-zA-Z_][a-zA-Z0-9_]{1,30}$' '{}' + 14:02:03 docs-linkcheck: freeze> python -m pip freeze --all 14:02:03 [INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks. 14:02:03 [INFO] Once installed this environment will be reused. 14:02:03 [INFO] This may take a few minutes... 14:02:03 docs: freeze> python -m pip freeze --all 14:02:04 docs-linkcheck: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,certifi==2026.7.22,charset-normalizer==3.5.1,deepmerge==3.0,docutils==0.22.4,idna==3.19,imagesize==2.0.1,Jinja2==3.1.6,jsonschema==4.26.0,jsonschema-specifications==2025.9.1,jsonschema_rs==0.37.4,lfdocs_conf==0.11.0,MarkupSafe==3.0.3,minijinja==2.24.0,mistune==3.3.4,packaging==26.3,picobox==4.0.0,pip==26.2.1,Pygments==2.21.0,PyYAML==6.0.3,referencing==0.37.0,requests==2.34.2,requests-file==2.1.0,roman-numerals==4.1.0,rpds-py==2026.6.3,setuptools==84.0.0,snowballstemmer==3.1.1,Sphinx==9.0.4,sphinx-data-viewer==0.1.5,sphinx-needs==8.4.0,sphinx-tabs==3.5.0,sphinx_mdinclude==0.6.2,sphinx_rtd_theme==3.1.0,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-httpdomain==2.0.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-mermaid==2.1.0,sphinxcontrib-openapi==0.9.0,sphinxcontrib-plantuml==0.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-serializinghtml==2.0.0,typing_extensions==4.16.0,urllib3==2.7.0 14:02:04 docs-linkcheck: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> sphinx-build -q -b linkcheck -d /w/workspace/transportpce-tox-verify-titanium/.tox/docs-linkcheck/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-titanium/docs/_build/linkcheck 14:02:04 docs: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,certifi==2026.7.22,charset-normalizer==3.5.1,deepmerge==3.0,docutils==0.22.4,idna==3.19,imagesize==2.0.1,Jinja2==3.1.6,jsonschema==4.26.0,jsonschema-specifications==2025.9.1,jsonschema_rs==0.37.4,lfdocs_conf==0.11.0,MarkupSafe==3.0.3,minijinja==2.24.0,mistune==3.3.4,packaging==26.3,picobox==4.0.0,pip==26.2.1,Pygments==2.21.0,PyYAML==6.0.3,referencing==0.37.0,requests==2.34.2,requests-file==2.1.0,roman-numerals==4.1.0,rpds-py==2026.6.3,setuptools==84.0.0,snowballstemmer==3.1.1,Sphinx==9.0.4,sphinx-data-viewer==0.1.5,sphinx-needs==8.4.0,sphinx-tabs==3.5.0,sphinx_mdinclude==0.6.2,sphinx_rtd_theme==3.1.0,sphinxcontrib-applehelp==2.0.0,sphinxcontrib-devhelp==2.0.0,sphinxcontrib-htmlhelp==2.1.0,sphinxcontrib-httpdomain==2.0.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-mermaid==2.1.0,sphinxcontrib-openapi==0.9.0,sphinxcontrib-plantuml==0.31,sphinxcontrib-qthelp==2.0.0,sphinxcontrib-serializinghtml==2.0.0,typing_extensions==4.16.0,urllib3==2.7.0 14:02:04 docs: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> sphinx-build -q -W --keep-going -b html -n -d /w/workspace/transportpce-tox-verify-titanium/.tox/docs/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-titanium/docs/_build/html 14:02:06 docs: OK ✔ in 18.46 seconds 14:02:06 build_karaf_tests121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:08 docs-linkcheck: OK ✔ in 20.98 seconds 14:02:08 build_karaf_tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:10 [INFO] Installing environment for https://github.com/pre-commit/mirrors-autopep8. 14:02:10 [INFO] Once installed this environment will be reused. 14:02:10 [INFO] This may take a few minutes... 14:02:12 build_karaf_tests121: freeze> python -m pip freeze --all 14:02:13 build_karaf_tests121: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:13 build_karaf_tests121: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh 14:02:13 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karaf121 14:02:13 ./build_karaf_for_tests.sh: 22: mvn: not found 14:02:13 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 14:02:13 build karaf in karaf121 with ./karaf121.env 14:02:13 build_karaf_tests121: exit 127 (0.00 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh pid=3171 14:02:13 build_karaf_tests121: FAIL ✖ in 6.83 seconds 14:02:13 build_karaf_tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:14 [INFO] Installing environment for https://github.com/perltidy/perltidy. 14:02:14 [INFO] Once installed this environment will be reused. 14:02:14 [INFO] This may take a few minutes... 14:02:15 build_karaf_tests221: freeze> python -m pip freeze --all 14:02:15 build_karaf_tests221: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:15 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh 14:02:15 build karaf in karaf221 with ./karaf221.env 14:02:15 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karaf221 14:02:15 ./build_karaf_for_tests.sh: 22: mvn: not found 14:02:15 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 14:02:15 build_karaf_tests221: exit 127 (0.00 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh pid=3199 14:02:15 build_karaf_tests221: FAIL ✖ in 6.67 seconds 14:02:15 build_karaf_tests190: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:20 build_karaf_tests71: freeze> python -m pip freeze --all 14:02:20 build_karaf_tests71: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:20 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh 14:02:20 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karaf71 14:02:20 ./build_karaf_for_tests.sh: 22: mvn: not found 14:02:20 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 14:02:20 build karaf in karaf71 with ./karaf71.env 14:02:20 build_karaf_tests71: exit 127 (0.00 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh pid=3224 14:02:20 14:02:20 ------------------------------------ 14:02:20 Your code has been rated at 10.00/10 14:02:20 14:02:20 build_karaf_tests71: FAIL ✖ in 7.71 seconds 14:02:20 buildlighty: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:21 build_karaf_tests190: freeze> python -m pip freeze --all 14:02:22 build_karaf_tests190: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:22 build_karaf_tests190: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh 14:02:22 build karaf in karafoc with ./karafoc.env 14:02:22 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karafoc 14:02:22 ./build_karaf_for_tests.sh: 22: mvn: not found 14:02:22 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 14:02:22 build_karaf_tests190: exit 127 (0.01 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./build_karaf_for_tests.sh pid=3255 14:02:22 build_karaf_tests190: FAIL ✖ in 6.87 seconds 14:02:22 pylint: OK ✔ in 24.68 seconds 14:02:22 sims: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:22 testsPCE: install_deps> python -I -m pip install gnpy4tpce==2.4.7 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:02:24 trim trailing whitespace.................................................Passed 14:02:24 Tabs remover.............................................................Passed 14:02:24 autopep8.................................................................Passed 14:02:27 perltidy.................................................................Passed 14:02:28 pre-commit: commands[3] /w/workspace/transportpce-tox-verify-titanium/tests> pre-commit run gitlint-ci --hook-stage manual 14:02:28 buildlighty: freeze> python -m pip freeze --all 14:02:28 [WARNING] hook id `remove-tabs` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. 14:02:28 [WARNING] hook id `perltidy` uses deprecated stage names (commit) which will be removed in a future version. run: `pre-commit migrate-config` to automatically fix this. 14:02:28 [INFO] Installing environment for https://github.com/jorisroovers/gitlint. 14:02:28 [INFO] Once installed this environment will be reused. 14:02:28 [INFO] This may take a few minutes... 14:02:28 buildlighty: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:28 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-titanium/lighty> ./build.sh 14:02:28 ./build.sh: 7: mvn: not found 14:02:28 unzip: cannot find or open target/tpce-bin.zip, target/tpce-bin.zip.zip or target/tpce-bin.zip.ZIP. 14:02:28 buildlighty: exit 9 (0.01 seconds) /w/workspace/transportpce-tox-verify-titanium/lighty> ./build.sh pid=3427 14:02:30 buildlighty: FAIL ✖ in 7.89 seconds 14:02:30 sims: freeze> python -m pip freeze --all 14:02:30 sims: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:02:30 sims: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./install_lightynode.sh 14:02:30 Using lighynode version 20.1.0.5 14:02:30 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory 14:02:34 gitlint..................................................................Passed 14:03:12 pre-commit: OK ✔ in 43.83 seconds 14:03:12 sims: OK ✔ in 12.85 seconds 14:03:12 testsPCE: freeze> python -m pip freeze --all 14:03:12 testsPCE: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,click==8.5.0,contourpy==1.3.3,cryptography==3.3.2,cycler==0.12.1,dict2xml==1.7.8,Flask==2.1.3,Flask-Injector==0.14.0,fonttools==4.64.0,gnpy4tpce==2.4.7,idna==3.19,iniconfig==2.3.0,injector==0.24.0,invoke==3.0.3,itsdangerous==2.2.0,Jinja2==3.1.6,kiwisolver==1.5.1,lxml==6.1.2,MarkupSafe==3.0.3,matplotlib==3.11.1,netconf-client==3.6.0,networkx==2.8.8,numpy==1.26.4,packaging==26.3,pandas==1.5.3,paramiko==5.0.0,pbr==5.11.1,pillow==12.3.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pyparsing==3.3.2,pytest==9.1.1,python-dateutil==2.9.0.post0,pytz==2026.3.post1,requests==2.34.2,scipy==1.17.1,setuptools==50.3.2,six==1.17.0,urllib3==2.7.0,Werkzeug==2.0.3,xlrd==1.2.0 14:03:12 testsPCE: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh pce 14:03:12 pytest -q transportpce_tests/pce/test01_pce.py 14:05:13 EEEEEEEEEEEEEEEEEEEE [100%] 14:05:16 ==================================== ERRORS ==================================== 14:05:16 _______ ERROR at setup of TestTransportPCEPce.test_01_load_port_mapping ________ 14:05:16 14:05:16 cls = 14:05:16 14:05:16 @classmethod 14:05:16 def setUpClass(cls): 14:05:16 # pylint: disable=bare-except 14:05:16 sample_files_parsed = False 14:05:16 time.sleep(20) 14:05:16 try: 14:05:16 TOPO_BI_DIR_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 14:05:16 "..", "..", "sample_configs", "honeynode-topo.json") 14:05:16 with open(TOPO_BI_DIR_FILE, 'r', encoding='utf-8') as topo_bi_dir: 14:05:16 cls.simple_topo_bi_dir_data = topo_bi_dir.read() 14:05:16 14:05:16 TOPO_UNI_DIR_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 14:05:16 "..", "..", "sample_configs", "NW-simple-topology.json") 14:05:16 14:05:16 with open(TOPO_UNI_DIR_FILE, 'r', encoding='utf-8') as topo_uni_dir: 14:05:16 cls.simple_topo_uni_dir_data = topo_uni_dir.read() 14:05:16 14:05:16 TOPO_UNI_DIR_COMPLEX_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 14:05:16 "..", "..", "sample_configs", "NW-for-test-5-4.json") 14:05:16 with open(TOPO_UNI_DIR_COMPLEX_FILE, 'r', encoding='utf-8') as topo_uni_dir_complex: 14:05:16 cls.complex_topo_uni_dir_data = topo_uni_dir_complex.read() 14:05:16 PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 14:05:16 "..", "..", "sample_configs", "pce_portmapping_121.json") 14:05:16 with open(PORT_MAPPING_FILE, 'r', encoding='utf-8') as port_mapping: 14:05:16 cls.port_mapping_data = port_mapping.read() 14:05:16 sample_files_parsed = True 14:05:16 except PermissionError as err: 14:05:16 print("Permission Error when trying to read sample files\n", err) 14:05:16 sys.exit(2) 14:05:16 except FileNotFoundError as err: 14:05:16 print("File Not found Error when trying to read sample files\n", err) 14:05:16 sys.exit(2) 14:05:16 except: 14:05:16 print("Unexpected error when trying to read sample files\n", sys.exc_info()[0]) 14:05:16 sys.exit(2) 14:05:16 finally: 14:05:16 if sample_files_parsed: 14:05:16 print("sample files content loaded") 14:05:16 14:05:16 > cls.processes = test_utils.start_tpce() 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 14:05:16 transportpce_tests/pce/test01_pce.py:93: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 def start_tpce(): 14:05:16 if 'NO_ODL_STARTUP' in os.environ: 14:05:16 print('No OpenDaylight instance to start!') 14:05:16 return [] 14:05:16 print('starting OpenDaylight...') 14:05:16 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:05:16 process = start_lighty() 14:05:16 else: 14:05:16 process = start_karaf() 14:05:16 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:05:16 print('OpenDaylight started !') 14:05:16 else: 14:05:16 print('OpenDaylight failed to start !') 14:05:16 shutdown_process(process) 14:05:16 for pid in process_list: 14:05:16 shutdown_process(pid) 14:05:16 > sys.exit(1) 14:05:16 E SystemExit: 1 14:05:16 14:05:16 transportpce_tests/common/test_utils.py:232: SystemExit 14:05:16 ---------------------------- Captured stdout setup ----------------------------- 14:05:16 sample files content loaded 14:05:16 starting OpenDaylight... 14:05:16 starting KARAF (karaf) TransportPCE build... 14:05:16 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:05:16 ____ ERROR at setup of TestTransportPCEPce.test_02_load_simple_topology_bi _____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2a32e0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___________ ERROR at setup of TestTransportPCEPce.test_03_get_nodeId ___________ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bb4c0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___________ ERROR at setup of TestTransportPCEPce.test_04_get_linkId ___________ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f277f60> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ____ ERROR at setup of TestTransportPCEPce.test_05_path_computation_xpdr_bi ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2a32e0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ____ ERROR at setup of TestTransportPCEPce.test_06_path_computation_rdm_bi _____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd481719120> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ____ ERROR at setup of TestTransportPCEPce.test_07_load_simple_topology_uni ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2a32e0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___________ ERROR at setup of TestTransportPCEPce.test_08_get_nodeId ___________ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2b9d00> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___________ ERROR at setup of TestTransportPCEPce.test_09_get_linkId ___________ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bba60> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___ ERROR at setup of TestTransportPCEPce.test_10_path_computation_xpdr_uni ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f277f60> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ____ ERROR at setup of TestTransportPCEPce.test_11_path_computation_rdm_uni ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bbb00> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 _____ ERROR at setup of TestTransportPCEPce.test_12_load_complex_topology ______ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bb380> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___________ ERROR at setup of TestTransportPCEPce.test_13_get_nodeId ___________ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f277f60> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 _____ ERROR at setup of TestTransportPCEPce.test_14_fail_path_computation ______ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bafc0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___ ERROR at setup of TestTransportPCEPce.test_15_success1_path_computation ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2b9da0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___ ERROR at setup of TestTransportPCEPce.test_16_success2_path_computation ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bbd80> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 ___ ERROR at setup of TestTransportPCEPce.test_17_success3_path_computation ____ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bbb00> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 _ ERROR at setup of TestTransportPCEPce.test_18_path_computation_before_oms_attribute_deletion _ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f277e20> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 _ ERROR at setup of TestTransportPCEPce.test_19_delete_oms_attribute_in_openroadm13toopenroadm12_link _ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f277ce0> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 _ ERROR at setup of TestTransportPCEPce.test_20_path_computation_after_oms_attribute_deletion _ 14:05:16 14:05:16 cls = 14:05:16 func = . at 0x7fd47f2bbc40> 14:05:16 when = 'setup' 14:05:16 reraise = (, ) 14:05:16 14:05:16 @classmethod 14:05:16 def from_call( 14:05:16 cls, 14:05:16 func: Callable[[], TResult], 14:05:16 when: Literal["collect", "setup", "call", "teardown"], 14:05:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:05:16 ) -> CallInfo[TResult]: 14:05:16 """Call func, wrapping the result in a CallInfo. 14:05:16 14:05:16 :param func: 14:05:16 The function to call. Called without arguments. 14:05:16 :type func: Callable[[], _pytest.runner.TResult] 14:05:16 :param when: 14:05:16 The phase in which the function is called. 14:05:16 :param reraise: 14:05:16 Exception or exceptions that shall propagate if raised by the 14:05:16 function, instead of being wrapped in the CallInfo. 14:05:16 """ 14:05:16 excinfo = None 14:05:16 instant = timing.Instant() 14:05:16 try: 14:05:16 > result: TResult | None = func() 14:05:16 ^^^^^^ 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:05:16 lambda: runtest_hook(item=item, **kwds), 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:05:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:05:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:05:16 yield 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:05:16 return (yield) 14:05:16 ^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:05:16 item.session._setupstate.setup(item) 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:05:16 col.setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:05:16 super().setup() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:05:16 self._request._fillfixtures() 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:05:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:05:16 fixturedef = self._get_active_fixturedef(argname) 14:05:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:05:16 fixturedef.execute(request=subrequest) 14:05:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:05:16 14:05:16 self = 14:05:16 request = > 14:05:16 14:05:16 def execute(self, request: SubRequest) -> FixtureValue: 14:05:16 """Return the value of this fixture, executing it if not cached.""" 14:05:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:05:16 # This needs to be done before checking if we have a cached value, since 14:05:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:05:16 # parametrization, they finalize themselves and fixtures depending on it 14:05:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:05:16 # See #4871 14:05:16 requested_fixtures_that_should_finalize_us = [] 14:05:16 for argname in self.argnames: 14:05:16 fixturedef = request._get_active_fixturedef(argname) 14:05:16 # Saves requested fixtures in a list so we later can add our finalizer 14:05:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:05:16 # down first. This is generally handled by SetupState, but still currently 14:05:16 # needed when this fixture is not parametrized but depends on a parametrized 14:05:16 # fixture. 14:05:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:05:16 14:05:16 # Check for (and return) cached value/exception. 14:05:16 if self.cached_result is not None: 14:05:16 request_cache_key = self.cache_key(request) 14:05:16 cache_key = self.cached_result[1] 14:05:16 try: 14:05:16 # Attempt to make a normal == check: this might fail for objects 14:05:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:05:16 cache_hit = bool(request_cache_key == cache_key) 14:05:16 except (ValueError, RuntimeError): 14:05:16 # If the comparison raises, use 'is' as fallback. 14:05:16 cache_hit = request_cache_key is cache_key 14:05:16 14:05:16 if cache_hit: 14:05:16 if self.cached_result[2] is not None: 14:05:16 exc, exc_tb = self.cached_result[2] 14:05:16 raise exc.with_traceback(exc_tb) 14:05:16 else: 14:05:16 return self.cached_result[0] 14:05:16 # We have a previous but differently parametrized fixture instance 14:05:16 # so we need to tear it down before creating a new one. 14:05:16 self.finish(request) 14:05:16 assert self.cached_result is None 14:05:16 14:05:16 # Add finalizer to requested fixtures we saved previously. 14:05:16 # We make sure to do this after checking for cached value to avoid 14:05:16 # adding our finalizer multiple times. (#12135) 14:05:16 finalizer = functools.partial(self.finish, request=request) 14:05:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:05:16 parent_fixture.addfinalizer(finalizer) 14:05:16 14:05:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:05:16 # which is executed last. 14:05:16 > assert not self._finalizers 14:05:16 ^^^^^^^^^^^^^^^^^^^^ 14:05:16 E AssertionError 14:05:16 14:05:16 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:05:16 =========================== short test summary info ============================ 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_01_load_port_mapping 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_02_load_simple_topology_bi 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_03_get_nodeId 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_04_get_linkId 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_05_path_computation_xpdr_bi 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_06_path_computation_rdm_bi 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_07_load_simple_topology_uni 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_08_get_nodeId 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_09_get_linkId 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_10_path_computation_xpdr_uni 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_11_path_computation_rdm_uni 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_12_load_complex_topology 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_13_get_nodeId 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_14_fail_path_computation 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_15_success1_path_computation 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_16_success2_path_computation 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_17_success3_path_computation 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_18_path_computation_before_oms_attribute_deletion 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_19_delete_oms_attribute_in_openroadm13toopenroadm12_link 14:05:16 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_20_path_computation_after_oms_attribute_deletion 14:05:16 20 errors in 123.84s (0:02:03) 14:05:16 testsPCE: exit 1 (124.17 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh pce pid=3515 14:05:17 testsPCE: FAIL ✖ in 2 minutes 54.49 seconds 14:05:17 tests121: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:05:17 tests_tapi: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:05:17 tests190: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:05:25 tests121: freeze> python -m pip freeze --all 14:05:25 tests190: freeze> python -m pip freeze --all 14:05:25 tests_tapi: freeze> python -m pip freeze --all 14:05:25 tests121: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:05:25 tests121: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 1.2.1 14:05:25 using environment variables from ./karaf121.env 14:05:25 pytest -q transportpce_tests/1.2.1/test01_portmapping.py 14:05:25 tests190: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:05:25 tests190: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh oc 14:05:25 using environment variables from ./karafoc.env 14:05:25 pytest -q transportpce_tests/oc/test01_portmapping.py 14:05:25 tests_tapi: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:05:25 tests_tapi: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh tapi 14:05:25 using environment variables from ./karaf221.env 14:05:25 pytest -q transportpce_tests/tapi/test01_abstracted_topology.py 14:07:06 EEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 14:07:08 ==================================== ERRORS ==================================== 14:07:08 __ ERROR at setup of TestTransportPCEPortmapping.test_01_meta_data_insertion ___ 14:07:08 14:07:08 cls = 14:07:08 14:07:08 @classmethod 14:07:08 def setUpClass(cls): 14:07:08 > cls.processes = test_utils.start_tpce() 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 14:07:08 transportpce_tests/oc/test01_portmapping.py:29: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 def start_tpce(): 14:07:08 if 'NO_ODL_STARTUP' in os.environ: 14:07:08 print('No OpenDaylight instance to start!') 14:07:08 return [] 14:07:08 print('starting OpenDaylight...') 14:07:08 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:07:08 process = start_lighty() 14:07:08 else: 14:07:08 process = start_karaf() 14:07:08 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:07:08 print('OpenDaylight started !') 14:07:08 else: 14:07:08 print('OpenDaylight failed to start !') 14:07:08 shutdown_process(process) 14:07:08 for pid in process_list: 14:07:08 shutdown_process(pid) 14:07:08 > sys.exit(1) 14:07:08 E SystemExit: 1 14:07:08 14:07:08 transportpce_tests/common/test_utils.py:232: SystemExit 14:07:08 ---------------------------- Captured stdout setup ----------------------------- 14:07:08 starting OpenDaylight... 14:07:08 starting KARAF (karafoc) TransportPCE build... 14:07:08 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_02_catlog_input_insertion _ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a450fe0> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_03_xpdr_device_connection _ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a4736a0> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_04_xpdr_device_connected __ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a437240> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_05_xpdr_portmapping_info __ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422bbfefc0> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_06_mpdr_portmapping_NETWORK5 _ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a4713a0> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_07_mpdr_portmapping_CLIENT1 _ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a451120> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 __ ERROR at setup of TestTransportPCEPortmapping.test_08_mpdr_switching_pool ___ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422cb4c400> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 ___ ERROR at setup of TestTransportPCEPortmapping.test_09_check_mccapprofile ___ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a437240> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_device_disconnection _ 14:07:08 14:07:08 cls = 14:07:08 func = . at 0x7f422a451120> 14:07:08 when = 'setup' 14:07:08 reraise = (, ) 14:07:08 14:07:08 @classmethod 14:07:08 def from_call( 14:07:08 cls, 14:07:08 func: Callable[[], TResult], 14:07:08 when: Literal["collect", "setup", "call", "teardown"], 14:07:08 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:08 ) -> CallInfo[TResult]: 14:07:08 """Call func, wrapping the result in a CallInfo. 14:07:08 14:07:08 :param func: 14:07:08 The function to call. Called without arguments. 14:07:08 :type func: Callable[[], _pytest.runner.TResult] 14:07:08 :param when: 14:07:08 The phase in which the function is called. 14:07:08 :param reraise: 14:07:08 Exception or exceptions that shall propagate if raised by the 14:07:08 function, instead of being wrapped in the CallInfo. 14:07:08 """ 14:07:08 excinfo = None 14:07:08 instant = timing.Instant() 14:07:08 try: 14:07:08 > result: TResult | None = func() 14:07:08 ^^^^^^ 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:08 lambda: runtest_hook(item=item, **kwds), 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:08 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:08 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:08 yield 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:08 return (yield) 14:07:08 ^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:08 item.session._setupstate.setup(item) 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:08 col.setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:08 super().setup() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:08 self._request._fillfixtures() 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:08 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:08 fixturedef = self._get_active_fixturedef(argname) 14:07:08 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:08 fixturedef.execute(request=subrequest) 14:07:08 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:08 14:07:08 self = 14:07:08 request = > 14:07:08 14:07:08 def execute(self, request: SubRequest) -> FixtureValue: 14:07:08 """Return the value of this fixture, executing it if not cached.""" 14:07:08 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:08 # This needs to be done before checking if we have a cached value, since 14:07:08 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:08 # parametrization, they finalize themselves and fixtures depending on it 14:07:08 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:08 # See #4871 14:07:08 requested_fixtures_that_should_finalize_us = [] 14:07:08 for argname in self.argnames: 14:07:08 fixturedef = request._get_active_fixturedef(argname) 14:07:08 # Saves requested fixtures in a list so we later can add our finalizer 14:07:08 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:08 # down first. This is generally handled by SetupState, but still currently 14:07:08 # needed when this fixture is not parametrized but depends on a parametrized 14:07:08 # fixture. 14:07:08 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:08 14:07:08 # Check for (and return) cached value/exception. 14:07:08 if self.cached_result is not None: 14:07:08 request_cache_key = self.cache_key(request) 14:07:08 cache_key = self.cached_result[1] 14:07:08 try: 14:07:08 # Attempt to make a normal == check: this might fail for objects 14:07:08 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:08 cache_hit = bool(request_cache_key == cache_key) 14:07:08 except (ValueError, RuntimeError): 14:07:08 # If the comparison raises, use 'is' as fallback. 14:07:08 cache_hit = request_cache_key is cache_key 14:07:08 14:07:08 if cache_hit: 14:07:08 if self.cached_result[2] is not None: 14:07:08 exc, exc_tb = self.cached_result[2] 14:07:08 raise exc.with_traceback(exc_tb) 14:07:08 else: 14:07:08 return self.cached_result[0] 14:07:08 # We have a previous but differently parametrized fixture instance 14:07:08 # so we need to tear it down before creating a new one. 14:07:08 self.finish(request) 14:07:08 assert self.cached_result is None 14:07:08 14:07:08 # Add finalizer to requested fixtures we saved previously. 14:07:08 # We make sure to do this after checking for cached value to avoid 14:07:08 # adding our finalizer multiple times. (#12135) 14:07:08 finalizer = functools.partial(self.finish, request=request) 14:07:08 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:08 parent_fixture.addfinalizer(finalizer) 14:07:08 14:07:08 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:08 # which is executed last. 14:07:08 > assert not self._finalizers 14:07:08 ^^^^^^^^^^^^^^^^^^^^ 14:07:08 E AssertionError 14:07:08 14:07:08 ../.tox/tests190/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:08 =========================== short test summary info ============================ 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_01_meta_data_insertion 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_02_catlog_input_insertion 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_03_xpdr_device_connection 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_04_xpdr_device_connected 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_05_xpdr_portmapping_info 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_06_mpdr_portmapping_NETWORK5 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_07_mpdr_portmapping_CLIENT1 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_08_mpdr_switching_pool 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_09_check_mccapprofile 14:07:08 ERROR transportpce_tests/oc/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_device_disconnection 14:07:08 10 errors in 102.02s (0:01:42) 14:07:08 EEtests190: exit 1 (102.28 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh oc pid=3632 14:07:08 Etests190: FAIL ✖ in 1 minute 51.39 seconds 14:07:08 tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:07:08 EEEEEEEEEEEEEEEEEEE [100%] 14:07:10 ==================================== ERRORS ==================================== 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_01_rdm_device_connection __ 14:07:10 14:07:10 cls = 14:07:10 14:07:10 @classmethod 14:07:10 def setUpClass(cls): 14:07:10 > cls.processes = test_utils.start_tpce() 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 14:07:10 transportpce_tests/1.2.1/test01_portmapping.py:33: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 def start_tpce(): 14:07:10 if 'NO_ODL_STARTUP' in os.environ: 14:07:10 print('No OpenDaylight instance to start!') 14:07:10 return [] 14:07:10 print('starting OpenDaylight...') 14:07:10 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:07:10 process = start_lighty() 14:07:10 else: 14:07:10 process = start_karaf() 14:07:10 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:07:10 print('OpenDaylight started !') 14:07:10 else: 14:07:10 print('OpenDaylight failed to start !') 14:07:10 shutdown_process(process) 14:07:10 for pid in process_list: 14:07:10 shutdown_process(pid) 14:07:10 > sys.exit(1) 14:07:10 E SystemExit: 1 14:07:10 14:07:10 transportpce_tests/common/test_utils.py:232: SystemExit 14:07:10 ---------------------------- Captured stdout setup ----------------------------- 14:07:10 starting OpenDaylight... 14:07:10 starting KARAF (karaf121) TransportPCE build... 14:07:10 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:07:10 __ ERROR at setup of TestTransportPCEPortmapping.test_02_rdm_device_connected __ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685760> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 __ ERROR at setup of TestTransportPCEPortmapping.test_03_rdm_portmapping_info __ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b7560> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_04_rdm_portmapping_DEG1_TTP_TXRX _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa7980b740> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_05_rdm_portmapping_SRG1_PP7_TXRX _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa77e53560> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_06_rdm_portmapping_SRG3_PP1_TXRX _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766853a0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_07_xpdr_device_connection _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685580> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_08_xpdr_device_connected __ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b7600> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_09_xpdr_portmapping_info __ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b68e0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_portmapping_NETWORK1 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b6de0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_11_xpdr_portmapping_NETWORK2 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b7600> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_12_xpdr_portmapping_CLIENT1 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b6f20> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_13_xpdr_portmapping_CLIENT2 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685580> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_14_xpdr_portmapping_CLIENT3 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b6de0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_15_xpdr_portmapping_CLIENT4 _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b6f20> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_16_xpdr_device_disconnection _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685800> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_17_xpdr_device_disconnected _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685bc0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_18_xpdr_device_not_connected _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685da0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_19_rdm_device_disconnection _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa766b6840> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_20_rdm_device_disconnected _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76289d00> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 _ ERROR at setup of TestTransportPCEPortmapping.test_21_rdm_device_not_connected _ 14:07:10 14:07:10 cls = 14:07:10 func = . at 0x7faa76685bc0> 14:07:10 when = 'setup' 14:07:10 reraise = (, ) 14:07:10 14:07:10 @classmethod 14:07:10 def from_call( 14:07:10 cls, 14:07:10 func: Callable[[], TResult], 14:07:10 when: Literal["collect", "setup", "call", "teardown"], 14:07:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:10 ) -> CallInfo[TResult]: 14:07:10 """Call func, wrapping the result in a CallInfo. 14:07:10 14:07:10 :param func: 14:07:10 The function to call. Called without arguments. 14:07:10 :type func: Callable[[], _pytest.runner.TResult] 14:07:10 :param when: 14:07:10 The phase in which the function is called. 14:07:10 :param reraise: 14:07:10 Exception or exceptions that shall propagate if raised by the 14:07:10 function, instead of being wrapped in the CallInfo. 14:07:10 """ 14:07:10 excinfo = None 14:07:10 instant = timing.Instant() 14:07:10 try: 14:07:10 > result: TResult | None = func() 14:07:10 ^^^^^^ 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:10 lambda: runtest_hook(item=item, **kwds), 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:10 yield 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:10 return (yield) 14:07:10 ^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:10 item.session._setupstate.setup(item) 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:10 col.setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:10 super().setup() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:10 self._request._fillfixtures() 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:10 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:10 fixturedef = self._get_active_fixturedef(argname) 14:07:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:10 fixturedef.execute(request=subrequest) 14:07:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:10 14:07:10 self = 14:07:10 request = > 14:07:10 14:07:10 def execute(self, request: SubRequest) -> FixtureValue: 14:07:10 """Return the value of this fixture, executing it if not cached.""" 14:07:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:10 # This needs to be done before checking if we have a cached value, since 14:07:10 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:10 # parametrization, they finalize themselves and fixtures depending on it 14:07:10 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:10 # See #4871 14:07:10 requested_fixtures_that_should_finalize_us = [] 14:07:10 for argname in self.argnames: 14:07:10 fixturedef = request._get_active_fixturedef(argname) 14:07:10 # Saves requested fixtures in a list so we later can add our finalizer 14:07:10 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:10 # down first. This is generally handled by SetupState, but still currently 14:07:10 # needed when this fixture is not parametrized but depends on a parametrized 14:07:10 # fixture. 14:07:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:10 14:07:10 # Check for (and return) cached value/exception. 14:07:10 if self.cached_result is not None: 14:07:10 request_cache_key = self.cache_key(request) 14:07:10 cache_key = self.cached_result[1] 14:07:10 try: 14:07:10 # Attempt to make a normal == check: this might fail for objects 14:07:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:10 cache_hit = bool(request_cache_key == cache_key) 14:07:10 except (ValueError, RuntimeError): 14:07:10 # If the comparison raises, use 'is' as fallback. 14:07:10 cache_hit = request_cache_key is cache_key 14:07:10 14:07:10 if cache_hit: 14:07:10 if self.cached_result[2] is not None: 14:07:10 exc, exc_tb = self.cached_result[2] 14:07:10 raise exc.with_traceback(exc_tb) 14:07:10 else: 14:07:10 return self.cached_result[0] 14:07:10 # We have a previous but differently parametrized fixture instance 14:07:10 # so we need to tear it down before creating a new one. 14:07:10 self.finish(request) 14:07:10 assert self.cached_result is None 14:07:10 14:07:10 # Add finalizer to requested fixtures we saved previously. 14:07:10 # We make sure to do this after checking for cached value to avoid 14:07:10 # adding our finalizer multiple times. (#12135) 14:07:10 finalizer = functools.partial(self.finish, request=request) 14:07:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:10 parent_fixture.addfinalizer(finalizer) 14:07:10 14:07:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:10 # which is executed last. 14:07:10 > assert not self._finalizers 14:07:10 ^^^^^^^^^^^^^^^^^^^^ 14:07:10 E AssertionError 14:07:10 14:07:10 ../.tox/tests121/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:10 =========================== short test summary info ============================ 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_rdm_device_connection 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_rdm_device_connected 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_rdm_portmapping_info 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_rdm_portmapping_DEG1_TTP_TXRX 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_rdm_portmapping_SRG1_PP7_TXRX 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_rdm_portmapping_SRG3_PP1_TXRX 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_07_xpdr_device_connection 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_08_xpdr_device_connected 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_09_xpdr_portmapping_info 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_portmapping_NETWORK1 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_11_xpdr_portmapping_NETWORK2 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_12_xpdr_portmapping_CLIENT1 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_13_xpdr_portmapping_CLIENT2 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_14_xpdr_portmapping_CLIENT3 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_15_xpdr_portmapping_CLIENT4 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_16_xpdr_device_disconnection 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_17_xpdr_device_disconnected 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_18_xpdr_device_not_connected 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_19_rdm_device_disconnection 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_20_rdm_device_disconnected 14:07:10 ERROR transportpce_tests/1.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_21_rdm_device_not_connected 14:07:10 21 errors in 104.13s (0:01:44) 14:07:10 Etests121: exit 1 (104.44 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 1.2.1 pid=3621 14:07:10 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 14:07:16 ==================================== ERRORS ==================================== 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_01_get_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 14:07:16 @classmethod 14:07:16 def setUpClass(cls): 14:07:16 cls.init_failed = False 14:07:16 os.environ['JAVA_MIN_MEM'] = '1024M' 14:07:16 os.environ['JAVA_MAX_MEM'] = '4096M' 14:07:16 > cls.processes = test_utils.start_tpce() 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 14:07:16 transportpce_tests/tapi/test01_abstracted_topology.py:148: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 def start_tpce(): 14:07:16 if 'NO_ODL_STARTUP' in os.environ: 14:07:16 print('No OpenDaylight instance to start!') 14:07:16 return [] 14:07:16 print('starting OpenDaylight...') 14:07:16 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:07:16 process = start_lighty() 14:07:16 else: 14:07:16 process = start_karaf() 14:07:16 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:07:16 print('OpenDaylight started !') 14:07:16 else: 14:07:16 print('OpenDaylight failed to start !') 14:07:16 shutdown_process(process) 14:07:16 for pid in process_list: 14:07:16 shutdown_process(pid) 14:07:16 > sys.exit(1) 14:07:16 E SystemExit: 1 14:07:16 14:07:16 transportpce_tests/common/test_utils.py:232: SystemExit 14:07:16 ---------------------------- Captured stdout setup ----------------------------- 14:07:16 starting OpenDaylight... 14:07:16 starting KARAF (karaf221) TransportPCE build... 14:07:16 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_02_get_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424dd85bc0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_03_connect_rdmb ___ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd74c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_04_check_tapi_topos _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424f553380> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_05_disconnect_roadmb _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f4250497740> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_06_connect_xpdra __ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd7560> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_07_check_tapi_topos _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_08_connect_rdma ___ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_09_connect_rdmc ___ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd7880> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_10_check_tapi_topos _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424dd85bc0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_11_connect_xpdra_n1_to_roadma_pp1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_12_connect_roadma_pp1_to_xpdra_n1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_13_check_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_14_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424dd85bc0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_15_connect_xpdrc __ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_16_connect_xpdrc_n1_to_roadmc_pp1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_17_connect_roadmc_pp1_to_xpdrc_n1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6e80> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_18_check_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6660> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_19_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_20_connect_spdr_sa1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6d40> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_21_connect_spdr_sc1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_22_check_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6660> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_23_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8da80> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_24_connect_sprda_n1_to_roadma_pp2 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424dd84e00> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_25_connect_roadma_pp2_to_spdra_n1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_26_connect_sprdc_n1_to_roadmc_pp2 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8dc60> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_27_connect_roadmc_pp2_to_spdrc_n1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_28_check_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424dd84e00> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_29_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8df80> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_30_add_oms_attributes _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_31_create_OCH_OTU4_service _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f42504491c0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_32_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8d260> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_33_create_ODU4_service _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_34_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8d3a0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_35_connect_sprda_2_n2_to_roadma_pp3 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8d120> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_36_connect_roadma_pp3_to_spdra_2_n2 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_37_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8e480> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_38_delete_ODU4_service _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_39_delete_OCH_OTU4_service _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8c900> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_40_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8ea20> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_41_disconnect_xponders_from_roadm _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_42_check_tapi_topology_T0 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8c720> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_43_get_tapi_topology_T100G _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8cea0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_44_disconnect_roadma _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_45_disconnect_roadmc _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8da80> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_46_check_tapi_topos _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8d260> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_47_disconnect_xpdra _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_48_disconnect_xpdrc _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8e020> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_49_disconnect_spdr_sa1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8d4e0> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_50_disconnect_spdr_sc1 _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424ddd6700> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_51_check_uninstall_Tapi_Feature _ 14:07:16 14:07:16 cls = 14:07:16 func = . at 0x7f424da8f560> 14:07:16 when = 'setup' 14:07:16 reraise = (, ) 14:07:16 14:07:16 @classmethod 14:07:16 def from_call( 14:07:16 cls, 14:07:16 func: Callable[[], TResult], 14:07:16 when: Literal["collect", "setup", "call", "teardown"], 14:07:16 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:07:16 ) -> CallInfo[TResult]: 14:07:16 """Call func, wrapping the result in a CallInfo. 14:07:16 14:07:16 :param func: 14:07:16 The function to call. Called without arguments. 14:07:16 :type func: Callable[[], _pytest.runner.TResult] 14:07:16 :param when: 14:07:16 The phase in which the function is called. 14:07:16 :param reraise: 14:07:16 Exception or exceptions that shall propagate if raised by the 14:07:16 function, instead of being wrapped in the CallInfo. 14:07:16 """ 14:07:16 excinfo = None 14:07:16 instant = timing.Instant() 14:07:16 try: 14:07:16 > result: TResult | None = func() 14:07:16 ^^^^^^ 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:07:16 lambda: runtest_hook(item=item, **kwds), 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:07:16 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:07:16 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:07:16 yield 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:07:16 return (yield) 14:07:16 ^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:07:16 item.session._setupstate.setup(item) 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:07:16 col.setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:07:16 super().setup() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:07:16 self._request._fillfixtures() 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:07:16 item.funcargs[argname] = self.getfixturevalue(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:07:16 fixturedef = self._get_active_fixturedef(argname) 14:07:16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:07:16 fixturedef.execute(request=subrequest) 14:07:16 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:07:16 14:07:16 self = 14:07:16 request = > 14:07:16 14:07:16 def execute(self, request: SubRequest) -> FixtureValue: 14:07:16 """Return the value of this fixture, executing it if not cached.""" 14:07:16 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:07:16 # This needs to be done before checking if we have a cached value, since 14:07:16 # if a dependent fixture has their cache invalidated, e.g. due to 14:07:16 # parametrization, they finalize themselves and fixtures depending on it 14:07:16 # (which will likely include this fixture) setting `self.cached_result = None`. 14:07:16 # See #4871 14:07:16 requested_fixtures_that_should_finalize_us = [] 14:07:16 for argname in self.argnames: 14:07:16 fixturedef = request._get_active_fixturedef(argname) 14:07:16 # Saves requested fixtures in a list so we later can add our finalizer 14:07:16 # to them, ensuring that if a requested fixture gets torn down we get torn 14:07:16 # down first. This is generally handled by SetupState, but still currently 14:07:16 # needed when this fixture is not parametrized but depends on a parametrized 14:07:16 # fixture. 14:07:16 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:07:16 14:07:16 # Check for (and return) cached value/exception. 14:07:16 if self.cached_result is not None: 14:07:16 request_cache_key = self.cache_key(request) 14:07:16 cache_key = self.cached_result[1] 14:07:16 try: 14:07:16 # Attempt to make a normal == check: this might fail for objects 14:07:16 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:07:16 cache_hit = bool(request_cache_key == cache_key) 14:07:16 except (ValueError, RuntimeError): 14:07:16 # If the comparison raises, use 'is' as fallback. 14:07:16 cache_hit = request_cache_key is cache_key 14:07:16 14:07:16 if cache_hit: 14:07:16 if self.cached_result[2] is not None: 14:07:16 exc, exc_tb = self.cached_result[2] 14:07:16 raise exc.with_traceback(exc_tb) 14:07:16 else: 14:07:16 return self.cached_result[0] 14:07:16 # We have a previous but differently parametrized fixture instance 14:07:16 # so we need to tear it down before creating a new one. 14:07:16 self.finish(request) 14:07:16 assert self.cached_result is None 14:07:16 14:07:16 # Add finalizer to requested fixtures we saved previously. 14:07:16 # We make sure to do this after checking for cached value to avoid 14:07:16 # adding our finalizer multiple times. (#12135) 14:07:16 finalizer = functools.partial(self.finish, request=request) 14:07:16 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:07:16 parent_fixture.addfinalizer(finalizer) 14:07:16 14:07:16 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:07:16 # which is executed last. 14:07:16 > assert not self._finalizers 14:07:16 ^^^^^^^^^^^^^^^^^^^^ 14:07:16 E AssertionError 14:07:16 14:07:16 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:07:16 =========================== short test summary info ============================ 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_01_get_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_02_get_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_03_connect_rdmb 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_04_check_tapi_topos 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_05_disconnect_roadmb 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_06_connect_xpdra 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_07_check_tapi_topos 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_08_connect_rdma 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_09_connect_rdmc 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_10_check_tapi_topos 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_11_connect_xpdra_n1_to_roadma_pp1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_12_connect_roadma_pp1_to_xpdra_n1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_13_check_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_14_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_15_connect_xpdrc 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_16_connect_xpdrc_n1_to_roadmc_pp1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_17_connect_roadmc_pp1_to_xpdrc_n1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_18_check_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_19_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_20_connect_spdr_sa1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_21_connect_spdr_sc1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_22_check_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_23_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_24_connect_sprda_n1_to_roadma_pp2 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_25_connect_roadma_pp2_to_spdra_n1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_26_connect_sprdc_n1_to_roadmc_pp2 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_27_connect_roadmc_pp2_to_spdrc_n1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_28_check_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_29_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_30_add_oms_attributes 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_31_create_OCH_OTU4_service 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_32_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_33_create_ODU4_service 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_34_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_35_connect_sprda_2_n2_to_roadma_pp3 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_36_connect_roadma_pp3_to_spdra_2_n2 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_37_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_38_delete_ODU4_service 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_39_delete_OCH_OTU4_service 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_40_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_41_disconnect_xponders_from_roadm 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_42_check_tapi_topology_T0 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_43_get_tapi_topology_T100G 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_44_disconnect_roadma 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_45_disconnect_roadmc 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_46_check_tapi_topos 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_47_disconnect_xpdra 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_48_disconnect_xpdrc 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_49_disconnect_spdr_sa1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_50_disconnect_spdr_sc1 14:07:16 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_51_check_uninstall_Tapi_Feature 14:07:16 51 errors in 110.23s (0:01:50) 14:07:16 tests121: FAIL ✖ in 1 minute 53.43 seconds 14:07:16 tests_tapi: exit 1 (110.54 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh tapi pid=3643 14:07:16 tests_tapi: FAIL ✖ in 1 minute 59.71 seconds 14:07:16 tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:07:16 tests71: freeze> python -m pip freeze --all 14:07:17 tests71: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:07:17 tests71: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 7.1 14:07:17 using environment variables from ./karaf71.env 14:07:17 pytest -q transportpce_tests/7.1/test01_portmapping.py 14:07:22 tests221: freeze> python -m pip freeze --all 14:07:22 tests221: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:07:22 tests221: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 2.2.1 14:07:22 using environment variables from ./karaf221.env 14:07:22 pytest -q transportpce_tests/2.2.1/test01_portmapping.py 14:08:57 EEEEEEEEEEEE [100%] 14:08:59 ==================================== ERRORS ==================================== 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_01_xpdr_device_connection _ 14:08:59 14:08:59 cls = 14:08:59 14:08:59 @classmethod 14:08:59 def setUpClass(cls): 14:08:59 > cls.processes = test_utils.start_tpce() 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 14:08:59 transportpce_tests/7.1/test01_portmapping.py:32: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 def start_tpce(): 14:08:59 if 'NO_ODL_STARTUP' in os.environ: 14:08:59 print('No OpenDaylight instance to start!') 14:08:59 return [] 14:08:59 print('starting OpenDaylight...') 14:08:59 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:08:59 process = start_lighty() 14:08:59 else: 14:08:59 process = start_karaf() 14:08:59 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:08:59 print('OpenDaylight started !') 14:08:59 else: 14:08:59 print('OpenDaylight failed to start !') 14:08:59 shutdown_process(process) 14:08:59 for pid in process_list: 14:08:59 shutdown_process(pid) 14:08:59 > sys.exit(1) 14:08:59 E SystemExit: 1 14:08:59 14:08:59 transportpce_tests/common/test_utils.py:232: SystemExit 14:08:59 ---------------------------- Captured stdout setup ----------------------------- 14:08:59 starting OpenDaylight... 14:08:59 starting KARAF (karaf71) TransportPCE build... 14:08:59 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_02_xpdr_device_connected __ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59922700> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_03_xpdr_portmapping_info __ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59947740> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_04_tpdr_portmapping_NETWORK1 _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe5c030ea0> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_05_tpdr_portmapping_CLIENT1 _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59922700> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_06_mpdr_portmapping_NETWORK1 _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe5b0ebe20> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_07_mpdr_portmapping_CLIENT1 _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59922700> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 ___ ERROR at setup of TestTransportPCEPortmapping.test_08_check_mccapprofile ___ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59947600> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 __ ERROR at setup of TestTransportPCEPortmapping.test_09_mpdr_switching_pool ___ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59945d00> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_device_disconnection _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59947920> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_11_xpdr_device_disconnected _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe599477e0> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 _ ERROR at setup of TestTransportPCEPortmapping.test_12_xpdr_device_not_connected _ 14:08:59 14:08:59 cls = 14:08:59 func = . at 0x7efe59922700> 14:08:59 when = 'setup' 14:08:59 reraise = (, ) 14:08:59 14:08:59 @classmethod 14:08:59 def from_call( 14:08:59 cls, 14:08:59 func: Callable[[], TResult], 14:08:59 when: Literal["collect", "setup", "call", "teardown"], 14:08:59 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:08:59 ) -> CallInfo[TResult]: 14:08:59 """Call func, wrapping the result in a CallInfo. 14:08:59 14:08:59 :param func: 14:08:59 The function to call. Called without arguments. 14:08:59 :type func: Callable[[], _pytest.runner.TResult] 14:08:59 :param when: 14:08:59 The phase in which the function is called. 14:08:59 :param reraise: 14:08:59 Exception or exceptions that shall propagate if raised by the 14:08:59 function, instead of being wrapped in the CallInfo. 14:08:59 """ 14:08:59 excinfo = None 14:08:59 instant = timing.Instant() 14:08:59 try: 14:08:59 > result: TResult | None = func() 14:08:59 ^^^^^^ 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:08:59 lambda: runtest_hook(item=item, **kwds), 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:08:59 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:08:59 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:08:59 yield 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:08:59 return (yield) 14:08:59 ^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:08:59 item.session._setupstate.setup(item) 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:08:59 col.setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:08:59 super().setup() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:08:59 self._request._fillfixtures() 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:08:59 item.funcargs[argname] = self.getfixturevalue(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:08:59 fixturedef = self._get_active_fixturedef(argname) 14:08:59 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:08:59 fixturedef.execute(request=subrequest) 14:08:59 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:08:59 14:08:59 self = 14:08:59 request = > 14:08:59 14:08:59 def execute(self, request: SubRequest) -> FixtureValue: 14:08:59 """Return the value of this fixture, executing it if not cached.""" 14:08:59 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:08:59 # This needs to be done before checking if we have a cached value, since 14:08:59 # if a dependent fixture has their cache invalidated, e.g. due to 14:08:59 # parametrization, they finalize themselves and fixtures depending on it 14:08:59 # (which will likely include this fixture) setting `self.cached_result = None`. 14:08:59 # See #4871 14:08:59 requested_fixtures_that_should_finalize_us = [] 14:08:59 for argname in self.argnames: 14:08:59 fixturedef = request._get_active_fixturedef(argname) 14:08:59 # Saves requested fixtures in a list so we later can add our finalizer 14:08:59 # to them, ensuring that if a requested fixture gets torn down we get torn 14:08:59 # down first. This is generally handled by SetupState, but still currently 14:08:59 # needed when this fixture is not parametrized but depends on a parametrized 14:08:59 # fixture. 14:08:59 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:08:59 14:08:59 # Check for (and return) cached value/exception. 14:08:59 if self.cached_result is not None: 14:08:59 request_cache_key = self.cache_key(request) 14:08:59 cache_key = self.cached_result[1] 14:08:59 try: 14:08:59 # Attempt to make a normal == check: this might fail for objects 14:08:59 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:08:59 cache_hit = bool(request_cache_key == cache_key) 14:08:59 except (ValueError, RuntimeError): 14:08:59 # If the comparison raises, use 'is' as fallback. 14:08:59 cache_hit = request_cache_key is cache_key 14:08:59 14:08:59 if cache_hit: 14:08:59 if self.cached_result[2] is not None: 14:08:59 exc, exc_tb = self.cached_result[2] 14:08:59 raise exc.with_traceback(exc_tb) 14:08:59 else: 14:08:59 return self.cached_result[0] 14:08:59 # We have a previous but differently parametrized fixture instance 14:08:59 # so we need to tear it down before creating a new one. 14:08:59 self.finish(request) 14:08:59 assert self.cached_result is None 14:08:59 14:08:59 # Add finalizer to requested fixtures we saved previously. 14:08:59 # We make sure to do this after checking for cached value to avoid 14:08:59 # adding our finalizer multiple times. (#12135) 14:08:59 finalizer = functools.partial(self.finish, request=request) 14:08:59 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:08:59 parent_fixture.addfinalizer(finalizer) 14:08:59 14:08:59 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:08:59 # which is executed last. 14:08:59 > assert not self._finalizers 14:08:59 ^^^^^^^^^^^^^^^^^^^^ 14:08:59 E AssertionError 14:08:59 14:08:59 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:08:59 =========================== short test summary info ============================ 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_xpdr_device_connection 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_xpdr_device_connected 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_xpdr_portmapping_info 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_tpdr_portmapping_NETWORK1 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_tpdr_portmapping_CLIENT1 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_mpdr_portmapping_NETWORK1 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_07_mpdr_portmapping_CLIENT1 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_08_check_mccapprofile 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_09_mpdr_switching_pool 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_device_disconnection 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_11_xpdr_device_disconnected 14:08:59 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_12_xpdr_device_not_connected 14:08:59 12 errors in 102.35s (0:01:42) 14:08:59 tests71: exit 1 (102.65 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 7.1 pid=3837 14:09:03 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 14:09:09 ==================================== ERRORS ==================================== 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_01_rdm_device_connection __ 14:09:09 14:09:09 cls = 14:09:09 14:09:09 @classmethod 14:09:09 def setUpClass(cls): 14:09:09 > cls.processes = test_utils.start_tpce() 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 14:09:09 transportpce_tests/2.2.1/test01_portmapping.py:33: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 def start_tpce(): 14:09:09 if 'NO_ODL_STARTUP' in os.environ: 14:09:09 print('No OpenDaylight instance to start!') 14:09:09 return [] 14:09:09 print('starting OpenDaylight...') 14:09:09 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:09:09 process = start_lighty() 14:09:09 else: 14:09:09 process = start_karaf() 14:09:09 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:09:09 print('OpenDaylight started !') 14:09:09 else: 14:09:09 print('OpenDaylight failed to start !') 14:09:09 shutdown_process(process) 14:09:09 for pid in process_list: 14:09:09 shutdown_process(pid) 14:09:09 > sys.exit(1) 14:09:09 E SystemExit: 1 14:09:09 14:09:09 transportpce_tests/common/test_utils.py:232: SystemExit 14:09:09 ---------------------------- Captured stdout setup ----------------------------- 14:09:09 starting OpenDaylight... 14:09:09 starting KARAF (karaf221) TransportPCE build... 14:09:09 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:09:09 __ ERROR at setup of TestTransportPCEPortmapping.test_02_rdm_device_connected __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c03560> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 __ ERROR at setup of TestTransportPCEPortmapping.test_03_rdm_portmapping_info __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656451fec0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_04_rdm_portmapping_DEG1_TTP_TXRX _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6565cb6a20> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6566bfc4a0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_06_rdm_portmapping_SRG1_PP3_TXRX _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457aca0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_07_rdm_portmapping_SRG3_PP1_TXRX _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656451fec0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_08_xpdr_device_connection _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6565cb6a20> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_09_xpdr_device_connected __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564578cc0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_portmapping_info __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c036a0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_11_xpdr_portmapping_NETWORK1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656451fec0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_12_xpdr_portmapping_XPDR2_NETWORK1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564578360> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_13_xpdr_portmapping_XPDR1_CLIENT1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c036a0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_14_xpdr_portmapping_XPDR1_CLIENT2 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b9c0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_15_spdr_device_connection _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b880> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_16_spdr_device_connected __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_17_spdr_portmapping_info __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02020> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_18_spdr_switching_pool_1 __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_19_spdr_switching_pool_2 __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02020> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_20_spdr_switching_pool_3 __ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457bb00> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_21_spdr_portmapping_mappings _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_22_spdr_portmapping_XPDR1_CLIENT1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564578b80> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_23_spdr_portmapping_XPDR1_NETWORK1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457bc40> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_24_spdr_portmapping_XPDR2_CLIENT2 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_25_spdr_portmapping_XPDR2_NETWORK2 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b880> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_26_spdr_portmapping_XPDR3_CLIENT3 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564578360> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_27_spdr_portmapping_XPDR3_NETWORK1 _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_28_spdr_device_disconnection _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b1a0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_29_xpdr_device_disconnected _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b100> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_30_xpdr_device_disconnection _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_31_xpdr_device_disconnected _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457a5c0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_32_xpdr_device_not_connected _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457aca0> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_33_rdm_device_disconnection _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_34_rdm_device_disconnected _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f656457b740> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 _ ERROR at setup of TestTransportPCEPortmapping.test_35_rdm_device_not_connected _ 14:09:09 14:09:09 cls = 14:09:09 func = . at 0x7f6564c02340> 14:09:09 when = 'setup' 14:09:09 reraise = (, ) 14:09:09 14:09:09 @classmethod 14:09:09 def from_call( 14:09:09 cls, 14:09:09 func: Callable[[], TResult], 14:09:09 when: Literal["collect", "setup", "call", "teardown"], 14:09:09 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:09:09 ) -> CallInfo[TResult]: 14:09:09 """Call func, wrapping the result in a CallInfo. 14:09:09 14:09:09 :param func: 14:09:09 The function to call. Called without arguments. 14:09:09 :type func: Callable[[], _pytest.runner.TResult] 14:09:09 :param when: 14:09:09 The phase in which the function is called. 14:09:09 :param reraise: 14:09:09 Exception or exceptions that shall propagate if raised by the 14:09:09 function, instead of being wrapped in the CallInfo. 14:09:09 """ 14:09:09 excinfo = None 14:09:09 instant = timing.Instant() 14:09:09 try: 14:09:09 > result: TResult | None = func() 14:09:09 ^^^^^^ 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:09:09 lambda: runtest_hook(item=item, **kwds), 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:09:09 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:09:09 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:09:09 yield 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:09:09 return (yield) 14:09:09 ^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:09:09 item.session._setupstate.setup(item) 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:09:09 col.setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:09:09 super().setup() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:09:09 self._request._fillfixtures() 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:09:09 item.funcargs[argname] = self.getfixturevalue(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:09:09 fixturedef = self._get_active_fixturedef(argname) 14:09:09 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:09:09 fixturedef.execute(request=subrequest) 14:09:09 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:09:09 14:09:09 self = 14:09:09 request = > 14:09:09 14:09:09 def execute(self, request: SubRequest) -> FixtureValue: 14:09:09 """Return the value of this fixture, executing it if not cached.""" 14:09:09 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:09:09 # This needs to be done before checking if we have a cached value, since 14:09:09 # if a dependent fixture has their cache invalidated, e.g. due to 14:09:09 # parametrization, they finalize themselves and fixtures depending on it 14:09:09 # (which will likely include this fixture) setting `self.cached_result = None`. 14:09:09 # See #4871 14:09:09 requested_fixtures_that_should_finalize_us = [] 14:09:09 for argname in self.argnames: 14:09:09 fixturedef = request._get_active_fixturedef(argname) 14:09:09 # Saves requested fixtures in a list so we later can add our finalizer 14:09:09 # to them, ensuring that if a requested fixture gets torn down we get torn 14:09:09 # down first. This is generally handled by SetupState, but still currently 14:09:09 # needed when this fixture is not parametrized but depends on a parametrized 14:09:09 # fixture. 14:09:09 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:09:09 14:09:09 # Check for (and return) cached value/exception. 14:09:09 if self.cached_result is not None: 14:09:09 request_cache_key = self.cache_key(request) 14:09:09 cache_key = self.cached_result[1] 14:09:09 try: 14:09:09 # Attempt to make a normal == check: this might fail for objects 14:09:09 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:09:09 cache_hit = bool(request_cache_key == cache_key) 14:09:09 except (ValueError, RuntimeError): 14:09:09 # If the comparison raises, use 'is' as fallback. 14:09:09 cache_hit = request_cache_key is cache_key 14:09:09 14:09:09 if cache_hit: 14:09:09 if self.cached_result[2] is not None: 14:09:09 exc, exc_tb = self.cached_result[2] 14:09:09 raise exc.with_traceback(exc_tb) 14:09:09 else: 14:09:09 return self.cached_result[0] 14:09:09 # We have a previous but differently parametrized fixture instance 14:09:09 # so we need to tear it down before creating a new one. 14:09:09 self.finish(request) 14:09:09 assert self.cached_result is None 14:09:09 14:09:09 # Add finalizer to requested fixtures we saved previously. 14:09:09 # We make sure to do this after checking for cached value to avoid 14:09:09 # adding our finalizer multiple times. (#12135) 14:09:09 finalizer = functools.partial(self.finish, request=request) 14:09:09 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:09:09 parent_fixture.addfinalizer(finalizer) 14:09:09 14:09:09 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:09:09 # which is executed last. 14:09:09 > assert not self._finalizers 14:09:09 ^^^^^^^^^^^^^^^^^^^^ 14:09:09 E AssertionError 14:09:09 14:09:09 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:09:09 =========================== short test summary info ============================ 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_rdm_device_connection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_rdm_device_connected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_rdm_portmapping_info 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_rdm_portmapping_DEG1_TTP_TXRX 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_rdm_portmapping_SRG1_PP3_TXRX 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_07_rdm_portmapping_SRG3_PP1_TXRX 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_08_xpdr_device_connection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_09_xpdr_device_connected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_portmapping_info 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_11_xpdr_portmapping_NETWORK1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_12_xpdr_portmapping_XPDR2_NETWORK1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_13_xpdr_portmapping_XPDR1_CLIENT1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_14_xpdr_portmapping_XPDR1_CLIENT2 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_15_spdr_device_connection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_16_spdr_device_connected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_17_spdr_portmapping_info 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_18_spdr_switching_pool_1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_19_spdr_switching_pool_2 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_20_spdr_switching_pool_3 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_21_spdr_portmapping_mappings 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_22_spdr_portmapping_XPDR1_CLIENT1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_23_spdr_portmapping_XPDR1_NETWORK1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_24_spdr_portmapping_XPDR2_CLIENT2 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_25_spdr_portmapping_XPDR2_NETWORK2 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_26_spdr_portmapping_XPDR3_CLIENT3 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_27_spdr_portmapping_XPDR3_NETWORK1 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_28_spdr_device_disconnection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_29_xpdr_device_disconnected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_30_xpdr_device_disconnection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_31_xpdr_device_disconnected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_32_xpdr_device_not_connected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_33_rdm_device_disconnection 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_34_rdm_device_disconnected 14:09:09 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_35_rdm_device_not_connected 14:09:09 35 errors in 106.65s (0:01:46) 14:09:09 tests71: FAIL ✖ in 1 minute 51.63 seconds 14:09:09 tests221: exit 1 (106.91 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh 2.2.1 pid=3856 14:09:09 tests221: FAIL ✖ in 1 minute 53.25 seconds 14:09:09 tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-titanium/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-titanium/tests/test-requirements.txt 14:09:15 tests_hybrid: freeze> python -m pip freeze --all 14:09:16 tests_hybrid: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.1,cryptography==50.0.1,dict2xml==1.7.8,idna==3.19,iniconfig==2.3.0,invoke==3.0.3,lxml==6.1.2,netconf-client==3.6.0,packaging==26.3,paramiko==5.0.0,pip==26.2.1,pluggy==1.6.0,psutil==7.2.2,pycparser==3.0,Pygments==2.21.0,PyNaCl==1.6.2,pytest==9.1.1,requests==2.34.2,setuptools==84.0.0,urllib3==2.7.0 14:09:16 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh hybrid 14:09:16 using environment variables from ./karaf221.env 14:09:16 pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py 14:10:56 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 14:11:06 ==================================== ERRORS ==================================== 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_01_connect_xpdrA _ 14:11:06 14:11:06 cls = 14:11:06 14:11:06 @classmethod 14:11:06 def setUpClass(cls): 14:11:06 > cls.processes = test_utils.start_tpce() 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 14:11:06 transportpce_tests/hybrid/test01_device_change_notifications.py:77: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 def start_tpce(): 14:11:06 if 'NO_ODL_STARTUP' in os.environ: 14:11:06 print('No OpenDaylight instance to start!') 14:11:06 return [] 14:11:06 print('starting OpenDaylight...') 14:11:06 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 14:11:06 process = start_lighty() 14:11:06 else: 14:11:06 process = start_karaf() 14:11:06 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 14:11:06 print('OpenDaylight started !') 14:11:06 else: 14:11:06 print('OpenDaylight failed to start !') 14:11:06 shutdown_process(process) 14:11:06 for pid in process_list: 14:11:06 shutdown_process(pid) 14:11:06 > sys.exit(1) 14:11:06 E SystemExit: 1 14:11:06 14:11:06 transportpce_tests/common/test_utils.py:232: SystemExit 14:11:06 ---------------------------- Captured stdout setup ----------------------------- 14:11:06 starting OpenDaylight... 14:11:06 starting KARAF (karaf221) TransportPCE build... 14:11:06 Pattern not found after 100 seconds! OpenDaylight failed to start ! 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_02_connect_xpdrC _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3cde3e0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_03_connect_rdmA _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7aac0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_04_connect_rdmC _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b54527a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_05_connect_xpdrA_N1_to_roadmA_PP1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3cdfba0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_06_connect_roadmA_PP1_to_xpdrA_N1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3cdff60> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_07_connect_xpdrC_N1_to_roadmC_PP1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3cdfba0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_08_connect_roadmC_PP1_to_xpdrC_N1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7a3e0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_09_add_omsAttributes_ROADMA_ROADMC _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c360> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_10_add_omsAttributes_ROADMC_ROADMA _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b63a98a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_11_create_eth_service1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3cdff60> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_12_get_eth_service1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b420> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_13_change_status_line_port_xpdra _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c040> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_14_check_update_portmapping _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b63a98a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_15_check_update_openroadm_topo _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b880> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_16_check_update_service1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b63a98a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_17_restore_status_line_port_xpdra _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c220> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_18_check_update_portmapping_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b880> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_19_check_update_openroadm_topo_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b63a98a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_20_check_update_service1_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c220> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_21_change_status_port_roadma_srg _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_22_check_update_portmapping _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c220> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_23_check_update_openroadm_topo _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d78040> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_24_restore_status_port_roadma_srg _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_25_check_update_portmapping_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d78040> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_26_check_update_openroadm_topo_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7a660> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_27_check_update_service1_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_28_change_status_line_port_roadma_deg _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7ade0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_29_check_update_portmapping _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7aca0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_30_check_update_openroadm_topo _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_31_restore_status_line_port_roadma_srg _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7bd80> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_32_check_update_portmapping_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b6a0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_33_check_update_openroadm_topo_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_34_check_update_service1_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7bc40> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_35_change_status_line_port_xpdrc _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_36_check_update_portmapping _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b600> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_37_check_update_openroadm_topo _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b740> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_38_restore_status_line_port_xpdrc _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_39_check_update_portmapping_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7bd80> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_40_check_update_openroadm_topo_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7aca0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_41_check_update_service1_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_42_change_status_port_roadma_srg _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d78040> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_43_check_update_portmapping _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b740> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_44_check_update_openroadm_topo _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7b880> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_45_check_update_service1_ok _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_46_delete_eth_service1 _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7a660> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_47_disconnect_xponders_from_roadm _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_48_disconnect_XPDRA _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7ab60> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_49_disconnect_XPDRC _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7ade0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_50_disconnect_ROADMA _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3c9c400> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_51_disconnect_ROADMC _ 14:11:06 14:11:06 cls = 14:11:06 func = . at 0x7fb7b3d7a3e0> 14:11:06 when = 'setup' 14:11:06 reraise = (, ) 14:11:06 14:11:06 @classmethod 14:11:06 def from_call( 14:11:06 cls, 14:11:06 func: Callable[[], TResult], 14:11:06 when: Literal["collect", "setup", "call", "teardown"], 14:11:06 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 14:11:06 ) -> CallInfo[TResult]: 14:11:06 """Call func, wrapping the result in a CallInfo. 14:11:06 14:11:06 :param func: 14:11:06 The function to call. Called without arguments. 14:11:06 :type func: Callable[[], _pytest.runner.TResult] 14:11:06 :param when: 14:11:06 The phase in which the function is called. 14:11:06 :param reraise: 14:11:06 Exception or exceptions that shall propagate if raised by the 14:11:06 function, instead of being wrapped in the CallInfo. 14:11:06 """ 14:11:06 excinfo = None 14:11:06 instant = timing.Instant() 14:11:06 try: 14:11:06 > result: TResult | None = func() 14:11:06 ^^^^^^ 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 14:11:06 lambda: runtest_hook(item=item, **kwds), 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 14:11:06 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 14:11:06 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 14:11:06 yield 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 14:11:06 return (yield) 14:11:06 ^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 14:11:06 item.session._setupstate.setup(item) 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 14:11:06 col.setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 14:11:06 super().setup() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 14:11:06 self._request._fillfixtures() 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 14:11:06 item.funcargs[argname] = self.getfixturevalue(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 14:11:06 fixturedef = self._get_active_fixturedef(argname) 14:11:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 14:11:06 fixturedef.execute(request=subrequest) 14:11:06 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14:11:06 14:11:06 self = 14:11:06 request = > 14:11:06 14:11:06 def execute(self, request: SubRequest) -> FixtureValue: 14:11:06 """Return the value of this fixture, executing it if not cached.""" 14:11:06 # Ensure that the dependent fixtures requested by this fixture are loaded. 14:11:06 # This needs to be done before checking if we have a cached value, since 14:11:06 # if a dependent fixture has their cache invalidated, e.g. due to 14:11:06 # parametrization, they finalize themselves and fixtures depending on it 14:11:06 # (which will likely include this fixture) setting `self.cached_result = None`. 14:11:06 # See #4871 14:11:06 requested_fixtures_that_should_finalize_us = [] 14:11:06 for argname in self.argnames: 14:11:06 fixturedef = request._get_active_fixturedef(argname) 14:11:06 # Saves requested fixtures in a list so we later can add our finalizer 14:11:06 # to them, ensuring that if a requested fixture gets torn down we get torn 14:11:06 # down first. This is generally handled by SetupState, but still currently 14:11:06 # needed when this fixture is not parametrized but depends on a parametrized 14:11:06 # fixture. 14:11:06 requested_fixtures_that_should_finalize_us.append(fixturedef) 14:11:06 14:11:06 # Check for (and return) cached value/exception. 14:11:06 if self.cached_result is not None: 14:11:06 request_cache_key = self.cache_key(request) 14:11:06 cache_key = self.cached_result[1] 14:11:06 try: 14:11:06 # Attempt to make a normal == check: this might fail for objects 14:11:06 # which do not implement the standard comparison (like numpy arrays -- #6497). 14:11:06 cache_hit = bool(request_cache_key == cache_key) 14:11:06 except (ValueError, RuntimeError): 14:11:06 # If the comparison raises, use 'is' as fallback. 14:11:06 cache_hit = request_cache_key is cache_key 14:11:06 14:11:06 if cache_hit: 14:11:06 if self.cached_result[2] is not None: 14:11:06 exc, exc_tb = self.cached_result[2] 14:11:06 raise exc.with_traceback(exc_tb) 14:11:06 else: 14:11:06 return self.cached_result[0] 14:11:06 # We have a previous but differently parametrized fixture instance 14:11:06 # so we need to tear it down before creating a new one. 14:11:06 self.finish(request) 14:11:06 assert self.cached_result is None 14:11:06 14:11:06 # Add finalizer to requested fixtures we saved previously. 14:11:06 # We make sure to do this after checking for cached value to avoid 14:11:06 # adding our finalizer multiple times. (#12135) 14:11:06 finalizer = functools.partial(self.finish, request=request) 14:11:06 for parent_fixture in requested_fixtures_that_should_finalize_us: 14:11:06 parent_fixture.addfinalizer(finalizer) 14:11:06 14:11:06 # Register the pytest_fixture_post_finalizer as the first finalizer, 14:11:06 # which is executed last. 14:11:06 > assert not self._finalizers 14:11:06 ^^^^^^^^^^^^^^^^^^^^ 14:11:06 E AssertionError 14:11:06 14:11:06 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 14:11:06 =========================== short test summary info ============================ 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_01_connect_xpdrA 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_02_connect_xpdrC 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_03_connect_rdmA 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_04_connect_rdmC 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_05_connect_xpdrA_N1_to_roadmA_PP1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_06_connect_roadmA_PP1_to_xpdrA_N1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_07_connect_xpdrC_N1_to_roadmC_PP1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_08_connect_roadmC_PP1_to_xpdrC_N1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_09_add_omsAttributes_ROADMA_ROADMC 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_10_add_omsAttributes_ROADMC_ROADMA 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_11_create_eth_service1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_12_get_eth_service1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_13_change_status_line_port_xpdra 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_14_check_update_portmapping 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_15_check_update_openroadm_topo 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_16_check_update_service1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_17_restore_status_line_port_xpdra 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_18_check_update_portmapping_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_19_check_update_openroadm_topo_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_20_check_update_service1_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_21_change_status_port_roadma_srg 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_22_check_update_portmapping 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_23_check_update_openroadm_topo 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_24_restore_status_port_roadma_srg 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_25_check_update_portmapping_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_26_check_update_openroadm_topo_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_27_check_update_service1_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_28_change_status_line_port_roadma_deg 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_29_check_update_portmapping 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_30_check_update_openroadm_topo 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_31_restore_status_line_port_roadma_srg 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_32_check_update_portmapping_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_33_check_update_openroadm_topo_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_34_check_update_service1_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_35_change_status_line_port_xpdrc 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_36_check_update_portmapping 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_37_check_update_openroadm_topo 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_38_restore_status_line_port_xpdrc 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_39_check_update_portmapping_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_40_check_update_openroadm_topo_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_41_check_update_service1_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_42_change_status_port_roadma_srg 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_43_check_update_portmapping 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_44_check_update_openroadm_topo 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_45_check_update_service1_ok 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_46_delete_eth_service1 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_47_disconnect_xponders_from_roadm 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_48_disconnect_XPDRA 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_49_disconnect_XPDRC 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_50_disconnect_ROADMA 14:11:06 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_51_disconnect_ROADMC 14:11:06 51 errors in 109.75s (0:01:49) 14:11:06 tests_hybrid: exit 1 (110.06 seconds) /w/workspace/transportpce-tox-verify-titanium/tests> ./launch_tests.sh hybrid pid=3974 14:11:06 buildcontroller: FAIL code 127 (9.90=setup[8.75]+cmd[1.15] seconds) 14:11:06 sims: OK (12.85=setup[8.17]+cmd[4.68] seconds) 14:11:06 build_karaf_tests121: FAIL code 127 (6.83=setup[6.83]+cmd[0.00] seconds) 14:11:06 testsPCE: FAIL code 1 (174.49=setup[50.32]+cmd[124.17] seconds) 14:11:06 tests121: FAIL code 1 (113.43=setup[8.99]+cmd[104.44] seconds) 14:11:06 build_karaf_tests221: FAIL code 127 (6.67=setup[6.67]+cmd[0.00] seconds) 14:11:06 tests_tapi: FAIL code 1 (119.71=setup[9.17]+cmd[110.54] seconds) 14:11:06 tests221: FAIL code 1 (113.25=setup[6.34]+cmd[106.91] seconds) 14:11:06 build_karaf_tests71: FAIL code 127 (7.71=setup[7.70]+cmd[0.00] seconds) 14:11:06 tests71: FAIL code 1 (111.63=setup[8.98]+cmd[102.65] seconds) 14:11:06 build_karaf_tests190: FAIL code 127 (6.87=setup[6.85]+cmd[0.01] seconds) 14:11:06 tests190: FAIL code 1 (111.39=setup[9.11]+cmd[102.28] seconds) 14:11:06 tests_hybrid: FAIL code 1 (116.52=setup[6.46]+cmd[110.06] seconds) 14:11:06 buildlighty: FAIL code 9 (7.89=setup[7.88]+cmd[0.01] seconds) 14:11:06 docs: OK (18.46=setup[16.48]+cmd[1.98] seconds) 14:11:06 docs-linkcheck: OK (20.98=setup[16.39]+cmd[4.59] seconds) 14:11:06 checkbashisms: OK (3.08=setup[1.86]+cmd[0.00,0.04,1.18] seconds) 14:11:06 pre-commit: OK (43.83=setup[3.17]+cmd[0.00,0.02,34.34,6.31] seconds) 14:11:06 pylint: OK (24.67=setup[3.96]+cmd[20.72] seconds) 14:11:06 evaluation failed :( (558.59 seconds) 14:11:06 + tox_status=1 14:11:06 + echo '---> Completed tox runs' 14:11:06 ---> Completed tox runs 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/build_karaf_tests121/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=build_karaf_tests121 14:11:06 + cp -r .tox/build_karaf_tests121/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/build_karaf_tests121 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/build_karaf_tests190/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=build_karaf_tests190 14:11:06 + cp -r .tox/build_karaf_tests190/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/build_karaf_tests190 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/build_karaf_tests221/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=build_karaf_tests221 14:11:06 + cp -r .tox/build_karaf_tests221/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/build_karaf_tests221 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/build_karaf_tests71/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=build_karaf_tests71 14:11:06 + cp -r .tox/build_karaf_tests71/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/build_karaf_tests71 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/buildcontroller/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=buildcontroller 14:11:06 + cp -r .tox/buildcontroller/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/buildcontroller 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/buildlighty/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=buildlighty 14:11:06 + cp -r .tox/buildlighty/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/buildlighty 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/checkbashisms/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=checkbashisms 14:11:06 + cp -r .tox/checkbashisms/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/checkbashisms 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/docs-linkcheck/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=docs-linkcheck 14:11:06 + cp -r .tox/docs-linkcheck/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/docs-linkcheck 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/docs/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=docs 14:11:06 + cp -r .tox/docs/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/docs 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/pre-commit/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=pre-commit 14:11:06 + cp -r .tox/pre-commit/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/pre-commit 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/pylint/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=pylint 14:11:06 + cp -r .tox/pylint/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/pylint 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/sims/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=sims 14:11:06 + cp -r .tox/sims/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/sims 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests121/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests121 14:11:06 + cp -r .tox/tests121/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests121 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests190/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests190 14:11:06 + cp -r .tox/tests190/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests190 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests221/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests221 14:11:06 + cp -r .tox/tests221/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests221 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests71/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests71 14:11:06 + cp -r .tox/tests71/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests71 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/testsPCE/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=testsPCE 14:11:06 + cp -r .tox/testsPCE/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/testsPCE 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests_hybrid/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests_hybrid 14:11:06 + cp -r .tox/tests_hybrid/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests_hybrid 14:11:06 + for i in .tox/*/log 14:11:06 ++ echo .tox/tests_tapi/log 14:11:06 ++ awk -F/ '{print $2}' 14:11:06 + tox_env=tests_tapi 14:11:06 + cp -r .tox/tests_tapi/log /w/workspace/transportpce-tox-verify-titanium/archives/tox/tests_tapi 14:11:06 + DOC_DIR=docs/_build/html 14:11:06 + [[ -d docs/_build/html ]] 14:11:06 + echo '---> Archiving generated docs' 14:11:06 ---> Archiving generated docs 14:11:06 + mv docs/_build/html /w/workspace/transportpce-tox-verify-titanium/archives/docs 14:11:06 + echo '---> tox-run.sh ends' 14:11:06 ---> tox-run.sh ends 14:11:06 + test 1 -eq 0 14:11:06 + exit 1 14:11:06 ++ '[' 1 = 1 ']' 14:11:06 ++ '[' -x /usr/bin/clear_console ']' 14:11:06 ++ /usr/bin/clear_console -q 14:11:06 Build step 'Execute shell' marked build as failure 14:11:06 $ ssh-agent -k 14:11:06 unset SSH_AUTH_SOCK; 14:11:06 unset SSH_AGENT_PID; 14:11:06 echo Agent pid 1562 killed; 14:11:06 [ssh-agent] Stopped. 14:11:06 [PostBuildScript] - [INFO] Executing post build scripts. 14:11:06 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins11139131166970306685.sh 14:11:06 ---> sysstat.sh 14:11:07 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins13721449199655347131.sh 14:11:07 ---> package-listing.sh 14:11:07 ++ facter osfamily 14:11:07 ++ tr '[:upper:]' '[:lower:]' 14:11:07 + OS_FAMILY=debian 14:11:07 + workspace=/w/workspace/transportpce-tox-verify-titanium 14:11:07 + START_PACKAGES=/tmp/packages_start.txt 14:11:07 + END_PACKAGES=/tmp/packages_end.txt 14:11:07 + DIFF_PACKAGES=/tmp/packages_diff.txt 14:11:07 + PACKAGES=/tmp/packages_start.txt 14:11:07 + '[' /w/workspace/transportpce-tox-verify-titanium ']' 14:11:07 + PACKAGES=/tmp/packages_end.txt 14:11:07 + case "${OS_FAMILY}" in 14:11:07 + dpkg -l 14:11:07 + grep '^ii' 14:11:07 + '[' -f /tmp/packages_start.txt ']' 14:11:07 + '[' -f /tmp/packages_end.txt ']' 14:11:07 + diff /tmp/packages_start.txt /tmp/packages_end.txt 14:11:07 + '[' /w/workspace/transportpce-tox-verify-titanium ']' 14:11:07 + mkdir -p /w/workspace/transportpce-tox-verify-titanium/archives/ 14:11:07 + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/transportpce-tox-verify-titanium/archives/ 14:11:07 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins13997912288964426654.sh 14:11:07 ---> capture-instance-metadata.sh 14:11:07 Setup pyenv: 14:11:07 system 14:11:07 3.8.20 14:11:07 3.9.20 14:11:07 3.10.15 14:11:07 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:11:07 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-M6XE from file:/tmp/.os_lf_venv 14:11:07 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:11:09 lf-activate-venv(): INFO: Installing additional packages: lftools 14:11:19 lf-activate-venv(): INFO: Adding /tmp/venv-M6XE/bin to PATH 14:11:19 INFO: Running in OpenStack, capturing instance metadata 14:11:19 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins16885510601958641515.sh 14:11:19 provisioning config files... 14:11:20 Could not find credentials [logs] for transportpce-tox-verify-titanium #37 14:11:20 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/transportpce-tox-verify-titanium@tmp/config3102761043830012389tmp 14:11:20 Regular expression run condition: Expression=[^.*logs-s3.*], Label=[odl-logs-s3-cloudfront-index] 14:11:20 Run condition [Regular expression match] enabling perform for step [Provide Configuration files] 14:11:20 provisioning config files... 14:11:20 copy managed file [jenkins-s3-log-ship] to file:/home/jenkins/.aws/credentials 14:11:20 [EnvInject] - Injecting environment variables from a build step. 14:11:20 [EnvInject] - Injecting as environment variables the properties content 14:11:20 SERVER_ID=logs 14:11:20 14:11:20 [EnvInject] - Variables injected successfully. 14:11:20 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins9709515371127742437.sh 14:11:20 ---> create-netrc.sh 14:11:20 WARN: Log server credential not found. 14:11:20 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins12643546239023683744.sh 14:11:20 ---> python-tools-install.sh 14:11:20 Setup pyenv: 14:11:20 system 14:11:20 3.8.20 14:11:20 3.9.20 14:11:20 3.10.15 14:11:20 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:11:20 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-M6XE from file:/tmp/.os_lf_venv 14:11:20 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:11:22 lf-activate-venv(): INFO: Installing additional packages: lftools 14:11:32 lf-activate-venv(): INFO: Adding /tmp/venv-M6XE/bin to PATH 14:11:32 [transportpce-tox-verify-titanium] $ /bin/sh /tmp/jenkins5138842042075306722.sh 14:11:32 ---> uv-install.sh 14:11:32 uv 0.12.8 is already installed 14:11:32 uvx 0.12.8 (x86_64-unknown-linux-gnu) 14:11:32 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins15353832341167839795.sh 14:11:32 ---> sudo-logs.sh 14:11:32 Archiving 'sudo' log.. 14:11:33 [transportpce-tox-verify-titanium] $ /bin/bash /tmp/jenkins8715766568195352661.sh 14:11:33 ---> job-cost.sh 14:11:33 INFO: Activating Python virtual environment... 14:11:33 Setup pyenv: 14:11:33 system 14:11:33 3.8.20 14:11:33 3.9.20 14:11:33 3.10.15 14:11:33 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:11:33 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-M6XE from file:/tmp/.os_lf_venv 14:11:33 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:11:35 lf-activate-venv(): INFO: Installing additional packages: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 14:11:42 lf-activate-venv(): INFO: Adding /tmp/venv-M6XE/bin to PATH 14:11:42 INFO: No stack-cost file found 14:11:42 INFO: Instance uptime: 737s 14:11:42 INFO: Fetching instance metadata (attempt 1 of 3)... 14:11:42 DEBUG: URL: http://169.254.169.254/latest/meta-data/instance-type 14:11:42 INFO: Successfully fetched instance metadata 14:11:42 INFO: Instance type: v3-standard-4 14:11:42 INFO: Retrieving pricing info for: v3-standard-4 14:11:42 INFO: Fetching Vexxhost pricing API (attempt 1 of 3)... 14:11:42 DEBUG: URL: https://pricing.vexxhost.net/v1/pricing/v3-standard-4/cost?seconds=737 14:11:42 INFO: Successfully fetched Vexxhost pricing API 14:11:42 INFO: Retrieved cost: 0.11 14:11:42 INFO: Retrieved resource: v3-standard-4 14:11:42 INFO: Creating archive directory: /w/workspace/transportpce-tox-verify-titanium/archives/cost 14:11:42 INFO: Archiving costs to: /w/workspace/transportpce-tox-verify-titanium/archives/cost.csv 14:11:42 INFO: Successfully archived job cost data 14:11:42 DEBUG: Cost data: transportpce-tox-verify-titanium,37,2026-09-01 14:11:42,v3-standard-4,737,0.11,0.00,FAILURE 14:11:42 [transportpce-tox-verify-titanium] $ /bin/bash -l /tmp/jenkins18085795815103270325.sh 14:11:42 ---> logs-deploy.sh 14:11:42 Setup pyenv: 14:11:42 system 14:11:42 3.8.20 14:11:42 3.9.20 14:11:42 3.10.15 14:11:42 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-titanium/.python-version) 14:11:43 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-M6XE from file:/tmp/.os_lf_venv 14:11:43 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 14:11:44 lf-activate-venv(): INFO: Installing additional packages: lftools urllib3~=1.26.15 14:11:55 lf-activate-venv(): INFO: Adding /tmp/venv-M6XE/bin to PATH 14:11:55 WARNING: Nexus logging server not set 14:11:55 INFO: S3 path logs/releng/vex-yul-odl-jenkins-1/transportpce-tox-verify-titanium/37/ 14:11:55 INFO: archiving logs to S3 14:11:56 ---> uname -a: 14:11:56 Linux prd-ubuntu2204-docker-4c-16g-46633 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux 14:11:56 14:11:56 14:11:56 ---> lscpu: 14:11:56 Architecture: x86_64 14:11:56 CPU op-mode(s): 32-bit, 64-bit 14:11:56 Address sizes: 40 bits physical, 48 bits virtual 14:11:56 Byte Order: Little Endian 14:11:56 CPU(s): 4 14:11:56 On-line CPU(s) list: 0-3 14:11:56 Vendor ID: AuthenticAMD 14:11:56 Model name: AMD EPYC-Rome Processor 14:11:56 CPU family: 23 14:11:56 Model: 49 14:11:56 Thread(s) per core: 1 14:11:56 Core(s) per socket: 1 14:11:56 Socket(s): 4 14:11:56 Stepping: 0 14:11:56 BogoMIPS: 5599.99 14:11:56 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr wbnoinvd arat npt lbrv nrip_save tsc_scale vmcb_clean flushbyasid pausefilter pfthreshold v_vmsave_vmload vgif umip rdpid arch_capabilities 14:11:56 Virtualization: AMD-V 14:11:56 Hypervisor vendor: KVM 14:11:56 Virtualization type: full 14:11:56 L1d cache: 128 KiB (4 instances) 14:11:56 L1i cache: 128 KiB (4 instances) 14:11:56 L2 cache: 2 MiB (4 instances) 14:11:56 L3 cache: 64 MiB (4 instances) 14:11:56 NUMA node(s): 1 14:11:56 NUMA node0 CPU(s): 0-3 14:11:56 Vulnerability Gather data sampling: Not affected 14:11:56 Vulnerability Indirect target selection: Not affected 14:11:56 Vulnerability Itlb multihit: Not affected 14:11:56 Vulnerability L1tf: Not affected 14:11:56 Vulnerability Mds: Not affected 14:11:56 Vulnerability Meltdown: Not affected 14:11:56 Vulnerability Mmio stale data: Not affected 14:11:56 Vulnerability Reg file data sampling: Not affected 14:11:56 Vulnerability Retbleed: Mitigation; untrained return thunk; SMT disabled 14:11:56 Vulnerability Spec rstack overflow: Mitigation; SMT disabled 14:11:56 Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp 14:11:56 Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization 14:11:56 Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected 14:11:56 Vulnerability Srbds: Not affected 14:11:56 Vulnerability Tsa: Not affected 14:11:56 Vulnerability Tsx async abort: Not affected 14:11:56 Vulnerability Vmscape: Not affected 14:11:56 14:11:56 14:11:56 ---> nproc: 14:11:56 4 14:11:56 14:11:56 14:11:56 ---> df -h: 14:11:56 Filesystem Size Used Avail Use% Mounted on 14:11:56 tmpfs 1.6G 1.1M 1.6G 1% /run 14:11:56 /dev/vda1 78G 11G 67G 14% / 14:11:56 tmpfs 7.9G 0 7.9G 0% /dev/shm 14:11:56 tmpfs 5.0M 0 5.0M 0% /run/lock 14:11:56 /dev/vda15 105M 6.1M 99M 6% /boot/efi 14:11:56 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1001 14:11:56 14:11:56 14:11:56 ---> free -m: 14:11:56 total used free shared buff/cache available 14:11:56 Mem: 15989 701 10018 4 5269 14943 14:11:56 Swap: 1023 0 1023 14:11:56 14:11:56 14:11:56 ---> ip addr: 14:11:56 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 14:11:56 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 14:11:56 inet 127.0.0.1/8 scope host lo 14:11:56 valid_lft forever preferred_lft forever 14:11:56 inet6 ::1/128 scope host 14:11:56 valid_lft forever preferred_lft forever 14:11:56 2: ens3: mtu 1458 qdisc mq state UP group default qlen 1000 14:11:56 link/ether fa:16:3e:05:73:af brd ff:ff:ff:ff:ff:ff 14:11:56 altname enp0s3 14:11:56 inet 10.30.171.88/23 metric 100 brd 10.30.171.255 scope global dynamic ens3 14:11:56 valid_lft 85657sec preferred_lft 85657sec 14:11:56 inet6 fe80::f816:3eff:fe05:73af/64 scope link 14:11:56 valid_lft forever preferred_lft forever 14:11:56 3: docker0: mtu 1458 qdisc noqueue state DOWN group default 14:11:56 link/ether ce:b0:fe:cc:63:a6 brd ff:ff:ff:ff:ff:ff 14:11:56 inet 10.250.0.254/24 brd 10.250.0.255 scope global docker0 14:11:56 valid_lft forever preferred_lft forever 14:11:56 14:11:56 14:11:56 ---> sar -b -r -n DEV: 14:11:56 Linux 5.15.0-186-generic (prd-ubuntu2204-docker-4c-16g-46633) 09/01/26 _x86_64_ (4 CPU) 14:11:56 14:11:56 13:59:36 LINUX RESTART (4 CPU) 14:11:56 14:11:56 14:00:00 tps rtps wtps dtps bread/s bwrtn/s bdscd/s 14:11:56 14:10:01 94.23 8.87 81.66 3.70 1377.27 15675.58 3146.22 14:11:56 Average: 94.23 8.87 81.66 3.70 1377.27 15675.58 3146.22 14:11:56 14:11:56 14:00:00 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 14:11:56 14:10:01 10294916 15322132 625180 3.82 178324 4824868 1332472 7.65 462944 5062740 572 14:11:56 Average: 10294916 15322132 625180 3.82 178324 4824868 1332472 7.65 462944 5062740 572 14:11:56 14:11:56 14:00:00 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 14:11:56 14:10:01 lo 1.04 1.04 0.10 0.10 0.00 0.00 0.00 0.00 14:11:56 14:10:01 ens3 82.91 63.91 788.87 13.52 0.00 0.00 0.00 0.00 14:11:56 14:10:01 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14:11:56 Average: lo 1.04 1.04 0.10 0.10 0.00 0.00 0.00 0.00 14:11:56 Average: ens3 82.91 63.91 788.87 13.52 0.00 0.00 0.00 0.00 14:11:56 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14:11:56 14:11:56 14:11:56 ---> sar -P ALL: 14:11:56 Linux 5.15.0-186-generic (prd-ubuntu2204-docker-4c-16g-46633) 09/01/26 _x86_64_ (4 CPU) 14:11:56 14:11:56 13:59:36 LINUX RESTART (4 CPU) 14:11:56 14:11:56 14:00:00 CPU %user %nice %system %iowait %steal %idle 14:11:56 14:10:01 all 12.69 0.00 1.31 0.73 0.01 85.26 14:11:56 14:10:01 0 9.89 0.00 1.22 0.31 0.01 88.57 14:11:56 14:10:01 1 12.11 0.00 1.33 0.87 0.01 85.68 14:11:56 14:10:01 2 8.17 0.00 1.05 1.28 0.01 89.48 14:11:56 14:10:01 3 20.57 0.00 1.62 0.44 0.02 77.35 14:11:56 Average: all 12.69 0.00 1.31 0.73 0.01 85.26 14:11:56 Average: 0 9.89 0.00 1.22 0.31 0.01 88.57 14:11:56 Average: 1 12.11 0.00 1.33 0.87 0.01 85.68 14:11:56 Average: 2 8.17 0.00 1.05 1.28 0.01 89.48 14:11:56 Average: 3 20.57 0.00 1.62 0.44 0.02 77.35 14:11:56 14:11:56 14:11:56