Files

680 lines
47 KiB
Plaintext

requirements 未变化,跳过依赖安装。
> <仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Scripts\python.exe -m pip check
No broken requirements found.
已清理:<仓库根目录>\测试相关资料\如何测试\本机测试环境\work\pytest
> <仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Scripts\python.exe -m pytest -q -p no:cacheprovider --basetemp=<仓库根目录>\测试相关资料\如何测试\本机测试环境\work\pytest
........................................................................ [ 13%]
........................................................................ [ 27%]
........................................................................ [ 41%]
...................................Fsssssss.......s..................... [ 55%]
........................................................................ [ 69%]
.......s................................................................ [ 82%]
........................................................................ [ 96%]
................. [100%]
================================== FAILURES ===================================
__ test_media_settings_api_accepts_outside_centers_but_rejects_an_empty_view __
+ Exception Group Traceback (most recent call last):
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_utils.py", line 79, in collapse_excgroups
| yield
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 183, in __call__
| async with anyio.create_task_group() as task_group:
| ~~~~~~~~~~~~~~~~~~~~~~~^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 815, in __aexit__
| raise BaseExceptionGroup(
| "unhandled errors in a TaskGroup", self._exceptions
| ) from None
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\runner.py", line 344, in from_call
| result: TResult | None = func()
| ~~~~^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\runner.py", line 246, in <lambda>
| lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
| ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
| ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
| ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 167, in _multicall
| raise exception
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
| teardown.throw(exception)
| ~~~~~~~~~~~~~~^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\logging.py", line 850, in pytest_runtest_call
| yield
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
| teardown.throw(exception)
| ~~~~~~~~~~~~~~^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\capture.py", line 900, in pytest_runtest_call
| return (yield)
| ^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
| teardown.throw(exception)
| ~~~~~~~~~~~~~~^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\skipping.py", line 263, in pytest_runtest_call
| return (yield)
| ^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
| res = hook_impl.function(*args)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\runner.py", line 178, in pytest_runtest_call
| item.runtest()
| ~~~~~~~~~~~~^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\python.py", line 1671, in runtest
| self.ihook.pytest_pyfunc_call(pyfuncitem=self)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
| return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
| ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
| return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
| ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 167, in _multicall
| raise exception
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
| res = hook_impl.function(*args)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\_pytest\python.py", line 157, in pytest_pyfunc_call
| result = testfunction(**testargs)
| File "<仓库根目录>\核桃派软件源代码\tests\test_media_conversion.py", line 347, in test_media_settings_api_accepts_outside_centers_but_rejects_an_empty_view
| accepted = client.put(
| "/api/media-imports/" + job_id + "/settings",
| json={"center_x": -31 / 64, "center_y": -31 / 32},
| )
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 583, in put
| return super().put(
| ~~~~~~~~~~~^
| url,
| ^^^^
| ...<10 lines>...
| extensions=extensions,
| ^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 1181, in put
| return self.request(
| ~~~~~~~~~~~~^
| "PUT",
| ^^^^^^
| ...<11 lines>...
| extensions=extensions,
| ^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 451, in request
| return super().request(
| ~~~~~~~~~~~~~~~^
| method,
| ^^^^^^^
| ...<11 lines>...
| extensions=extensions,
| ^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 825, in request
| return self.send(request, auth=auth, follow_redirects=follow_redirects)
| ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 914, in send
| response = self._send_handling_auth(
| request,
| ...<2 lines>...
| history=[],
| )
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 942, in _send_handling_auth
| response = self._send_handling_redirects(
| request,
| follow_redirects=follow_redirects,
| history=history,
| )
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 979, in _send_handling_redirects
| response = self._send_single_request(request)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 1014, in _send_single_request
| response = transport.handle_request(request)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 354, in handle_request
| raise exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 351, in handle_request
| portal.call(self.app, scope, receive, send)
| ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py", line 338, in call
| return cast(T_Retval, self.start_task_soon(func, *args).result())
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
| File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py", line 450, in result
| return self.__get_result()
| ~~~~~~~~~~~~~~~~~^^
| File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py", line 395, in __get_result
| raise self._exception
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py", line 263, in _call_func
| retval = await retval_or_awaitable
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\applications.py", line 113, in __call__
| await self.middleware_stack(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__
| raise exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__
| await self.app(scope, receive, _send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 182, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ~~~~~~~~~~~~~~~~~~^^
| File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\contextlib.py", line 162, in __exit__
| self.gen.throw(value)
| ~~~~~~~~~~~~~~^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups
| raise exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 184, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\核桃派软件源代码\app\main.py", line 760, in cache_policy
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 159, in call_next
| raise app_exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__
| await self.middleware_stack(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 736, in app
| await route.handle(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle
| await self.app(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 78, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 75, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py", line 302, in app
| raw_response = await run_endpoint_function(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| ...<3 lines>...
| )
| ^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py", line 215, in run_endpoint_function
| return await run_in_threadpool(dependant.call, **values)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\concurrency.py", line 38, in run_in_threadpool
| return await anyio.to_thread.run_sync(func)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\to_thread.py", line 65, in run_sync
| return await get_async_backend().run_sync_in_worker_thread(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2641, in run_sync_in_worker_thread
| return await future
| ^^^^^^^^^^^^
| File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1033, in run
| result = context.run(func, *args)
| File "<仓库根目录>\核桃派软件源代码\app\main.py", line 1527, in update_media_settings
| return media_imports.update_settings(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
| job_id, request.model_dump(exclude_unset=True, exclude_none=True),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| )
| ^
| File "<仓库根目录>\核桃派软件源代码\app\media\manager.py", line 463, in update_settings
| self._write(record)
| ~~~~~~~~~~~^^^^^^^^
| File "<仓库根目录>\核桃派软件源代码\app\media\manager.py", line 137, in _write
| atomic_write_bytes(self._path(record["id"]), payload)
| ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\核桃派软件源代码\app\persistence.py", line 14, in atomic_write_bytes
| atomic_write_many_bytes(((Path(path), content),))
| ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "<仓库根目录>\核桃派软件源代码\app\persistence.py", line 41, in atomic_write_many_bytes
| os.replace(temporaries[target], target)
| ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\.job.json.45cf7fdfecf34a80a4164eb8f5171514.tmp' -> 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\job.json'
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<仓库根目录>\核桃派软件源代码\tests\test_media_conversion.py", line 347, in test_media_settings_api_accepts_outside_centers_but_rejects_an_empty_view
accepted = client.put(
"/api/media-imports/" + job_id + "/settings",
json={"center_x": -31 / 64, "center_y": -31 / 32},
)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 583, in put
return super().put(
~~~~~~~~~~~^
url,
^^^^
...<10 lines>...
extensions=extensions,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 1181, in put
return self.request(
~~~~~~~~~~~~^
"PUT",
^^^^^^
...<11 lines>...
extensions=extensions,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 451, in request
return super().request(
~~~~~~~~~~~~~~~^
method,
^^^^^^^
...<11 lines>...
extensions=extensions,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 825, in request
return self.send(request, auth=auth, follow_redirects=follow_redirects)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 914, in send
response = self._send_handling_auth(
request,
...<2 lines>...
history=[],
)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 942, in _send_handling_auth
response = self._send_handling_redirects(
request,
follow_redirects=follow_redirects,
history=history,
)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 979, in _send_handling_redirects
response = self._send_single_request(request)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py", line 1014, in _send_single_request
response = transport.handle_request(request)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 354, in handle_request
raise exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py", line 351, in handle_request
portal.call(self.app, scope, receive, send)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py", line 338, in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py", line 450, in result
return self.__get_result()
~~~~~~~~~~~~~~~~~^^
File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py", line 395, in __get_result
raise self._exception
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py", line 263, in _call_func
retval = await retval_or_awaitable
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__
raise exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__
await self.app(scope, receive, _send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 182, in __call__
with recv_stream, send_stream, collapse_excgroups():
~~~~~~~~~~~~~~~~~~^^
File "<开发机用户目录>\AppData\Local\Programs\Python\Python314\Lib\contextlib.py", line 162, in __exit__
self.gen.throw(value)
~~~~~~~~~~~~~~^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_utils.py", line 85, in collapse_excgroups
raise exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 184, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\核桃派软件源代码\app\main.py", line 760, in cache_policy
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 159, in call_next
raise app_exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py", line 144, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
raise exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__
await self.middleware_stack(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 736, in app
await route.handle(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle
await self.app(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 78, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
raise exc
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py", line 75, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py", line 302, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
)
^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py", line 215, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\concurrency.py", line 38, in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\to_thread.py", line 65, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 2641, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 1033, in run
result = context.run(func, *args)
File "<仓库根目录>\核桃派软件源代码\app\main.py", line 1527, in update_media_settings
return media_imports.update_settings(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
job_id, request.model_dump(exclude_unset=True, exclude_none=True),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "<仓库根目录>\核桃派软件源代码\app\media\manager.py", line 463, in update_settings
self._write(record)
~~~~~~~~~~~^^^^^^^^
File "<仓库根目录>\核桃派软件源代码\app\media\manager.py", line 137, in _write
atomic_write_bytes(self._path(record["id"]), payload)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\核桃派软件源代码\app\persistence.py", line 14, in atomic_write_bytes
atomic_write_many_bytes(((Path(path), content),))
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<仓库根目录>\核桃派软件源代码\app\persistence.py", line 41, in atomic_write_many_bytes
os.replace(temporaries[target], target)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\.job.json.45cf7fdfecf34a80a4164eb8f5171514.tmp' -> 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\job.json'
During handling of the above exception, another exception occurred:
tmp_path = WindowsPath('<仓库根目录>/测试相关资料/如何测试/本机测试环境/work/pytest/test_media_settings_api_accept0')
def test_media_settings_api_accepts_outside_centers_but_rejects_an_empty_view(tmp_path):
app = create_app(project_root=tmp_path, driver_kind="mock")
payload = png_bytes(Image.new("RGB", (2, 1), "white"))
with TestClient(app) as client:
uploaded = client.post(
"/api/media-imports?filename=a.png&name=自由取景", content=payload,
headers={"Content-Type": "application/octet-stream", "Content-Length": str(len(payload))},
)
job_id = uploaded.json()["id"]
wait_for(client, job_id, "awaiting_settings")
> accepted = client.put(
"/api/media-imports/" + job_id + "/settings",
json={"center_x": -31 / 64, "center_y": -31 / 32},
)
tests\test_media_conversion.py:347:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py:583: in put
return super().put(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:1181: in put
return self.request(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py:451: in request
return super().request(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:825: in request
return self.send(request, auth=auth, follow_redirects=follow_redirects)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:914: in send
response = self._send_handling_auth(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:942: in _send_handling_auth
response = self._send_handling_redirects(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:979: in _send_handling_redirects
response = self._send_single_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\httpx\_client.py:1014: in _send_single_request
response = transport.handle_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py:354: in handle_request
raise exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\testclient.py:351: in handle_request
portal.call(self.app, scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py:338: in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\..\..\..\..\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py:450: in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
..\..\..\..\..\AppData\Local\Programs\Python\Python314\Lib\concurrent\futures\_base.py:395: in __get_result
raise self._exception
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\from_thread.py:263: in _call_func
retval = await retval_or_awaitable
^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\applications.py:1054: in __call__
await super().__call__(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\applications.py:113: in __call__
await self.middleware_stack(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py:186: in __call__
raise exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\errors.py:164: in __call__
await self.app(scope, receive, _send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py:182: in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
..\..\..\..\..\AppData\Local\Programs\Python\Python314\Lib\contextlib.py:162: in __exit__
self.gen.throw(value)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_utils.py:85: in collapse_excgroups
raise exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py:184: in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app\main.py:760: in cache_policy
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py:159: in call_next
raise app_exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\base.py:144: in coro
await self.app(scope, receive_or_disconnect, send_no_error)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\middleware\exceptions.py:63: in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py:53: in wrapped_app
raise exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py:42: in wrapped_app
await app(scope, receive, sender)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py:716: in __call__
await self.middleware_stack(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py:736: in app
await route.handle(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py:290: in handle
await self.app(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py:78: in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py:53: in wrapped_app
raise exc
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\_exception_handler.py:42: in wrapped_app
await app(scope, receive, sender)
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\routing.py:75: in app
response = await f(request)
^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py:302: in app
raw_response = await run_endpoint_function(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py:215: in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\starlette\concurrency.py:38: in run_in_threadpool
return await anyio.to_thread.run_sync(func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\to_thread.py:65: in run_sync
return await get_async_backend().run_sync_in_worker_thread(
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py:2641: in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\anyio\_backends\_asyncio.py:1033: in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
app\main.py:1527: in update_media_settings
return media_imports.update_settings(
app\media\manager.py:463: in update_settings
self._write(record)
app\media\manager.py:137: in _write
atomic_write_bytes(self._path(record["id"]), payload)
app\persistence.py:14: in atomic_write_bytes
atomic_write_many_bytes(((Path(path), content),))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
writes = ((WindowsPath('<仓库根目录>/测试相关资料/如何测试/本机测试环境/work/pytest/test_media_setting... },\n "source_size": 72,\n "state": "awaiting_settings",\n "updated_at": "2026-10-09T07:13:23.922089+00:00"\n}\n'),)
def atomic_write_many_bytes(writes: Iterable[tuple[Path, bytes]]) -> None:
"""Durably replace one or more files and roll back a failed transaction."""
entries = [(Path(path), bytes(content)) for path, content in writes]
if not entries:
return
targets = [path for path, _content in entries]
if len(set(targets)) != len(targets):
raise ValueError("atomic write transaction contains duplicate paths")
originals: dict[Path, bytes | None] = {}
temporaries: dict[Path, Path] = {}
replaced: list[Path] = []
parents = sorted({target.parent for target in targets}, key=str)
try:
for target, _content in entries:
target.parent.mkdir(parents=True, exist_ok=True)
originals[target] = target.read_bytes() if target.exists() else None
for target, content in entries:
temporary = _write_temporary(target, content)
temporaries[target] = temporary
for parent in parents:
_fsync_directory(parent)
for target, _content in entries:
> os.replace(temporaries[target], target)
E PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\.job.json.45cf7fdfecf34a80a4164eb8f5171514.tmp' -> 'C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest\\test_media_settings_api_accept0\\data\\media-import\\jobs\\9905d4cf-ffe2-4270-91a2-8fd6579b252a\\job.json'
app\persistence.py:41: PermissionError
------------------------------ Captured log call ------------------------------
WARNING app.power.voltage:voltage.py:601 Screen voltage sensor status=disconnected error_code=unsupported_platform
WARNING app.monitoring.resources:resources.py:249 System resource monitor is unavailable: proc_read_error
============================== warnings summary ===============================
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87
<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:87: DeprecationWarning: 'typing.no_type_check_decorator' is deprecated and slated for removal in Python 3.15
@no_type_check_decorator
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:293: 10 warnings
<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\dbus_next\service.py:293: DeprecationWarning: 'typing.no_type_check_decorator' is deprecated and slated for removal in Python 3.15
@no_type_check_decorator
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py:234: 83 warnings
tests/test_animations.py: 913 warnings
tests/test_api.py: 2075 warnings
tests/test_fonts.py: 249 warnings
tests/test_frp.py: 332 warnings
tests/test_library_order.py: 332 warnings
tests/test_media_conversion.py: 830 warnings
tests/test_mobile_control.py: 1162 warnings
tests/test_ota.py: 249 warnings
tests/test_performance_mode.py: 83 warnings
tests/test_scene_layers.py: 166 warnings
tests/test_templates.py: 664 warnings
tests/test_ui_copy_editor.py: 599 warnings
tests/test_wifi.py: 249 warnings
<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\routing.py:234: DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated and slated for removal in Python 3.16; use inspect.iscoroutinefunction() instead
is_coroutine = asyncio.iscoroutinefunction(dependant.call)
app\main.py:2049: 1 warning
tests/test_animations.py: 11 warnings
tests/test_api.py: 25 warnings
tests/test_fonts.py: 3 warnings
tests/test_frp.py: 4 warnings
tests/test_library_order.py: 4 warnings
tests/test_media_conversion.py: 10 warnings
tests/test_mobile_control.py: 14 warnings
tests/test_ota.py: 3 warnings
tests/test_performance_mode.py: 1 warning
tests/test_scene_layers.py: 2 warnings
tests/test_templates.py: 8 warnings
tests/test_ui_copy_editor.py: 7 warnings
tests/test_wifi.py: 3 warnings
<仓库根目录>\核桃派软件源代码\app\main.py:2049: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
@app.on_event("startup")
..\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\applications.py:4495: 2 warnings
tests/test_animations.py: 22 warnings
tests/test_api.py: 50 warnings
tests/test_fonts.py: 6 warnings
tests/test_frp.py: 8 warnings
tests/test_library_order.py: 8 warnings
tests/test_media_conversion.py: 20 warnings
tests/test_mobile_control.py: 28 warnings
tests/test_ota.py: 6 warnings
tests/test_performance_mode.py: 2 warnings
tests/test_scene_layers.py: 4 warnings
tests/test_templates.py: 16 warnings
tests/test_ui_copy_editor.py: 14 warnings
tests/test_wifi.py: 6 warnings
<仓库根目录>\测试相关资料\如何测试\本机测试环境\.venv\Lib\site-packages\fastapi\applications.py:4495: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
return self.router.on_event(event_type)
app\main.py:2079: 1 warning
tests/test_animations.py: 11 warnings
tests/test_api.py: 25 warnings
tests/test_fonts.py: 3 warnings
tests/test_frp.py: 4 warnings
tests/test_library_order.py: 4 warnings
tests/test_media_conversion.py: 10 warnings
tests/test_mobile_control.py: 14 warnings
tests/test_ota.py: 3 warnings
tests/test_performance_mode.py: 1 warning
tests/test_scene_layers.py: 2 warnings
tests/test_templates.py: 8 warnings
tests/test_ui_copy_editor.py: 7 warnings
tests/test_wifi.py: 3 warnings
<仓库根目录>\核桃派软件源代码\app\main.py:2079: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).
@app.on_event("shutdown")
tests/test_media_conversion.py::test_free_crop_can_leave_only_one_source_pixel_visible_at_each_corner
tests/test_media_conversion.py::test_free_crop_can_leave_only_one_source_pixel_visible_at_each_corner
tests/test_media_conversion.py::test_free_crop_can_leave_only_one_source_pixel_visible_at_each_corner
tests/test_media_conversion.py::test_free_crop_can_leave_only_one_source_pixel_visible_at_each_corner
<仓库根目录>\核桃派软件源代码\tests\test_media_conversion.py:134: DeprecationWarning: Image.Image.getdata is deprecated and will be removed in Pillow 14 (2027-10-15). Use get_flattened_data instead.
assert sum(pixel[0] > 240 for pixel in output.getdata()) == 1
tests/test_templates.py::test_template_crud_copy_persistence_and_thumbnail_cleanup
<仓库根目录>\核桃派软件源代码\tests\test_templates.py:165: DeprecationWarning: Image.Image.getdata is deprecated and will be removed in Pillow 14 (2027-10-15). Use get_flattened_data instead.
assert len(set(image.getdata())) > 1
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ===========================
FAILED tests/test_media_conversion.py::test_media_settings_api_accepts_outside_centers_but_rejects_an_empty_view
1 failed, 511 passed, 9 skipped, 8390 warnings in 133.37s (0:02:13)
本机测试工具失败:Command '['C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\.venv\\Scripts\\python.exe', '-m', 'pytest', '-q', '-p', 'no:cacheprovider', '--basetemp=C:\\Users\\<开发机用户名>\\Documents\\wenjian\\1.work\\奇妙小屏幕控制器-核桃派\\测试相关资料\\如何测试\\本机测试环境\\work\\pytest']' returned non-zero exit status 1.