rust 笔记 9:cargo 杂记

1. 命令行运行特定单测

总有需要用命令行跑单测的场景,比如 vscode 上的 rust-analyzer 插件突然坏掉。。这个时候我们需要:

cargo test --package my_project --bin test -- api::handler::test --show-output
cargo test --package my_project --lib -- api::handler::test --show-output

参数:

  • package:这个是为了 workspace 模式而设计的。对于小型项目中常见的单 package workspace,就用 Cargo.toml 里定义的包名即可。
  • bin:指定二进制对象名字。如果需要指定 src/bin 目录下的单测对象,则用这个。若无,则还是用和 Cargo.toml 同名的即可
  • lib:如果是 lib 包中的单测则用这个

最后指定测试对象,注意前面要有一个 --
假设我们在 src/api/handler.rs 中存在这样的单测结构:

#[cfg(test)]
mod tests {
    #[test]
    fn test_1() {
        // ....
    }

    #[test]
    fn test_2() {
        //....
    }
}

那么,可以用这样两种方式运行单测:

  • -- api::handler::tests 运行 tests module 中的所有单测
  • -- api::handler::tests::test_2 --exact 指定运行 test_2 这个单测函数

2. no authentication methods succeeded 问题

这个问题常见于企业内的开发,cargo 无法拉取私有 gitlab 上的代码,导致无法编译。解决方案其实在报错信息中就有说明:

Caused by:
failed to authenticate when downloading repository
* attempted ssh-agent authentication, but no usernames succeeded: `git`

if the git CLI succeeds then `net.git-fetch-with-cli` may help here
https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli

即,在工程根目录创建 .cargo/config.toml ,并在其中加入如下片段即可:

[net]
git-fetch-with-cli = true

这样 cargo 会调用系统上的 git 二进制来拉代码,而大家的 git 想必是已经配置好了企业仓库的鉴权的。

这个问题主要还是 cargo 默认使用的 libgit2 对鉴权支持不友好导致的。更详细的说明可以参考 https://docs.shipyard.rs/configuration/git-fetch-with-cli.html

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