Improve Android app UI and controller flows
This commit is contained in:
@@ -0,0 +1,679 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user