amueller / word_cloud

A little word cloud generator in Python
https://amueller.github.io/word_cloud
MIT License
10.1k stars 2.31k forks source link

test_cli_as_executable test failed on 1.9.3 #757

Open yuzibo opened 9 months ago

yuzibo commented 9 months ago

Description

I am packaging word_cloud 1.9.3 on Debian, but there are there tests case failed:

test/test_wordcloud_cli.py::test_cli_as_executable[wordcloud_cli --help-usage: wordcloud_cli-0] ERROR [ 97%]
test/test_wordcloud_cli.py::test_cli_as_executable[/usr/bin/python3.12 -m wordcloud --help-usage: __main__-0] ERROR [ 98%]
test/test_wordcloud_cli.py::test_cli_as_executable[/usr/bin/python3.12 /tmp/autopkgtest-lxc.q1mqf354/downtmp/autopkgtest_tmp/test/../wordcloud/wordcloud_cli.py --help-To execute the CLI-1] ERROR [100%]

==================================== ERRORS ====================================
_ ERROR at setup of test_cli_as_executable[wordcloud_cli --help-usage: wordcloud_cli-0] _

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7f36e52013a0>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], TResult]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: Optional[
            Union[Type[BaseException], Tuple[Type[BaseException], ...]]
        ] = None,
    ) -> "CallInfo[TResult]":
        """Call func, wrapping the result in a CallInfo.

        :param func:
            The function to call. Called without arguments.
        :param when:
            The phase in which the function is called.
        :param reraise:
            Exception or exceptions that shall propagate if raised by the
            function, instead of being wrapped in the CallInfo.
        """
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result: Optional[TResult] = func()

/usr/lib/python3/dist-packages/_pytest/runner.py:341:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/_pytest/runner.py:262: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/runner.py:157: in pytest_runtest_setup
    item.session._setupstate.setup(item)
/usr/lib/python3/dist-packages/_pytest/runner.py:497: in setup
    raise exc
/usr/lib/python3/dist-packages/_pytest/runner.py:494: in setup
    col.setup()
/usr/lib/python3/dist-packages/_pytest/python.py:1795: in setup
    self._request._fillfixtures()
/usr/lib/python3/dist-packages/_pytest/fixtures.py:566: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:585: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:607: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:693: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1069: in execute
    result = ihook.pytest_fixture_setup(fixturedef=self, request=request)
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1123: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

fixturefunc = <function no_cover_compat at 0x7f37697e77e0>
request = <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[wordcloud_cli --help-usage: wordcloud_cli-0]>>
kwargs = {'request': <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[wordcloud_cli --help-usage: wordcloud_cli-0]>>}

    def call_fixture_func(
        fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
    ) -> FixtureValue:
        if is_generator(fixturefunc):
            fixturefunc = cast(
                Callable[..., Generator[FixtureValue, None, None]], fixturefunc
            )
            generator = fixturefunc(**kwargs)
            try:
                fixture_result = next(generator)
            except StopIteration:
>               raise ValueError(f"{request.fixturename} did not yield a value") from None
E               ValueError: no_cover_compat did not yield a value

/usr/lib/python3/dist-packages/_pytest/fixtures.py:897: ValueError
_ ERROR at setup of test_cli_as_executable[/usr/bin/python3.12 -m wordcloud --help-usage: __main__-0] _

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7f36dfd68c20>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], TResult]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: Optional[
            Union[Type[BaseException], Tuple[Type[BaseException], ...]]
        ] = None,
    ) -> "CallInfo[TResult]":
        """Call func, wrapping the result in a CallInfo.

        :param func:
            The function to call. Called without arguments.
        :param when:
            The phase in which the function is called.
        :param reraise:
            Exception or exceptions that shall propagate if raised by the
            function, instead of being wrapped in the CallInfo.
        """
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result: Optional[TResult] = func()

/usr/lib/python3/dist-packages/_pytest/runner.py:341:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/_pytest/runner.py:262: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/runner.py:157: in pytest_runtest_setup
    item.session._setupstate.setup(item)
/usr/lib/python3/dist-packages/_pytest/runner.py:497: in setup
    raise exc
/usr/lib/python3/dist-packages/_pytest/runner.py:494: in setup
    col.setup()
/usr/lib/python3/dist-packages/_pytest/python.py:1795: in setup
    self._request._fillfixtures()
/usr/lib/python3/dist-packages/_pytest/fixtures.py:566: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:585: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:607: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:693: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1069: in execute
    result = ihook.pytest_fixture_setup(fixturedef=self, request=request)
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1123: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

fixturefunc = <function no_cover_compat at 0x7f37697e77e0>
request = <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[/usr/bin/python3.12 -m wordcloud --help-usage: __main__-0]>>
kwargs = {'request': <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[/usr/bin/python3.12 -m wordcloud --help-usage: __main__-0]>>}

    def call_fixture_func(
        fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
    ) -> FixtureValue:
        if is_generator(fixturefunc):
            fixturefunc = cast(
                Callable[..., Generator[FixtureValue, None, None]], fixturefunc
            )
            generator = fixturefunc(**kwargs)
            try:
                fixture_result = next(generator)
            except StopIteration:
