01:53:41 Triggered by Gerrit: https://git.opendaylight.org/gerrit/c/transportpce/+/126737 01:53:41 Running as SYSTEM 01:53:41 [EnvInject] - Loading node environment variables. 01:53:41 Building remotely on prd-ubuntu2204-docker-4c-16g-62851 (ubuntu2204-docker-4c-16g) in workspace /w/workspace/transportpce-tox-verify-transportpce-master 01:53:42 [ssh-agent] Looking for ssh-agent implementation... 01:53:42 [ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine) 01:53:42 $ ssh-agent 01:53:42 SSH_AUTH_SOCK=/tmp/ssh-XXXXXXlpQPFr/agent.1563 01:53:42 SSH_AGENT_PID=1565 01:53:42 [ssh-agent] Started. 01:53:42 Running ssh-add (command line suppressed) 01:53:42 Identity added: /w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_13990417195948757745.key (/w/workspace/transportpce-tox-verify-transportpce-master@tmp/private_key_13990417195948757745.key) 01:53:42 [ssh-agent] Using credentials jenkins (jenkins-ssh) 01:53:42 The recommended git tool is: NONE 01:53:44 using credential jenkins-ssh 01:53:44 Wiping out workspace first. 01:53:44 Cloning the remote Git repository 01:53:44 Cloning repository git://devvexx.opendaylight.org/mirror/transportpce 01:53:44 > git init /w/workspace/transportpce-tox-verify-transportpce-master # timeout=10 01:53:44 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 01:53:44 > git --version # timeout=10 01:53:44 > git --version # 'git version 2.34.1' 01:53:44 using GIT_SSH to set credentials jenkins-ssh 01:53:44 Verifying host key using known hosts file, will automatically accept unseen keys 01:53:44 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce +refs/heads/*:refs/remotes/origin/* # timeout=10 01:53:48 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 01:53:48 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 01:53:48 > git config remote.origin.url git://devvexx.opendaylight.org/mirror/transportpce # timeout=10 01:53:48 Fetching upstream changes from git://devvexx.opendaylight.org/mirror/transportpce 01:53:48 using GIT_SSH to set credentials jenkins-ssh 01:53:48 Verifying host key using known hosts file, will automatically accept unseen keys 01:53:48 > git fetch --tags --force --progress -- git://devvexx.opendaylight.org/mirror/transportpce refs/changes/37/126737/3 # timeout=10 01:53:49 > git rev-parse f1fd9203e819d94e31c1a841e32059fa363ff351^{commit} # timeout=10 01:53:49 JENKINS-19022: warning: possible memory leak due to Git plugin usage; see: https://plugins.jenkins.io/git/#remove-git-plugin-buildsbybranch-builddata-script 01:53:49 Checking out Revision f1fd9203e819d94e31c1a841e32059fa363ff351 (refs/changes/37/126737/3) 01:53:49 > git config core.sparsecheckout # timeout=10 01:53:49 > git checkout -f f1fd9203e819d94e31c1a841e32059fa363ff351 # timeout=10 01:53:52 Commit message: "fix: replace accidental substring tests with ==" 01:53:52 > git rev-parse FETCH_HEAD^{commit} # timeout=10 01:53:52 > git rev-list --no-walk 778c4831b98f585a845bf3baa723efd596bd713c # timeout=10 01:53:52 > git remote # timeout=10 01:53:52 > git submodule init # timeout=10 01:53:52 > git submodule sync # timeout=10 01:53:52 > git config --get remote.origin.url # timeout=10 01:53:52 > git submodule init # timeout=10 01:53:52 > git config -f .gitmodules --get-regexp ^submodule\.(.+)\.url # timeout=10 01:53:52 ERROR: No submodules found. 01:53:53 provisioning config files... 01:53:53 copy managed file [npmrc] to file:/home/jenkins/.npmrc 01:53:53 copy managed file [pipconf] to file:/home/jenkins/.config/pip/pip.conf 01:53:53 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6690883278905010790.sh 01:53:53 ---> python-tools-install.sh 01:53:53 Setup pyenv: 01:53:53 * system (set by /opt/pyenv/version) 01:53:53 * 3.8.20 (set by /opt/pyenv/version) 01:53:53 * 3.9.20 (set by /opt/pyenv/version) 01:53:53 3.10.15 01:53:53 3.11.10 01:53:57 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-qkRb 01:53:57 lf-activate-venv(): INFO: Save venv in file: /tmp/.os_lf_venv 01:53:57 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 01:54:02 lf-activate-venv(): INFO: Installing additional packages: lftools 01:54:26 lf-activate-venv(): INFO: Adding /tmp/venv-qkRb/bin to PATH 01:54:26 Generating Requirements File 01:54:50 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. 01:54:50 httplib2 0.30.2 requires pyparsing<4,>=3.0.4, but you have pyparsing 2.4.7 which is incompatible. 01:54:50 Python 3.11.10 01:54:51 pip 26.2.1 from /tmp/venv-qkRb/lib/python3.11/site-packages/pip (python 3.11) 01:54:51 aiohappyeyeballs==2.7.1 01:54:51 aiohttp==3.14.4 01:54:51 aiosignal==1.4.0 01:54:51 appdirs==1.4.4 01:54:51 argcomplete==3.7.2 01:54:51 aspy.yaml==1.3.0 01:54:51 attrs==26.1.0 01:54:51 autopage==0.6.0 01:54:51 beautifulsoup4==4.15.0 01:54:51 boto3==1.43.109 01:54:51 botocore==1.43.109 01:54:51 bs4==0.0.2 01:54:51 certifi==2026.7.22 01:54:51 cffi==2.1.1 01:54:51 cfgv==3.5.0 01:54:51 chardet==7.6.0 01:54:51 charset-normalizer==3.5.2 01:54:51 click==8.5.0 01:54:51 cliff==4.16.0 01:54:51 cmd2==4.2.4 01:54:51 cryptography==3.3.2 01:54:51 debtcollector==3.1.0 01:54:51 decorator==5.3.1 01:54:51 defusedxml==0.7.1 01:54:51 Deprecated==1.3.1 01:54:51 distlib==0.4.3 01:54:51 dnspython==2.8.0 01:54:51 docker==7.2.0 01:54:51 dogpile.cache==1.5.0 01:54:51 durationpy==0.11 01:54:51 email-validator==2.3.0 01:54:51 filelock==4.0.12 01:54:51 frozenlist==1.8.0 01:54:51 future==1.0.0 01:54:51 gitdb==4.0.12 01:54:51 GitPython==3.2.0 01:54:51 httplib2==0.30.2 01:54:51 identify==2.6.20 01:54:51 idna==3.20 01:54:51 importlib-resources==1.5.0 01:54:51 iso8601==2.1.0 01:54:51 Jinja2==3.1.6 01:54:51 jmespath==1.1.0 01:54:51 jsonpatch==1.33 01:54:51 jsonpointer==3.2.0 01:54:51 jsonschema==4.26.0 01:54:51 jsonschema-specifications==2025.9.1 01:54:51 keystoneauth1==5.18.0 01:54:51 kubernetes==36.0.3 01:54:51 lftools==0.37.23 01:54:51 lxml==6.1.3 01:54:51 markdown-it-py==4.2.0 01:54:51 MarkupSafe==3.0.4 01:54:51 mdurl==0.1.2 01:54:51 msgpack==1.2.3 01:54:51 multi_key_dict==2.0.3 01:54:51 multidict==6.9.1 01:54:51 munch==4.0.0 01:54:51 netaddr==1.3.0 01:54:51 niet==1.4.2 01:54:51 nodeenv==1.11.0 01:54:51 oauth2client==4.1.3 01:54:51 oauthlib==4.0.0 01:54:51 openstacksdk==4.21.0 01:54:51 os-service-types==1.9.0 01:54:51 osc-lib==4.7.0 01:54:51 oslo.config==10.7.0 01:54:51 oslo.context==6.5.0 01:54:51 oslo.i18n==6.9.0 01:54:51 oslo.log==8.3.2 01:54:51 oslo.serialization==5.11.0 01:54:51 oslo.utils==10.2.0 01:54:51 packaging==26.3 01:54:51 pbr==7.1.3 01:54:51 platformdirs==4.12.4 01:54:51 prettytable==3.18.0 01:54:51 prompt_toolkit==3.0.53 01:54:51 propcache==0.5.4 01:54:51 psutil==7.2.2 01:54:51 pyasn1==0.6.4 01:54:51 pyasn1_modules==0.4.2 01:54:51 pycparser==3.0 01:54:51 pygerrit2==2.0.15 01:54:51 PyGithub==2.10.0 01:54:51 Pygments==2.21.0 01:54:51 PyJWT==2.15.1 01:54:51 PyNaCl==1.6.2 01:54:51 pyparsing==2.4.7 01:54:51 pyperclip==1.11.0 01:54:51 pyrsistent==0.20.0 01:54:51 python-dateutil==2.9.0.post0 01:54:51 python-discovery==1.6.1 01:54:51 python-heatclient==5.3.0 01:54:51 python-jenkins==1.8.3 01:54:51 python-keystoneclient==6.0.0 01:54:51 python-magnumclient==5.0.0 01:54:51 python-manilaclient==6.3.0 01:54:51 python-openstackclient==10.3.0 01:54:51 python-swiftclient==4.11.0 01:54:51 PyYAML==6.0.3 01:54:51 referencing==0.37.0 01:54:51 requests==2.34.2 01:54:51 requests-oauthlib==2.0.0 01:54:51 rfc3986==2.0.0 01:54:51 rich==15.0.0 01:54:51 rich-argparse==1.8.0 01:54:51 rpds-py==2026.9.1 01:54:51 rsa==4.9.1 01:54:51 ruamel.yaml==0.19.1 01:54:51 ruamel.yaml.clib==0.2.15 01:54:51 s3transfer==0.19.2 01:54:51 simplejson==4.2.0 01:54:51 six==1.17.0 01:54:51 smmap==5.0.3 01:54:51 soupsieve==2.10 01:54:51 stevedore==5.9.1 01:54:51 tabulate==0.10.0 01:54:51 toml==0.10.2 01:54:51 tomlkit==0.15.1 01:54:51 tqdm==4.70.1 01:54:51 typing_extensions==4.16.0 01:54:51 urllib3==1.26.20 01:54:51 virtualenv==21.14.5 01:54:51 wcwidth==0.9.2 01:54:51 websocket-client==1.9.2 01:54:51 wrapt==2.5.0 01:54:51 xdg==6.0.0 01:54:51 xmltodict==1.0.4 01:54:51 yarl==1.25.1 01:54:51 yq==4.4.0 01:54:51 [transportpce-tox-verify-transportpce-master] $ /bin/sh /tmp/jenkins3958801965353396659.sh 01:54:51 ---> uv-install.sh 01:54:51 Installing uv/uvx (latest) using shell installer 01:54:51 2026-10-08 01:54:51 URL:https://releases.astral.sh/installers/uv/latest/uv-installer.sh [71308/71308] -> "/tmp/uv-install-LP4TmE.sh" [1] 01:54:51 downloading uv 0.12.23 x86_64-unknown-linux-gnu 01:54:52 installing to /home/jenkins/.local/bin 01:54:52 uv 01:54:52 uvx 01:54:52 everything's installed! 01:54:52 01:54:52 To add $HOME/.local/bin to your PATH, either restart your shell or run: 01:54:52 01:54:52 source $HOME/.local/bin/env (sh, bash, zsh) 01:54:52 source $HOME/.local/bin/env.fish (fish) 01:54:52 Adding install location to PATH 01:54:52 ---> Validating uv/uvx install 01:54:52 uvx 0.12.23 (x86_64-unknown-linux-gnu) 01:54:52 [EnvInject] - Injecting environment variables from a build step. 01:54:52 [EnvInject] - Injecting as environment variables the properties content 01:54:52 PYTHON=python3 01:54:52 01:54:52 [EnvInject] - Variables injected successfully. 01:54:52 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins8442290637401342456.sh 01:54:52 ---> tox-install.sh 01:54:52 + source /home/jenkins/lf-env.sh 01:54:52 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 01:54:52 ++ mktemp -d /tmp/venv-XXXX 01:54:52 + lf_venv=/tmp/venv-I46N 01:54:52 + local venv_file=/tmp/.os_lf_venv 01:54:52 + local python=python3 01:54:52 + local options 01:54:52 + local set_path=true 01:54:52 + local install_args= 01:54:52 ++ 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 01:54:52 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 01:54:52 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 01:54:52 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 01:54:52 + true 01:54:52 + case $1 in 01:54:52 + venv_file=/tmp/.toxenv 01:54:52 + shift 2 01:54:52 + true 01:54:52 + case $1 in 01:54:52 + shift 01:54:52 + break 01:54:52 + case $python in 01:54:52 + local pkg_list= 01:54:52 + [[ -d /opt/pyenv ]] 01:54:52 + echo 'Setup pyenv:' 01:54:52 Setup pyenv: 01:54:52 + export PYENV_ROOT=/opt/pyenv 01:54:52 + PYENV_ROOT=/opt/pyenv 01:54:52 + 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 01:54:52 + 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 01:54:52 + pyenv versions 01:54:52 system 01:54:52 3.8.20 01:54:52 3.9.20 01:54:52 3.10.15 01:54:52 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 01:54:52 + command -v pyenv 01:54:52 ++ pyenv init - --no-rehash 01:54:52 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 01:54:52 for i in ${!paths[@]}; do 01:54:52 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 01:54:52 fi; done; 01:54:52 echo "${paths[*]}"'\'')" 01:54:52 export PATH="/opt/pyenv/shims:${PATH}" 01:54:52 export PYENV_SHELL=bash 01:54:52 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 01:54:52 pyenv() { 01:54:52 local command 01:54:52 command="${1:-}" 01:54:52 if [ "$#" -gt 0 ]; then 01:54:52 shift 01:54:52 fi 01:54:52 01:54:52 case "$command" in 01:54:52 rehash|shell) 01:54:52 eval "$(pyenv "sh-$command" "$@")" 01:54:52 ;; 01:54:52 *) 01:54:52 command pyenv "$command" "$@" 01:54:52 ;; 01:54:52 esac 01:54:52 }' 01:54:52 +++ bash --norc -ec 'IFS=:; paths=($PATH); 01:54:52 for i in ${!paths[@]}; do 01:54:52 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 01:54:52 fi; done; 01:54:52 echo "${paths[*]}"' 01:54:52 ++ 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 01:54:52 ++ 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 01:54:52 ++ 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 01:54:52 ++ export PYENV_SHELL=bash 01:54:52 ++ PYENV_SHELL=bash 01:54:52 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 01:54:52 +++ complete -F _pyenv pyenv 01:54:52 ++ lf-pyver python3 01:54:52 ++ local py_version_xy=python3 01:54:52 ++ local py_version_xyz= 01:54:52 ++ pyenv versions 01:54:52 ++ local command 01:54:52 ++ command=versions 01:54:52 ++ '[' 1 -gt 0 ']' 01:54:52 ++ shift 01:54:52 ++ case "$command" in 01:54:52 ++ command pyenv versions 01:54:52 ++ sed 's/^[ *]* //' 01:54:52 ++ grep -E '^[0-9.]*[0-9]$' 01:54:52 ++ awk '{ print $1 }' 01:54:52 ++ [[ ! -s /tmp/.pyenv_versions ]] 01:54:52 +++ grep '^3' /tmp/.pyenv_versions 01:54:52 +++ sort -V 01:54:52 +++ tail -n 1 01:54:52 ++ py_version_xyz=3.11.10 01:54:52 ++ [[ -z 3.11.10 ]] 01:54:52 ++ echo 3.11.10 01:54:52 ++ return 0 01:54:52 + pyenv local 3.11.10 01:54:52 + local command 01:54:52 + command=local 01:54:52 + '[' 2 -gt 0 ']' 01:54:52 + shift 01:54:52 + case "$command" in 01:54:52 + command pyenv local 3.11.10 01:54:52 + for arg in "$@" 01:54:52 + case $arg in 01:54:52 + pkg_list+='tox ' 01:54:52 + for arg in "$@" 01:54:52 + case $arg in 01:54:52 + pkg_list+='virtualenv ' 01:54:52 + for arg in "$@" 01:54:52 + case $arg in 01:54:52 + pkg_list+='urllib3~=1.26.15 ' 01:54:52 + [[ -f /tmp/.toxenv ]] 01:54:52 + [[ ! -f /tmp/.toxenv ]] 01:54:52 + [[ -n '' ]] 01:54:52 + python3 -m venv /tmp/venv-I46N 01:54:56 + echo 'lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-I46N' 01:54:56 lf-activate-venv(): INFO: Creating python3 venv at /tmp/venv-I46N 01:54:56 + echo /tmp/venv-I46N 01:54:56 + echo 'lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv' 01:54:56 lf-activate-venv(): INFO: Save venv in file: /tmp/.toxenv 01:54:56 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 01:54:56 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 01:54:56 + local 'pip_opts=--upgrade --quiet' 01:54:56 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 01:54:56 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 01:54:56 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 01:54:56 + [[ -n '' ]] 01:54:56 + [[ -n '' ]] 01:54:56 + lf-venv-pip-install /tmp/venv-I46N/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 01:54:56 + local venv_python=/tmp/venv-I46N/bin/python3 01:54:56 + shift 01:54:56 + local upstream=https://pypi.org/simple 01:54:56 + /tmp/venv-I46N/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 01:55:00 + return 0 01:55:00 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 01:55:00 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 01:55:00 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 01:55:00 + lf-venv-pip-install /tmp/venv-I46N/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 01:55:00 + local venv_python=/tmp/venv-I46N/bin/python3 01:55:00 + shift 01:55:00 + local upstream=https://pypi.org/simple 01:55:00 + /tmp/venv-I46N/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 01:55:02 + return 0 01:55:02 + type python3 01:55:02 + true 01:55:02 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-I46N/bin to PATH' 01:55:02 lf-activate-venv(): INFO: Adding /tmp/venv-I46N/bin to PATH 01:55:02 + PATH=/tmp/venv-I46N/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 01:55:02 + return 0 01:55:02 + python3 --version 01:55:02 Python 3.11.10 01:55:02 + python3 -m pip --version 01:55:02 pip 26.2.1 from /tmp/venv-I46N/lib/python3.11/site-packages/pip (python 3.11) 01:55:02 + python3 -m pip freeze 01:55:02 cachetools==7.2.1 01:55:02 colorama==0.4.6 01:55:02 distlib==0.4.3 01:55:02 filelock==4.0.12 01:55:02 packaging==26.3 01:55:02 platformdirs==4.12.4 01:55:02 pluggy==1.6.0 01:55:02 pyproject-api==1.11.4 01:55:02 python-discovery==1.6.1 01:55:02 tomli_w==1.2.0 01:55:02 tox==4.64.9 01:55:02 typing_extensions==4.16.0 01:55:02 urllib3==1.26.20 01:55:02 virtualenv==21.14.5 01:55:02 [transportpce-tox-verify-transportpce-master] $ /bin/sh -xe /tmp/jenkins16742859486262967852.sh 01:55:02 [EnvInject] - Injecting environment variables from a build step. 01:55:02 [EnvInject] - Injecting as environment variables the properties content 01:55:02 PARALLEL=True 01:55:02 01:55:02 [EnvInject] - Variables injected successfully. 01:55:03 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins13884402389189227482.sh 01:55:03 ---> tox-run.sh 01:55:03 + 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 01:55:03 + ARCHIVE_TOX_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/tox 01:55:03 + ARCHIVE_DOC_DIR=/w/workspace/transportpce-tox-verify-transportpce-master/archives/docs 01:55:03 + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox 01:55:03 + cd /w/workspace/transportpce-tox-verify-transportpce-master/. 01:55:03 + source /home/jenkins/lf-env.sh 01:55:03 + lf-activate-venv --venv-file /tmp/.toxenv tox virtualenv urllib3~=1.26.15 01:55:03 ++ mktemp -d /tmp/venv-XXXX 01:55:03 + lf_venv=/tmp/venv-5fBq 01:55:03 + local venv_file=/tmp/.os_lf_venv 01:55:03 + local python=python3 01:55:03 + local options 01:55:03 + local set_path=true 01:55:03 + local install_args= 01:55:03 ++ 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 01:55:03 + options=' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 01:55:03 + eval set -- ' --venv-file '\''/tmp/.toxenv'\'' -- '\''tox'\'' '\''virtualenv'\'' '\''urllib3~=1.26.15'\''' 01:55:03 ++ set -- --venv-file /tmp/.toxenv -- tox virtualenv urllib3~=1.26.15 01:55:03 + true 01:55:03 + case $1 in 01:55:03 + venv_file=/tmp/.toxenv 01:55:03 + shift 2 01:55:03 + true 01:55:03 + case $1 in 01:55:03 + shift 01:55:03 + break 01:55:03 + case $python in 01:55:03 + local pkg_list= 01:55:03 + [[ -d /opt/pyenv ]] 01:55:03 + echo 'Setup pyenv:' 01:55:03 Setup pyenv: 01:55:03 + export PYENV_ROOT=/opt/pyenv 01:55:03 + PYENV_ROOT=/opt/pyenv 01:55:03 + 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 01:55:03 + 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 01:55:03 + pyenv versions 01:55:03 system 01:55:03 3.8.20 01:55:03 3.9.20 01:55:03 3.10.15 01:55:03 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 01:55:03 + command -v pyenv 01:55:03 ++ pyenv init - --no-rehash 01:55:03 + eval 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); 01:55:03 for i in ${!paths[@]}; do 01:55:03 if [[ ${paths[i]} == "'\'''\''/opt/pyenv/shims'\'''\''" ]]; then unset '\''\'\'''\''paths[i]'\''\'\'''\''; 01:55:03 fi; done; 01:55:03 echo "${paths[*]}"'\'')" 01:55:03 export PATH="/opt/pyenv/shims:${PATH}" 01:55:03 export PYENV_SHELL=bash 01:55:03 source '\''/opt/pyenv/libexec/../completions/pyenv.bash'\'' 01:55:03 pyenv() { 01:55:03 local command 01:55:03 command="${1:-}" 01:55:03 if [ "$#" -gt 0 ]; then 01:55:03 shift 01:55:03 fi 01:55:03 01:55:03 case "$command" in 01:55:03 rehash|shell) 01:55:03 eval "$(pyenv "sh-$command" "$@")" 01:55:03 ;; 01:55:03 *) 01:55:03 command pyenv "$command" "$@" 01:55:03 ;; 01:55:03 esac 01:55:03 }' 01:55:03 +++ bash --norc -ec 'IFS=:; paths=($PATH); 01:55:03 for i in ${!paths[@]}; do 01:55:03 if [[ ${paths[i]} == "/opt/pyenv/shims" ]]; then unset '\''paths[i]'\''; 01:55:03 fi; done; 01:55:03 echo "${paths[*]}"' 01:55:03 ++ 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 01:55:03 ++ 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 01:55:03 ++ 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 01:55:03 ++ export PYENV_SHELL=bash 01:55:03 ++ PYENV_SHELL=bash 01:55:03 ++ source /opt/pyenv/libexec/../completions/pyenv.bash 01:55:03 +++ complete -F _pyenv pyenv 01:55:03 ++ lf-pyver python3 01:55:03 ++ local py_version_xy=python3 01:55:03 ++ local py_version_xyz= 01:55:03 ++ pyenv versions 01:55:03 ++ local command 01:55:03 ++ command=versions 01:55:03 ++ '[' 1 -gt 0 ']' 01:55:03 ++ shift 01:55:03 ++ case "$command" in 01:55:03 ++ command pyenv versions 01:55:03 ++ awk '{ print $1 }' 01:55:03 ++ sed 's/^[ *]* //' 01:55:03 ++ grep -E '^[0-9.]*[0-9]$' 01:55:03 ++ [[ ! -s /tmp/.pyenv_versions ]] 01:55:03 +++ grep '^3' /tmp/.pyenv_versions 01:55:03 +++ sort -V 01:55:03 +++ tail -n 1 01:55:03 ++ py_version_xyz=3.11.10 01:55:03 ++ [[ -z 3.11.10 ]] 01:55:03 ++ echo 3.11.10 01:55:03 ++ return 0 01:55:03 + pyenv local 3.11.10 01:55:03 + local command 01:55:03 + command=local 01:55:03 + '[' 2 -gt 0 ']' 01:55:03 + shift 01:55:03 + case "$command" in 01:55:03 + command pyenv local 3.11.10 01:55:03 + for arg in "$@" 01:55:03 + case $arg in 01:55:03 + pkg_list+='tox ' 01:55:03 + for arg in "$@" 01:55:03 + case $arg in 01:55:03 + pkg_list+='virtualenv ' 01:55:03 + for arg in "$@" 01:55:03 + case $arg in 01:55:03 + pkg_list+='urllib3~=1.26.15 ' 01:55:03 + [[ -f /tmp/.toxenv ]] 01:55:03 ++ cat /tmp/.toxenv 01:55:03 + lf_venv=/tmp/venv-I46N 01:55:03 + echo 'lf-activate-venv(): INFO: Reuse venv:/tmp/venv-I46N from' file:/tmp/.toxenv 01:55:03 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-I46N from file:/tmp/.toxenv 01:55:03 + echo 'lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv)' 01:55:03 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 01:55:03 + local 'pip_opts=--upgrade --quiet' 01:55:03 + pip_opts='--upgrade --quiet --trusted-host pypi.org' 01:55:03 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org' 01:55:03 + pip_opts='--upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org' 01:55:03 + [[ -n '' ]] 01:55:03 + [[ -n '' ]] 01:55:03 + lf-venv-pip-install /tmp/venv-I46N/bin/python3 --upgrade --quiet --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org pip 'setuptools<66' virtualenv 01:55:03 + local venv_python=/tmp/venv-I46N/bin/python3 01:55:03 + shift 01:55:03 + local upstream=https://pypi.org/simple 01:55:03 + /tmp/venv-I46N/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 01:55:04 + return 0 01:55:04 + [[ -z tox virtualenv urllib3~=1.26.15 ]] 01:55:04 + echo 'lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 ' 01:55:04 lf-activate-venv(): INFO: Installing additional packages: tox virtualenv urllib3~=1.26.15 01:55:04 + lf-venv-pip-install /tmp/venv-I46N/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 01:55:04 + local venv_python=/tmp/venv-I46N/bin/python3 01:55:04 + shift 01:55:04 + local upstream=https://pypi.org/simple 01:55:04 + /tmp/venv-I46N/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 01:55:05 + return 0 01:55:05 + type python3 01:55:05 + true 01:55:05 + echo 'lf-activate-venv(): INFO: Adding /tmp/venv-I46N/bin to PATH' 01:55:05 lf-activate-venv(): INFO: Adding /tmp/venv-I46N/bin to PATH 01:55:05 + PATH=/tmp/venv-I46N/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 01:55:05 + return 0 01:55:05 + [[ -d /opt/pyenv ]] 01:55:05 + echo '---> Setting up pyenv' 01:55:05 ---> Setting up pyenv 01:55:05 + export PYENV_ROOT=/opt/pyenv 01:55:05 + PYENV_ROOT=/opt/pyenv 01:55:05 + export PATH=/opt/pyenv/bin:/tmp/venv-I46N/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 01:55:05 + PATH=/opt/pyenv/bin:/tmp/venv-I46N/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 01:55:05 ++ pwd 01:55:05 + PYTHONPATH=/w/workspace/transportpce-tox-verify-transportpce-master 01:55:05 + export PYTHONPATH 01:55:05 + export TOX_TESTENV_PASSENV=PYTHONPATH 01:55:05 + TOX_TESTENV_PASSENV=PYTHONPATH 01:55:05 + tox --version 01:55:05 4.64.9 from /tmp/venv-I46N/lib/python3.11/site-packages/tox/__init__.py 01:55:05 + PARALLEL=True 01:55:05 + TOX_OPTIONS_LIST= 01:55:05 + [[ -n '' ]] 01:55:05 + case ${PARALLEL,,} in 01:55:05 + TOX_OPTIONS_LIST=' --parallel auto --parallel-live' 01:55:05 + tox --parallel auto --parallel-live 01:55:05 + tee -a /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tox.log 01:55:07 checkbashisms: freeze> python -m pip freeze --all 01:55:07 buildcontroller: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:07 docs: install_deps> python -I -m pip install -r docs/requirements.txt 01:55:07 docs-linkcheck: install_deps> python -I -m pip install -r docs/requirements.txt 01:55:07 checkbashisms: pip==26.2.1,setuptools==84.0.0 01:55:07 checkbashisms: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh 01:55:07 checkbashisms: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/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)' 01:55:07 checkbashisms: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> find . -not -path '*/\.*' -name '*.sh' -exec checkbashisms -f '{}' + 01:55:09 checkbashisms: OK ✔ in 3.09 seconds 01:55:09 pre-commit: install_deps> python -I -m pip install pre-commit 01:55:11 pre-commit: freeze> python -m pip freeze --all 01:55:11 pre-commit: cfgv==3.5.0,distlib==0.4.3,filelock==4.0.12,identify==2.6.20,nodeenv==1.11.0,packaging==26.3,pip==26.2.1,platformdirs==4.12.4,pre_commit==4.6.2,python-discovery==1.6.1,PyYAML==6.0.3,setuptools==84.0.0,virtualenv==21.14.5 01:55:11 pre-commit: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./fixCIcentOS8reposMirrors.sh 01:55:11 pre-commit: commands[1] /w/workspace/transportpce-tox-verify-transportpce-master/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)' 01:55:11 /usr/bin/cpan 01:55:11 pre-commit: commands[2] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run --all-files --show-diff-on-failure 01:55:12 [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 01:55:12 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint. 01:55:13 [INFO] Initializing environment for https://github.com/jorisroovers/gitlint:./gitlint-core[trusted-deps]. 01:55:13 [INFO] Initializing environment for https://github.com/Lucas-C/pre-commit-hooks. 01:55:13 [INFO] Initializing environment for https://github.com/hhatto/autopep8. 01:55:14 buildcontroller: freeze> python -m pip freeze --all 01:55:14 buildcontroller: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:14 buildcontroller: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh 01:55:14 + update-java-alternatives -l 01:55:14 java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64 01:55:14 java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64 01:55:14 java-1.21.0-openjdk-amd64 2111 /usr/lib/jvm/java-1.21.0-openjdk-amd64 01:55:14 + sudo update-java-alternatives -s java-1.21.0-openjdk-amd64 01:55:14 update-alternatives: error: no alternatives for jaotc 01:55:14 update-alternatives: error: no alternatives for rmic 01:55:14 [INFO] Initializing environment for https://github.com/perltidy/perltidy. 01:55:14 + + sed -n ;s/.* version "\(.*\)\.\(.*\)\..*".*$/\1/p; 01:55:14 java -version 01:55:14 + JAVA_VER=21.0 01:55:14 + echo 21.0 01:55:14 21.0 01:55:14 + sed -n ;s/javac \(.*\)\.\(.*\)\..*.*$/\1/p; 01:55:14 + javac -version 01:55:14 21.0 01:55:14 No java21 or newer available 01:55:14 + JAVAC_VER=21.0 01:55:14 + echo 21.0 01:55:14 + [ 21.0 -ge 21 ] 01:55:14 ./installMavenUbuntu.sh: 14: [: Illegal number: 21.0 01:55:14 + echo No java21 or newer available 01:55:14 + exit 1 01:55:14 buildcontroller: exit 1 (0.56 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_controller.sh pid=2782 01:55:15 buildcontroller: FAIL ✖ in 9.08 seconds 01:55:15 pylint: install_deps> python -I -m pip install 'pylint>=2.6.0' 01:55:15 [INFO] Initializing environment for https://github.com/koalaman/shellcheck-precommit. 01:55:15 [INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier. 01:55:16 [INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier:prettier@4.0.0-alpha.8. 01:55:16 [INFO] Initializing environment for https://github.com/adrienverge/yamllint. 01:55:17 [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 01:55:17 [INFO] Once installed this environment will be reused. 01:55:17 [INFO] This may take a few minutes... 01:55:19 docs: freeze> python -m pip freeze --all 01:55:19 docs-linkcheck: freeze> python -m pip freeze --all 01:55:19 docs: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,certifi==2026.7.22,charset-normalizer==3.5.2,deepmerge==3.0.1,docutils==0.22.4,idna==3.20,imagesize==2.0.1,Jinja2==3.1.6,jsonschema==4.26.0,jsonschema-specifications==2025.9.1,jsonschema_rs==0.52.1,lfdocs_conf==0.11.0,MarkupSafe==3.0.4,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==3.0.1,roman-numerals==4.1.0,rpds-py==2026.9.1,setuptools==84.0.0,snowballstemmer==3.1.1,Sphinx==9.0.4,sphinx-data-viewer==0.1.5,sphinx-needs==8.5.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.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-mermaid==2.1.1,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.8.0 01:55:19 docs: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -W --keep-going -b html -n -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/html 01:55:19 pylint: freeze> python -m pip freeze --all 01:55:19 docs-linkcheck: alabaster==1.0.0,attrs==26.1.0,babel==2.18.0,certifi==2026.7.22,charset-normalizer==3.5.2,deepmerge==3.0.1,docutils==0.22.4,idna==3.20,imagesize==2.0.1,Jinja2==3.1.6,jsonschema==4.26.0,jsonschema-specifications==2025.9.1,jsonschema_rs==0.52.1,lfdocs_conf==0.11.0,MarkupSafe==3.0.4,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==3.0.1,roman-numerals==4.1.0,rpds-py==2026.9.1,setuptools==84.0.0,snowballstemmer==3.1.1,Sphinx==9.0.4,sphinx-data-viewer==0.1.5,sphinx-needs==8.5.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.1.0,sphinxcontrib-jquery==4.1,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-mermaid==2.1.1,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.8.0 01:55:19 docs-linkcheck: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> sphinx-build -q -b linkcheck -d /w/workspace/transportpce-tox-verify-transportpce-master/.tox/docs-linkcheck/tmp/doctrees ../docs/ /w/workspace/transportpce-tox-verify-transportpce-master/docs/_build/linkcheck 01:55:19 pylint: astroid==4.3.3,dill==0.4.1,isort==9.0.2,mccabe==0.7.0,mypy_extensions==1.1.0,pip==26.2.1,platformdirs==4.12.4,pylint==4.1.2,setuptools==84.0.0,tomlkit==0.15.1 01:55:19 pylint: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/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}$' '{}' + 01:55:22 docs: OK ✔ in 16.27 seconds 01:55:22 build_karaf_tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:22 [INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks. 01:55:22 [INFO] Once installed this environment will be reused. 01:55:22 [INFO] This may take a few minutes... 01:55:24 docs-linkcheck: OK ✔ in 18.61 seconds 01:55:24 build_karaf_tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:27 [INFO] Installing environment for https://github.com/hhatto/autopep8. 01:55:27 [INFO] Once installed this environment will be reused. 01:55:27 [INFO] This may take a few minutes... 01:55:29 build_karaf_tests221: freeze> python -m pip freeze --all 01:55:29 build_karaf_tests221: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:29 build_karaf_tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 01:55:29 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karaf221 01:55:29 ./build_karaf_for_tests.sh: 22: mvn: not found 01:55:29 build karaf in karaf221 with ./karaf221.env 01:55:29 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 01:55:29 build_karaf_tests221: exit 127 (0.01 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh pid=3327 01:55:29 build_karaf_tests221: FAIL ✖ in 7.1 seconds 01:55:29 build_karaf_tests200: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:31 [INFO] Installing environment for https://github.com/perltidy/perltidy. 01:55:31 [INFO] Once installed this environment will be reused. 01:55:31 [INFO] This may take a few minutes... 01:55:31 build_karaf_tests71: freeze> python -m pip freeze --all 01:55:31 build_karaf_tests71: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:31 build_karaf_tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 01:55:31 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karaf71 01:55:31 ./build_karaf_for_tests.sh: 22: mvn: not found 01:55:31 build karaf in karaf71 with ./karaf71.env 01:55:31 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 01:55:31 build_karaf_tests71: exit 127 (0.00 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh pid=3358 01:55:31 build_karaf_tests71: FAIL ✖ in 6.84 seconds 01:55:31 buildlighty: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:35 build_karaf_tests200: freeze> python -m pip freeze --all 01:55:35 build_karaf_tests200: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:35 build_karaf_tests200: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh 01:55:35 ./build_karaf_for_tests.sh: 21: cd: can't cd to ../karafoc200 01:55:35 ./build_karaf_for_tests.sh: 22: mvn: not found 01:55:35 build karaf in karafoc200 with ./karafoc200.env 01:55:35 ./build_karaf_for_tests.sh: 23: ./target/assembly/ressources/post_install_for_tests.sh: not found 01:55:35 build_karaf_tests200: exit 127 (0.00 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./build_karaf_for_tests.sh pid=3383 01:55:35 build_karaf_tests200: FAIL ✖ in 6.3 seconds 01:55:35 sims: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:37 buildlighty: freeze> python -m pip freeze --all 01:55:37 buildlighty: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:37 buildlighty: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh 01:55:37 ./build.sh: 7: mvn: not found 01:55:37 unzip: cannot find or open target/tpce-bin.zip, target/tpce-bin.zip.zip or target/tpce-bin.zip.ZIP. 01:55:37 buildlighty: exit 9 (0.01 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/lighty> ./build.sh pid=3467 01:55:37 buildlighty: FAIL ✖ in 6.37 seconds 01:55:37 testsPCE: install_deps> python -I -m pip install gnpy4tpce==2.4.7 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:55:37 01:55:37 ------------------------------------ 01:55:37 Your code has been rated at 10.00/10 01:55:37 01:55:38 [INFO] Installing environment for https://github.com/pre-commit/mirrors-prettier. 01:55:38 [INFO] Once installed this environment will be reused. 01:55:38 [INFO] This may take a few minutes... 01:55:41 pylint: OK ✔ in 25.88 seconds 01:55:41 sims: freeze> python -m pip freeze --all 01:55:41 sims: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:55:41 sims: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./install_lightynode.sh 01:55:41 Using lighynode version 22.1.0.7 01:55:41 Installing lightynode device to ./lightynode/lightynode-openroadm-device directory 01:55:42 [INFO] Installing environment for https://github.com/adrienverge/yamllint. 01:55:42 [INFO] Once installed this environment will be reused. 01:55:42 [INFO] This may take a few minutes... 01:55:46 trim trailing whitespace.................................................Passed 01:55:46 fix end of files.........................................................Passed 01:55:46 check for added large files..............................................Passed 01:55:46 check for merge conflicts................................................Passed 01:55:47 check for case conflicts.................................................Passed 01:55:47 check json...............................................................Passed 01:55:47 mixed line ending........................................................Passed 01:55:47 Tabs remover.............................................................Passed 01:55:47 autopep8.................................................................Passed 01:55:49 perltidy.................................................................Passed 01:55:50 ShellCheck v0.11.0.......................................................Passed 01:55:55 prettier.................................................................Passed 01:55:56 yamllint.................................................................Passed 01:55:56 sims: OK ✔ in 8.99 seconds 01:55:56 pre-commit: commands[3] /w/workspace/transportpce-tox-verify-transportpce-master/tests> pre-commit run gitlint-ci --hook-stage manual 01:55:57 [INFO] Installing environment for https://github.com/jorisroovers/gitlint. 01:55:57 [INFO] Once installed this environment will be reused. 01:55:57 [INFO] This may take a few minutes... 01:56:06 gitlint..................................................................Passed 01:56:29 pre-commit: OK ✔ in 57.7 seconds 01:56:29 testsPCE: freeze> python -m pip freeze --all 01:56:29 testsPCE: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,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.66.1,gnpy4tpce==2.4.7,idna==3.20,iniconfig==2.3.1,injector==0.24.0,invoke==3.0.3,itsdangerous==2.2.0,Jinja2==3.1.6,kiwisolver==1.5.1,lxml==6.1.3,MarkupSafe==3.0.4,matplotlib==3.11.2,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.3,pytest==9.1.1,python-dateutil==2.9.0.post0,pytz==2026.5,requests==2.34.2,scipy==1.17.1,setuptools==50.3.2,six==1.17.0,urllib3==2.8.0,Werkzeug==2.0.3,xlrd==1.2.0 01:56:29 testsPCE: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh pce 01:56:29 pytest -q transportpce_tests/pce/test01_pce.py 01:58:30 EEEEEEEEEEEEEEEEEEEE [100%] 01:58:33 ==================================== ERRORS ==================================== 01:58:33 _______ ERROR at setup of TestTransportPCEPce.test_01_load_port_mapping ________ 01:58:33 01:58:33 cls = 01:58:33 01:58:33 @classmethod 01:58:33 def setUpClass(cls): 01:58:33 # pylint: disable=bare-except 01:58:33 sample_files_parsed = False 01:58:33 time.sleep(20) 01:58:33 try: 01:58:33 TOPO_BI_DIR_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 01:58:33 "..", "..", "sample_configs", "honeynode-topo.json") 01:58:33 with open(TOPO_BI_DIR_FILE, 'r', encoding='utf-8') as topo_bi_dir: 01:58:33 cls.simple_topo_bi_dir_data = topo_bi_dir.read() 01:58:33 01:58:33 TOPO_UNI_DIR_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 01:58:33 "..", "..", "sample_configs", "NW-simple-topology.json") 01:58:33 01:58:33 with open(TOPO_UNI_DIR_FILE, 'r', encoding='utf-8') as topo_uni_dir: 01:58:33 cls.simple_topo_uni_dir_data = topo_uni_dir.read() 01:58:33 01:58:33 TOPO_UNI_DIR_COMPLEX_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 01:58:33 "..", "..", "sample_configs", "NW-for-test-5-4.json") 01:58:33 with open(TOPO_UNI_DIR_COMPLEX_FILE, 'r', encoding='utf-8') as topo_uni_dir_complex: 01:58:33 cls.complex_topo_uni_dir_data = topo_uni_dir_complex.read() 01:58:33 PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 01:58:33 "..", "..", "sample_configs", "pce_portmapping_221.json") 01:58:33 with open(PORT_MAPPING_FILE, 'r', encoding='utf-8') as port_mapping: 01:58:33 cls.port_mapping_data = port_mapping.read() 01:58:33 sample_files_parsed = True 01:58:33 except PermissionError as err: 01:58:33 print("Permission Error when trying to read sample files\n", err) 01:58:33 sys.exit(2) 01:58:33 except FileNotFoundError as err: 01:58:33 print("File Not found Error when trying to read sample files\n", err) 01:58:33 sys.exit(2) 01:58:33 except: 01:58:33 print("Unexpected error when trying to read sample files\n", sys.exc_info()[0]) 01:58:33 sys.exit(2) 01:58:33 finally: 01:58:33 if sample_files_parsed: 01:58:33 print("sample files content loaded") 01:58:33 01:58:33 > cls.processes = test_utils.start_tpce() 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 01:58:33 transportpce_tests/pce/test01_pce.py:93: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 def start_tpce(): 01:58:33 if 'NO_ODL_STARTUP' in os.environ: 01:58:33 print('No OpenDaylight instance to start!') 01:58:33 return [] 01:58:33 print('starting OpenDaylight...') 01:58:33 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 01:58:33 process = start_lighty() 01:58:33 else: 01:58:33 process = start_karaf() 01:58:33 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 01:58:33 print('OpenDaylight started !') 01:58:33 else: 01:58:33 print('OpenDaylight failed to start !') 01:58:33 shutdown_process(process) 01:58:33 for pid in process_list: 01:58:33 shutdown_process(pid) 01:58:33 > sys.exit(1) 01:58:33 E SystemExit: 1 01:58:33 01:58:33 transportpce_tests/common/test_utils.py:234: SystemExit 01:58:33 ---------------------------- Captured stdout setup ----------------------------- 01:58:33 sample files content loaded 01:58:33 starting OpenDaylight... 01:58:33 starting KARAF (karaf) TransportPCE build... 01:58:33 Pattern not found after 100 seconds! OpenDaylight failed to start ! 01:58:33 ____ ERROR at setup of TestTransportPCEPce.test_02_load_simple_topology_bi _____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73380> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___________ ERROR at setup of TestTransportPCEPce.test_03_get_nodeId ___________ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb87c40> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___________ ERROR at setup of TestTransportPCEPce.test_04_get_linkId ___________ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb87420> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ____ ERROR at setup of TestTransportPCEPce.test_05_path_computation_xpdr_bi ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73380> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ____ ERROR at setup of TestTransportPCEPce.test_06_path_computation_rdm_bi _____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb871a0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ____ ERROR at setup of TestTransportPCEPce.test_07_load_simple_topology_uni ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb876a0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___________ ERROR at setup of TestTransportPCEPce.test_08_get_nodeId ___________ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ce5b5da0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___________ ERROR at setup of TestTransportPCEPce.test_09_get_linkId ___________ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73ec0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___ ERROR at setup of TestTransportPCEPce.test_10_path_computation_xpdr_uni ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73380> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ____ ERROR at setup of TestTransportPCEPce.test_11_path_computation_rdm_uni ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73ec0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 _____ ERROR at setup of TestTransportPCEPce.test_12_load_complex_topology ______ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ce5b5940> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___________ ERROR at setup of TestTransportPCEPce.test_13_get_nodeId ___________ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb871a0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 _____ ERROR at setup of TestTransportPCEPce.test_14_fail_path_computation ______ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73380> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___ ERROR at setup of TestTransportPCEPce.test_15_success1_path_computation ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ce5b6980> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___ ERROR at setup of TestTransportPCEPce.test_16_success2_path_computation ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb84540> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 ___ ERROR at setup of TestTransportPCEPce.test_17_success3_path_computation ____ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb73380> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 _ ERROR at setup of TestTransportPCEPce.test_18_path_computation_before_oms_attribute_deletion _ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ce5b62a0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 _ ERROR at setup of TestTransportPCEPce.test_19_delete_oms_attribute_in_openroadm13toopenroadm12_link _ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb871a0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 _ ERROR at setup of TestTransportPCEPce.test_20_path_computation_after_oms_attribute_deletion _ 01:58:33 01:58:33 cls = 01:58:33 func = . at 0x7f11ceb842c0> 01:58:33 when = 'setup' 01:58:33 reraise = (, ) 01:58:33 01:58:33 @classmethod 01:58:33 def from_call( 01:58:33 cls, 01:58:33 func: Callable[[], TResult], 01:58:33 when: Literal["collect", "setup", "call", "teardown"], 01:58:33 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 01:58:33 ) -> CallInfo[TResult]: 01:58:33 """Call func, wrapping the result in a CallInfo. 01:58:33 01:58:33 :param func: 01:58:33 The function to call. Called without arguments. 01:58:33 :type func: Callable[[], _pytest.runner.TResult] 01:58:33 :param when: 01:58:33 The phase in which the function is called. 01:58:33 :param reraise: 01:58:33 Exception or exceptions that shall propagate if raised by the 01:58:33 function, instead of being wrapped in the CallInfo. 01:58:33 """ 01:58:33 excinfo = None 01:58:33 instant = timing.Instant() 01:58:33 try: 01:58:33 > result: TResult | None = func() 01:58:33 ^^^^^^ 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:361: 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:250: in 01:58:33 lambda: runtest_hook(item=item, **kwds), 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 01:58:33 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 01:58:33 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 01:58:33 yield 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 01:58:33 return (yield) 01:58:33 ^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 01:58:33 item.session._setupstate.setup(item) 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 01:58:33 col.setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 01:58:33 super().setup() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 01:58:33 self._request._fillfixtures() 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 01:58:33 item.funcargs[argname] = self.getfixturevalue(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 01:58:33 fixturedef = self._get_active_fixturedef(argname) 01:58:33 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 01:58:33 fixturedef.execute(request=subrequest) 01:58:33 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 01:58:33 01:58:33 self = 01:58:33 request = > 01:58:33 01:58:33 def execute(self, request: SubRequest) -> FixtureValue: 01:58:33 """Return the value of this fixture, executing it if not cached.""" 01:58:33 # Ensure that the dependent fixtures requested by this fixture are loaded. 01:58:33 # This needs to be done before checking if we have a cached value, since 01:58:33 # if a dependent fixture has their cache invalidated, e.g. due to 01:58:33 # parametrization, they finalize themselves and fixtures depending on it 01:58:33 # (which will likely include this fixture) setting `self.cached_result = None`. 01:58:33 # See #4871 01:58:33 requested_fixtures_that_should_finalize_us = [] 01:58:33 for argname in self.argnames: 01:58:33 fixturedef = request._get_active_fixturedef(argname) 01:58:33 # Saves requested fixtures in a list so we later can add our finalizer 01:58:33 # to them, ensuring that if a requested fixture gets torn down we get torn 01:58:33 # down first. This is generally handled by SetupState, but still currently 01:58:33 # needed when this fixture is not parametrized but depends on a parametrized 01:58:33 # fixture. 01:58:33 requested_fixtures_that_should_finalize_us.append(fixturedef) 01:58:33 01:58:33 # Check for (and return) cached value/exception. 01:58:33 if self.cached_result is not None: 01:58:33 request_cache_key = self.cache_key(request) 01:58:33 cache_key = self.cached_result[1] 01:58:33 try: 01:58:33 # Attempt to make a normal == check: this might fail for objects 01:58:33 # which do not implement the standard comparison (like numpy arrays -- #6497). 01:58:33 cache_hit = bool(request_cache_key == cache_key) 01:58:33 except (ValueError, RuntimeError): 01:58:33 # If the comparison raises, use 'is' as fallback. 01:58:33 cache_hit = request_cache_key is cache_key 01:58:33 01:58:33 if cache_hit: 01:58:33 if self.cached_result[2] is not None: 01:58:33 exc, exc_tb = self.cached_result[2] 01:58:33 raise exc.with_traceback(exc_tb) 01:58:33 else: 01:58:33 return self.cached_result[0] 01:58:33 # We have a previous but differently parametrized fixture instance 01:58:33 # so we need to tear it down before creating a new one. 01:58:33 self.finish(request) 01:58:33 assert self.cached_result is None 01:58:33 01:58:33 # Add finalizer to requested fixtures we saved previously. 01:58:33 # We make sure to do this after checking for cached value to avoid 01:58:33 # adding our finalizer multiple times. (#12135) 01:58:33 finalizer = functools.partial(self.finish, request=request) 01:58:33 for parent_fixture in requested_fixtures_that_should_finalize_us: 01:58:33 parent_fixture.addfinalizer(finalizer) 01:58:33 01:58:33 # Register the pytest_fixture_post_finalizer as the first finalizer, 01:58:33 # which is executed last. 01:58:33 > assert not self._finalizers 01:58:33 ^^^^^^^^^^^^^^^^^^^^ 01:58:33 E AssertionError 01:58:33 01:58:33 ../.tox/testsPCE/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 01:58:33 =========================== short test summary info ============================ 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_01_load_port_mapping 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_02_load_simple_topology_bi 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_03_get_nodeId 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_04_get_linkId 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_05_path_computation_xpdr_bi 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_06_path_computation_rdm_bi 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_07_load_simple_topology_uni 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_08_get_nodeId 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_09_get_linkId 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_10_path_computation_xpdr_uni 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_11_path_computation_rdm_uni 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_12_load_complex_topology 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_13_get_nodeId 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_14_fail_path_computation 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_15_success1_path_computation 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_16_success2_path_computation 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_17_success3_path_computation 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_18_path_computation_before_oms_attribute_deletion 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_19_delete_oms_attribute_in_openroadm13toopenroadm12_link 01:58:33 ERROR transportpce_tests/pce/test01_pce.py::TestTransportPCEPce::test_20_path_computation_after_oms_attribute_deletion 01:58:33 20 errors in 123.73s (0:02:03) 01:58:33 testsPCE: exit 1 (124.02 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh pce pid=4163 01:58:33 testsPCE: FAIL ✖ in 2 minutes 55.7 seconds 01:58:33 tests_tapi: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 01:58:40 tests_tapi: freeze> python -m pip freeze --all 01:58:40 tests_tapi: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 01:58:40 tests_tapi: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi 01:58:40 using environment variables from ./karaf221.env 01:58:40 pytest -q transportpce_tests/tapi/test01_abstracted_topology.py 02:00:21 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 02:00:30 ==================================== ERRORS ==================================== 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_01_get_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 02:00:30 @classmethod 02:00:30 def setUpClass(cls): 02:00:30 cls.init_failed = False 02:00:30 os.environ['JAVA_MIN_MEM'] = '1024M' 02:00:30 os.environ['JAVA_MAX_MEM'] = '4096M' 02:00:30 > cls.processes = test_utils.start_tpce() 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 02:00:30 transportpce_tests/tapi/test01_abstracted_topology.py:148: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 def start_tpce(): 02:00:30 if 'NO_ODL_STARTUP' in os.environ: 02:00:30 print('No OpenDaylight instance to start!') 02:00:30 return [] 02:00:30 print('starting OpenDaylight...') 02:00:30 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 02:00:30 process = start_lighty() 02:00:30 else: 02:00:30 process = start_karaf() 02:00:30 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 02:00:30 print('OpenDaylight started !') 02:00:30 else: 02:00:30 print('OpenDaylight failed to start !') 02:00:30 shutdown_process(process) 02:00:30 for pid in process_list: 02:00:30 shutdown_process(pid) 02:00:30 > sys.exit(1) 02:00:30 E SystemExit: 1 02:00:30 02:00:30 transportpce_tests/common/test_utils.py:234: SystemExit 02:00:30 ---------------------------- Captured stdout setup ----------------------------- 02:00:30 starting OpenDaylight... 02:00:30 starting KARAF (karaf221) TransportPCE build... 02:00:30 Pattern not found after 100 seconds! OpenDaylight failed to start ! 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_02_get_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a863740> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_03_connect_rdmb ___ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8bbc40> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_04_check_tapi_topos _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_05_disconnect_roadmb _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917c1df060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_06_connect_xpdra __ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8bb100> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_07_check_tapi_topos _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a861b20> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_08_connect_rdma ___ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8bb6a0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_09_connect_rdmc ___ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_10_check_tapi_topos _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8622a0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_11_connect_xpdra_n1_to_roadma_pp1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_12_connect_roadma_pp1_to_xpdra_n1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2020> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_13_check_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_14_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a861a80> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 __ ERROR at setup of TestTransportPCEAbstractedTopology.test_15_connect_xpdrc __ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a25c0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_16_connect_xpdrc_n1_to_roadmc_pp1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_17_connect_roadmc_pp1_to_xpdrc_n1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a862480> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_18_check_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8bb100> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_19_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a862480> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_20_connect_spdr_sa1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_21_connect_spdr_sc1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_22_check_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917cf53060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_23_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1bc0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_24_connect_sprda_n1_to_roadma_pp2 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_25_connect_roadma_pp2_to_spdra_n1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1bc0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_26_connect_sprdc_n1_to_roadmc_pp2 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a0d60> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_27_connect_roadmc_pp2_to_spdrc_n1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_28_check_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a07c0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_29_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2ac0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_30_add_oms_attributes _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_31_create_OCH_OTU4_service _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1300> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_32_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2ac0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_33_create_ODU4_service _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_34_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1a80> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_35_connect_sprda_2_n2_to_roadma_pp3 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2fc0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_36_connect_roadma_pp3_to_spdra_2_n2 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_37_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1e40> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_38_delete_ODU4_service _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_39_delete_OCH_OTU4_service _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2020> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_40_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2340> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_41_disconnect_xponders_from_roadm _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_42_check_tapi_topology_T0 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a2340> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_43_get_tapi_topology_T100G _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a3240> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_44_disconnect_roadma _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_45_disconnect_roadmc _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a3420> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_46_check_tapi_topos _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a3560> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_47_disconnect_xpdra _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_48_disconnect_xpdrc _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a23e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_49_disconnect_spdr_sa1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a1a80> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_50_disconnect_spdr_sc1 _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a8628e0> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 _ ERROR at setup of TestTransportPCEAbstractedTopology.test_51_check_uninstall_Tapi_Feature _ 02:00:30 02:00:30 cls = 02:00:30 func = . at 0x7f917a4a3060> 02:00:30 when = 'setup' 02:00:30 reraise = (, ) 02:00:30 02:00:30 @classmethod 02:00:30 def from_call( 02:00:30 cls, 02:00:30 func: Callable[[], TResult], 02:00:30 when: Literal["collect", "setup", "call", "teardown"], 02:00:30 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:00:30 ) -> CallInfo[TResult]: 02:00:30 """Call func, wrapping the result in a CallInfo. 02:00:30 02:00:30 :param func: 02:00:30 The function to call. Called without arguments. 02:00:30 :type func: Callable[[], _pytest.runner.TResult] 02:00:30 :param when: 02:00:30 The phase in which the function is called. 02:00:30 :param reraise: 02:00:30 Exception or exceptions that shall propagate if raised by the 02:00:30 function, instead of being wrapped in the CallInfo. 02:00:30 """ 02:00:30 excinfo = None 02:00:30 instant = timing.Instant() 02:00:30 try: 02:00:30 > result: TResult | None = func() 02:00:30 ^^^^^^ 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:361: 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:00:30 lambda: runtest_hook(item=item, **kwds), 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:00:30 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:00:30 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:00:30 yield 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:00:30 return (yield) 02:00:30 ^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:00:30 item.session._setupstate.setup(item) 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:00:30 col.setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:00:30 super().setup() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:00:30 self._request._fillfixtures() 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:00:30 item.funcargs[argname] = self.getfixturevalue(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:00:30 fixturedef = self._get_active_fixturedef(argname) 02:00:30 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:00:30 fixturedef.execute(request=subrequest) 02:00:30 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:00:30 02:00:30 self = 02:00:30 request = > 02:00:30 02:00:30 def execute(self, request: SubRequest) -> FixtureValue: 02:00:30 """Return the value of this fixture, executing it if not cached.""" 02:00:30 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:00:30 # This needs to be done before checking if we have a cached value, since 02:00:30 # if a dependent fixture has their cache invalidated, e.g. due to 02:00:30 # parametrization, they finalize themselves and fixtures depending on it 02:00:30 # (which will likely include this fixture) setting `self.cached_result = None`. 02:00:30 # See #4871 02:00:30 requested_fixtures_that_should_finalize_us = [] 02:00:30 for argname in self.argnames: 02:00:30 fixturedef = request._get_active_fixturedef(argname) 02:00:30 # Saves requested fixtures in a list so we later can add our finalizer 02:00:30 # to them, ensuring that if a requested fixture gets torn down we get torn 02:00:30 # down first. This is generally handled by SetupState, but still currently 02:00:30 # needed when this fixture is not parametrized but depends on a parametrized 02:00:30 # fixture. 02:00:30 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:00:30 02:00:30 # Check for (and return) cached value/exception. 02:00:30 if self.cached_result is not None: 02:00:30 request_cache_key = self.cache_key(request) 02:00:30 cache_key = self.cached_result[1] 02:00:30 try: 02:00:30 # Attempt to make a normal == check: this might fail for objects 02:00:30 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:00:30 cache_hit = bool(request_cache_key == cache_key) 02:00:30 except (ValueError, RuntimeError): 02:00:30 # If the comparison raises, use 'is' as fallback. 02:00:30 cache_hit = request_cache_key is cache_key 02:00:30 02:00:30 if cache_hit: 02:00:30 if self.cached_result[2] is not None: 02:00:30 exc, exc_tb = self.cached_result[2] 02:00:30 raise exc.with_traceback(exc_tb) 02:00:30 else: 02:00:30 return self.cached_result[0] 02:00:30 # We have a previous but differently parametrized fixture instance 02:00:30 # so we need to tear it down before creating a new one. 02:00:30 self.finish(request) 02:00:30 assert self.cached_result is None 02:00:30 02:00:30 # Add finalizer to requested fixtures we saved previously. 02:00:30 # We make sure to do this after checking for cached value to avoid 02:00:30 # adding our finalizer multiple times. (#12135) 02:00:30 finalizer = functools.partial(self.finish, request=request) 02:00:30 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:00:30 parent_fixture.addfinalizer(finalizer) 02:00:30 02:00:30 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:00:30 # which is executed last. 02:00:30 > assert not self._finalizers 02:00:30 ^^^^^^^^^^^^^^^^^^^^ 02:00:30 E AssertionError 02:00:30 02:00:30 ../.tox/tests_tapi/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:00:30 =========================== short test summary info ============================ 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_01_get_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_02_get_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_03_connect_rdmb 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_04_check_tapi_topos 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_05_disconnect_roadmb 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_06_connect_xpdra 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_07_check_tapi_topos 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_08_connect_rdma 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_09_connect_rdmc 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_10_check_tapi_topos 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_11_connect_xpdra_n1_to_roadma_pp1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_12_connect_roadma_pp1_to_xpdra_n1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_13_check_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_14_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_15_connect_xpdrc 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_16_connect_xpdrc_n1_to_roadmc_pp1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_17_connect_roadmc_pp1_to_xpdrc_n1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_18_check_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_19_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_20_connect_spdr_sa1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_21_connect_spdr_sc1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_22_check_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_23_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_24_connect_sprda_n1_to_roadma_pp2 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_25_connect_roadma_pp2_to_spdra_n1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_26_connect_sprdc_n1_to_roadmc_pp2 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_27_connect_roadmc_pp2_to_spdrc_n1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_28_check_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_29_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_30_add_oms_attributes 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_31_create_OCH_OTU4_service 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_32_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_33_create_ODU4_service 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_34_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_35_connect_sprda_2_n2_to_roadma_pp3 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_36_connect_roadma_pp3_to_spdra_2_n2 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_37_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_38_delete_ODU4_service 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_39_delete_OCH_OTU4_service 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_40_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_41_disconnect_xponders_from_roadm 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_42_check_tapi_topology_T0 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_43_get_tapi_topology_T100G 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_44_disconnect_roadma 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_45_disconnect_roadmc 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_46_check_tapi_topos 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_47_disconnect_xpdra 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_48_disconnect_xpdrc 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_49_disconnect_spdr_sa1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_50_disconnect_spdr_sc1 02:00:30 ERROR transportpce_tests/tapi/test01_abstracted_topology.py::TestTransportPCEAbstractedTopology::test_51_check_uninstall_Tapi_Feature 02:00:30 51 errors in 109.11s (0:01:49) 02:00:30 tests_tapi: exit 1 (109.39 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh tapi pid=4539 02:00:30 tests_tapi: FAIL ✖ in 1 minute 56.82 seconds 02:00:30 tests200: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 02:00:30 tests221: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 02:00:37 tests221: freeze> python -m pip freeze --all 02:00:37 tests200: freeze> python -m pip freeze --all 02:00:37 tests221: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 02:00:37 tests221: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 02:00:37 using environment variables from ./karaf221.env 02:00:37 pytest -q transportpce_tests/2.2.1/test01_portmapping.py 02:00:37 tests200: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 02:00:37 tests200: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh oc200 02:00:37 using environment variables from ./karafoc200.env 02:00:37 pytest -q transportpce_tests/oc200/test01_portmapping.py 02:02:18 EEEEEEEEEEEEEEEEEEE [100%] 02:02:19 ==================================== ERRORS ==================================== 02:02:19 __ ERROR at setup of TestTransportPCEPortmapping.test_01_meta_data_insertion ___ 02:02:19 02:02:19 cls = 02:02:19 02:02:19 @classmethod 02:02:19 def setUpClass(cls): 02:02:19 > cls.processes = test_utils.start_tpce() 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 02:02:19 transportpce_tests/oc200/test01_portmapping.py:29: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 def start_tpce(): 02:02:19 if 'NO_ODL_STARTUP' in os.environ: 02:02:19 print('No OpenDaylight instance to start!') 02:02:19 return [] 02:02:19 print('starting OpenDaylight...') 02:02:19 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 02:02:19 process = start_lighty() 02:02:19 else: 02:02:19 process = start_karaf() 02:02:19 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 02:02:19 print('OpenDaylight started !') 02:02:19 else: 02:02:19 print('OpenDaylight failed to start !') 02:02:19 shutdown_process(process) 02:02:19 for pid in process_list: 02:02:19 shutdown_process(pid) 02:02:19 > sys.exit(1) 02:02:19 E SystemExit: 1 02:02:19 02:02:19 transportpce_tests/common/test_utils.py:234: SystemExit 02:02:19 ---------------------------- Captured stdout setup ----------------------------- 02:02:19 starting OpenDaylight... 02:02:19 starting KARAF (karafoc200) TransportPCE build... 02:02:19 Pattern not found after 100 seconds! OpenDaylight failed to start ! 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_02_catalog_input_insertion _ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5f11f420> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_03_xpdr_device_connection _ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5ca33ec0> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_04_xpdr_device_connected __ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5e1d3600> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_05_xpdr_portmapping_info __ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5ca0f740> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_06_mpdr_portmapping_NETWORK5 _ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5f11f420> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_07_mpdr_portmapping_CLIENT1 _ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5e1d3600> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 __ ERROR at setup of TestTransportPCEPortmapping.test_08_mpdr_switching_pool ___ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5ca33880> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 ___ ERROR at setup of TestTransportPCEPortmapping.test_09_check_mccapprofile ___ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5ca336a0> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_device_disconnection _ 02:02:19 02:02:19 cls = 02:02:19 func = . at 0x7efe5ca33600> 02:02:19 when = 'setup' 02:02:19 reraise = (, ) 02:02:19 02:02:19 @classmethod 02:02:19 def from_call( 02:02:19 cls, 02:02:19 func: Callable[[], TResult], 02:02:19 when: Literal["collect", "setup", "call", "teardown"], 02:02:19 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:19 ) -> CallInfo[TResult]: 02:02:19 """Call func, wrapping the result in a CallInfo. 02:02:19 02:02:19 :param func: 02:02:19 The function to call. Called without arguments. 02:02:19 :type func: Callable[[], _pytest.runner.TResult] 02:02:19 :param when: 02:02:19 The phase in which the function is called. 02:02:19 :param reraise: 02:02:19 Exception or exceptions that shall propagate if raised by the 02:02:19 function, instead of being wrapped in the CallInfo. 02:02:19 """ 02:02:19 excinfo = None 02:02:19 instant = timing.Instant() 02:02:19 try: 02:02:19 > result: TResult | None = func() 02:02:19 ^^^^^^ 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:19 lambda: runtest_hook(item=item, **kwds), 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:19 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:19 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:19 yield 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:19 return (yield) 02:02:19 ^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:19 item.session._setupstate.setup(item) 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:19 col.setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:19 super().setup() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:19 self._request._fillfixtures() 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:19 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:19 fixturedef = self._get_active_fixturedef(argname) 02:02:19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:19 fixturedef.execute(request=subrequest) 02:02:19 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:19 02:02:19 self = 02:02:19 request = > 02:02:19 02:02:19 def execute(self, request: SubRequest) -> FixtureValue: 02:02:19 """Return the value of this fixture, executing it if not cached.""" 02:02:19 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:19 # This needs to be done before checking if we have a cached value, since 02:02:19 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:19 # parametrization, they finalize themselves and fixtures depending on it 02:02:19 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:19 # See #4871 02:02:19 requested_fixtures_that_should_finalize_us = [] 02:02:19 for argname in self.argnames: 02:02:19 fixturedef = request._get_active_fixturedef(argname) 02:02:19 # Saves requested fixtures in a list so we later can add our finalizer 02:02:19 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:19 # down first. This is generally handled by SetupState, but still currently 02:02:19 # needed when this fixture is not parametrized but depends on a parametrized 02:02:19 # fixture. 02:02:19 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:19 02:02:19 # Check for (and return) cached value/exception. 02:02:19 if self.cached_result is not None: 02:02:19 request_cache_key = self.cache_key(request) 02:02:19 cache_key = self.cached_result[1] 02:02:19 try: 02:02:19 # Attempt to make a normal == check: this might fail for objects 02:02:19 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:19 cache_hit = bool(request_cache_key == cache_key) 02:02:19 except (ValueError, RuntimeError): 02:02:19 # If the comparison raises, use 'is' as fallback. 02:02:19 cache_hit = request_cache_key is cache_key 02:02:19 02:02:19 if cache_hit: 02:02:19 if self.cached_result[2] is not None: 02:02:19 exc, exc_tb = self.cached_result[2] 02:02:19 raise exc.with_traceback(exc_tb) 02:02:19 else: 02:02:19 return self.cached_result[0] 02:02:19 # We have a previous but differently parametrized fixture instance 02:02:19 # so we need to tear it down before creating a new one. 02:02:19 self.finish(request) 02:02:19 assert self.cached_result is None 02:02:19 02:02:19 # Add finalizer to requested fixtures we saved previously. 02:02:19 # We make sure to do this after checking for cached value to avoid 02:02:19 # adding our finalizer multiple times. (#12135) 02:02:19 finalizer = functools.partial(self.finish, request=request) 02:02:19 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:19 parent_fixture.addfinalizer(finalizer) 02:02:19 02:02:19 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:19 # which is executed last. 02:02:19 > assert not self._finalizers 02:02:19 ^^^^^^^^^^^^^^^^^^^^ 02:02:19 E AssertionError 02:02:19 02:02:19 ../.tox/tests200/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:19 =========================== short test summary info ============================ 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_01_meta_data_insertion 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_02_catalog_input_insertion 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_03_xpdr_device_connection 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_04_xpdr_device_connected 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_05_xpdr_portmapping_info 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_06_mpdr_portmapping_NETWORK5 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_07_mpdr_portmapping_CLIENT1 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_08_mpdr_switching_pool 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_09_check_mccapprofile 02:02:19 ERROR transportpce_tests/oc200/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_device_disconnection 02:02:19 10 errors in 101.87s (0:01:41) 02:02:19 Etests200: exit 1 (102.13 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh oc200 pid=4696 02:02:19 Etests200: FAIL ✖ in 1 minute 49.61 seconds 02:02:19 tests71: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 02:02:20 EEEEEEEEEEEEEEEEEEEEEEEE [100%] 02:02:24 ==================================== ERRORS ==================================== 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_01_rdm_device_connection __ 02:02:24 02:02:24 cls = 02:02:24 02:02:24 @classmethod 02:02:24 def setUpClass(cls): 02:02:24 > cls.processes = test_utils.start_tpce() 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 02:02:24 transportpce_tests/2.2.1/test01_portmapping.py:33: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 def start_tpce(): 02:02:24 if 'NO_ODL_STARTUP' in os.environ: 02:02:24 print('No OpenDaylight instance to start!') 02:02:24 return [] 02:02:24 print('starting OpenDaylight...') 02:02:24 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 02:02:24 process = start_lighty() 02:02:24 else: 02:02:24 process = start_karaf() 02:02:24 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 02:02:24 print('OpenDaylight started !') 02:02:24 else: 02:02:24 print('OpenDaylight failed to start !') 02:02:24 shutdown_process(process) 02:02:24 for pid in process_list: 02:02:24 shutdown_process(pid) 02:02:24 > sys.exit(1) 02:02:24 E SystemExit: 1 02:02:24 02:02:24 transportpce_tests/common/test_utils.py:234: SystemExit 02:02:24 ---------------------------- Captured stdout setup ----------------------------- 02:02:24 starting OpenDaylight... 02:02:24 starting KARAF (karaf221) TransportPCE build... 02:02:24 Pattern not found after 100 seconds! OpenDaylight failed to start ! 02:02:24 __ ERROR at setup of TestTransportPCEPortmapping.test_02_rdm_device_connected __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e43100> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 __ ERROR at setup of TestTransportPCEPortmapping.test_03_rdm_portmapping_info __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e432e0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_04_rdm_portmapping_DEG1_TTP_TXRX _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a54557240> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_06_rdm_portmapping_SRG1_PP3_TXRX _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e43100> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_07_rdm_portmapping_SRG3_PP1_TXRX _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_08_xpdr_device_connection _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41120> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_09_xpdr_device_connected __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e82d40> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_portmapping_info __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_11_xpdr_portmapping_NETWORK1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41120> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_12_xpdr_portmapping_XPDR2_NETWORK1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e83f60> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_13_xpdr_portmapping_XPDR1_CLIENT1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_14_xpdr_portmapping_XPDR1_CLIENT2 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_15_spdr_device_connection _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41120> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_16_spdr_device_connected __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_17_spdr_portmapping_info __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e82520> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_18_spdr_switching_pool_1 __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_19_spdr_switching_pool_2 __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e83d80> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_20_spdr_switching_pool_3 __ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41120> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_21_spdr_portmapping_mappings _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_22_spdr_portmapping_XPDR1_CLIENT1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e420c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_23_spdr_portmapping_XPDR1_NETWORK1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41f80> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_24_spdr_portmapping_XPDR2_CLIENT2 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_25_spdr_portmapping_XPDR2_NETWORK2 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e41f80> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_26_spdr_portmapping_XPDR3_CLIENT3 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_27_spdr_portmapping_XPDR3_NETWORK1 _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_28_spdr_device_disconnection _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a53763060> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_29_xpdr_device_disconnected _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e944a0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_30_xpdr_device_disconnection _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_31_xpdr_device_disconnected _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e95800> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_32_xpdr_device_not_connected _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e94540> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_33_rdm_device_disconnection _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_34_rdm_device_disconnected _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e956c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 _ ERROR at setup of TestTransportPCEPortmapping.test_35_rdm_device_not_connected _ 02:02:24 02:02:24 cls = 02:02:24 func = . at 0x7f8a51e839c0> 02:02:24 when = 'setup' 02:02:24 reraise = (, ) 02:02:24 02:02:24 @classmethod 02:02:24 def from_call( 02:02:24 cls, 02:02:24 func: Callable[[], TResult], 02:02:24 when: Literal["collect", "setup", "call", "teardown"], 02:02:24 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:02:24 ) -> CallInfo[TResult]: 02:02:24 """Call func, wrapping the result in a CallInfo. 02:02:24 02:02:24 :param func: 02:02:24 The function to call. Called without arguments. 02:02:24 :type func: Callable[[], _pytest.runner.TResult] 02:02:24 :param when: 02:02:24 The phase in which the function is called. 02:02:24 :param reraise: 02:02:24 Exception or exceptions that shall propagate if raised by the 02:02:24 function, instead of being wrapped in the CallInfo. 02:02:24 """ 02:02:24 excinfo = None 02:02:24 instant = timing.Instant() 02:02:24 try: 02:02:24 > result: TResult | None = func() 02:02:24 ^^^^^^ 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:361: 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:02:24 lambda: runtest_hook(item=item, **kwds), 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:02:24 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:02:24 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:02:24 yield 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:02:24 return (yield) 02:02:24 ^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:02:24 item.session._setupstate.setup(item) 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:02:24 col.setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:02:24 super().setup() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:02:24 self._request._fillfixtures() 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:02:24 item.funcargs[argname] = self.getfixturevalue(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:02:24 fixturedef = self._get_active_fixturedef(argname) 02:02:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:02:24 fixturedef.execute(request=subrequest) 02:02:24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:02:24 02:02:24 self = 02:02:24 request = > 02:02:24 02:02:24 def execute(self, request: SubRequest) -> FixtureValue: 02:02:24 """Return the value of this fixture, executing it if not cached.""" 02:02:24 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:02:24 # This needs to be done before checking if we have a cached value, since 02:02:24 # if a dependent fixture has their cache invalidated, e.g. due to 02:02:24 # parametrization, they finalize themselves and fixtures depending on it 02:02:24 # (which will likely include this fixture) setting `self.cached_result = None`. 02:02:24 # See #4871 02:02:24 requested_fixtures_that_should_finalize_us = [] 02:02:24 for argname in self.argnames: 02:02:24 fixturedef = request._get_active_fixturedef(argname) 02:02:24 # Saves requested fixtures in a list so we later can add our finalizer 02:02:24 # to them, ensuring that if a requested fixture gets torn down we get torn 02:02:24 # down first. This is generally handled by SetupState, but still currently 02:02:24 # needed when this fixture is not parametrized but depends on a parametrized 02:02:24 # fixture. 02:02:24 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:02:24 02:02:24 # Check for (and return) cached value/exception. 02:02:24 if self.cached_result is not None: 02:02:24 request_cache_key = self.cache_key(request) 02:02:24 cache_key = self.cached_result[1] 02:02:24 try: 02:02:24 # Attempt to make a normal == check: this might fail for objects 02:02:24 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:02:24 cache_hit = bool(request_cache_key == cache_key) 02:02:24 except (ValueError, RuntimeError): 02:02:24 # If the comparison raises, use 'is' as fallback. 02:02:24 cache_hit = request_cache_key is cache_key 02:02:24 02:02:24 if cache_hit: 02:02:24 if self.cached_result[2] is not None: 02:02:24 exc, exc_tb = self.cached_result[2] 02:02:24 raise exc.with_traceback(exc_tb) 02:02:24 else: 02:02:24 return self.cached_result[0] 02:02:24 # We have a previous but differently parametrized fixture instance 02:02:24 # so we need to tear it down before creating a new one. 02:02:24 self.finish(request) 02:02:24 assert self.cached_result is None 02:02:24 02:02:24 # Add finalizer to requested fixtures we saved previously. 02:02:24 # We make sure to do this after checking for cached value to avoid 02:02:24 # adding our finalizer multiple times. (#12135) 02:02:24 finalizer = functools.partial(self.finish, request=request) 02:02:24 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:02:24 parent_fixture.addfinalizer(finalizer) 02:02:24 02:02:24 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:02:24 # which is executed last. 02:02:24 > assert not self._finalizers 02:02:24 ^^^^^^^^^^^^^^^^^^^^ 02:02:24 E AssertionError 02:02:24 02:02:24 ../.tox/tests221/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:02:24 =========================== short test summary info ============================ 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_rdm_device_connection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_rdm_device_connected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_rdm_portmapping_info 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_rdm_portmapping_DEG1_TTP_TXRX 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_rdm_portmapping_DEG2_TTP_TXRX_with_ots_oms 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_rdm_portmapping_SRG1_PP3_TXRX 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_07_rdm_portmapping_SRG3_PP1_TXRX 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_08_xpdr_device_connection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_09_xpdr_device_connected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_portmapping_info 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_11_xpdr_portmapping_NETWORK1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_12_xpdr_portmapping_XPDR2_NETWORK1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_13_xpdr_portmapping_XPDR1_CLIENT1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_14_xpdr_portmapping_XPDR1_CLIENT2 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_15_spdr_device_connection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_16_spdr_device_connected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_17_spdr_portmapping_info 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_18_spdr_switching_pool_1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_19_spdr_switching_pool_2 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_20_spdr_switching_pool_3 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_21_spdr_portmapping_mappings 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_22_spdr_portmapping_XPDR1_CLIENT1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_23_spdr_portmapping_XPDR1_NETWORK1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_24_spdr_portmapping_XPDR2_CLIENT2 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_25_spdr_portmapping_XPDR2_NETWORK2 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_26_spdr_portmapping_XPDR3_CLIENT3 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_27_spdr_portmapping_XPDR3_NETWORK1 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_28_spdr_device_disconnection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_29_xpdr_device_disconnected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_30_xpdr_device_disconnection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_31_xpdr_device_disconnected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_32_xpdr_device_not_connected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_33_rdm_device_disconnection 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_34_rdm_device_disconnected 02:02:24 ERROR transportpce_tests/2.2.1/test01_portmapping.py::TestTransportPCEPortmapping::test_35_rdm_device_not_connected 02:02:24 35 errors in 106.24s (0:01:46) 02:02:24 tests221: exit 1 (106.51 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 2.2.1 pid=4685 02:02:24 tests221: FAIL ✖ in 1 minute 53.95 seconds 02:02:24 tests_hybrid: install_deps> python -I -m pip install 'setuptools>=7.0' -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/requirements.txt -r /w/workspace/transportpce-tox-verify-transportpce-master/tests/test-requirements.txt 02:02:27 tests71: freeze> python -m pip freeze --all 02:02:27 tests71: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 02:02:27 tests71: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 02:02:27 using environment variables from ./karaf71.env 02:02:27 pytest -q transportpce_tests/7.1/test01_portmapping.py 02:02:30 tests_hybrid: freeze> python -m pip freeze --all 02:02:30 tests_hybrid: bcrypt==5.0.0,certifi==2026.7.22,cffi==2.1.1,charset-normalizer==3.5.2,cryptography==50.0.2,dict2xml==1.7.8,idna==3.20,iniconfig==2.3.1,invoke==3.0.3,lxml==6.1.3,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.8.0 02:02:30 tests_hybrid: commands[0] /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid 02:02:30 using environment variables from ./karaf221.env 02:02:30 pytest -q transportpce_tests/hybrid/test01_device_change_notifications.py 02:04:08 EEEEEEEEEEEE [100%] 02:04:10 ==================================== ERRORS ==================================== 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_01_xpdr_device_connection _ 02:04:10 02:04:10 cls = 02:04:10 02:04:10 @classmethod 02:04:10 def setUpClass(cls): 02:04:10 > cls.processes = test_utils.start_tpce() 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 02:04:10 transportpce_tests/7.1/test01_portmapping.py:32: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 def start_tpce(): 02:04:10 if 'NO_ODL_STARTUP' in os.environ: 02:04:10 print('No OpenDaylight instance to start!') 02:04:10 return [] 02:04:10 print('starting OpenDaylight...') 02:04:10 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 02:04:10 process = start_lighty() 02:04:10 else: 02:04:10 process = start_karaf() 02:04:10 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 02:04:10 print('OpenDaylight started !') 02:04:10 else: 02:04:10 print('OpenDaylight failed to start !') 02:04:10 shutdown_process(process) 02:04:10 for pid in process_list: 02:04:10 shutdown_process(pid) 02:04:10 > sys.exit(1) 02:04:10 E SystemExit: 1 02:04:10 02:04:10 transportpce_tests/common/test_utils.py:234: SystemExit 02:04:10 ---------------------------- Captured stdout setup ----------------------------- 02:04:10 starting OpenDaylight... 02:04:10 starting KARAF (karaf71) TransportPCE build... 02:04:10 Pattern not found after 100 seconds! OpenDaylight failed to start ! 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_02_xpdr_device_connected __ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3e23f74c0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_03_xpdr_portmapping_info __ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdfa60> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_04_tpdr_portmapping_NETWORK1 _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3e1602fc0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_05_tpdr_portmapping_CLIENT1 _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3e23f72e0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_06_mpdr_portmapping_NETWORK1 _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdf7e0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_07_mpdr_portmapping_CLIENT1 _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3e1602fc0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 ___ ERROR at setup of TestTransportPCEPortmapping.test_08_check_mccapprofile ___ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdfa60> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 __ ERROR at setup of TestTransportPCEPortmapping.test_09_mpdr_switching_pool ___ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdd120> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_10_xpdr_device_disconnection _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdf7e0> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_11_xpdr_device_disconnected _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdf600> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 _ ERROR at setup of TestTransportPCEPortmapping.test_12_xpdr_device_not_connected _ 02:04:10 02:04:10 cls = 02:04:10 func = . at 0x7fe3dfcdd120> 02:04:10 when = 'setup' 02:04:10 reraise = (, ) 02:04:10 02:04:10 @classmethod 02:04:10 def from_call( 02:04:10 cls, 02:04:10 func: Callable[[], TResult], 02:04:10 when: Literal["collect", "setup", "call", "teardown"], 02:04:10 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:10 ) -> CallInfo[TResult]: 02:04:10 """Call func, wrapping the result in a CallInfo. 02:04:10 02:04:10 :param func: 02:04:10 The function to call. Called without arguments. 02:04:10 :type func: Callable[[], _pytest.runner.TResult] 02:04:10 :param when: 02:04:10 The phase in which the function is called. 02:04:10 :param reraise: 02:04:10 Exception or exceptions that shall propagate if raised by the 02:04:10 function, instead of being wrapped in the CallInfo. 02:04:10 """ 02:04:10 excinfo = None 02:04:10 instant = timing.Instant() 02:04:10 try: 02:04:10 > result: TResult | None = func() 02:04:10 ^^^^^^ 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:10 lambda: runtest_hook(item=item, **kwds), 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:10 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:10 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:10 yield 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:10 return (yield) 02:04:10 ^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:10 item.session._setupstate.setup(item) 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:10 col.setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:10 super().setup() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:10 self._request._fillfixtures() 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:10 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:10 fixturedef = self._get_active_fixturedef(argname) 02:04:10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:10 fixturedef.execute(request=subrequest) 02:04:10 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:10 02:04:10 self = 02:04:10 request = > 02:04:10 02:04:10 def execute(self, request: SubRequest) -> FixtureValue: 02:04:10 """Return the value of this fixture, executing it if not cached.""" 02:04:10 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:10 # This needs to be done before checking if we have a cached value, since 02:04:10 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:10 # parametrization, they finalize themselves and fixtures depending on it 02:04:10 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:10 # See #4871 02:04:10 requested_fixtures_that_should_finalize_us = [] 02:04:10 for argname in self.argnames: 02:04:10 fixturedef = request._get_active_fixturedef(argname) 02:04:10 # Saves requested fixtures in a list so we later can add our finalizer 02:04:10 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:10 # down first. This is generally handled by SetupState, but still currently 02:04:10 # needed when this fixture is not parametrized but depends on a parametrized 02:04:10 # fixture. 02:04:10 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:10 02:04:10 # Check for (and return) cached value/exception. 02:04:10 if self.cached_result is not None: 02:04:10 request_cache_key = self.cache_key(request) 02:04:10 cache_key = self.cached_result[1] 02:04:10 try: 02:04:10 # Attempt to make a normal == check: this might fail for objects 02:04:10 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:10 cache_hit = bool(request_cache_key == cache_key) 02:04:10 except (ValueError, RuntimeError): 02:04:10 # If the comparison raises, use 'is' as fallback. 02:04:10 cache_hit = request_cache_key is cache_key 02:04:10 02:04:10 if cache_hit: 02:04:10 if self.cached_result[2] is not None: 02:04:10 exc, exc_tb = self.cached_result[2] 02:04:10 raise exc.with_traceback(exc_tb) 02:04:10 else: 02:04:10 return self.cached_result[0] 02:04:10 # We have a previous but differently parametrized fixture instance 02:04:10 # so we need to tear it down before creating a new one. 02:04:10 self.finish(request) 02:04:10 assert self.cached_result is None 02:04:10 02:04:10 # Add finalizer to requested fixtures we saved previously. 02:04:10 # We make sure to do this after checking for cached value to avoid 02:04:10 # adding our finalizer multiple times. (#12135) 02:04:10 finalizer = functools.partial(self.finish, request=request) 02:04:10 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:10 parent_fixture.addfinalizer(finalizer) 02:04:10 02:04:10 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:10 # which is executed last. 02:04:10 > assert not self._finalizers 02:04:10 ^^^^^^^^^^^^^^^^^^^^ 02:04:10 E AssertionError 02:04:10 02:04:10 ../.tox/tests71/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:10 =========================== short test summary info ============================ 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_01_xpdr_device_connection 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_02_xpdr_device_connected 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_03_xpdr_portmapping_info 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_04_tpdr_portmapping_NETWORK1 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_05_tpdr_portmapping_CLIENT1 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_06_mpdr_portmapping_NETWORK1 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_07_mpdr_portmapping_CLIENT1 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_08_check_mccapprofile 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_09_mpdr_switching_pool 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_10_xpdr_device_disconnection 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_11_xpdr_device_disconnected 02:04:10 ERROR transportpce_tests/7.1/test01_portmapping.py::TestTransportPCEPortmapping::test_12_xpdr_device_not_connected 02:04:10 12 errors in 102.24s (0:01:42) 02:04:10 tests71: exit 1 (102.51 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh 7.1 pid=4823 02:04:11 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%] 02:04:20 ==================================== ERRORS ==================================== 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_01_connect_xpdrA _ 02:04:20 02:04:20 cls = 02:04:20 02:04:20 @classmethod 02:04:20 def setUpClass(cls): 02:04:20 > cls.processes = test_utils.start_tpce() 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 02:04:20 transportpce_tests/hybrid/test01_device_change_notifications.py:76: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 def start_tpce(): 02:04:20 if 'NO_ODL_STARTUP' in os.environ: 02:04:20 print('No OpenDaylight instance to start!') 02:04:20 return [] 02:04:20 print('starting OpenDaylight...') 02:04:20 if 'USE_LIGHTY' in os.environ and os.environ['USE_LIGHTY'] == 'True': 02:04:20 process = start_lighty() 02:04:20 else: 02:04:20 process = start_karaf() 02:04:20 if wait_until_log_contains(TPCE_LOG, [LIGHTY_OK_START_MSG, KARAF_OK_START_MSG], time_to_wait=100): 02:04:20 print('OpenDaylight started !') 02:04:20 else: 02:04:20 print('OpenDaylight failed to start !') 02:04:20 shutdown_process(process) 02:04:20 for pid in process_list: 02:04:20 shutdown_process(pid) 02:04:20 > sys.exit(1) 02:04:20 E SystemExit: 1 02:04:20 02:04:20 transportpce_tests/common/test_utils.py:234: SystemExit 02:04:20 ---------------------------- Captured stdout setup ----------------------------- 02:04:20 starting OpenDaylight... 02:04:20 starting KARAF (karaf221) TransportPCE build... 02:04:20 Pattern not found after 100 seconds! OpenDaylight failed to start ! 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_02_connect_xpdrC _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97136a20> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_03_connect_rdmA _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718bf60> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_04_connect_rdmC _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9982af20> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_05_connect_xpdrA_N1_to_roadmA_PP1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97135440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_06_connect_roadmA_PP1_to_xpdrA_N1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf98a953a0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_07_connect_xpdrC_N1_to_roadmC_PP1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97135440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_08_connect_roadmC_PP1_to_xpdrC_N1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a700> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_09_add_omsAttributes_ROADMA_ROADMC _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a980> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_10_add_omsAttributes_ROADMC_ROADMA _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a700> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_11_create_eth_service1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97135440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_12_get_eth_service1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61940> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_13_change_status_line_port_xpdra _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a700> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_14_check_update_portmapping _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97135440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_15_check_update_openroadm_topo _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61da0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_16_check_update_service1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf97135440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_17_restore_status_line_port_xpdra _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf971358a0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_18_check_update_portmapping_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a8e0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_19_check_update_openroadm_topo_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf971358a0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_20_check_update_service1_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_21_change_status_port_roadma_srg _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718a8e0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_22_check_update_portmapping _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_23_check_update_openroadm_topo _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b620c0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_24_restore_status_port_roadma_srg _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_25_check_update_portmapping_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b620c0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_26_check_update_openroadm_topo_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b60860> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_27_check_update_service1_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_28_change_status_line_port_roadma_deg _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61440> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_29_check_update_portmapping _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61260> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_30_check_update_openroadm_topo _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_31_restore_status_line_port_roadma_srg _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b616c0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_32_check_update_portmapping_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61800> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_33_check_update_openroadm_topo_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_34_check_update_service1_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61d00> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_35_change_status_line_port_xpdrc _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61800> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_36_check_update_portmapping _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_37_check_update_openroadm_topo _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61f80> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_38_restore_status_line_port_xpdrc _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_39_check_update_portmapping_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b60ea0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_40_check_update_openroadm_topo_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61a80> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_41_check_update_service1_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_42_change_status_port_roadma_srg _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61a80> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_43_check_update_portmapping _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b62a20> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_44_check_update_openroadm_topo _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_45_check_update_service1_ok _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b619e0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_46_delete_eth_service1 _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61bc0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_47_disconnect_xponders_from_roadm _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_48_disconnect_XPDRA _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b61f80> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_49_disconnect_XPDRC _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b625c0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_50_disconnect_ROADMA _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf9718ad40> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 _ ERROR at setup of TestTransportPCEDeviceChangeNotifications.test_51_disconnect_ROADMC _ 02:04:20 02:04:20 cls = 02:04:20 func = . at 0x7faf96b622a0> 02:04:20 when = 'setup' 02:04:20 reraise = (, ) 02:04:20 02:04:20 @classmethod 02:04:20 def from_call( 02:04:20 cls, 02:04:20 func: Callable[[], TResult], 02:04:20 when: Literal["collect", "setup", "call", "teardown"], 02:04:20 reraise: type[BaseException] | tuple[type[BaseException], ...] | None = None, 02:04:20 ) -> CallInfo[TResult]: 02:04:20 """Call func, wrapping the result in a CallInfo. 02:04:20 02:04:20 :param func: 02:04:20 The function to call. Called without arguments. 02:04:20 :type func: Callable[[], _pytest.runner.TResult] 02:04:20 :param when: 02:04:20 The phase in which the function is called. 02:04:20 :param reraise: 02:04:20 Exception or exceptions that shall propagate if raised by the 02:04:20 function, instead of being wrapped in the CallInfo. 02:04:20 """ 02:04:20 excinfo = None 02:04:20 instant = timing.Instant() 02:04:20 try: 02:04:20 > result: TResult | None = func() 02:04:20 ^^^^^^ 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:361: 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:250: in 02:04:20 lambda: runtest_hook(item=item, **kwds), 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_hooks.py:512: in __call__ 02:04:20 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/pluggy/_manager.py:120: in _hookexec 02:04:20 return self._inner_hookexec(hook_name, methods, kwargs, firstresult) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/logging.py:858: in pytest_runtest_setup 02:04:20 yield 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/capture.py:895: in pytest_runtest_setup 02:04:20 return (yield) 02:04:20 ^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:170: in pytest_runtest_setup 02:04:20 item.session._setupstate.setup(item) 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/runner.py:536: in setup 02:04:20 col.setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/unittest.py:248: in setup 02:04:20 super().setup() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/python.py:1710: in setup 02:04:20 self._request._fillfixtures() 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:806: in _fillfixtures 02:04:20 item.funcargs[argname] = self.getfixturevalue(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:630: in getfixturevalue 02:04:20 fixturedef = self._get_active_fixturedef(argname) 02:04:20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:726: in _get_active_fixturedef 02:04:20 fixturedef.execute(request=subrequest) 02:04:20 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 02:04:20 02:04:20 self = 02:04:20 request = > 02:04:20 02:04:20 def execute(self, request: SubRequest) -> FixtureValue: 02:04:20 """Return the value of this fixture, executing it if not cached.""" 02:04:20 # Ensure that the dependent fixtures requested by this fixture are loaded. 02:04:20 # This needs to be done before checking if we have a cached value, since 02:04:20 # if a dependent fixture has their cache invalidated, e.g. due to 02:04:20 # parametrization, they finalize themselves and fixtures depending on it 02:04:20 # (which will likely include this fixture) setting `self.cached_result = None`. 02:04:20 # See #4871 02:04:20 requested_fixtures_that_should_finalize_us = [] 02:04:20 for argname in self.argnames: 02:04:20 fixturedef = request._get_active_fixturedef(argname) 02:04:20 # Saves requested fixtures in a list so we later can add our finalizer 02:04:20 # to them, ensuring that if a requested fixture gets torn down we get torn 02:04:20 # down first. This is generally handled by SetupState, but still currently 02:04:20 # needed when this fixture is not parametrized but depends on a parametrized 02:04:20 # fixture. 02:04:20 requested_fixtures_that_should_finalize_us.append(fixturedef) 02:04:20 02:04:20 # Check for (and return) cached value/exception. 02:04:20 if self.cached_result is not None: 02:04:20 request_cache_key = self.cache_key(request) 02:04:20 cache_key = self.cached_result[1] 02:04:20 try: 02:04:20 # Attempt to make a normal == check: this might fail for objects 02:04:20 # which do not implement the standard comparison (like numpy arrays -- #6497). 02:04:20 cache_hit = bool(request_cache_key == cache_key) 02:04:20 except (ValueError, RuntimeError): 02:04:20 # If the comparison raises, use 'is' as fallback. 02:04:20 cache_hit = request_cache_key is cache_key 02:04:20 02:04:20 if cache_hit: 02:04:20 if self.cached_result[2] is not None: 02:04:20 exc, exc_tb = self.cached_result[2] 02:04:20 raise exc.with_traceback(exc_tb) 02:04:20 else: 02:04:20 return self.cached_result[0] 02:04:20 # We have a previous but differently parametrized fixture instance 02:04:20 # so we need to tear it down before creating a new one. 02:04:20 self.finish(request) 02:04:20 assert self.cached_result is None 02:04:20 02:04:20 # Add finalizer to requested fixtures we saved previously. 02:04:20 # We make sure to do this after checking for cached value to avoid 02:04:20 # adding our finalizer multiple times. (#12135) 02:04:20 finalizer = functools.partial(self.finish, request=request) 02:04:20 for parent_fixture in requested_fixtures_that_should_finalize_us: 02:04:20 parent_fixture.addfinalizer(finalizer) 02:04:20 02:04:20 # Register the pytest_fixture_post_finalizer as the first finalizer, 02:04:20 # which is executed last. 02:04:20 > assert not self._finalizers 02:04:20 ^^^^^^^^^^^^^^^^^^^^ 02:04:20 E AssertionError 02:04:20 02:04:20 ../.tox/tests_hybrid/lib/python3.11/site-packages/_pytest/fixtures.py:1221: AssertionError 02:04:20 =========================== short test summary info ============================ 02:04:20 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_01_connect_xpdrA 02:04:20 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_02_connect_xpdrC 02:04:20 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_03_connect_rdmA 02:04:20 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_04_connect_rdmC 02:04:20 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_05_connect_xpdrA_N1_to_roadmA_PP1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_06_connect_roadmA_PP1_to_xpdrA_N1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_07_connect_xpdrC_N1_to_roadmC_PP1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_08_connect_roadmC_PP1_to_xpdrC_N1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_09_add_omsAttributes_ROADMA_ROADMC 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_10_add_omsAttributes_ROADMC_ROADMA 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_11_create_eth_service1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_12_get_eth_service1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_13_change_status_line_port_xpdra 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_14_check_update_portmapping 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_15_check_update_openroadm_topo 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_16_check_update_service1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_17_restore_status_line_port_xpdra 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_18_check_update_portmapping_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_19_check_update_openroadm_topo_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_20_check_update_service1_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_21_change_status_port_roadma_srg 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_22_check_update_portmapping 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_23_check_update_openroadm_topo 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_24_restore_status_port_roadma_srg 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_25_check_update_portmapping_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_26_check_update_openroadm_topo_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_27_check_update_service1_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_28_change_status_line_port_roadma_deg 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_29_check_update_portmapping 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_30_check_update_openroadm_topo 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_31_restore_status_line_port_roadma_srg 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_32_check_update_portmapping_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_33_check_update_openroadm_topo_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_34_check_update_service1_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_35_change_status_line_port_xpdrc 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_36_check_update_portmapping 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_37_check_update_openroadm_topo 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_38_restore_status_line_port_xpdrc 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_39_check_update_portmapping_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_40_check_update_openroadm_topo_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_41_check_update_service1_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_42_change_status_port_roadma_srg 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_43_check_update_portmapping 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_44_check_update_openroadm_topo 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_45_check_update_service1_ok 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_46_delete_eth_service1 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_47_disconnect_xponders_from_roadm 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_48_disconnect_XPDRA 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_49_disconnect_XPDRC 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_50_disconnect_ROADMA 02:04:21 ERROR transportpce_tests/hybrid/test01_device_change_notifications.py::TestTransportPCEDeviceChangeNotifications::test_51_disconnect_ROADMC 02:04:21 51 errors in 110.24s (0:01:50) 02:04:21 tests71: FAIL ✖ in 1 minute 50.36 seconds 02:04:21 tests_hybrid: exit 1 (110.52 seconds) /w/workspace/transportpce-tox-verify-transportpce-master/tests> ./launch_tests.sh hybrid pid=4839 02:04:21 buildcontroller: FAIL code 1 (9.08=setup[8.52]+cmd[0.56] seconds) 02:04:21 sims: OK (8.99=setup[6.35]+cmd[2.64] seconds) 02:04:21 testsPCE: FAIL code 1 (175.70=setup[51.68]+cmd[124.02] seconds) 02:04:21 build_karaf_tests221: FAIL code 127 (7.10=setup[7.09]+cmd[0.01] seconds) 02:04:21 tests_tapi: FAIL code 1 (116.82=setup[7.43]+cmd[109.39] seconds) 02:04:21 tests221: FAIL code 1 (113.95=setup[7.44]+cmd[106.51] seconds) 02:04:21 build_karaf_tests71: FAIL code 127 (6.84=setup[6.84]+cmd[0.00] seconds) 02:04:21 tests71: FAIL code 1 (110.36=setup[7.84]+cmd[102.51] seconds) 02:04:21 build_karaf_tests200: FAIL code 127 (6.30=setup[6.30]+cmd[0.00] seconds) 02:04:21 tests200: FAIL code 1 (109.61=setup[7.48]+cmd[102.13] seconds) 02:04:21 tests_hybrid: FAIL code 1 (116.92=setup[6.40]+cmd[110.52] seconds) 02:04:21 buildlighty: FAIL code 9 (6.36=setup[6.36]+cmd[0.01] seconds) 02:04:21 docs: OK (16.27=setup[13.51]+cmd[2.75] seconds) 02:04:21 docs-linkcheck: OK (18.61=setup[13.72]+cmd[4.89] seconds) 02:04:21 checkbashisms: OK (3.09=setup[1.82]+cmd[0.00,0.05,1.22] seconds) 02:04:21 pre-commit: OK (57.70=setup[2.87]+cmd[0.02,0.01,45.06,9.75] seconds) 02:04:21 pylint: OK (25.88=setup[4.81]+cmd[21.07] seconds) 02:04:21 evaluation failed :( (555.26 seconds) 02:04:21 + tox_status=1 02:04:21 + echo '---> Completed tox runs' 02:04:21 ---> Completed tox runs 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/build_karaf_tests200/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=build_karaf_tests200 02:04:21 + cp -r .tox/build_karaf_tests200/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests200 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/build_karaf_tests221/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=build_karaf_tests221 02:04:21 + cp -r .tox/build_karaf_tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests221 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/build_karaf_tests71/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=build_karaf_tests71 02:04:21 + cp -r .tox/build_karaf_tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/build_karaf_tests71 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/buildcontroller/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=buildcontroller 02:04:21 + cp -r .tox/buildcontroller/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildcontroller 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/buildlighty/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=buildlighty 02:04:21 + cp -r .tox/buildlighty/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/buildlighty 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/checkbashisms/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=checkbashisms 02:04:21 + cp -r .tox/checkbashisms/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/checkbashisms 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/docs-linkcheck/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=docs-linkcheck 02:04:21 + cp -r .tox/docs-linkcheck/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs-linkcheck 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/docs/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=docs 02:04:21 + cp -r .tox/docs/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/docs 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/pre-commit/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=pre-commit 02:04:21 + cp -r .tox/pre-commit/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pre-commit 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/pylint/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=pylint 02:04:21 + cp -r .tox/pylint/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/pylint 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/sims/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=sims 02:04:21 + cp -r .tox/sims/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/sims 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/tests200/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=tests200 02:04:21 + cp -r .tox/tests200/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests200 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/tests221/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=tests221 02:04:21 + cp -r .tox/tests221/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests221 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/tests71/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=tests71 02:04:21 + cp -r .tox/tests71/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests71 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/testsPCE/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=testsPCE 02:04:21 + cp -r .tox/testsPCE/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/testsPCE 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/tests_hybrid/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=tests_hybrid 02:04:21 + cp -r .tox/tests_hybrid/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_hybrid 02:04:21 + for i in .tox/*/log 02:04:21 ++ echo .tox/tests_tapi/log 02:04:21 ++ awk -F/ '{print $2}' 02:04:21 + tox_env=tests_tapi 02:04:21 + cp -r .tox/tests_tapi/log /w/workspace/transportpce-tox-verify-transportpce-master/archives/tox/tests_tapi 02:04:21 + DOC_DIR=docs/_build/html 02:04:21 + [[ -d docs/_build/html ]] 02:04:21 + echo '---> Archiving generated docs' 02:04:21 ---> Archiving generated docs 02:04:21 + mv docs/_build/html /w/workspace/transportpce-tox-verify-transportpce-master/archives/docs 02:04:21 + echo '---> tox-run.sh ends' 02:04:21 ---> tox-run.sh ends 02:04:21 + test 1 -eq 0 02:04:21 + exit 1 02:04:21 ++ '[' 1 = 1 ']' 02:04:21 ++ '[' -x /usr/bin/clear_console ']' 02:04:21 ++ /usr/bin/clear_console -q 02:04:21 Build step 'Execute shell' marked build as failure 02:04:21 $ ssh-agent -k 02:04:21 unset SSH_AUTH_SOCK; 02:04:21 unset SSH_AGENT_PID; 02:04:21 echo Agent pid 1565 killed; 02:04:21 [ssh-agent] Stopped. 02:04:21 [PostBuildScript] - [INFO] Executing post build scripts. 02:04:21 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins13695198322088426094.sh 02:04:21 ---> sysstat.sh 02:04:21 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7656365018936113829.sh 02:04:21 ---> package-listing.sh 02:04:21 + '[' -f /etc/os-release ']' 02:04:21 + . /etc/os-release 02:04:21 ++ PRETTY_NAME='Ubuntu 22.04.5 LTS' 02:04:21 ++ NAME=Ubuntu 02:04:21 ++ VERSION_ID=22.04 02:04:21 ++ VERSION='22.04.5 LTS (Jammy Jellyfish)' 02:04:21 ++ VERSION_CODENAME=jammy 02:04:21 ++ ID=ubuntu 02:04:21 ++ ID_LIKE=debian 02:04:21 ++ HOME_URL=https://www.ubuntu.com/ 02:04:21 ++ SUPPORT_URL=https://help.ubuntu.com/ 02:04:21 ++ BUG_REPORT_URL=https://bugs.launchpad.net/ubuntu/ 02:04:21 ++ PRIVACY_POLICY_URL=https://www.ubuntu.com/legal/terms-and-policies/privacy-policy 02:04:21 ++ UBUNTU_CODENAME=jammy 02:04:21 + case " ${ID:-} ${ID_LIKE:-} " in 02:04:21 + OS_FAMILY=debian 02:04:21 + workspace=/w/workspace/transportpce-tox-verify-transportpce-master 02:04:21 + START_PACKAGES=/tmp/packages_start.txt 02:04:21 + END_PACKAGES=/tmp/packages_end.txt 02:04:21 + DIFF_PACKAGES=/tmp/packages_diff.txt 02:04:21 + PACKAGES=/tmp/packages_start.txt 02:04:21 + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' 02:04:21 + PACKAGES=/tmp/packages_end.txt 02:04:21 + case "${OS_FAMILY}" in 02:04:21 + dpkg -l 02:04:21 + grep '^ii' 02:04:21 + '[' -f /tmp/packages_start.txt ']' 02:04:21 + '[' -f /tmp/packages_end.txt ']' 02:04:21 + diff /tmp/packages_start.txt /tmp/packages_end.txt 02:04:21 + '[' /w/workspace/transportpce-tox-verify-transportpce-master ']' 02:04:21 + mkdir -p /w/workspace/transportpce-tox-verify-transportpce-master/archives/ 02:04:21 + cp -f /tmp/packages_diff.txt /tmp/packages_end.txt /tmp/packages_start.txt /w/workspace/transportpce-tox-verify-transportpce-master/archives/ 02:04:21 + exit 0 02:04:21 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins15801376608417526736.sh 02:04:21 ---> capture-instance-metadata.sh 02:04:21 Setup pyenv: 02:04:21 system 02:04:21 3.8.20 02:04:21 3.9.20 02:04:21 3.10.15 02:04:21 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 02:04:21 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-qkRb from file:/tmp/.os_lf_venv 02:04:21 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 02:04:23 lf-activate-venv(): INFO: Installing additional packages: lftools 02:04:42 lf-activate-venv(): INFO: Adding /tmp/venv-qkRb/bin to PATH 02:04:42 INFO: Running in OpenStack, capturing instance metadata 02:04:42 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins7511029183627207263.sh 02:04:42 provisioning config files... 02:04:43 Could not find credentials [logs] for transportpce-tox-verify-transportpce-master #6144 02:04:43 copy managed file [jenkins-log-archives-settings] to file:/w/workspace/transportpce-tox-verify-transportpce-master@tmp/config1095245739175340196tmp 02:04:43 Regular expression run condition: Expression=[^.*logs-s3.*], Label=[odl-logs-s3-cloudfront-index] 02:04:43 Run condition [Regular expression match] enabling perform for step [Provide Configuration files] 02:04:43 provisioning config files... 02:04:43 copy managed file [jenkins-s3-log-ship] to file:/home/jenkins/.aws/credentials 02:04:43 [EnvInject] - Injecting environment variables from a build step. 02:04:43 [EnvInject] - Injecting as environment variables the properties content 02:04:43 SERVER_ID=logs 02:04:43 02:04:43 [EnvInject] - Variables injected successfully. 02:04:43 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6681196889125683627.sh 02:04:43 ---> create-netrc.sh 02:04:43 WARN: Log server credential not found. 02:04:43 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6922039137449488488.sh 02:04:43 ---> python-tools-install.sh 02:04:43 Setup pyenv: 02:04:44 system 02:04:44 3.8.20 02:04:44 3.9.20 02:04:44 3.10.15 02:04:44 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 02:04:44 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-qkRb from file:/tmp/.os_lf_venv 02:04:44 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 02:04:45 lf-activate-venv(): INFO: Installing additional packages: lftools 02:04:57 lf-activate-venv(): INFO: Adding /tmp/venv-qkRb/bin to PATH 02:04:57 [transportpce-tox-verify-transportpce-master] $ /bin/sh /tmp/jenkins8817457841115145612.sh 02:04:57 ---> uv-install.sh 02:04:57 uv 0.12.23 is already installed 02:04:57 uvx 0.12.23 (x86_64-unknown-linux-gnu) 02:04:57 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins6185881526208658966.sh 02:04:57 ---> sudo-logs.sh 02:04:57 Archiving 'sudo' log.. 02:04:57 [transportpce-tox-verify-transportpce-master] $ /bin/bash /tmp/jenkins11994404834091691088.sh 02:04:57 ---> job-cost.sh 02:04:57 INFO: Activating Python virtual environment... 02:04:57 Setup pyenv: 02:04:57 system 02:04:57 3.8.20 02:04:57 3.9.20 02:04:57 3.10.15 02:04:57 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 02:04:57 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-qkRb from file:/tmp/.os_lf_venv 02:04:57 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 02:04:59 lf-activate-venv(): INFO: Installing additional packages: zipp==1.1.0 python-openstackclient urllib3~=1.26.15 02:05:11 lf-activate-venv(): INFO: Adding /tmp/venv-qkRb/bin to PATH 02:05:11 INFO: No stack-cost file found 02:05:11 INFO: Instance uptime: 730s 02:05:11 INFO: Fetching instance metadata (attempt 1 of 3)... 02:05:11 DEBUG: URL: http://169.254.169.254/latest/meta-data/instance-type 02:05:12 INFO: Successfully fetched instance metadata 02:05:12 INFO: Instance type: v3-standard-4 02:05:12 INFO: Retrieving pricing info for: v3-standard-4 02:05:12 INFO: Fetching Vexxhost pricing API (attempt 1 of 3)... 02:05:12 DEBUG: URL: https://pricing.vexxhost.net/v1/pricing/v3-standard-4/cost?seconds=730 02:05:12 INFO: Successfully fetched Vexxhost pricing API 02:05:12 INFO: Retrieved cost: 0.11 02:05:12 INFO: Retrieved resource: v3-standard-4 02:05:12 INFO: Creating archive directory: /w/workspace/transportpce-tox-verify-transportpce-master/archives/cost 02:05:12 INFO: Archiving costs to: /w/workspace/transportpce-tox-verify-transportpce-master/archives/cost.csv 02:05:12 INFO: Successfully archived job cost data 02:05:12 DEBUG: Cost data: transportpce-tox-verify-transportpce-master,6144,2026-10-08 02:05:12,v3-standard-4,730,0.11,0.00,FAILURE 02:05:12 [transportpce-tox-verify-transportpce-master] $ /bin/bash -l /tmp/jenkins5853380813322161672.sh 02:05:12 ---> logs-deploy.sh 02:05:12 Setup pyenv: 02:05:12 system 02:05:12 3.8.20 02:05:12 3.9.20 02:05:12 3.10.15 02:05:12 * 3.11.10 (set by /w/workspace/transportpce-tox-verify-transportpce-master/.python-version) 02:05:12 lf-activate-venv(): INFO: Reuse venv:/tmp/venv-qkRb from file:/tmp/.os_lf_venv 02:05:12 lf-activate-venv(): INFO: Installing base packages (pip, setuptools, virtualenv) 02:05:15 lf-activate-venv(): INFO: Installing additional packages: lftools urllib3~=1.26.15 02:05:25 lf-activate-venv(): INFO: Adding /tmp/venv-qkRb/bin to PATH 02:05:25 WARNING: Nexus logging server not set 02:05:25 INFO: S3 path logs/releng/vex-yul-odl-jenkins-1/transportpce-tox-verify-transportpce-master/6144/ 02:05:25 INFO: archiving logs to S3 02:05:26 ---> uname -a: 02:05:26 Linux prd-ubuntu2204-docker-4c-16g-62851 5.15.0-198-generic #208-Ubuntu SMP Fri Sep 4 10:22:38 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux 02:05:26 02:05:26 02:05:26 ---> lscpu: 02:05:26 Architecture: x86_64 02:05:26 CPU op-mode(s): 32-bit, 64-bit 02:05:26 Address sizes: 40 bits physical, 48 bits virtual 02:05:26 Byte Order: Little Endian 02:05:26 CPU(s): 4 02:05:26 On-line CPU(s) list: 0-3 02:05:26 Vendor ID: AuthenticAMD 02:05:26 Model name: AMD EPYC-Rome Processor 02:05:26 CPU family: 23 02:05:26 Model: 49 02:05:26 Thread(s) per core: 1 02:05:26 Core(s) per socket: 1 02:05:26 Socket(s): 4 02:05:26 Stepping: 0 02:05:26 BogoMIPS: 5600.00 02:05:26 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 02:05:26 Virtualization: AMD-V 02:05:26 Hypervisor vendor: KVM 02:05:26 Virtualization type: full 02:05:26 L1d cache: 128 KiB (4 instances) 02:05:26 L1i cache: 128 KiB (4 instances) 02:05:26 L2 cache: 2 MiB (4 instances) 02:05:26 L3 cache: 64 MiB (4 instances) 02:05:26 NUMA node(s): 1 02:05:26 NUMA node0 CPU(s): 0-3 02:05:26 Vulnerability Gather data sampling: Not affected 02:05:26 Vulnerability Indirect target selection: Not affected 02:05:26 Vulnerability Itlb multihit: Not affected 02:05:26 Vulnerability L1tf: Not affected 02:05:26 Vulnerability Mds: Not affected 02:05:26 Vulnerability Meltdown: Not affected 02:05:26 Vulnerability Mmio stale data: Not affected 02:05:26 Vulnerability Reg file data sampling: Not affected 02:05:26 Vulnerability Retbleed: Mitigation; untrained return thunk; SMT disabled 02:05:26 Vulnerability Spec rstack overflow: Mitigation; SMT disabled 02:05:26 Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp 02:05:26 Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization 02:05:26 Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected 02:05:26 Vulnerability Srbds: Not affected 02:05:26 Vulnerability Tsa: Not affected 02:05:26 Vulnerability Tsx async abort: Not affected 02:05:26 Vulnerability Vmscape: Not affected 02:05:26 02:05:26 02:05:26 ---> nproc: 02:05:26 4 02:05:26 02:05:26 02:05:26 ---> df -h: 02:05:26 Filesystem Size Used Avail Use% Mounted on 02:05:26 tmpfs 1.6G 1.1M 1.6G 1% /run 02:05:26 /dev/vda1 78G 11G 67G 14% / 02:05:26 tmpfs 7.9G 0 7.9G 0% /dev/shm 02:05:26 tmpfs 5.0M 0 5.0M 0% /run/lock 02:05:26 /dev/vda15 105M 6.1M 99M 6% /boot/efi 02:05:26 tmpfs 1.6G 4.0K 1.6G 1% /run/user/1001 02:05:26 02:05:26 02:05:26 ---> free -m: 02:05:26 total used free shared buff/cache available 02:05:26 Mem: 15989 707 9760 4 5521 14938 02:05:26 Swap: 1023 0 1023 02:05:26 02:05:26 02:05:26 ---> ip addr: 02:05:26 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 02:05:26 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 02:05:26 inet 127.0.0.1/8 scope host lo 02:05:26 valid_lft forever preferred_lft forever 02:05:26 inet6 ::1/128 scope host 02:05:26 valid_lft forever preferred_lft forever 02:05:26 2: ens3: mtu 1458 qdisc mq state UP group default qlen 1000 02:05:26 link/ether fa:16:3e:1a:c6:3b brd ff:ff:ff:ff:ff:ff 02:05:26 altname enp0s3 02:05:26 inet 10.30.171.19/23 metric 100 brd 10.30.171.255 scope global dynamic ens3 02:05:26 valid_lft 85665sec preferred_lft 85665sec 02:05:26 inet6 fe80::f816:3eff:fe1a:c63b/64 scope link 02:05:26 valid_lft forever preferred_lft forever 02:05:26 3: docker0: mtu 1458 qdisc noqueue state DOWN group default 02:05:26 link/ether 32:bf:3e:16:46:b6 brd ff:ff:ff:ff:ff:ff 02:05:26 inet 10.250.0.254/24 brd 10.250.0.255 scope global docker0 02:05:26 valid_lft forever preferred_lft forever 02:05:26 inet6 fe80::30bf:3eff:fe16:46b6/64 scope link 02:05:26 valid_lft forever preferred_lft forever 02:05:26 02:05:26 02:05:26 ---> sar -b -r -n DEV: 02:05:26 Linux 5.15.0-198-generic (prd-ubuntu2204-docker-4c-16g-62851) 10/08/26 _x86_64_ (4 CPU) 02:05:26 02:05:26 01:53:12 LINUX RESTART (4 CPU) 02:05:26 02:05:26 02:05:26 ---> sar -P ALL: 02:05:26 Linux 5.15.0-198-generic (prd-ubuntu2204-docker-4c-16g-62851) 10/08/26 _x86_64_ (4 CPU) 02:05:26 02:05:26 01:53:12 LINUX RESTART (4 CPU) 02:05:26 02:05:26 02:05:26