gpt4 book ai didi

rust - 我如何在没有 Rust 编译器的情况下在另一台机器上运行 cargo 测试?

转载 作者:行者123 更新时间:2023-11-29 07:50:51 24 4
gpt4 key购买 nike

我知道编译器可以直接在 arm-linux-androideabi 上运行,但是 Android 模拟器(我的意思是在 x86/amd64 上模拟 ARM)很慢,所以我不想在模拟器上使用 cargorustc,我只想在上面运行测试。

我想在我的 PC 上交叉编译测试 (cargo test --target=arm-linux-androideabi --no-run?),然后上传并在模拟器上运行它们,希望能捕获像 this 这样的错误.

如何在不运行 cargo test 的情况下运行 cargo test?是否像运行所有使用 cargo test --no-run 构建的二进制文件一样简单?

最佳答案

cargo test支持两种测试,一个是正常测试( #[test] fn s 和 tests/ 内的文件),另一个是文档测试。

正常的测试就像运行所有二进制文件一样简单。如果测试以错误代码 0 退出,则认为测试成功。

文档测试不能进行交叉测试。 Doc测试由rustdoc直接编译执行使用编译器库,因此必须在 ARM 机器上安装编译器才能运行文档测试。事实上,运行 cargo test --doc当 HOST ≠ TARGET 时什么都不做。

因此,只要您不依赖文档测试进行覆盖,您最后一个问题的答案是


从 Rust 1.19 开始,cargo支持target specific runners , 它允许您指定一个脚本来上传并在 ARM 机器上执行测试程序。

#!/bin/sh
set -e
adb push "$1" "/sdcard/somewhere/$1"
adb shell "chmod 755 /sdcard/somewhere/$1 && /sdcard/somewhere/$1"
# ^ note: may need to change this line, see https://stackoverflow.com/q/9379400

把这个放到你的 .cargo/config :

[target.arm-linux-androideabi]
runner = ["/path/to/your/run/script.sh"]

然后 cargo test --target=arm-linux-androideabi应该 Just Work™。


如果您的项目托管在 GitHub 上并使用 Travis CI,您可能还想查看 trust .它提供了一个预打包的解决方案,用于在 CI 上测试许多架构,包括 ARMv7 Linux(不幸的是没有 Android)。

关于rust - 我如何在没有 Rust 编译器的情况下在另一台机器上运行 cargo 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com