>               raise ValueError(f"{request.fixturename} did not yield a value") from None
E               ValueError: no_cover_compat did not yield a value

/usr/lib/python3/dist-packages/_pytest/fixtures.py:897: ValueError
_ ERROR at setup of test_cli_as_executable[/usr/bin/python3.12 /tmp/autopkgtest-lxc.q1mqf354/downtmp/autopkgtest_tmp/test/../wordcloud/wordcloud_cli.py --help-To execute the CLI-1] _

cls = <class '_pytest.runner.CallInfo'>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7f36dfd6b2e0>
when = 'setup'
reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)

    @classmethod
    def from_call(
        cls,
        func: "Callable[[], TResult]",
        when: "Literal['collect', 'setup', 'call', 'teardown']",
        reraise: Optional[
            Union[Type[BaseException], Tuple[Type[BaseException], ...]]
        ] = None,
    ) -> "CallInfo[TResult]":
        """Call func, wrapping the result in a CallInfo.

        :param func:
            The function to call. Called without arguments.
        :param when:
            The phase in which the function is called.
        :param reraise:
            Exception or exceptions that shall propagate if raised by the
            function, instead of being wrapped in the CallInfo.
        """
        excinfo = None
        start = timing.time()
        precise_start = timing.perf_counter()
        try:
>           result: Optional[TResult] = func()

/usr/lib/python3/dist-packages/_pytest/runner.py:341:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/_pytest/runner.py:262: in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/runner.py:157: in pytest_runtest_setup
    item.session._setupstate.setup(item)
/usr/lib/python3/dist-packages/_pytest/runner.py:497: in setup
    raise exc
/usr/lib/python3/dist-packages/_pytest/runner.py:494: in setup
    col.setup()
/usr/lib/python3/dist-packages/_pytest/python.py:1795: in setup
    self._request._fillfixtures()
/usr/lib/python3/dist-packages/_pytest/fixtures.py:566: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:585: in getfixturevalue
    fixturedef = self._get_active_fixturedef(argname)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:607: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:693: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1069: in execute
    result = ihook.pytest_fixture_setup(fixturedef=self, request=request)
/usr/lib/python3/dist-packages/pluggy/_hooks.py:493: in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
/usr/lib/python3/dist-packages/pluggy/_manager.py:115: in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
/usr/lib/python3/dist-packages/_pytest/fixtures.py:1123: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

fixturefunc = <function no_cover_compat at 0x7f37697e77e0>
request = <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[/usr/bin/python3.12 /tmp/autopkgtest-lxc.q1mqf354/downtmp/autopkgtest_tmp/test/../wordcloud/wordcloud_cli.py --help-To execute the CLI-1]>>
kwargs = {'request': <SubRequest 'no_cover_compat' for <Function test_cli_as_executable[/usr/bin/python3.12 /tmp/autopkgtest-lxc.q1mqf354/downtmp/autopkgtest_tmp/test/../wordcloud/wordcloud_cli.py --help-To execute the CLI-1]>>}

    def call_fixture_func(
        fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
    ) -> FixtureValue:
        if is_generator(fixturefunc):
            fixturefunc = cast(
                Callable[..., Generator[FixtureValue, None, None]], fixturefunc
            )
            generator = fixturefunc(**kwargs)
            try:
                fixture_result = next(generator)
            except StopIteration:
>               raise ValueError(f"{request.fixturename} did not yield a value") from None
E               ValueError: no_cover_compat did not yield a value

/usr/lib/python3/dist-packages/_pytest/fixtures.py:897: ValueError
=============================== warnings summary ===============================
test/test_wordcloud.py::test_collocations
  /usr/lib/python3/dist-packages/dateutil/tz/tz.py:37: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
    EPOCH = datetime.datetime.utcfromtimestamp(0)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
ERROR test/test_wordcloud_cli.py::test_cli_as_executable[wordcloud_cli --help-usage: wordcloud_cli-0]
ERROR test/test_wordcloud_cli.py::test_cli_as_executable[/usr/bin/python3.12 -m wordcloud --help-usage: __main__-0]
ERROR test/test_wordcloud_cli.py::test_cli_as_executable[/usr/bin/python3.12 /tmp/autopkgtest-lxc.q1mqf354/downtmp/autopkgtest_tmp/test/../wordcloud/wordcloud_cli.py --help-To execute the CLI-1]
=================== 73 passed, 1 warning, 3 errors in 2.00s ====================

Steps/Code to Reproduce

Expected Results

Actual Results

Versions

amd64 Debian/sid Python 3.12.1 (main, Dec 8 2023, 16:20:54) [GCC 13.2.0] NumPy 1.24.2 matplotlib 3.6.3 wordcoud 1.9.3+dfsg