python / python/cpython

Copy files back from Android testbed emulator to host

未關閉
#149,113 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

OS-android type-feature
主要語言
Python
星號
77.2k
分支
35.9k
PR 合併指標
PR 指標待擷取

描述

Feature or enhancement

Proposal:

Currently I am trying to add Android support for aiohttp and I am using cibuildwheel to build an test the wheel. For simplicity I am using the default managed Android emulator.

One missing piece, however, is measuring the code coverage of the tests. It is possible to track coverage using pytest-cov, but I haven’t yet found a way to copy the generated .coverage file from the managed Android emulator back to the host PC for further processing. Using adb pull doesn’t work, since the managed Android emulators shut down automatically after the tests. Of course, I could work with a connected Android emulator where the emulator stays on after the tests, allowing me to copy the necessary data using adb pull, but then I would have to manually start an Android emulator before calling cibuildwheel. I would prefer to avoid this extra effort.

Therefore, I suggest modifying the android.py script and the Android testbed to provide a generic way to copy data from the Android emulator back to the host. Here are a few ideas I have:

On idea is to copy the encode files as base64 and output them via logcat. This would be a simple but probably not very practical approach, especially if the files are large.

A propably better solution would be to use the (pretty bad documented) folders build/outputs/managed_device_android_test_additional_output and build/outputs/connected_android_test_additional_output to copy files from the emulator to the host. See for example here or here.

As far as I can tell, this feature would actually only be relevant for third-party packages built using cibuildwheel, for example. However, since cibuildwheel uses the android.py script and the Android testbed project from CPython, such a feature would need to be added to CPython and cannot be implemented within cibuildwheel itself.

I already have a working draft that uses managed_device_android_test_additional_output, but I wanted to discuss this first to see if it’s a useful addition or if it’s actually out of scope for CPython?

@mhsmith What do you think?

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

Linked PRs
  • gh-149271

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

先檢查 android.py 指令碼和 Android 測試環境,然後檢視 managed_device_android_test_additional_output 與 connected_android_test_additional_output 的使用方式。當一個通用機制能在測試結束後,讓 managed emulator 上產生的檔案可在 host 上使用,包括供進一步處理的 .coverage 檔案時,這項變更就完成了。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
android, python
領域
mobile, testing
Issue 類型
功能
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。