Your message dated Wed, 20 Mar 2024 18:19:54 +0000
with message-id <e1rn0xa-007zjf...@fasolo.debian.org>
and subject line Bug#1066796: fixed in python-graphviz 0.20.2-1
has caused the Debian Bug report #1066796,
regarding python-graphviz: FTBFS: FileNotFoundError: [Errno 2] No such file or 
directory: PosixPath('doctest-output')
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1066796: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1066796
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: python-graphviz
Version: 0.20.1+20240103-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20240313 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
>  debian/rules binary
> dh binary --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:305: python3.12 setup.py config 
> running config
> I: pybuild base:305: python3.11 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:305: /usr/bin/python3.12 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/piping.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/quoting.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/_tools.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/exceptions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/sources.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/copying.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/dot.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/saving.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/_compat.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/jupyter_integration.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/_defaults.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/encoding.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/rendering.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/unflattening.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> copying graphviz/graphs.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/piping.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/dot_command.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/execute.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/upstream_version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/viewing.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/mixins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/rendering.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> copying graphviz/backend/unflattening.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/formats.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/engines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/mixins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/renderers.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> copying graphviz/parameters/formatters.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters
> I: pybuild base:305: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/piping.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/quoting.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/_tools.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/exceptions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/sources.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/copying.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/dot.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/saving.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/_compat.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/jupyter_integration.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/_defaults.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/encoding.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/rendering.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/unflattening.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> copying graphviz/graphs.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/piping.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/dot_command.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/execute.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/upstream_version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/viewing.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/mixins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/rendering.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> copying graphviz/backend/unflattening.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/formats.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/engines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/mixins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/renderers.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
> copying graphviz/parameters/formatters.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build; python3.12 -m pytest 
> -k 'not test_pipe_pipe_invalid_data_mocked'
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.12.2, pytest-8.0.2, pluggy-1.4.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0, mock-3.12.0, doctestplus-1.2.0
> collected 351 items / 2 deselected / 349 selected
> 
> graphviz/__init__.py::graphviz PASSED                                    [  
> 0%]
> graphviz/_tools.py::graphviz._tools.attach PASSED                        [  
> 0%]
> graphviz/_tools.py::graphviz._tools.mapping_items PASSED                 [  
> 0%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe PASSED          [  
> 1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines PASSED    [  
> 1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines_string PASSED 
> [  1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_string PASSED   [  
> 2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_formats
>  PASSED [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_suffixes
>  PASSED [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.infer_format PASSED 
> [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.render FAILED  [  
> 3%]
> graphviz/backend/upstream_version.py::graphviz.backend.upstream_version.version
>  PASSED [  3%]
> graphviz/graphs.py::graphviz.graphs PASSED                               [  
> 3%]
> graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
>  PASSED [  4%]
> graphviz/piping.py::graphviz.piping.Pipe.pipe PASSED                     [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.a_list PASSED                      [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.attr_list PASSED                   [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.escape PASSED                      [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.nohtml PASSED                      [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.quote PASSED                       [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.quote_edge PASSED                  [  
> 6%]
> graphviz/rendering.py::graphviz.rendering.Render.render PASSED           [  
> 6%]
> tests/backend/test_execute.py::test_missing_executable[render-args0] PASSED [ 
>  6%]
> tests/backend/test_execute.py::test_missing_executable[pipe-args1] PASSED [  
> 6%]
> tests/backend/test_execute.py::test_missing_executable[unflatten-args2] 
> PASSED [  7%]
> tests/backend/test_execute.py::test_missing_executable[version-args3] PASSED 
> [  7%]
> tests/backend/test_execute.py::test_run_check_oserror PASSED             [  
> 7%]
> tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=False]
>  PASSED [  8%]
> tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=True]
>  PASSED [  8%]
> tests/backend/test_execute.py::test_run_check_input_lines_mocked PASSED  [  
> 8%]
> tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False] PASSED [  
> 8%]
> tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True] PASSED  [  
> 9%]
> tests/backend/test_piping.py::test_pipe[dot-svg-None-None-(?s)^<\\?xml 
> .+</svg>\\s*$] PASSED [  9%]
> tests/backend/test_piping.py::test_pipe[dot-ps-ps-core-%!PS-] PASSED     [  
> 9%]
> tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml 
> .+</svg>\\s*$] PASSED [ 10%]
> tests/backend/test_piping.py::test_pipe_mocked[quiet=False] PASSED       [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_mocked[quiet=True] PASSED        [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_string_mocked[quiet=False] PASSED [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_string_mocked[quiet=True] PASSED [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] PASSED [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] PASSED  [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] 
> PASSED [ 12%]
> tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] 
> PASSED [ 12%]
> tests/backend/test_rendering.py::test_render_missing_file[quiet=False] PASSED 
> [ 12%]
> tests/backend/test_rendering.py::test_render_missing_file[quiet=True] PASSED 
> [ 12%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown
>  engine] FAILED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown
>  format] FAILED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args2-ValueError-unknown
>  renderer] PASSED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args3-RequiredArgumentError-without
>  renderer] PASSED [ 14%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args4-ValueError-unknown
>  formatter] PASSED [ 14%]
> tests/backend/test_rendering.py::test_render[dot-pdf-None-None-pdf] PASSED [ 
> 14%]
> tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain]
>  PASSED [ 14%]
> tests/backend/test_rendering.py::test_render_img PASSED                  [ 
> 15%]
> tests/backend/test_rendering.py::test_render_outfile_differnt_parent PASSED [ 
> 15%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=False-None] PASSED 
> [ 15%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=False-dot_sources] 
> PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=True-None] PASSED [ 
> 16%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=True-dot_sources] 
> PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args0-kwargs0-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args1-kwargs1-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args2-kwargs2-RequiredArgumentError-format:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args3-kwargs3-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args4-kwargs4-ValueError-outfile
>  'spam\\.gv' must be different from input file 'spam\\.gv'] PASSED [ 18%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args5-kwargs5-ValueError-overwrite_filepath
>  cannot be combined with raise_if_result_exists] PASSED [ 18%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args6-kwargs6-FileExistsError-output
>  file exists: 'spam.png'] PASSED [ 18%]
> tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs0-spam.gv.pdf]
>  PASSED [ 18%]
> tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs1-spam.gv.dot.plain]
>  PASSED [ 19%]
> tests/backend/test_rendering.py::test_get_filepath[spam.pdf-spam.gv] PASSED [ 
> 19%]
> tests/backend/test_rendering.py::test_get_filepath[spam-spam.gv] PASSED  [ 
> 19%]
> tests/backend/test_rendering.py::test_get_format[spam.gv.pdf-None-pdf] PASSED 
> [ 20%]
> tests/backend/test_rendering.py::test_get_format[spam.jpeg-None-jpeg] PASSED 
> [ 20%]
> tests/backend/test_rendering.py::test_get_format[spam.SVG-None-svg] PASSED [ 
> 20%]
> tests/backend/test_rendering.py::test_get_format[spam.pdf-None-pdf] PASSED [ 
> 20%]
> tests/backend/test_rendering.py::test_get_format[spam.pdf-pdf-pdf] PASSED [ 
> 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.jpg-jpeg-jpeg-FormatSuffixMismatchWarning-expected
>  format 'jpg' from outfile differs from given format: 'jpeg'] PASSED [ 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.dot-plain-plain-FormatSuffixMismatchWarning-expected
>  format 'dot' from outfile differs from given format: 'plain'] PASSED [ 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam-svg-svg-UnknownSuffixWarning-unknown
>  outfile suffix '' \\(expected: '\\.svg'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.peng-png-png-UnknownSuffixWarning-unknown
>  outfile suffix '.peng' \\(expected: '\\.png'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_warns[spam-pdf-pdf-UnknownSuffixWarning-unknown
>  outfile suffix '' \\(expected: '\\.pdf'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_raises[spam-RequiredArgumentError-cannot
>  infer rendering format from suffix '' of outfile: 'spam'] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_raises[spam.peng-RequiredArgumentError-cannot
>  infer rendering format from suffix '.peng' of outfile: 'spam.peng'] PASSED [ 
> 23%]
> tests/backend/test_rendering.py::test_get_format_raises[spam.wav-RequiredArgumentError-cannot
>  infer rendering format from suffix '.wav' of outfile: 'spam.wav'] PASSED [ 
> 23%]
> tests/backend/test_unflattening.py::test_unflatten_stagger_missing PASSED [ 
> 23%]
> tests/backend/test_unflattening.py::test_unflatten[digraph {1 -> 2; 1 -> 3; 1 
> -> 4}-kwargs0-digraph { 1 -> 2 [minlen=1]; 1 -> 3 [minlen=2]; 1 -> 4 
> [minlen=3]; }] PASSED [ 24%]
> tests/backend/test_unflattening.py::test_unflatten_mocked PASSED         [ 
> 24%]
> tests/backend/test_upstream_version.py::test_version PASSED              [ 
> 24%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 1.2.3 (mocked)-expected0] PASSED [ 24%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.43.20190912.0211 (20190912.0211)\n-expected1] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.2~dev.20200927.0217 (20200927.0217)\n-expected2] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.1 (mocked)\n-expected3] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.2~dev.20200704.1652 (mocked)\n-expected4] PASSED [ 26%]
> tests/backend/test_upstream_version.py::test_version_parsefail_mocked PASSED 
> [ 26%]
> tests/backend/test_viewing.py::test_view_unknown_platform PASSED         [ 
> 26%]
> tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False]
>  PASSED [ 26%]
> tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=True] 
> PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False]
>  PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True]
>  PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] 
> PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] 
> PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False]
>  PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True]
>  PASSED [ 28%]
> tests/test_all_classes.py::test_copy[Graph] PASSED                       [ 
> 29%]
> tests/test_all_classes.py::test_copy[Digraph] PASSED                     [ 
> 29%]
> tests/test_all_classes.py::test_copy[Source] PASSED                      [ 
> 29%]
> tests/test_all_classes.py::test_str[Graph] PASSED                        [ 
> 30%]
> tests/test_all_classes.py::test_str[Digraph] PASSED                      [ 
> 30%]
> tests/test_all_classes.py::test_str[Source] PASSED                       [ 
> 30%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-engine-ValueError-unknown
>  engine] PASSED [ 30%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-format-ValueError-unknown
>  format] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-renderer-ValueError-unknown
>  renderer] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-formatter-ValueError-unknown
>  formatter] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-encoding-LookupError-encoding]
>  PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-engine-ValueError-unknown
>  engine] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-format-ValueError-unknown
>  format] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-renderer-ValueError-unknown
>  renderer] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-formatter-ValueError-unknown
>  formatter] PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-encoding-LookupError-encoding]
>  PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-engine-ValueError-unknown
>  engine] PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-format-ValueError-unknown
>  format] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-renderer-ValueError-unknown
>  renderer] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-formatter-ValueError-unknown
>  formatter] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-encoding-LookupError-encoding]
>  PASSED [ 34%]
> tests/test_all_classes.py::test_encoding_none[Graph] PASSED              [ 
> 35%]
> tests/test_all_classes.py::test_encoding_none[Digraph] PASSED            [ 
> 35%]
> tests/test_all_classes.py::test_encoding_none[Source] PASSED             [ 
> 35%]
> tests/test_all_classes.py::test_render_raises_before_save[Graph-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save[Digraph-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs0]
>  PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs1]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs2]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs3]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs0]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs1]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs2]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs3]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3]
>  PASSED [ 40%]
> tests/test_all_classes.py::test_render_mocked[Graph] PASSED              [ 
> 40%]
> tests/test_all_classes.py::test_render_mocked[Digraph] PASSED            [ 
> 40%]
> tests/test_all_classes.py::test_render_mocked[Source] PASSED             [ 
> 40%]
> tests/test_all_classes.py::test_render_outfile_mocked[Graph] PASSED      [ 
> 41%]
> tests/test_all_classes.py::test_render_outfile_mocked[Digraph] PASSED    [ 
> 41%]
> tests/test_all_classes.py::test_render_outfile_mocked[Source] PASSED     [ 
> 41%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Graph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Digraph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Graph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Digraph]
>  PASSED [ 43%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source]
>  PASSED [ 43%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-None] 
> PASSED [ 43%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-False] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-True] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-0] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-1] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-2] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-None] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-False] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-True] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-0] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-1] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-2] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-None] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-False] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-True] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-0] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-1] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-2] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-None] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-False] 
> PASSED [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-True] 
> PASSED [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-0] PASSED 
> [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-1] PASSED 
> [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-2] PASSED 
> [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-None] 
> PASSED [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-False] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-True] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-0] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-1] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-2] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-None] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-False] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-True] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-0] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-1] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-2] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_save_mocked[Graph] PASSED                [ 
> 54%]
> tests/test_all_classes.py::test_save_mocked[Digraph] PASSED              [ 
> 54%]
> tests/test_all_classes.py::test_save_mocked[Source] PASSED               [ 
> 54%]
> tests/test_all_classes.py::test_pipe[Graph] PASSED                       [ 
> 55%]
> tests/test_all_classes.py::test_pipe[Digraph] PASSED                     [ 
> 55%]
> tests/test_all_classes.py::test_pipe[Source] PASSED                      [ 
> 55%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-None] PASSED [ 
> 55%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-ascii] PASSED [ 
> 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-utf-8] PASSED [ 
> 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-None] PASSED 
> [ 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-ascii] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-utf-8] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-None] PASSED [ 
> 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-ascii] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-utf-8] PASSED 
> [ 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-None] PASSED [ 
> 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-ascii] PASSED [ 
> 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-utf-8] PASSED [ 
> 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-None] PASSED [ 
> 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-ascii] PASSED 
> [ 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-utf-8] PASSED 
> [ 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-None] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-ascii] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-utf-8] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Graph] PASSED          [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Digraph] PASSED        [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Source] PASSED         [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Graph] PASSED 
> [ 61%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Digraph] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Source] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Graph] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Digraph]
>  PASSED [ 63%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source]
>  PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Graph] 
> PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Digraph] 
> PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Source] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Graph] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Digraph] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Source] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Graph] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Digraph] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Source] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_unflatten[Graph] PASSED                  [ 
> 66%]
> tests/test_all_classes.py::test_unflatten[Digraph] PASSED                [ 
> 66%]
> tests/test_all_classes.py::test_unflatten[Source] PASSED                 [ 
> 66%]
> tests/test_all_classes.py::test_unflatten_mocked[Graph] PASSED           [ 
> 67%]
> tests/test_all_classes.py::test_unflatten_mocked[Digraph] PASSED         [ 
> 67%]
> tests/test_all_classes.py::test_unflatten_mocked[Source] PASSED          [ 
> 67%]
> tests/test_all_classes.py::test_view_mocked[Graph] PASSED                [ 
> 67%]
> tests/test_all_classes.py::test_view_mocked[Digraph] PASSED              [ 
> 68%]
> tests/test_all_classes.py::test_view_mocked[Source] PASSED               [ 
> 68%]
> tests/test_all_classes.py::test__view_unknown_platform[Graph] PASSED     [ 
> 68%]
> tests/test_all_classes.py::test__view_unknown_platform[Digraph] PASSED   [ 
> 69%]
> tests/test_all_classes.py::test__view_unknown_platform[Source] PASSED    [ 
> 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Graph] PASSED 
> [ 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Digraph] 
> PASSED [ 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Source] PASSED 
> [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Graph] PASSED 
> [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Digraph] 
> PASSED [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Source] 
> PASSED [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Graph] PASSED [ 
> 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Digraph] PASSED 
> [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Source] PASSED 
> [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Graph] PASSED 
> [ 72%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Digraph] 
> PASSED [ 72%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Source] 
> PASSED [ 72%]
> tests/test_graphs.py::test_init_filename[Graph] PASSED                   [ 
> 73%]
> tests/test_graphs.py::test_init_filename[Digraph] PASSED                 [ 
> 73%]
> tests/test_graphs.py::test_init_body[Graph-...-...] PASSED               [ 
> 73%]
> tests/test_graphs.py::test_init_body[Digraph-...-...] PASSED             [ 
> 73%]
> tests/test_graphs.py::test_subgraph_render[Graph-...] PASSED             [ 
> 74%]
> tests/test_graphs.py::test_subgraph_render[Digraph-...] PASSED           [ 
> 74%]
> tests/test_graphs.py::test_clear[Graph-False] PASSED                     [ 
> 74%]
> tests/test_graphs.py::test_clear[Graph-True] PASSED                      [ 
> 75%]
> tests/test_graphs.py::test_clear[Digraph-False] PASSED                   [ 
> 75%]
> tests/test_graphs.py::test_clear[Digraph-True] PASSED                    [ 
> 75%]
> tests/test_graphs.py::test_iter_subgraph_strict[Graph] PASSED            [ 
> 75%]
> tests/test_graphs.py::test_iter_subgraph_strict[Digraph] PASSED          [ 
> 76%]
> tests/test_graphs.py::test_iter_strict[Graph-...] PASSED                 [ 
> 76%]
> tests/test_graphs.py::test_iter_strict[Digraph-...] PASSED               [ 
> 76%]
> tests/test_graphs.py::test_attr_invalid_kw[Graph] PASSED                 [ 
> 77%]
> tests/test_graphs.py::test_attr_invalid_kw[Digraph] PASSED               [ 
> 77%]
> tests/test_graphs.py::test_attr_kw_none[Graph-...] PASSED                [ 
> 77%]
> tests/test_graphs.py::test_attr_kw_none[Digraph-...] PASSED              [ 
> 77%]
> tests/test_graphs.py::test_escaped_quotes_and_escapes[Graph-...] PASSED  [ 
> 78%]
> tests/test_graphs.py::test_escaped_quotes_and_escapes[Digraph-...] PASSED [ 
> 78%]
> tests/test_graphs.py::test_subgraph_graph_none[Graph-...] PASSED         [ 
> 78%]
> tests/test_graphs.py::test_subgraph_graph_none[Digraph-...] PASSED       [ 
> 79%]
> tests/test_graphs.py::test_subgraph_graph_notsole[Graph] PASSED          [ 
> 79%]
> tests/test_graphs.py::test_subgraph_graph_notsole[Digraph] PASSED        [ 
> 79%]
> tests/test_graphs.py::test_subgraph_mixed[Graph, Digraph] PASSED         [ 
> 79%]
> tests/test_graphs.py::test_subgraph_mixed[Digraph, Graph] PASSED         [ 
> 80%]
> tests/test_graphs.py::test_subgraph_reflexive[Graph-...] PASSED          [ 
> 80%]
> tests/test_graphs.py::test_subgraph_reflexive[Digraph-...] PASSED        [ 
> 80%]
> tests/test_graphs.py::test_subgraph PASSED                               [ 
> 81%]
> tests/test_graphs.py::test_label_html PASSED                             [ 
> 81%]
> tests/test_init.py::test_set_default_engine_invalid PASSED               [ 
> 81%]
> tests/test_init.py::test_set_default_format_invalid PASSED               [ 
> 81%]
> tests/test_init.py::test_set_default_engine PASSED                       [ 
> 82%]
> tests/test_init.py::test_set_default_format PASSED                       [ 
> 82%]
> tests/test_init.py::test_set_jupyter_format PASSED                       [ 
> 82%]
> tests/test_jupyter_integration.py::test_get_jupyter_format_mimetype_invalid_raises_unknown
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_normalizes
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_raises_unsupported
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding PASSED [ 
> 83%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[utf-8]
>  PASSED [ 84%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[ascii]
>  PASSED [ 84%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[latin1]
>  PASSED [ 84%]
> tests/test_parameters.py::test_parameters[Graph] PASSED                  [ 
> 85%]
> tests/test_parameters.py::test_parameters[Digraph] PASSED                [ 
> 85%]
> tests/test_parameters.py::test_parameters[Source] PASSED                 [ 
> 85%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_engine] 
> PASSED [ 85%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_format] 
> PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_renderer]
>  PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_formatter]
>  PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_engine]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_format]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_renderer]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_formatter]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_engine]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_format]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_renderer]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_formatter]
>  PASSED [ 89%]
> tests/test_quoting.py::test_deprecated_escape[G] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[E] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[T] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[H] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_deprecated_escape[L] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_deprecated_escape[l] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_quote["spam"-"\\"spam\\""] PASSED            [ 
> 91%]
> tests/test_quoting.py::test_quote[node-"node"] PASSED                    [ 
> 91%]
> tests/test_quoting.py::test_quote[EDGE-"EDGE"] PASSED                    [ 
> 91%]
> tests/test_quoting.py::test_quote[Graph-"Graph"] PASSED                  [ 
> 91%]
> tests/test_quoting.py::test_quote[\\G \\N \\E \\T \\H \\L-"\\G \\N \\E \\T 
> \\H \\L"] PASSED [ 92%]
> tests/test_quoting.py::test_quote[\\n \\l \\r-"\\n \\l \\r"] PASSED      [ 
> 92%]
> tests/test_quoting.py::test_quote[\r\n-"\r\n"] PASSED                    [ 
> 92%]
> tests/test_quoting.py::test_quote[\\\\n-"\\\\n"] PASSED                  [ 
> 93%]
> tests/test_quoting.py::test_quote[\u0665.\u0660-"\u0665.\u0660"] PASSED  [ 
> 93%]
> tests/test_quoting.py::test_quote[\\"spam-"\\"spam"] PASSED              [ 
> 93%]
> tests/test_quoting.py::test_quote[\\\\"spam-"\\\\\\"spam"] PASSED        [ 
> 93%]
> tests/test_quoting.py::test_quote[\\\\\\"spam-"\\\\\\"spam"] PASSED      [ 
> 94%]
> tests/test_quoting.py::test_quote[\\\\\\\\"spam-"\\\\\\\\\\"spam"] PASSED [ 
> 94%]
> tests/test_quoting.py::test_attr_list[attributes0- [spam=eggs]] PASSED   [ 
> 94%]
> tests/test_quoting.py::test_attr_list[attributes1- [spam=eggs]] PASSED   [ 
> 95%]
> tests/test_quoting.py::test_nohtml[spam-spam-spam] PASSED                [ 
> 95%]
> tests/test_quoting.py::test_nohtml[<>-*-<>-<>-*-<>-"<>-*-<>"] PASSED     [ 
> 95%]
> tests/test_saving.py::test_saves_source_from_file PASSED                 [ 
> 95%]
> tests/test_sources.py::test_source_parameter[engine] PASSED              [ 
> 96%]
> tests/test_sources.py::test_source_parameter[format] PASSED              [ 
> 96%]
> tests/test_sources.py::test_source_parameter[encoding] PASSED            [ 
> 96%]
> tests/test_sources.py::test_init PASSED                                  [ 
> 97%]
> tests/test_sources.py::test_init_filename PASSED                         [ 
> 97%]
> tests/test_sources.py::test_filepath PASSED                              [ 
> 97%]
> tests/test_sources.py::test_from_file PASSED                             [ 
> 97%]
> tests/test_sources.py::test_source_iter PASSED                           [ 
> 98%]
> tests/test_tools.py::test_mkdirs_invalid PASSED                          [ 
> 98%]
> tests/test_tools.py::test_mkdirs PASSED                                  [ 
> 98%]
> tests/test_tools.py::test_deprecate_positional_args[FutureWarning- 
> third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[DeprecationWarning- 
> third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[PendingDeprecationWarning-
>  third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[None-None] PASSED    
> [100%]
> 
> =================================== FAILURES 
> ===================================
> _________________ [doctest] graphviz.backend.rendering.render 
> __________________
> 250         graphviz.UnknownSuffixWarning: If the suffix of ``outfile``
> 251             is empty or unknown.
> 252         graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile``
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> UNEXPECTED EXCEPTION: FileNotFoundError(2, 'No such file or directory')
> Traceback (most recent call last):
>   File "/usr/lib/python3.12/doctest.py", line 1361, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[3]>", line 1, in <module>
>   File "/usr/lib/python3.12/pathlib.py", line 1049, in write_text
>     with self.open(mode='w', encoding=encoding, errors=errors, 
> newline=newline) as f:
>          
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/pathlib.py", line 1015, in open
>     return io.open(self, mode, buffering, encoding, errors, newline)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> FileNotFoundError: [Errno 2] No such file or directory: 
> 'doctest-output/spam.gv'
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:259:
>  UnexpectedException
> 251             is empty or unknown.
> 252         graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile``
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.12/doctest.py", line 1361, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[4]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:260:
>  UnexpectedException
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> 261         'doctest-output/spam.gv.png'
> 262         >>> graphviz.render('dot', filepath='doctest-output/spam.gv',
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.12/doctest.py", line 1361, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[5]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:262:
>  UnexpectedException
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> 261         'doctest-output/spam.gv.png'
> 262         >>> graphviz.render('dot', filepath='doctest-output/spam.gv',
> 263         ...                 
> outfile='doctest-output/spam.png').replace('\\', '/')
> 264         'doctest-output/spam.png'
> 265         >>> graphviz.render('dot', 
> outfile='doctest-output/spam.pdf').replace('\\', '/')
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.12/doctest.py", line 1361, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[6]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:265:
>  UnexpectedException
> ------------------------------ Captured log call 
> -------------------------------
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpng', '-O', 'spam.gv']
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpng', '-o', 'spam.png', 'spam.gv']
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpdf', '-o', 'spam.pdf', 'spam.gv']
> ____ test_render_unknown_parameter_raises[args0-ValueError-unknown engine] 
> _____
> 
> args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown engine'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
>         with pytest.raises(expected_exception, match=match), 
> pytest.deprecated_call():
> >           graphviz.render(*args)
> 
> tests/backend/test_rendering.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> graphviz/_tools.py:171: in wrapper
>     return func(*args, **kwargs)
> graphviz/backend/rendering.py:314: in render
>     cmd = dot_command.command(engine, format,
> graphviz/backend/dot_command.py:31: in command
>     parameters.verify_engine(engine, required=True)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> engine = ''
> 
>     def verify_engine(engine: str, *, required: bool = REQUIRED) -> None:
>         if engine is None:
>             if required:
>                 raise ValueError('missing engine')
>         elif engine.lower() not in ENGINES:
> >           raise ValueError(f'unknown engine: {engine!r}'
>                              f' (must be one of {sorted(ENGINES)})')
> E           ValueError: unknown engine: '' (must be one of ['circo', 'dot', 
> 'fdp', 'neato', 'osage', 'patchwork', 'sfdp', 'twopi'])
> 
> graphviz/parameters/engines.py:28: ValueError
> 
> During handling of the above exception, another exception occurred:
> 
> args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown engine'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
> >       with pytest.raises(expected_exception, match=match), 
> > pytest.deprecated_call():
> E       Failed: DID NOT WARN. No warnings of type (<class 
> 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 
> 'FutureWarning'>) were emitted.
> E        Emitted warnings: [].
> 
> tests/backend/test_rendering.py:39: Failed
> ____ test_render_unknown_parameter_raises[args1-ValueError-unknown format] 
> _____
> 
> args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown format'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
>         with pytest.raises(expected_exception, match=match), 
> pytest.deprecated_call():
> >           graphviz.render(*args)
> 
> tests/backend/test_rendering.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> graphviz/_tools.py:171: in wrapper
>     return func(*args, **kwargs)
> graphviz/backend/rendering.py:307: in render
>     outfile = get_outfile(filepath,
> graphviz/backend/rendering.py:142: in get_outfile
>     parameters.verify_format(format, required=True)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> format = ''
> 
>     def verify_format(format: str, *, required: bool = REQUIRED) -> None:
>         if format is None:
>             if required:
>                 raise ValueError('missing format')
>         elif format.lower() not in FORMATS:
> >           raise ValueError(f'unknown format: {format!r}'
>                              f' (must be one of {sorted(FORMATS)})')
> E           ValueError: unknown format: '' (must be one of ['bmp', 'canon', 
> 'cgimage', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'dot_json', 'eps', 'exr', 
> 'fig', 'gd', 'gd2', 'gif', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap', 
> 'jp2', 'jpe', 'jpeg', 'jpg', 'json', 'json0', 'pct', 'pdf', 'pic', 'pict', 
> 'plain', 'plain-ext', 'png', 'pov', 'ps', 'ps2', 'psd', 'sgi', 'svg', 'svgz', 
> 'tga', 'tif', 'tiff', 'tk', 'vml', 'vmlz', 'vrml', 'wbmp', 'webp', 'x11', 
> 'xdot', 'xdot1.2', 'xdot1.4', 'xdot_json', 'xlib'])
> 
> graphviz/parameters/formats.py:56: ValueError
> 
> During handling of the above exception, another exception occurred:
> 
> args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown format'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
> >       with pytest.raises(expected_exception, match=match), 
> > pytest.deprecated_call():
> E       Failed: DID NOT WARN. No warnings of type (<class 
> 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 
> 'FutureWarning'>) were emitted.
> E        Emitted warnings: [].
> 
> tests/backend/test_rendering.py:39: Failed
> 
> ---------- coverage: platform linux, python 3.12.2-final-0 -----------
> Name                                                                        
> Stmts   Miss  Cover
> -----------------------------------------------------------------------------------------------
> /<<PKGBUILDDIR>>/conftest.py      23      2    91%
> /usr/lib/python3/dist-packages/_distutils_hack/__init__.py                    
> 100     95     5%
> /usr/lib/python3/dist-packages/_pytest/_argcomplete.py                        
>  37     36     3%
> /usr/lib/python3/dist-packages/_pytest/_code/code.py                          
> 754    516    32%
> /usr/lib/python3/dist-packages/_pytest/_code/source.py                        
> 145     78    46%
> /usr/lib/python3/dist-packages/_pytest/_io/saferepr.py                        
>  67     49    27%
> /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py                  
> 126     80    37%
> /usr/lib/python3/dist-packages/_pytest/_io/wcwidth.py                         
>  25     16    36%
> /usr/lib/python3/dist-packages/_pytest/_py/path.py                            
> 948    943     1%
> /usr/lib/python3/dist-packages/_pytest/assertion/__init__.py                  
>  88     74    16%
> /usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py                   
> 663    342    48%
> /usr/lib/python3/dist-packages/_pytest/cacheprovider.py                       
> 316    265    16%
> /usr/lib/python3/dist-packages/_pytest/capture.py                             
> 607    450    26%
> /usr/lib/python3/dist-packages/_pytest/compat.py                              
> 127     79    38%
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py                     
> 917    731    20%
> /usr/lib/python3/dist-packages/_pytest/config/argparsing.py                   
> 271    191    30%
> /usr/lib/python3/dist-packages/_pytest/config/compat.py                       
>  44     22    50%
> /usr/lib/python3/dist-packages/_pytest/debugging.py                           
> 230    221     4%
> /usr/lib/python3/dist-packages/_pytest/deprecated.py                          
>  26     25     4%
> /usr/lib/python3/dist-packages/_pytest/doctest.py                             
> 355    189    47%
> /usr/lib/python3/dist-packages/_pytest/faulthandler.py                        
>  58     43    26%
> /usr/lib/python3/dist-packages/_pytest/fixtures.py                            
> 809    428    47%
> /usr/lib/python3/dist-packages/_pytest/helpconfig.py                          
> 135    125     7%
> /usr/lib/python3/dist-packages/_pytest/junitxml.py                            
> 367    365     1%
> /usr/lib/python3/dist-packages/_pytest/legacypath.py                          
> 216    188    13%
> /usr/lib/python3/dist-packages/_pytest/logging.py                             
> 450    303    33%
> /usr/lib/python3/dist-packages/_pytest/main.py                                
> 493    268    46%
> /usr/lib/python3/dist-packages/_pytest/mark/__init__.py                       
> 132     85    36%
> /usr/lib/python3/dist-packages/_pytest/mark/expression.py                     
> 123     74    40%
> /usr/lib/python3/dist-packages/_pytest/mark/structures.py                     
> 276    195    29%
> /usr/lib/python3/dist-packages/_pytest/monkeypatch.py                         
> 168    114    32%
> /usr/lib/python3/dist-packages/_pytest/nodes.py                               
> 337    206    39%
> /usr/lib/python3/dist-packages/_pytest/nose.py                                
>  29     20    31%
> /usr/lib/python3/dist-packages/_pytest/outcomes.py                            
> 106     94    11%
> /usr/lib/python3/dist-packages/_pytest/pastebin.py                            
>  70     69     1%
> /usr/lib/python3/dist-packages/_pytest/pathlib.py                             
> 403    281    30%
> /usr/lib/python3/dist-packages/_pytest/python.py                              
> 911    576    37%
> /usr/lib/python3/dist-packages/_pytest/python_api.py                          
> 334    307     8%
> /usr/lib/python3/dist-packages/_pytest/python_path.py                         
>  16     15     6%
> /usr/lib/python3/dist-packages/_pytest/recwarn.py                             
> 140     84    40%
> /usr/lib/python3/dist-packages/_pytest/reports.py                             
> 298    258    13%
> /usr/lib/python3/dist-packages/_pytest/runner.py                              
> 301    156    48%
> /usr/lib/python3/dist-packages/_pytest/scope.py                               
>  37     27    27%
> /usr/lib/python3/dist-packages/_pytest/setuponly.py                           
>  59     51    14%
> /usr/lib/python3/dist-packages/_pytest/setupplan.py                           
>  24     20    17%
> /usr/lib/python3/dist-packages/_pytest/skipping.py                            
> 165    114    31%
> /usr/lib/python3/dist-packages/_pytest/stash.py                               
>  36     25    31%
> /usr/lib/python3/dist-packages/_pytest/stepwise.py                            
>  74     72     3%
> /usr/lib/python3/dist-packages/_pytest/terminal.py                            
> 927    711    23%
> /usr/lib/python3/dist-packages/_pytest/threadexception.py                     
>  43     27    37%
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py                              
> 156     89    43%
> /usr/lib/python3/dist-packages/_pytest/unittest.py                            
> 253    242     4%
> /usr/lib/python3/dist-packages/_pytest/unraisableexception.py                 
>  45     29    36%
> /usr/lib/python3/dist-packages/_pytest/warnings.py                            
>  74     52    30%
> /usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py               
>  37     34     8%
> /usr/lib/python3/dist-packages/pluggy/_callers.py                             
> 109     44    60%
> /usr/lib/python3/dist-packages/pluggy/_hooks.py                               
> 266    180    32%
> /usr/lib/python3/dist-packages/pluggy/_manager.py                             
> 230    180    22%
> /usr/lib/python3/dist-packages/pluggy/_result.py                              
>  50     39    22%
> /usr/lib/python3/dist-packages/pluggy/_tracing.py                             
>  48     38    21%
> /usr/lib/python3/dist-packages/pytest/__init__.py                             
>  91     89     2%
> /usr/lib/python3/dist-packages/pytest_cov/compat.py                           
>  17     13    24%
> /usr/lib/python3/dist-packages/pytest_cov/embed.py                            
>  69     63     9%
> /usr/lib/python3/dist-packages/pytest_cov/engine.py                           
> 250    229     8%
> /usr/lib/python3/dist-packages/pytest_cov/plugin.py                           
> 224    194    13%
> /usr/lib/python3/dist-packages/pytest_doctestplus/plugin.py                   
> 486    479     1%
> /usr/lib/python3/dist-packages/pytest_mock/_util.py                           
>  19     11    42%
> /usr/lib/python3/dist-packages/pytest_mock/plugin.py                          
> 312    233    25%
> graphviz/__init__.py                                                          
>  36      0   100%
> graphviz/_compat.py                                                           
>   5      0   100%
> graphviz/_defaults.py                                                         
>  21      0   100%
> graphviz/_tools.py                                                            
>  64      0   100%
> graphviz/backend/__init__.py                                                  
>   9      0   100%
> graphviz/backend/dot_command.py                                               
>  20      0   100%
> graphviz/backend/execute.py                                                   
>  61      0   100%
> graphviz/backend/mixins.py                                                    
>  37      0   100%
> graphviz/backend/piping.py                                                    
>  26      0   100%
> graphviz/backend/rendering.py                                                 
>  83      0   100%
> graphviz/backend/unflattening.py                                              
>  21      0   100%
> graphviz/backend/upstream_version.py                                          
>  15      0   100%
> graphviz/backend/viewing.py                                                   
>  34      0   100%
> graphviz/base.py                                                              
>   8      0   100%
> graphviz/copying.py                                                           
>   7      0   100%
> graphviz/dot.py                                                               
> 132      0   100%
> graphviz/encoding.py                                                          
>  22      0   100%
> graphviz/exceptions.py                                                        
>   7      0   100%
> graphviz/graphs.py                                                            
>  28      0   100%
> graphviz/jupyter_integration.py                                               
>  34      0   100%
> graphviz/parameters/__init__.py                                               
>   6      0   100%
> graphviz/parameters/base.py                                                   
>   7      0   100%
> graphviz/parameters/engines.py                                                
>  32      0   100%
> graphviz/parameters/formats.py                                                
>  32      0   100%
> graphviz/parameters/formatters.py                                             
>  32      0   100%
> graphviz/parameters/mixins.py                                                 
>  26      0   100%
> graphviz/parameters/renderers.py                                              
>  32      0   100%
> graphviz/piping.py                                                            
>  39      0   100%
> graphviz/quoting.py                                                           
>  59      0   100%
> graphviz/rendering.py                                                         
>  40      0   100%
> graphviz/saving.py                                                            
>  44      0   100%
> graphviz/sources.py                                                           
>  52      0   100%
> graphviz/unflattening.py                                                      
>  14      0   100%
> tests/_common.py                                                              
>  25      2    92%
> tests/backend/conftest.py                                                     
>  13      1    92%
> tests/backend/test_execute.py                                                 
>  43      0   100%
> tests/backend/test_piping.py                                                  
>  72     18    75%
> tests/backend/test_rendering.py                                               
> 107      0   100%
> tests/backend/test_unflattening.py                                            
>  20      0   100%
> tests/backend/test_upstream_version.py                                        
>  20      0   100%
> tests/backend/test_viewing.py                                                 
>  20      1    95%
> tests/conftest.py                                                             
>  62     22    65%
> tests/test_all_classes.py                                                     
> 208      0   100%
> tests/test_graphs.py                                                          
> 117      0   100%
> tests/test_init.py                                                            
>  77      0   100%
> tests/test_jupyter_integration.py                                             
>  33      0   100%
> tests/test_parameters.py                                                      
>  33      0   100%
> tests/test_quoting.py                                                         
>  29      0   100%
> tests/test_saving.py                                                          
>  10      0   100%
> tests/test_sources.py                                                         
>  47      1    98%
> tests/test_tools.py                                                           
>  39      0   100%
> -----------------------------------------------------------------------------------------------
> TOTAL                                                                       
> 18202  11988    34%
> Coverage HTML written to dir htmlcov
> 
> ============================= slowest 10 durations 
> =============================
> 0.09s call     
> .pybuild/cpython3_3.12_graphviz/build/graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
> 0.08s call     
> .pybuild/cpython3_3.12_graphviz/build/graphviz/piping.py::graphviz.piping.Pipe.pipe
> 0.07s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_execute.py::test_run_check_input_lines_mocked
> 0.07s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False]
> 0.07s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True]
> 0.07s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False]
> 0.07s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True]
> 0.06s setup    
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False]
> 0.05s call     
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain]
> 0.05s call     
> .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml
>  .+</svg>\\s*$]
> =========================== short test summary info 
> ============================
> FAILED graphviz/backend/rendering.py::graphviz.backend.rendering.render
> FAILED 
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown
>  engine]
> FAILED 
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown
>  format]
> ================= 3 failed, 346 passed, 2 deselected in 10.33s 
> =================
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build; python3.12 -m pytest 
> -k 'not test_pipe_pipe_invalid_data_mocked'
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build; python3.11 -m pytest 
> -k 'not test_pipe_pipe_invalid_data_mocked'
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.8, pytest-8.0.2, pluggy-1.4.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0, mock-3.12.0, doctestplus-1.2.0
> collected 351 items / 2 deselected / 349 selected
> 
> graphviz/__init__.py::graphviz PASSED                                    [  
> 0%]
> graphviz/_tools.py::graphviz._tools.attach PASSED                        [  
> 0%]
> graphviz/_tools.py::graphviz._tools.mapping_items PASSED                 [  
> 0%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe PASSED          [  
> 1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines PASSED    [  
> 1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines_string PASSED 
> [  1%]
> graphviz/backend/piping.py::graphviz.backend.piping.pipe_string PASSED   [  
> 2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_formats
>  PASSED [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_suffixes
>  PASSED [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.infer_format PASSED 
> [  2%]
> graphviz/backend/rendering.py::graphviz.backend.rendering.render FAILED  [  
> 3%]
> graphviz/backend/upstream_version.py::graphviz.backend.upstream_version.version
>  PASSED [  3%]
> graphviz/graphs.py::graphviz.graphs PASSED                               [  
> 3%]
> graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
>  PASSED [  4%]
> graphviz/piping.py::graphviz.piping.Pipe.pipe PASSED                     [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.a_list PASSED                      [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.attr_list PASSED                   [  
> 4%]
> graphviz/quoting.py::graphviz.quoting.escape PASSED                      [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.nohtml PASSED                      [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.quote PASSED                       [  
> 5%]
> graphviz/quoting.py::graphviz.quoting.quote_edge PASSED                  [  
> 6%]
> graphviz/rendering.py::graphviz.rendering.Render.render PASSED           [  
> 6%]
> tests/backend/test_execute.py::test_missing_executable[render-args0] PASSED [ 
>  6%]
> tests/backend/test_execute.py::test_missing_executable[pipe-args1] PASSED [  
> 6%]
> tests/backend/test_execute.py::test_missing_executable[unflatten-args2] 
> PASSED [  7%]
> tests/backend/test_execute.py::test_missing_executable[version-args3] PASSED 
> [  7%]
> tests/backend/test_execute.py::test_run_check_oserror PASSED             [  
> 7%]
> tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=False]
>  PASSED [  8%]
> tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=True]
>  PASSED [  8%]
> tests/backend/test_execute.py::test_run_check_input_lines_mocked PASSED  [  
> 8%]
> tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False] PASSED [  
> 8%]
> tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True] PASSED  [  
> 9%]
> tests/backend/test_piping.py::test_pipe[dot-svg-None-None-(?s)^<\\?xml 
> .+</svg>\\s*$] PASSED [  9%]
> tests/backend/test_piping.py::test_pipe[dot-ps-ps-core-%!PS-] PASSED     [  
> 9%]
> tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml 
> .+</svg>\\s*$] PASSED [ 10%]
> tests/backend/test_piping.py::test_pipe_mocked[quiet=False] PASSED       [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_mocked[quiet=True] PASSED        [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_string_mocked[quiet=False] PASSED [ 
> 10%]
> tests/backend/test_piping.py::test_pipe_string_mocked[quiet=True] PASSED [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] PASSED [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] PASSED  [ 
> 11%]
> tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] 
> PASSED [ 12%]
> tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] 
> PASSED [ 12%]
> tests/backend/test_rendering.py::test_render_missing_file[quiet=False] PASSED 
> [ 12%]
> tests/backend/test_rendering.py::test_render_missing_file[quiet=True] PASSED 
> [ 12%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown
>  engine] FAILED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown
>  format] FAILED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args2-ValueError-unknown
>  renderer] PASSED [ 13%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args3-RequiredArgumentError-without
>  renderer] PASSED [ 14%]
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args4-ValueError-unknown
>  formatter] PASSED [ 14%]
> tests/backend/test_rendering.py::test_render[dot-pdf-None-None-pdf] PASSED [ 
> 14%]
> tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain]
>  PASSED [ 14%]
> tests/backend/test_rendering.py::test_render_img PASSED                  [ 
> 15%]
> tests/backend/test_rendering.py::test_render_outfile_differnt_parent PASSED [ 
> 15%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=False-None] PASSED 
> [ 15%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=False-dot_sources] 
> PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=True-None] PASSED [ 
> 16%]
> tests/backend/test_rendering.py::test_render_mocked[quiet=True-dot_sources] 
> PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args0-kwargs0-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 16%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args1-kwargs1-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args2-kwargs2-RequiredArgumentError-format:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args3-kwargs3-RequiredArgumentError-filepath:
>  \\(required] PASSED [ 17%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args4-kwargs4-ValueError-outfile
>  'spam\\.gv' must be different from input file 'spam\\.gv'] PASSED [ 18%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args5-kwargs5-ValueError-overwrite_filepath
>  cannot be combined with raise_if_result_exists] PASSED [ 18%]
> tests/backend/test_rendering.py::test_render_raises_mocked[args6-kwargs6-FileExistsError-output
>  file exists: 'spam.png'] PASSED [ 18%]
> tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs0-spam.gv.pdf]
>  PASSED [ 18%]
> tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs1-spam.gv.dot.plain]
>  PASSED [ 19%]
> tests/backend/test_rendering.py::test_get_filepath[spam.pdf-spam.gv] PASSED [ 
> 19%]
> tests/backend/test_rendering.py::test_get_filepath[spam-spam.gv] PASSED  [ 
> 19%]
> tests/backend/test_rendering.py::test_get_format[spam.gv.pdf-None-pdf] PASSED 
> [ 20%]
> tests/backend/test_rendering.py::test_get_format[spam.jpeg-None-jpeg] PASSED 
> [ 20%]
> tests/backend/test_rendering.py::test_get_format[spam.SVG-None-svg] PASSED [ 
> 20%]
> tests/backend/test_rendering.py::test_get_format[spam.pdf-None-pdf] PASSED [ 
> 20%]
> tests/backend/test_rendering.py::test_get_format[spam.pdf-pdf-pdf] PASSED [ 
> 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.jpg-jpeg-jpeg-FormatSuffixMismatchWarning-expected
>  format 'jpg' from outfile differs from given format: 'jpeg'] PASSED [ 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.dot-plain-plain-FormatSuffixMismatchWarning-expected
>  format 'dot' from outfile differs from given format: 'plain'] PASSED [ 21%]
> tests/backend/test_rendering.py::test_get_format_warns[spam-svg-svg-UnknownSuffixWarning-unknown
>  outfile suffix '' \\(expected: '\\.svg'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_warns[spam.peng-png-png-UnknownSuffixWarning-unknown
>  outfile suffix '.peng' \\(expected: '\\.png'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_warns[spam-pdf-pdf-UnknownSuffixWarning-unknown
>  outfile suffix '' \\(expected: '\\.pdf'\\)] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_raises[spam-RequiredArgumentError-cannot
>  infer rendering format from suffix '' of outfile: 'spam'] PASSED [ 22%]
> tests/backend/test_rendering.py::test_get_format_raises[spam.peng-RequiredArgumentError-cannot
>  infer rendering format from suffix '.peng' of outfile: 'spam.peng'] PASSED [ 
> 23%]
> tests/backend/test_rendering.py::test_get_format_raises[spam.wav-RequiredArgumentError-cannot
>  infer rendering format from suffix '.wav' of outfile: 'spam.wav'] PASSED [ 
> 23%]
> tests/backend/test_unflattening.py::test_unflatten_stagger_missing PASSED [ 
> 23%]
> tests/backend/test_unflattening.py::test_unflatten[digraph {1 -> 2; 1 -> 3; 1 
> -> 4}-kwargs0-digraph { 1 -> 2 [minlen=1]; 1 -> 3 [minlen=2]; 1 -> 4 
> [minlen=3]; }] PASSED [ 24%]
> tests/backend/test_unflattening.py::test_unflatten_mocked PASSED         [ 
> 24%]
> tests/backend/test_upstream_version.py::test_version PASSED              [ 
> 24%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 1.2.3 (mocked)-expected0] PASSED [ 24%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.43.20190912.0211 (20190912.0211)\n-expected1] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.2~dev.20200927.0217 (20200927.0217)\n-expected2] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.1 (mocked)\n-expected3] PASSED [ 25%]
> tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz 
> version 2.44.2~dev.20200704.1652 (mocked)\n-expected4] PASSED [ 26%]
> tests/backend/test_upstream_version.py::test_version_parsefail_mocked PASSED 
> [ 26%]
> tests/backend/test_viewing.py::test_view_unknown_platform PASSED         [ 
> 26%]
> tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False]
>  PASSED [ 26%]
> tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=True] 
> PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False]
>  PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True]
>  PASSED [ 27%]
> tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] 
> PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] 
> PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False]
>  PASSED [ 28%]
> tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True]
>  PASSED [ 28%]
> tests/test_all_classes.py::test_copy[Graph] PASSED                       [ 
> 29%]
> tests/test_all_classes.py::test_copy[Digraph] PASSED                     [ 
> 29%]
> tests/test_all_classes.py::test_copy[Source] PASSED                      [ 
> 29%]
> tests/test_all_classes.py::test_str[Graph] PASSED                        [ 
> 30%]
> tests/test_all_classes.py::test_str[Digraph] PASSED                      [ 
> 30%]
> tests/test_all_classes.py::test_str[Source] PASSED                       [ 
> 30%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-engine-ValueError-unknown
>  engine] PASSED [ 30%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-format-ValueError-unknown
>  format] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-renderer-ValueError-unknown
>  renderer] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-formatter-ValueError-unknown
>  formatter] PASSED [ 31%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-encoding-LookupError-encoding]
>  PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-engine-ValueError-unknown
>  engine] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-format-ValueError-unknown
>  format] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-renderer-ValueError-unknown
>  renderer] PASSED [ 32%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-formatter-ValueError-unknown
>  formatter] PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-encoding-LookupError-encoding]
>  PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-engine-ValueError-unknown
>  engine] PASSED [ 33%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-format-ValueError-unknown
>  format] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-renderer-ValueError-unknown
>  renderer] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-formatter-ValueError-unknown
>  formatter] PASSED [ 34%]
> tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-encoding-LookupError-encoding]
>  PASSED [ 34%]
> tests/test_all_classes.py::test_encoding_none[Graph] PASSED              [ 
> 35%]
> tests/test_all_classes.py::test_encoding_none[Digraph] PASSED            [ 
> 35%]
> tests/test_all_classes.py::test_encoding_none[Source] PASSED             [ 
> 35%]
> tests/test_all_classes.py::test_render_raises_before_save[Graph-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save[Digraph-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0] 
> PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs0]
>  PASSED [ 36%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs1]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs2]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs3]
>  PASSED [ 37%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs0]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs1]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs2]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs3]
>  PASSED [ 38%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2]
>  PASSED [ 39%]
> tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3]
>  PASSED [ 40%]
> tests/test_all_classes.py::test_render_mocked[Graph] PASSED              [ 
> 40%]
> tests/test_all_classes.py::test_render_mocked[Digraph] PASSED            [ 
> 40%]
> tests/test_all_classes.py::test_render_mocked[Source] PASSED             [ 
> 40%]
> tests/test_all_classes.py::test_render_outfile_mocked[Graph] PASSED      [ 
> 41%]
> tests/test_all_classes.py::test_render_outfile_mocked[Digraph] PASSED    [ 
> 41%]
> tests/test_all_classes.py::test_render_outfile_mocked[Source] PASSED     [ 
> 41%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Graph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Digraph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Graph]
>  PASSED [ 42%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Digraph]
>  PASSED [ 43%]
> tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source]
>  PASSED [ 43%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-None] 
> PASSED [ 43%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-False] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-True] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-0] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-1] 
> PASSED [ 44%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-2] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-None] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-False] 
> PASSED [ 45%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-True] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-0] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-1] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-2] 
> PASSED [ 46%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-None] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-False] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-True] 
> PASSED [ 47%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-0] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-1] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-2] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-None] 
> PASSED [ 48%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-False] 
> PASSED [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-True] 
> PASSED [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-0] PASSED 
> [ 49%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-1] PASSED 
> [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-2] PASSED 
> [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-None] 
> PASSED [ 50%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-False] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-True] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-0] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-1] 
> PASSED [ 51%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-2] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-None] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-False] 
> PASSED [ 52%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-True] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-0] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-1] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-2] 
> PASSED [ 53%]
> tests/test_all_classes.py::test_save_mocked[Graph] PASSED                [ 
> 54%]
> tests/test_all_classes.py::test_save_mocked[Digraph] PASSED              [ 
> 54%]
> tests/test_all_classes.py::test_save_mocked[Source] PASSED               [ 
> 54%]
> tests/test_all_classes.py::test_pipe[Graph] PASSED                       [ 
> 55%]
> tests/test_all_classes.py::test_pipe[Digraph] PASSED                     [ 
> 55%]
> tests/test_all_classes.py::test_pipe[Source] PASSED                      [ 
> 55%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-None] PASSED [ 
> 55%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-ascii] PASSED [ 
> 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-utf-8] PASSED [ 
> 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-None] PASSED 
> [ 56%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-ascii] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-utf-8] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-None] PASSED [ 
> 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-ascii] PASSED 
> [ 57%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-utf-8] PASSED 
> [ 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-None] PASSED [ 
> 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-ascii] PASSED [ 
> 58%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-utf-8] PASSED [ 
> 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-None] PASSED [ 
> 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-ascii] PASSED 
> [ 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-utf-8] PASSED 
> [ 59%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-None] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-ascii] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-utf-8] PASSED [ 
> 60%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Graph] PASSED          [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Digraph] PASSED        [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_mocked[Source] PASSED         [ 
> 61%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Graph] PASSED 
> [ 61%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Digraph] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error[Source] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Graph] 
> PASSED [ 62%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Digraph]
>  PASSED [ 63%]
> tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source]
>  PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Graph] 
> PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Digraph] 
> PASSED [ 63%]
> tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Source] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Graph] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Digraph] 
> PASSED [ 64%]
> tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Source] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Graph] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Digraph] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Source] 
> PASSED [ 65%]
> tests/test_all_classes.py::test_unflatten[Graph] PASSED                  [ 
> 66%]
> tests/test_all_classes.py::test_unflatten[Digraph] PASSED                [ 
> 66%]
> tests/test_all_classes.py::test_unflatten[Source] PASSED                 [ 
> 66%]
> tests/test_all_classes.py::test_unflatten_mocked[Graph] PASSED           [ 
> 67%]
> tests/test_all_classes.py::test_unflatten_mocked[Digraph] PASSED         [ 
> 67%]
> tests/test_all_classes.py::test_unflatten_mocked[Source] PASSED          [ 
> 67%]
> tests/test_all_classes.py::test_view_mocked[Graph] PASSED                [ 
> 67%]
> tests/test_all_classes.py::test_view_mocked[Digraph] PASSED              [ 
> 68%]
> tests/test_all_classes.py::test_view_mocked[Source] PASSED               [ 
> 68%]
> tests/test_all_classes.py::test__view_unknown_platform[Graph] PASSED     [ 
> 68%]
> tests/test_all_classes.py::test__view_unknown_platform[Digraph] PASSED   [ 
> 69%]
> tests/test_all_classes.py::test__view_unknown_platform[Source] PASSED    [ 
> 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Graph] PASSED 
> [ 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Digraph] 
> PASSED [ 69%]
> tests/test_all_classes.py::test__view_mocked[platform='darwin'-Source] PASSED 
> [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Graph] PASSED 
> [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Digraph] 
> PASSED [ 70%]
> tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Source] 
> PASSED [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Graph] PASSED [ 
> 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Digraph] PASSED 
> [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='linux'-Source] PASSED 
> [ 71%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Graph] PASSED 
> [ 72%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Digraph] 
> PASSED [ 72%]
> tests/test_all_classes.py::test__view_mocked[platform='windows'-Source] 
> PASSED [ 72%]
> tests/test_graphs.py::test_init_filename[Graph] PASSED                   [ 
> 73%]
> tests/test_graphs.py::test_init_filename[Digraph] PASSED                 [ 
> 73%]
> tests/test_graphs.py::test_init_body[Graph-...-...] PASSED               [ 
> 73%]
> tests/test_graphs.py::test_init_body[Digraph-...-...] PASSED             [ 
> 73%]
> tests/test_graphs.py::test_subgraph_render[Graph-...] PASSED             [ 
> 74%]
> tests/test_graphs.py::test_subgraph_render[Digraph-...] PASSED           [ 
> 74%]
> tests/test_graphs.py::test_clear[Graph-False] PASSED                     [ 
> 74%]
> tests/test_graphs.py::test_clear[Graph-True] PASSED                      [ 
> 75%]
> tests/test_graphs.py::test_clear[Digraph-False] PASSED                   [ 
> 75%]
> tests/test_graphs.py::test_clear[Digraph-True] PASSED                    [ 
> 75%]
> tests/test_graphs.py::test_iter_subgraph_strict[Graph] PASSED            [ 
> 75%]
> tests/test_graphs.py::test_iter_subgraph_strict[Digraph] PASSED          [ 
> 76%]
> tests/test_graphs.py::test_iter_strict[Graph-...] PASSED                 [ 
> 76%]
> tests/test_graphs.py::test_iter_strict[Digraph-...] PASSED               [ 
> 76%]
> tests/test_graphs.py::test_attr_invalid_kw[Graph] PASSED                 [ 
> 77%]
> tests/test_graphs.py::test_attr_invalid_kw[Digraph] PASSED               [ 
> 77%]
> tests/test_graphs.py::test_attr_kw_none[Graph-...] PASSED                [ 
> 77%]
> tests/test_graphs.py::test_attr_kw_none[Digraph-...] PASSED              [ 
> 77%]
> tests/test_graphs.py::test_escaped_quotes_and_escapes[Graph-...] PASSED  [ 
> 78%]
> tests/test_graphs.py::test_escaped_quotes_and_escapes[Digraph-...] PASSED [ 
> 78%]
> tests/test_graphs.py::test_subgraph_graph_none[Graph-...] PASSED         [ 
> 78%]
> tests/test_graphs.py::test_subgraph_graph_none[Digraph-...] PASSED       [ 
> 79%]
> tests/test_graphs.py::test_subgraph_graph_notsole[Graph] PASSED          [ 
> 79%]
> tests/test_graphs.py::test_subgraph_graph_notsole[Digraph] PASSED        [ 
> 79%]
> tests/test_graphs.py::test_subgraph_mixed[Graph, Digraph] PASSED         [ 
> 79%]
> tests/test_graphs.py::test_subgraph_mixed[Digraph, Graph] PASSED         [ 
> 80%]
> tests/test_graphs.py::test_subgraph_reflexive[Graph-...] PASSED          [ 
> 80%]
> tests/test_graphs.py::test_subgraph_reflexive[Digraph-...] PASSED        [ 
> 80%]
> tests/test_graphs.py::test_subgraph PASSED                               [ 
> 81%]
> tests/test_graphs.py::test_label_html PASSED                             [ 
> 81%]
> tests/test_init.py::test_set_default_engine_invalid PASSED               [ 
> 81%]
> tests/test_init.py::test_set_default_format_invalid PASSED               [ 
> 81%]
> tests/test_init.py::test_set_default_engine PASSED                       [ 
> 82%]
> tests/test_init.py::test_set_default_format PASSED                       [ 
> 82%]
> tests/test_init.py::test_set_jupyter_format PASSED                       [ 
> 82%]
> tests/test_jupyter_integration.py::test_get_jupyter_format_mimetype_invalid_raises_unknown
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_normalizes
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_raises_unsupported
>  PASSED [ 83%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding PASSED [ 
> 83%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[utf-8]
>  PASSED [ 84%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[ascii]
>  PASSED [ 84%]
> tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[latin1]
>  PASSED [ 84%]
> tests/test_parameters.py::test_parameters[Graph] PASSED                  [ 
> 85%]
> tests/test_parameters.py::test_parameters[Digraph] PASSED                [ 
> 85%]
> tests/test_parameters.py::test_parameters[Source] PASSED                 [ 
> 85%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_engine] 
> PASSED [ 85%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_format] 
> PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_renderer]
>  PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_formatter]
>  PASSED [ 86%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_engine]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_format]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_renderer]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_formatter]
>  PASSED [ 87%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_engine]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_format]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_renderer]
>  PASSED [ 88%]
> tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_formatter]
>  PASSED [ 89%]
> tests/test_quoting.py::test_deprecated_escape[G] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[E] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[T] PASSED                  [ 
> 89%]
> tests/test_quoting.py::test_deprecated_escape[H] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_deprecated_escape[L] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_deprecated_escape[l] PASSED                  [ 
> 90%]
> tests/test_quoting.py::test_quote["spam"-"\\"spam\\""] PASSED            [ 
> 91%]
> tests/test_quoting.py::test_quote[node-"node"] PASSED                    [ 
> 91%]
> tests/test_quoting.py::test_quote[EDGE-"EDGE"] PASSED                    [ 
> 91%]
> tests/test_quoting.py::test_quote[Graph-"Graph"] PASSED                  [ 
> 91%]
> tests/test_quoting.py::test_quote[\\G \\N \\E \\T \\H \\L-"\\G \\N \\E \\T 
> \\H \\L"] PASSED [ 92%]
> tests/test_quoting.py::test_quote[\\n \\l \\r-"\\n \\l \\r"] PASSED      [ 
> 92%]
> tests/test_quoting.py::test_quote[\r\n-"\r\n"] PASSED                    [ 
> 92%]
> tests/test_quoting.py::test_quote[\\\\n-"\\\\n"] PASSED                  [ 
> 93%]
> tests/test_quoting.py::test_quote[\u0665.\u0660-"\u0665.\u0660"] PASSED  [ 
> 93%]
> tests/test_quoting.py::test_quote[\\"spam-"\\"spam"] PASSED              [ 
> 93%]
> tests/test_quoting.py::test_quote[\\\\"spam-"\\\\\\"spam"] PASSED        [ 
> 93%]
> tests/test_quoting.py::test_quote[\\\\\\"spam-"\\\\\\"spam"] PASSED      [ 
> 94%]
> tests/test_quoting.py::test_quote[\\\\\\\\"spam-"\\\\\\\\\\"spam"] PASSED [ 
> 94%]
> tests/test_quoting.py::test_attr_list[attributes0- [spam=eggs]] PASSED   [ 
> 94%]
> tests/test_quoting.py::test_attr_list[attributes1- [spam=eggs]] PASSED   [ 
> 95%]
> tests/test_quoting.py::test_nohtml[spam-spam-spam] PASSED                [ 
> 95%]
> tests/test_quoting.py::test_nohtml[<>-*-<>-<>-*-<>-"<>-*-<>"] PASSED     [ 
> 95%]
> tests/test_saving.py::test_saves_source_from_file PASSED                 [ 
> 95%]
> tests/test_sources.py::test_source_parameter[engine] PASSED              [ 
> 96%]
> tests/test_sources.py::test_source_parameter[format] PASSED              [ 
> 96%]
> tests/test_sources.py::test_source_parameter[encoding] PASSED            [ 
> 96%]
> tests/test_sources.py::test_init PASSED                                  [ 
> 97%]
> tests/test_sources.py::test_init_filename PASSED                         [ 
> 97%]
> tests/test_sources.py::test_filepath PASSED                              [ 
> 97%]
> tests/test_sources.py::test_from_file PASSED                             [ 
> 97%]
> tests/test_sources.py::test_source_iter PASSED                           [ 
> 98%]
> tests/test_tools.py::test_mkdirs_invalid PASSED                          [ 
> 98%]
> tests/test_tools.py::test_mkdirs PASSED                                  [ 
> 98%]
> tests/test_tools.py::test_deprecate_positional_args[FutureWarning- 
> third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[DeprecationWarning- 
> third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[PendingDeprecationWarning-
>  third='third' ] PASSED [ 99%]
> tests/test_tools.py::test_deprecate_positional_args[None-None] PASSED    
> [100%]
> 
> =================================== FAILURES 
> ===================================
> _________________ [doctest] graphviz.backend.rendering.render 
> __________________
> 250         graphviz.UnknownSuffixWarning: If the suffix of ``outfile``
> 251             is empty or unknown.
> 252         graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile``
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> UNEXPECTED EXCEPTION: FileNotFoundError(2, 'No such file or directory')
> Traceback (most recent call last):
>   File "/usr/lib/python3.11/doctest.py", line 1355, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[3]>", line 1, in <module>
>   File "/usr/lib/python3.11/pathlib.py", line 1079, in write_text
>     with self.open(mode='w', encoding=encoding, errors=errors, 
> newline=newline) as f:
>          
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/pathlib.py", line 1045, in open
>     return io.open(self, mode, buffering, encoding, errors, newline)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> FileNotFoundError: [Errno 2] No such file or directory: 
> 'doctest-output/spam.gv'
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:259:
>  UnexpectedException
> 251             is empty or unknown.
> 252         graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile``
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.11/doctest.py", line 1355, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[4]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:260:
>  UnexpectedException
> 253             does not match the given ``format``.
> 254 
> 255     Example:
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> 261         'doctest-output/spam.gv.png'
> 262         >>> graphviz.render('dot', filepath='doctest-output/spam.gv',
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.11/doctest.py", line 1355, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[5]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:262:
>  UnexpectedException
> 256         >>> doctest_mark_exe()
> 257         >>> import pathlib
> 258         >>> import graphviz
> 259         >>> assert 
> pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14
> 260         >>> graphviz.render('dot', 'png', 
> 'doctest-output/spam.gv').replace('\\', '/')
> 261         'doctest-output/spam.gv.png'
> 262         >>> graphviz.render('dot', filepath='doctest-output/spam.gv',
> 263         ...                 
> outfile='doctest-output/spam.png').replace('\\', '/')
> 264         'doctest-output/spam.png'
> 265         >>> graphviz.render('dot', 
> outfile='doctest-output/spam.pdf').replace('\\', '/')
> UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), 
> make sure the Graphviz executables are on your systems' PATH")
> Traceback (most recent call last):
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 78, in run_check
>     proc = subprocess.run(cmd, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 548, in run
>     with Popen(*popenargs, **kwargs) as process:
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__
>     self._execute_child(args, executable, preexec_fn, close_fds,
>   File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child
>     raise child_exception_type(errno_num, err_msg, err_filename)
> FileNotFoundError: [Errno 2] No such file or directory: 
> PosixPath('doctest-output')
> The above exception was the direct cause of the following exception:
> Traceback (most recent call last):
>   File "/usr/lib/python3.11/doctest.py", line 1355, in __run
>     exec(compile(example.source, filename, "single",
>   File "<doctest graphviz.backend.rendering.render[6]>", line 1, in <module>
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", 
> line 171, in wrapper
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py",
>  line 326, in render
>     execute.run_check(cmd,
>   File 
> "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py",
>  line 81, in run_check
>     raise ExecutableNotFound(cmd) from e
> graphviz.backend.execute.ExecutableNotFound: failed to execute 
> PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:265:
>  UnexpectedException
> ------------------------------ Captured log call 
> -------------------------------
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpng', '-O', 'spam.gv']
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpng', '-o', 'spam.png', 'spam.gv']
> DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), 
> '-Kdot', '-Tpdf', '-o', 'spam.pdf', 'spam.gv']
> ____ test_render_unknown_parameter_raises[args0-ValueError-unknown engine] 
> _____
> 
> args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown engine'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
>         with pytest.raises(expected_exception, match=match), 
> pytest.deprecated_call():
> >           graphviz.render(*args)
> 
> tests/backend/test_rendering.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> graphviz/_tools.py:171: in wrapper
>     return func(*args, **kwargs)
> graphviz/backend/rendering.py:314: in render
>     cmd = dot_command.command(engine, format,
> graphviz/backend/dot_command.py:31: in command
>     parameters.verify_engine(engine, required=True)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> engine = ''
> 
>     def verify_engine(engine: str, *, required: bool = REQUIRED) -> None:
>         if engine is None:
>             if required:
>                 raise ValueError('missing engine')
>         elif engine.lower() not in ENGINES:
> >           raise ValueError(f'unknown engine: {engine!r}'
>                              f' (must be one of {sorted(ENGINES)})')
> E           ValueError: unknown engine: '' (must be one of ['circo', 'dot', 
> 'fdp', 'neato', 'osage', 'patchwork', 'sfdp', 'twopi'])
> 
> graphviz/parameters/engines.py:28: ValueError
> 
> During handling of the above exception, another exception occurred:
> 
> args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown engine'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
> >       with pytest.raises(expected_exception, match=match), 
> > pytest.deprecated_call():
> E       Failed: DID NOT WARN. No warnings of type (<class 
> 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 
> 'FutureWarning'>) were emitted.
> E        Emitted warnings: [].
> 
> tests/backend/test_rendering.py:39: Failed
> ____ test_render_unknown_parameter_raises[args1-ValueError-unknown format] 
> _____
> 
> args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown format'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
>         with pytest.raises(expected_exception, match=match), 
> pytest.deprecated_call():
> >           graphviz.render(*args)
> 
> tests/backend/test_rendering.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> graphviz/_tools.py:171: in wrapper
>     return func(*args, **kwargs)
> graphviz/backend/rendering.py:307: in render
>     outfile = get_outfile(filepath,
> graphviz/backend/rendering.py:142: in get_outfile
>     parameters.verify_format(format, required=True)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> format = ''
> 
>     def verify_format(format: str, *, required: bool = REQUIRED) -> None:
>         if format is None:
>             if required:
>                 raise ValueError('missing format')
>         elif format.lower() not in FORMATS:
> >           raise ValueError(f'unknown format: {format!r}'
>                              f' (must be one of {sorted(FORMATS)})')
> E           ValueError: unknown format: '' (must be one of ['bmp', 'canon', 
> 'cgimage', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'dot_json', 'eps', 'exr', 
> 'fig', 'gd', 'gd2', 'gif', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap', 
> 'jp2', 'jpe', 'jpeg', 'jpg', 'json', 'json0', 'pct', 'pdf', 'pic', 'pict', 
> 'plain', 'plain-ext', 'png', 'pov', 'ps', 'ps2', 'psd', 'sgi', 'svg', 'svgz', 
> 'tga', 'tif', 'tiff', 'tk', 'vml', 'vmlz', 'vrml', 'wbmp', 'webp', 'x11', 
> 'xdot', 'xdot1.2', 'xdot1.4', 'xdot_json', 'xlib'])
> 
> graphviz/parameters/formats.py:56: ValueError
> 
> During handling of the above exception, another exception occurred:
> 
> args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'>
> match = 'unknown format'
> 
>     @pytest.mark.parametrize(
>         'args, expected_exception, match',
>         [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'),
>          (['dot', '', 'nonfilepath'], ValueError, r'unknown format'),
>          (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown 
> renderer'),
>          (['dot', 'ps', 'nonfilepath', None, 'core'],
>           graphviz.RequiredArgumentError, r'without renderer'),
>          (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown 
> formatter')],
>         ids=lambda x: getattr(x, '__name__', x))
>     def test_render_unknown_parameter_raises(args, expected_exception, match):
> >       with pytest.raises(expected_exception, match=match), 
> > pytest.deprecated_call():
> E       Failed: DID NOT WARN. No warnings of type (<class 
> 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 
> 'FutureWarning'>) were emitted.
> E        Emitted warnings: [].
> 
> tests/backend/test_rendering.py:39: Failed
> 
> ---------- coverage: platform linux, python 3.11.8-final-0 -----------
> Name                                                                        
> Stmts   Miss  Cover
> -----------------------------------------------------------------------------------------------
> /<<PKGBUILDDIR>>/conftest.py      23      2    91%
> /usr/lib/python3/dist-packages/_distutils_hack/__init__.py                    
> 100     95     5%
> /usr/lib/python3/dist-packages/_pytest/_argcomplete.py                        
>  37     36     3%
> /usr/lib/python3/dist-packages/_pytest/_code/code.py                          
> 754    516    32%
> /usr/lib/python3/dist-packages/_pytest/_code/source.py                        
> 145     78    46%
> /usr/lib/python3/dist-packages/_pytest/_io/saferepr.py                        
>  67     49    27%
> /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py                  
> 126     80    37%
> /usr/lib/python3/dist-packages/_pytest/_io/wcwidth.py                         
>  25     16    36%
> /usr/lib/python3/dist-packages/_pytest/_py/path.py                            
> 948    943     1%
> /usr/lib/python3/dist-packages/_pytest/assertion/__init__.py                  
>  88     74    16%
> /usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py                   
> 663    342    48%
> /usr/lib/python3/dist-packages/_pytest/cacheprovider.py                       
> 316    266    16%
> /usr/lib/python3/dist-packages/_pytest/capture.py                             
> 607    450    26%
> /usr/lib/python3/dist-packages/_pytest/compat.py                              
> 127     79    38%
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py                     
> 917    731    20%
> /usr/lib/python3/dist-packages/_pytest/config/argparsing.py                   
> 271    191    30%
> /usr/lib/python3/dist-packages/_pytest/config/compat.py                       
>  44     22    50%
> /usr/lib/python3/dist-packages/_pytest/debugging.py                           
> 230    221     4%
> /usr/lib/python3/dist-packages/_pytest/deprecated.py                          
>  26     25     4%
> /usr/lib/python3/dist-packages/_pytest/doctest.py                             
> 355    189    47%
> /usr/lib/python3/dist-packages/_pytest/faulthandler.py                        
>  58     43    26%
> /usr/lib/python3/dist-packages/_pytest/fixtures.py                            
> 809    428    47%
> /usr/lib/python3/dist-packages/_pytest/helpconfig.py                          
> 135    125     7%
> /usr/lib/python3/dist-packages/_pytest/junitxml.py                            
> 367    365     1%
> /usr/lib/python3/dist-packages/_pytest/legacypath.py                          
> 216    188    13%
> /usr/lib/python3/dist-packages/_pytest/logging.py                             
> 450    303    33%
> /usr/lib/python3/dist-packages/_pytest/main.py                                
> 493    268    46%
> /usr/lib/python3/dist-packages/_pytest/mark/__init__.py                       
> 132     85    36%
> /usr/lib/python3/dist-packages/_pytest/mark/expression.py                     
> 123     74    40%
> /usr/lib/python3/dist-packages/_pytest/mark/structures.py                     
> 276    195    29%
> /usr/lib/python3/dist-packages/_pytest/monkeypatch.py                         
> 168    114    32%
> /usr/lib/python3/dist-packages/_pytest/nodes.py                               
> 337    206    39%
> /usr/lib/python3/dist-packages/_pytest/nose.py                                
>  29     20    31%
> /usr/lib/python3/dist-packages/_pytest/outcomes.py                            
> 106     94    11%
> /usr/lib/python3/dist-packages/_pytest/pastebin.py                            
>  70     69     1%
> /usr/lib/python3/dist-packages/_pytest/pathlib.py                             
> 403    281    30%
> /usr/lib/python3/dist-packages/_pytest/python.py                              
> 911    576    37%
> /usr/lib/python3/dist-packages/_pytest/python_api.py                          
> 334    307     8%
> /usr/lib/python3/dist-packages/_pytest/python_path.py                         
>  16     15     6%
> /usr/lib/python3/dist-packages/_pytest/recwarn.py                             
> 140     84    40%
> /usr/lib/python3/dist-packages/_pytest/reports.py                             
> 298    258    13%
> /usr/lib/python3/dist-packages/_pytest/runner.py                              
> 301    156    48%
> /usr/lib/python3/dist-packages/_pytest/scope.py                               
>  37     27    27%
> /usr/lib/python3/dist-packages/_pytest/setuponly.py                           
>  59     51    14%
> /usr/lib/python3/dist-packages/_pytest/setupplan.py                           
>  24     20    17%
> /usr/lib/python3/dist-packages/_pytest/skipping.py                            
> 165    114    31%
> /usr/lib/python3/dist-packages/_pytest/stash.py                               
>  36     25    31%
> /usr/lib/python3/dist-packages/_pytest/stepwise.py                            
>  74     72     3%
> /usr/lib/python3/dist-packages/_pytest/terminal.py                            
> 927    711    23%
> /usr/lib/python3/dist-packages/_pytest/threadexception.py                     
>  43     27    37%
> /usr/lib/python3/dist-packages/_pytest/tmpdir.py                              
> 156     89    43%
> /usr/lib/python3/dist-packages/_pytest/unittest.py                            
> 253    242     4%
> /usr/lib/python3/dist-packages/_pytest/unraisableexception.py                 
>  45     29    36%
> /usr/lib/python3/dist-packages/_pytest/warnings.py                            
>  74     52    30%
> /usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py               
>  37     34     8%
> /usr/lib/python3/dist-packages/pluggy/_callers.py                             
> 109     44    60%
> /usr/lib/python3/dist-packages/pluggy/_hooks.py                               
> 266    180    32%
> /usr/lib/python3/dist-packages/pluggy/_manager.py                             
> 230    180    22%
> /usr/lib/python3/dist-packages/pluggy/_result.py                              
>  50     39    22%
> /usr/lib/python3/dist-packages/pluggy/_tracing.py                             
>  48     38    21%
> /usr/lib/python3/dist-packages/pytest/__init__.py                             
>  91     89     2%
> /usr/lib/python3/dist-packages/pytest_cov/compat.py                           
>  17     13    24%
> /usr/lib/python3/dist-packages/pytest_cov/embed.py                            
>  69     63     9%
> /usr/lib/python3/dist-packages/pytest_cov/engine.py                           
> 250    229     8%
> /usr/lib/python3/dist-packages/pytest_cov/plugin.py                           
> 224    194    13%
> /usr/lib/python3/dist-packages/pytest_doctestplus/plugin.py                   
> 486    479     1%
> /usr/lib/python3/dist-packages/pytest_mock/_util.py                           
>  19     11    42%
> /usr/lib/python3/dist-packages/pytest_mock/plugin.py                          
> 312    233    25%
> graphviz/__init__.py                                                          
>  36      0   100%
> graphviz/_compat.py                                                           
>   5      0   100%
> graphviz/_defaults.py                                                         
>  21      0   100%
> graphviz/_tools.py                                                            
>  64      0   100%
> graphviz/backend/__init__.py                                                  
>   9      0   100%
> graphviz/backend/dot_command.py                                               
>  20      0   100%
> graphviz/backend/execute.py                                                   
>  61      0   100%
> graphviz/backend/mixins.py                                                    
>  37      0   100%
> graphviz/backend/piping.py                                                    
>  26      0   100%
> graphviz/backend/rendering.py                                                 
>  83      0   100%
> graphviz/backend/unflattening.py                                              
>  21      0   100%
> graphviz/backend/upstream_version.py                                          
>  15      0   100%
> graphviz/backend/viewing.py                                                   
>  34      0   100%
> graphviz/base.py                                                              
>   8      0   100%
> graphviz/copying.py                                                           
>   7      0   100%
> graphviz/dot.py                                                               
> 132      0   100%
> graphviz/encoding.py                                                          
>  22      0   100%
> graphviz/exceptions.py                                                        
>   7      0   100%
> graphviz/graphs.py                                                            
>  28      0   100%
> graphviz/jupyter_integration.py                                               
>  34      0   100%
> graphviz/parameters/__init__.py                                               
>   6      0   100%
> graphviz/parameters/base.py                                                   
>   7      0   100%
> graphviz/parameters/engines.py                                                
>  32      0   100%
> graphviz/parameters/formats.py                                                
>  32      0   100%
> graphviz/parameters/formatters.py                                             
>  32      0   100%
> graphviz/parameters/mixins.py                                                 
>  26      0   100%
> graphviz/parameters/renderers.py                                              
>  32      0   100%
> graphviz/piping.py                                                            
>  39      0   100%
> graphviz/quoting.py                                                           
>  59      0   100%
> graphviz/rendering.py                                                         
>  40      0   100%
> graphviz/saving.py                                                            
>  44      0   100%
> graphviz/sources.py                                                           
>  52      0   100%
> graphviz/unflattening.py                                                      
>  14      0   100%
> tests/_common.py                                                              
>  25      2    92%
> tests/backend/conftest.py                                                     
>  13      1    92%
> tests/backend/test_execute.py                                                 
>  43      0   100%
> tests/backend/test_piping.py                                                  
>  72     18    75%
> tests/backend/test_rendering.py                                               
> 107      0   100%
> tests/backend/test_unflattening.py                                            
>  20      0   100%
> tests/backend/test_upstream_version.py                                        
>  20      0   100%
> tests/backend/test_viewing.py                                                 
>  20      1    95%
> tests/conftest.py                                                             
>  62     22    65%
> tests/test_all_classes.py                                                     
> 208      0   100%
> tests/test_graphs.py                                                          
> 117      0   100%
> tests/test_init.py                                                            
>  77      0   100%
> tests/test_jupyter_integration.py                                             
>  33      0   100%
> tests/test_parameters.py                                                      
>  33      0   100%
> tests/test_quoting.py                                                         
>  29      0   100%
> tests/test_saving.py                                                          
>  10      0   100%
> tests/test_sources.py                                                         
>  47      1    98%
> tests/test_tools.py                                                           
>  39      0   100%
> -----------------------------------------------------------------------------------------------
> TOTAL                                                                       
> 18202  11989    34%
> Coverage HTML written to dir htmlcov
> 
> ============================= slowest 10 durations 
> =============================
> 0.09s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True]
> 0.09s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False]
> 0.08s teardown 
> .pybuild/cpython3_3.11_graphviz/build/tests/test_tools.py::test_deprecate_positional_args[None-None]
> 0.08s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False]
> 0.08s call     
> .pybuild/cpython3_3.11_graphviz/build/graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
> 0.08s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True]
> 0.08s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False]
> 0.08s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_execute.py::test_run_check_input_lines_mocked
> 0.07s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True]
> 0.07s setup    
> .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False]
> =========================== short test summary info 
> ============================
> FAILED graphviz/backend/rendering.py::graphviz.backend.rendering.render
> FAILED 
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown
>  engine]
> FAILED 
> tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown
>  format]
> ================= 3 failed, 346 passed, 2 deselected in 10.78s 
> =================
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build; python3.11 -m pytest 
> -k 'not test_pipe_pipe_invalid_data_mocked'
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 
> 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2024/03/13/python-graphviz_0.20.1+20240103-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240313;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240313&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: python-graphviz
Source-Version: 0.20.2-1
Done: Diane Trout <di...@ghic.org>

We believe that the bug you reported is fixed in the latest version of
python-graphviz, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1066...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Diane Trout <di...@ghic.org> (supplier of updated python-graphviz package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Wed, 20 Mar 2024 10:30:07 -0700
Source: python-graphviz
Architecture: source
Version: 0.20.2-1
Distribution: unstable
Urgency: medium
Maintainer: Diane Trout <di...@ghic.org>
Changed-By: Diane Trout <di...@ghic.org>
Closes: 1063952 1066796
Changes:
 python-graphviz (0.20.2-1) unstable; urgency=medium
 .
   * New upstream release (Closes: #1063952) (Closes: #1066796)
   * Remove pytest skip of test_pipe_pipe_data_mocked, resolved upstream.
   * Add only-one-conftest.patch to resolve import file mismatch pytest
     error.
Checksums-Sha1:
 1fd71574f54087cc201b62fd8184ceb903cd9d44 2330 python-graphviz_0.20.2-1.dsc
 11424ef53b7aebe2eb0dedf3d7a4761bc8e41a61 193807 
python-graphviz_0.20.2.orig.tar.gz
 5e32748636986f8a65de3e9514efbc79017150d0 4084 
python-graphviz_0.20.2-1.debian.tar.xz
 4d61bfb1ab49dcc33e065df21358b07001085c33 9220 
python-graphviz_0.20.2-1_amd64.buildinfo
Checksums-Sha256:
 103284dc524e45a78fc9e09df3518263a0aad3959264bd0a12097f3849604f72 2330 
python-graphviz_0.20.2-1.dsc
 e157b9e0fa56e5ef1af7b4b6c6de1a4cc2c4d46b613c30369e891792b5a43137 193807 
python-graphviz_0.20.2.orig.tar.gz
 60ce9efd8ea16d3e0ced5018e68cd588c3e9a34e087b8e9fb476cf71fcd81a0e 4084 
python-graphviz_0.20.2-1.debian.tar.xz
 e074e53ef1c733cc7d844b936f9ccefd0e506140ae3fc17926d0161b8d095801 9220 
python-graphviz_0.20.2-1_amd64.buildinfo
Files:
 a3f00f33a668bfa3c37ed850af777196 2330 python optional 
python-graphviz_0.20.2-1.dsc
 5a7c058d463ad582a0cab069c87133e1 193807 python optional 
python-graphviz_0.20.2.orig.tar.gz
 5f32c2f88f5bd9e5ed4ba169f4e4b783 4084 python optional 
python-graphviz_0.20.2-1.debian.tar.xz
 1dcb757eb6f993318cbd64b7f207e6cf 9220 python optional 
python-graphviz_0.20.2-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEETQVcMeSBIEX5AQ11mQ04NnM013AFAmX7JZkACgkQmQ04NnM0
13D+bQ/+JL6+oGYTBvzvTI/LEgK+QZpdJv4ZdZot6Cg/HVsw48qTAkQ56A19nrsA
cF5dcsQVBYh4AGbRlWpSiCG9FkHVyz3We5BRoJuSxkNeAA1cyEqTF3X9n2sIpcxd
r6s3PnoI3RKH4mvhc02sMHTlKMl4vB67DulEx9yIY0Ql2IB0ySXbVgVEGHNyI14G
LImuTAH2inAc5LsC55MEfWEdxM3Ax80F6CEvQqD7ArSXIXwgABVoyuK+8zm1gdnQ
DsjoplMw8/QMGGXNcwZGXXiRQjkLjfTezRgVagUnJadIkvQpnxwvqwfb/1EymrKK
wB2+kqA1VCSzUgk9l/LtDUrHo8ooBY3r90DRjpaoxOQNFVSaFraeTQa+7avi9bIO
5AqD+e7SGKJVAOwn7tKZrndnD/cEa7BIxWHnAr6Mak/08COrw4iEicDUbRqFSESu
+5M+OQGPANIrQj2YA+orxFHuyu1c/FYPBNyUgfS7zDhxDsanKHCLTQrDT9z9WO7A
a88SbZoFjS5kfeq0hVL/vuAkHkmWeIzjkYFr884mz24NvbQ73qmbYotDsrDlU4S+
FKmpcihowfQcRPVY8mVHwH9Y/2yIt0tV3JCPXoQ1fYJfr8Zq+yf/aXiDPrvL81++
VkFq3b5YQNnYQzJh88F36MmsPnBKY7HRU/WDKwuqiJ+DkMuXZy8=
=9d+H
-----END PGP SIGNATURE-----

Attachment: pgp2wVJXN0r65.pgp
Description: PGP signature


--- End Message ---

Reply via email to