Cargo: Caixa não encontrada nos testes de integração se `crate-type = [" cdylib "]`

Criado em 13 fev. 2019  ·  3Comentários  ·  Fonte: rust-lang/cargo

Problema
Estou desenvolvendo um código que precisa funcionar com python, o que exige que eu tenha um tipo de caixa de cdylib . Acontece que quando você segue a recomendação de usar um diretório tests , o código dentro do diretório não consegue encontrar a caixa, apresentando um erro como o seguinte:

   Compiling cargo_issue_6659 v0.1.0 (/home/cfkaran2/Desktop/cargo_issue_6659)
     Running `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
     Running `rustc --edition=2018 --crate-name cargo_issue_6659 src/lib.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=b9fa70b838dfddae -C extra-filename=-b9fa70b838dfddae --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
error[E0463]: can't find crate for `rustc_issue_report_cdylib`
 --> tests/tester.rs:1:1
  |
1 | extern crate rustc_issue_report_cdylib;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `cargo_issue_6659`.

Caused by:
  process didn't exit successfully: `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Passos

  1. Verifique o repositório em https://github.com/ckaran/cargo_issue_6659.
  2. Siga as instruções no README.md

Soluções possíveis)

Nenhum conhecido.

Notas

$ cargo -V -vvv
cargo 1.32.0 (8610973aa 2019-01-02)
release: 1.32.0
commit-hash: 8610973aaf48615ba7dc9a38a9a2795ba6f36a31
commit-date: 2019-01-02

$ rustc -Vv
rustc 1.32.0 (9fda7c223 2019-01-16)
binary: rustc
commit-hash: 9fda7c2237db910e41d6a712e9a2139b352e558b
commit-date: 2019-01-16
host: x86_64-unknown-linux-gnu
release: 1.32.0
LLVM version: 8.0

$ uname -a
Linux EMANE 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic
A-crate-types A-documenting-cargo-itself

Comentários muito úteis

Você pode adicionar rlib (ou lib ) à lista crate-type e deve funcionar. Os testes não podem ser vinculados ao cdylib.

BTW, há um erro de digitação em seu exemplo, tests/tester.rs deve ter extern crate cargo_issue_6659; .

Todos 3 comentários

Você pode adicionar rlib (ou lib ) à lista crate-type e deve funcionar. Os testes não podem ser vinculados ao cdylib.

BTW, há um erro de digitação em seu exemplo, tests/tester.rs deve ter extern crate cargo_issue_6659; .

Ah, desculpe, como há um problema do tipo galinha e ovo entre a criação de um repositório que tem o mesmo nome do problema para o qual ele se destina, às vezes me esqueço de alterar os nomes. Agora corrigido.

Quanto à configuração de rlib ou lib , o problema é que estou usando pyo3 , que diz que você deve definir o tipo de biblioteca para cdylib , e não ter meu o trabalho de testes de integração foi surpreendente para mim. Se for sabido que os testes não podem ser vinculados a cdylib bibliotecas de tipo, pode valer a pena atualizar a documentação de cargo (ou talvez rustc 's) para refletir este fato .

Sim, a documentação para tipos de caixas definitivamente poderia ser melhorada em geral.

Sinta-se à vontade para deixar mais comentários aqui se tiver qualquer outro problema. Caso contrário, deixarei em aberto como um problema de documentação.

Esta página foi útil?
0 / 5 - 0 avaliações