gpg integration tests fail in environment where /run/user dir of build user is missing (e.g. package build environment)

Hi! I'm currently trying to package this project for Arch Linux. Unfortunately the tests do not pass.

cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
cargo build --frozen --release --all-features
export RUSTUP_TOOLCHAIN=stable
cargo test --frozen --all-features

Using:

  • rust 1.66.0
  • gnupg 2.2.40

I get:

   Compiling cfg-if v1.0.0
   Compiling autocfg v1.1.0
   Compiling libc v0.2.138
   Compiling proc-macro2 v1.0.47
   Compiling quote v1.0.21
   Compiling unicode-ident v1.0.5
   Compiling version_check v0.9.4
   Compiling syn v1.0.105
   Compiling scopeguard v1.1.0
   Compiling log v0.4.17
   Compiling memchr v2.5.0
   Compiling bitflags v1.3.2
   Compiling regex-syntax v0.6.28
   Compiling pkg-config v0.3.26
   Compiling cc v1.0.78
   Compiling parking_lot_core v0.9.5
   Compiling glob v0.3.0
   Compiling smallvec v1.10.0
   Compiling crunchy v0.2.2
   Compiling fastrand v1.8.0
   Compiling siphasher v0.3.10
   Compiling remove_dir_all v0.5.3
   Compiling hashbrown v0.12.3
   Compiling tiny-keccak v2.0.2
   Compiling libloading v0.7.4
   Compiling typenum v1.16.0
   Compiling either v1.8.0
   Compiling phf_shared v0.10.0
   Compiling fixedbitset v0.4.2
   Compiling once_cell v1.16.0
   Compiling new_debug_unreachable v1.0.4
   Compiling precomputed-hash v0.1.1
   Compiling futures-core v0.3.25
   Compiling bit-vec v0.6.3
   Compiling crossbeam-utils v0.8.14
   Compiling bindgen v0.57.0
   Compiling ena v0.14.0
   Compiling nom v5.1.2
   Compiling generic-array v0.14.6
   Compiling itertools v0.10.5
   Compiling shlex v0.1.1
   Compiling bit-set v0.5.3
   Compiling diff v0.1.13
   Compiling lock_api v0.4.9
   Compiling indexmap v1.9.2
   Compiling clang-sys v1.4.0
   Compiling unicode-xid v0.2.4
   Compiling lazy_static v1.4.0
   Compiling thiserror v1.0.37
   Compiling lazycell v1.3.0
   Compiling rustc-hash v1.1.0
   Compiling lalrpop-util v0.19.8
   Compiling peeking_take_while v0.1.2
   Compiling slab v0.4.7
   Compiling memoffset v0.7.1
   Compiling pin-project-lite v0.2.9
   Compiling futures-channel v0.3.25
   Compiling futures-task v0.3.25
   Compiling futures-sink v0.3.25
   Compiling crc32fast v1.3.2
   Compiling crossbeam-epoch v0.9.13
   Compiling anyhow v1.0.66
   Compiling futures-io v0.3.25
   Compiling tinyvec_macros v0.1.0
   Compiling futures-util v0.3.25
   Compiling adler v1.0.2
   Compiling tinyvec v1.6.0
   Compiling dirs-sys-next v0.1.2
   Compiling atty v0.2.14
   Compiling tempfile v3.3.0
   Compiling miniz_oxide v0.6.2
   Compiling pin-utils v0.1.0
   Compiling aho-corasick v0.7.20
   Compiling dirs-next v2.0.0
   Compiling num-traits v0.2.15
   Compiling term v0.7.0
   Compiling parking_lot v0.12.1
   Compiling petgraph v0.6.2
   Compiling unicode-bidi v0.3.8
   Compiling io-lifetimes v1.0.3
   Compiling crossbeam-channel v0.5.6
   Compiling string_cache v0.8.4
   Compiling num-integer v0.1.45
   Compiling ascii-canvas v3.0.0
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling flate2 v1.0.25
   Compiling crossbeam-deque v0.8.2
   Compiling tokio v1.23.0
   Compiling crossbeam-queue v0.3.8
   Compiling getrandom v0.2.8
   Compiling num_cpus v1.14.0
   Compiling unicode-normalization v0.1.22
   Compiling dyn-clone v1.0.9
   Compiling memsec v0.6.2
   Compiling base64 v0.13.1
   Compiling regex v1.7.0
   Compiling rustix v0.36.5
   Compiling xxhash-rust v0.8.6
   Compiling rand_core v0.6.4
   Compiling digest v0.9.0
   Compiling term_size v0.3.2
   Compiling socket2 v0.4.7
   Compiling mio v0.8.5
   Compiling dirs-sys v0.3.7
   Compiling sha1collisiondetection v0.2.6
   Compiling bzip2 v0.4.3
   Compiling capnp v0.14.11
   Compiling rayon-core v1.10.1
   Compiling ppv-lite86 v0.2.17
   Compiling unicode-width v0.1.10
   Compiling linux-raw-sys v0.1.4
   Compiling nix v0.18.0
   Compiling bytes v1.3.0
   Compiling dirs v4.0.0
   Compiling buffered-reader v1.1.3
   Compiling idna v0.3.0
   Compiling textwrap v0.11.0
   Compiling cexpr v0.4.0
   Compiling time v0.1.45
   Compiling vec_map v0.8.2
   Compiling iana-time-zone v0.1.53
   Compiling rand_chacha v0.3.1
   Compiling time-core v0.1.0
   Compiling sequoia-wot v0.3.0
   Compiling ansi_term v0.12.1
   Compiling cfg-if v0.1.10
   Compiling strsim v0.8.0
   Compiling time v0.3.17
   Compiling lalrpop v0.19.8
   Compiling crossbeam v0.8.2
   Compiling rand v0.8.5
   Compiling clap v2.34.0
   Compiling fs2 v0.4.3
   Compiling filetime v0.2.19
   Compiling edit-distance v2.1.0
   Compiling chrono v0.4.23
   Compiling rayon v1.6.1
   Compiling fd-lock v3.0.8
   Compiling thiserror-impl v1.0.37
   Compiling futures-macro v0.3.25
   Compiling enumber v0.3.0
   Compiling tokio-util v0.7.4
   Compiling openpgp-cert-d v0.1.0
   Compiling home-dir v0.1.0
   Compiling nettle-sys v2.1.0
   Compiling futures-executor v0.3.25
   Compiling futures v0.3.25
   Compiling capnp-futures v0.14.2
   Compiling capnp-rpc v0.14.1
   Compiling nettle v7.2.0
   Compiling sequoia-openpgp v1.12.0
   Compiling sequoia-ipc v0.29.0
   Compiling sequoia-openpgp-mt v0.1.0
   Compiling sequoia-chameleon-gnupg v0.1.0 (/build/sequoia-chameleon-gnupg/src/sequoia-chameleon-gnupg-v0.1.0)
    Finished test [unoptimized + debuginfo] target(s) in 33.12s
     Running unittests src/gpg.rs (target/debug/deps/sequoia_chameleon_gpg-1a1b56985f8970ca)

