Merge branch 'nora/tests' into 'main'

opgpcard: Replace flagfile with environment variable

See merge request openpgp-card/openpgp-card!21
This commit is contained in:
Heiko 2022-10-27 14:37:07 +00:00
commit 538afffcaf
5 changed files with 26 additions and 21 deletions

View file

@ -145,8 +145,7 @@ subplot:
script: script:
# make sure a virtual card is available, so that the subplot tests are # make sure a virtual card is available, so that the subplot tests are
# generated # generated
- touch tools/virtual-card-available - CARD_BASED_TESTS=true cargo test
- cargo test
cache: cache:
# inherit all general cache settings # inherit all general cache settings
<<: *general_cache_config <<: *general_cache_config

View file

@ -9,14 +9,17 @@ fn main() {
// card is available. This is a kludge until Subplot can do // card is available. This is a kludge until Subplot can do
// conditional scenarios // conditional scenarios
// (https://gitlab.com/subplot/subplot/-/issues/20). // (https://gitlab.com/subplot/subplot/-/issues/20).
let flagfile = Path::new("virtual-card-available"); match option_env!("CARD_BASED_TESTS") {
if flagfile.exists() { Some(_) => {
subplot_build::codegen("subplot/opgpcard.subplot") subplot_build::codegen("subplot/opgpcard.subplot")
.expect("failed to generate code with Subplot"); .expect("failed to generate code with Subplot");
} else { println!("cargo:warning=generated subplot tests");
}
None => {
// If we're not generating code from the subplot, we should at // If we're not generating code from the subplot, we should at
// least create an empty file so that the tests/opgpcard.rs // least create an empty file so that the tests/opgpcard.rs
// file can include it. Otherwise the build will fail. // file can include it. Otherwise the build will fail.
println!("cargo:warning=did not generate subplot tests");
let out_dir = std::env::var("OUT_DIR").unwrap(); let out_dir = std::env::var("OUT_DIR").unwrap();
let include = Path::new(&out_dir).join("opgpcard.rs"); let include = Path::new(&out_dir).join("opgpcard.rs");
eprintln!("build.rs: include={}", include.display()); eprintln!("build.rs: include={}", include.display());
@ -25,3 +28,4 @@ fn main() {
} }
} }
} }
}

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# #
# Run this to run opgpcard (tools directory) test suite inside a # Run this to run opgpcard (tools directory) test suite inside a
# Docker container with a virtual smartcard running. The test suite # Docker container with a virtual smartcard running. The test suite
@ -14,10 +14,12 @@ docker run --rm -it \
-v root:/root \ -v root:/root \
-v cargo:/cargo \ -v cargo:/cargo \
-v $(pwd):/src \ -v $(pwd):/src \
-e CARD_BASED_TESTS=true \
registry.gitlab.com/openpgp-card/virtual-cards/smartpgp-builddeps sh -c ' registry.gitlab.com/openpgp-card/virtual-cards/smartpgp-builddeps sh -c '
sed -i "s/timeout=20/timeout=60/" /home/jcardsim/run-card.sh && sed -i "s/timeout=20/timeout=60/" /home/jcardsim/run-card.sh &&
/etc/init.d/pcscd start && /etc/init.d/pcscd start &&
su - -c "sh /home/jcardsim/run-card.sh >/dev/null" jcardsim && su - -c "sh /home/jcardsim/run-card.sh >/dev/null" jcardsim &&
cd /src/tools && cd /src/tools &&
if ! [ -e virtual-card-available ]; then rm -f tests/opgpcard.rs; fi && CARGO_TARGET_DIR=/cargo/ cargo update &&
CARGO_TARGET_DIR=/cargo/ cargo build -vv &&
CARGO_TARGET_DIR=/cargo/ cargo test' CARGO_TARGET_DIR=/cargo/ cargo test'

View file

@ -17,9 +17,9 @@ The verification scenarios in this document assume the availability of
a virtual smart card. Specifically one described in a virtual smart card. Specifically one described in
<https://gitlab.com/openpgp-card/virtual-cards>. The <https://gitlab.com/openpgp-card/virtual-cards>. The
`openpgp-card/tools` crate is set up to generate tests only if the `openpgp-card/tools` crate is set up to generate tests only if the
file `tools/virtual-card-available` exists, and the `openpgp-card` environment variable `CARD_BASED_TESTS` is set (to any value),
repository `.gitlab-ci.yml` file is set up to create that file when and the `openpgp-card` repository `.gitlab-ci.yml` file is set up to
the repository is tested in GitLab CI. set that environment variable when the repository is tested in GitLab CI.
This means that if you run `cargo test`, no test code is normally This means that if you run `cargo test`, no test code is normally
generated from this document. To run the tests locally, outside of generated from this document. To run the tests locally, outside of

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# #
# Run "cargo test" inside a Docker container with virtual cards # Run "cargo test" inside a Docker container with virtual cards
# installed and running. This will allow at least rudimentary testing # installed and running. This will allow at least rudimentary testing