diff options
author | Jade Lovelace <lix@jade.fyi> | 2024-04-07 22:34:24 -0700 |
---|---|---|
committer | Jade Lovelace <lix@jade.fyi> | 2024-04-08 15:40:12 -0700 |
commit | 54bc1f1b9864ca2d784a03f239b7234c6956f929 (patch) | |
tree | a3486d8d9dfc1333ffbdf58b1be63f7243ba8201 | |
parent | 0d37b99a155a82ea629ffc533c8f33250f6a4dd9 (diff) |
"but doctor, I AM the untrusted store": nix doctor had wrong trustedness
This probably snuck in in a refactor using truthiness or so. The
trustedness flag was having the optional fullness checked, rather than
the actual contained trust level.
Also adds some tests.
```
m1@6876551b-255d-4cb0-af02-8a4f17b27e2e ~ % nix store ping
warning: 'nix store ping' is a deprecated alias for 'nix store info'
Store URL: daemon
Version: 2.20.4
Trusted: 0
m1@6876551b-255d-4cb0-af02-8a4f17b27e2e ~ % nix doctor
warning: 'doctor' is a deprecated alias for 'config check'
[PASS] PATH contains only one nix version.
[PASS] All profiles are gcroots.
[PASS] Client protocol matches store protocol.
[INFO] You are trusted by store uri: daemon
```
Fixes: https://git.lix.systems/lix-project/lix/issues/232
Change-Id: I21576e2a0a755036edf8814133345987617ba3d0
-rw-r--r-- | src/nix/doctor.cc | 7 | ||||
-rw-r--r-- | tests/functional/legacy-ssh-store.sh | 7 | ||||
-rw-r--r-- | tests/functional/local-store.sh | 3 | ||||
-rw-r--r-- | tests/functional/remote-store.sh | 2 |
4 files changed, 14 insertions, 5 deletions
diff --git a/src/nix/doctor.cc b/src/nix/doctor.cc index 531f0ad86..da7a1d7a0 100644 --- a/src/nix/doctor.cc +++ b/src/nix/doctor.cc @@ -146,10 +146,9 @@ struct CmdDoctor : StoreCommand void checkTrustedUser(ref<Store> store) { - std::string_view trusted = store->isTrustedClient() - ? "trusted" - : "not trusted"; - checkInfo(fmt("You are %s by store uri: %s", trusted, store->getUri())); + auto trustedMay = store->isTrustedClient(); + std::string_view trustedness = trustedMay ? (*trustedMay ? "trusted" : "not trusted") : "unknown trust"; + checkInfo(fmt("You are %s by store uri: %s", trustedness, store->getUri())); } }; diff --git a/tests/functional/legacy-ssh-store.sh b/tests/functional/legacy-ssh-store.sh index 71b716b84..a75d55f34 100644 --- a/tests/functional/legacy-ssh-store.sh +++ b/tests/functional/legacy-ssh-store.sh @@ -1,4 +1,9 @@ source common.sh +store_uri="ssh://localhost?remote-store=$TEST_ROOT/other-store" + # Check that store ping trusted doesn't yet work with ssh:// -nix --store ssh://localhost?remote-store=$TEST_ROOT/other-store store ping --json | jq -e 'has("trusted") | not' +nix --store "$store_uri" store ping --json | jq -e 'has("trusted") | not' + +# Suppress grumpiness about multiple nixes on PATH +(nix --store "$store_uri" doctor || true) 2>&1 | grep 'You are unknown trust' diff --git a/tests/functional/local-store.sh b/tests/functional/local-store.sh index 89502f864..e3f0d771c 100644 --- a/tests/functional/local-store.sh +++ b/tests/functional/local-store.sh @@ -20,3 +20,6 @@ PATH3=$(nix path-info --store "local?root=$PWD/x" $CORRECT_PATH) # Ensure store ping trusted works with local store nix --store ./x store ping --json | jq -e '.trusted' + +# Suppress grumpiness about multiple nixes on PATH +(nix --store ./x doctor || true) 2>&1 | grep 'You are trusted by' diff --git a/tests/functional/remote-store.sh b/tests/functional/remote-store.sh index 7649964ef..856622e79 100644 --- a/tests/functional/remote-store.sh +++ b/tests/functional/remote-store.sh @@ -13,6 +13,8 @@ startDaemon if isDaemonNewer "2.15pre0"; then # Ensure that ping works trusted with new daemon nix store ping --json | jq -e '.trusted' + # Suppress grumpiness about multiple nixes on PATH + (nix doctor || true) 2>&1 | grep 'You are trusted by' else # And the the field is absent with the old daemon nix store ping --json | jq -e 'has("trusted") | not' |