running 2 tests
test argparse::tests::commandline ... ok
test argparse::tests::file ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/gpgv.rs (target/debug/deps/sequoia_chameleon_gpgv-42efd2110a5a37f8)

running 2 tests
test argparse::tests::commandline ... ok
test argparse::tests::file ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/gpg.rs (target/debug/deps/gpg-6c6399d86aa750e3)

running 35 tests
test gpg::list_keys::empty ... FAILED
test gpg::decrypt::simple ... FAILED
test gpg::decrypt::general_purpose_cv25519 ... FAILED
test gpg::decrypt::general_purpose_p256 ... FAILED
test gpg::encrypt::no_encryption_subkey ... FAILED
test gpg::decrypt::general_purpose_p384 ... FAILED
test gpg::list_keys::expired_subkey ... FAILED
test gpg::list_keys::expired ... FAILED
test gpg::list_keys::disabled ... FAILED
test gpg::version::dump_options ... FAILED
test gpg::list_keys::general_purpose_cv25519 ... FAILED
test gpg::encrypt::general_purpose_cv25519 ... FAILED
test gpg::version::help ... FAILED
test gpg::version::version ... FAILED
test gpg::decrypt::general_purpose_p521 ... FAILED
test gpg::encrypt::general_purpose_p256 ... FAILED
test gpg::list_keys::general_purpose_p256 ... FAILED
test gpg::list_keys::valid ... FAILED
test gpg::list_keys::revoked ... FAILED
test gpg::trust_models::pgp ... FAILED
test gpg::trust_models::always ... FAILED
test gpg::list_keys::general_purpose_p384 ... FAILED
test gpg::encrypt::general_purpose_p384 ... FAILED
test gpg::trust_models::auto ... FAILED
test gpg::list_keys::general_purpose_p521 ... FAILED
test gpg::encrypt::general_purpose_p521 ... FAILED
test gpg::decrypt::general_purpose_rsa2k ... FAILED
test gpg::list_keys::general_purpose_rsa2k ... FAILED
test gpg::encrypt::general_purpose_rsa2k ... FAILED
test gpg::encrypt::general_purpose_rsa3k ... FAILED
test gpg::decrypt::general_purpose_rsa3k ... FAILED
test gpg::list_keys::general_purpose_rsa3k ... FAILED
test gpg::encrypt::general_purpose_rsa4k ... FAILED
test gpg::list_keys::general_purpose_rsa4k ... FAILED
test gpg::decrypt::general_purpose_rsa4k ... FAILED

