pacman reads the node-engine's packages first and the controller's mirror per node until the lease write; compare counts only an indexer that was read, and a forge not heard is said in the row (review round 1)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
This commit is contained in:
@@ -40,7 +40,7 @@ func viewStates(t *testing.T) (*fakeStates, *Machine) {
|
||||
}
|
||||
|
||||
func TestOnePackageOnEveryNodeWithWhoDeclaresIt(t *testing.T) {
|
||||
_, m := viewStates(t)
|
||||
states, m := viewStates(t)
|
||||
r, err := m.Packages("zsh", 500)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -50,6 +50,22 @@ func TestOnePackageOnEveryNodeWithWhoDeclaresIt(t *testing.T) {
|
||||
t.Fatalf("%+v", on)
|
||||
}
|
||||
a, b := on[0], on[1]
|
||||
if a.DeclaredFrom != SourceEngine || b.DeclaredFrom != "" {
|
||||
t.Errorf("sources: %q, %q", a.DeclaredFrom, b.DeclaredFrom)
|
||||
}
|
||||
// A node whose engine has written no key reads the controller's mirror, said so; a node with both reads its engine's.
|
||||
var legacy, stale declaredValue
|
||||
json.Unmarshal([]byte(`{"node":"node-b","packages":[{"package":"zsh","modules":["legacy"],"absent":false}]}`), &legacy)
|
||||
json.Unmarshal([]byte(`{"node":"node-a","packages":[{"package":"zsh","modules":["stale"],"absent":false}]}`), &stale)
|
||||
mirror := states.store(ControllerDeclaredState)
|
||||
mirror.Put("node-b", legacy)
|
||||
mirror.Put("node-a", stale)
|
||||
r2, _ := m.Packages("zsh", 500)
|
||||
on2 := r2["nodes"].([]PackageOnNode)
|
||||
if on2[0].DeclaredFrom != SourceEngine || strings.Join(on2[0].DeclaredBy, ",") != "login,shell" ||
|
||||
on2[1].DeclaredFrom != SourceController || strings.Join(on2[1].DeclaredBy, ",") != "legacy" {
|
||||
t.Errorf("fallback: %+v", on2)
|
||||
}
|
||||
if a.Node != "node-a" || !a.Installed || a.Version != "5.9-2" || !a.Explicit || a.Repository != "extra" ||
|
||||
strings.Join(a.DeclaredBy, ",") != "login,shell" || !a.Current {
|
||||
t.Errorf("node-a: %+v", a)
|
||||
|
||||
Reference in New Issue
Block a user