"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: lix-project/lix#232
Change-Id: I21576e2a0a755036edf8814133345987617ba3d0
This commit is contained in:
jade 2024-04-07 22:34:24 -07:00
parent 0d37b99a15
commit 54bc1f1b98
4 changed files with 14 additions and 5 deletions

View file

@ -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()));
}
};

View file

@ -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'

View file

@ -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'

View file

@ -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'