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.

Reply via email to