failures:

---- gpg::list_keys::empty stdout ----
Error: No such file or directory (os error 2)

---- gpg::decrypt::simple stdout ----
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_cv25519 stdout ----
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_p256 stdout ----
Error: No such file or directory (os error 2)

---- gpg::encrypt::no_encryption_subkey stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_p384 stdout ----
Error: No such file or directory (os error 2)

---- gpg::list_keys::expired_subkey stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::expired stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::disabled stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::version::dump_options stdout ----
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_cv25519 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_cv25519 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::version::help stdout ----
Error: No such file or directory (os error 2)

---- gpg::version::version stdout ----
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_p521 stdout ----
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_p256 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_p256 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::valid stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::revoked stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::trust_models::pgp stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::trust_models::always stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_p384 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_p384 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::trust_models::auto stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_p521 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_p521 stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_rsa2k stdout ----
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_rsa2k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_rsa2k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_rsa3k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_rsa3k stdout ----
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_rsa3k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::encrypt::general_purpose_rsa4k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::list_keys::general_purpose_rsa4k stdout ----
Importing cert...
Error: No such file or directory (os error 2)

---- gpg::decrypt::general_purpose_rsa4k stdout ----
Error: No such file or directory (os error 2)


failures:
    gpg::decrypt::general_purpose_cv25519
    gpg::decrypt::general_purpose_p256
    gpg::decrypt::general_purpose_p384
    gpg::decrypt::general_purpose_p521
    gpg::decrypt::general_purpose_rsa2k
    gpg::decrypt::general_purpose_rsa3k
    gpg::decrypt::general_purpose_rsa4k
    gpg::decrypt::simple
    gpg::encrypt::general_purpose_cv25519
    gpg::encrypt::general_purpose_p256
    gpg::encrypt::general_purpose_p384
    gpg::encrypt::general_purpose_p521
    gpg::encrypt::general_purpose_rsa2k
    gpg::encrypt::general_purpose_rsa3k
    gpg::encrypt::general_purpose_rsa4k
    gpg::encrypt::no_encryption_subkey
    gpg::list_keys::disabled
    gpg::list_keys::empty
    gpg::list_keys::expired
    gpg::list_keys::expired_subkey
    gpg::list_keys::general_purpose_cv25519
    gpg::list_keys::general_purpose_p256
    gpg::list_keys::general_purpose_p384
    gpg::list_keys::general_purpose_p521
    gpg::list_keys::general_purpose_rsa2k
    gpg::list_keys::general_purpose_rsa3k
    gpg::list_keys::general_purpose_rsa4k
    gpg::list_keys::revoked
    gpg::list_keys::valid
    gpg::trust_models::always
    gpg::trust_models::auto
    gpg::trust_models::pgp
    gpg::version::dump_options
    gpg::version::help
    gpg::version::version

test result: FAILED. 0 passed; 35 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.62s

error: test failed, to rerun pass `--test gpg`