openvibers/openvibe.link Commits
CI: the installer test that every option installs the plugin it turns on (#167)
Changes
@@@ -205,13 +205,14 @@ jobs:runs-on: ubuntu-24.04steps:- uses: actions/checkout@v4-- - run: shellcheck -s sh install/install.sh scripts/dist.sh scripts/test-install-stock-server.sh scripts/test-install-pair-args.sh scripts/test-install-worker-config.sh scripts/test-install-computer-config.sh scripts/test-install-plan-logins.sh scripts/test-install-claim.sh++ - run: shellcheck -s sh install/install.sh scripts/dist.sh scripts/test-install-stock-server.sh scripts/test-install-pair-args.sh scripts/test-install-worker-config.sh scripts/test-install-computer-config.sh scripts/test-install-plan-logins.sh scripts/test-install-claim.sh scripts/test-install-plugins-installed.sh- run: sh scripts/test-install-stock-server.sh- run: sh scripts/test-install-pair-args.sh- run: sh scripts/test-install-worker-config.sh- run: sh scripts/test-install-computer-config.sh- run: sh scripts/test-install-plan-logins.sh- run: sh scripts/test-install-claim.sh++ - run: sh scripts/test-install-plugins-installed.shesp32-conformance:name: esp32 protocol conformance (desktop)@@@ -78,7 +78,10 @@ func (s *Server) agentRegister(w http.ResponseWriter, r *http.Request) {created := bodycreated.ID = "agt_" + random()[:16]created.Owner = fakeOwner-- s.agents[created.ID] = &created++ // The map keeps its own copy: the answer below is encoded after the unlock, while a second registration may++ // update the stored agent's status under the lock (a data race the race detector caught in CI, 2026-11-12).++ stored := created++ s.agents[created.ID] = &storeds.mu.Unlock()w.WriteHeader(201)_ = json.NewEncoder(w).Encode(created)
@@ -205,13 +205,14 @@ jobs:
@@ -205,13 +205,14 @@ jobs:
runs-on: ubuntu-24.04
runs-on: ubuntu-24.04
steps:
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
- - run: shellcheck -s sh install/install.sh scripts/dist.sh scripts/test-install-stock-server.sh scripts/test-install-pair-args.sh scripts/test-install-worker-config.sh scripts/test-install-computer-config.sh scripts/test-install-plan-logins.sh scripts/test-install-claim.sh
+ - run: shellcheck -s sh install/install.sh scripts/dist.sh scripts/test-install-stock-server.sh scripts/test-install-pair-args.sh scripts/test-install-worker-config.sh scripts/test-install-computer-config.sh scripts/test-install-plan-logins.sh scripts/test-install-claim.sh scripts/test-install-plugins-installed.sh
- run: sh scripts/test-install-stock-server.sh
- run: sh scripts/test-install-stock-server.sh
- run: sh scripts/test-install-pair-args.sh
- run: sh scripts/test-install-pair-args.sh
- run: sh scripts/test-install-worker-config.sh
- run: sh scripts/test-install-worker-config.sh
- run: sh scripts/test-install-computer-config.sh
- run: sh scripts/test-install-computer-config.sh
- run: sh scripts/test-install-plan-logins.sh
- run: sh scripts/test-install-plan-logins.sh
- run: sh scripts/test-install-claim.sh
- run: sh scripts/test-install-claim.sh
+ - run: sh scripts/test-install-plugins-installed.sh
esp32-conformance:
esp32-conformance:
name: esp32 protocol conformance (desktop)
name: esp32 protocol conformance (desktop)
@@ -78,7 +78,10 @@ func (s *Server) agentRegister(w http.ResponseWriter, r *http.Request) {
@@ -78,7 +78,10 @@ func (s *Server) agentRegister(w http.ResponseWriter, r *http.Request) {
created := body
created := body
created.ID = "agt_" + random()[:16]
created.ID = "agt_" + random()[:16]
created.Owner = fakeOwner
created.Owner = fakeOwner
- s.agents[created.ID] = &created
+ // The map keeps its own copy: the answer below is encoded after the unlock, while a second registration may
+ // update the stored agent's status under the lock (a data race the race detector caught in CI, 2026-11-12).
+ stored := created
+ s.agents[created.ID] = &stored
s.mu.Unlock()
s.mu.Unlock()
w.WriteHeader(201)
w.WriteHeader(201)
_ = json.NewEncoder(w).Encode(created)
_ = json.NewEncoder(w).Encode(created)