Files
zeekay 7cf87b230b node-unified is the node
The module already called itself github.com/luxfi/node while containing no node
in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and
the Go column of the matrix measured a VM plugin. A repo that fetches the thing
it claims to be has not replaced it, so the Go sources move in — 1515 files,
the daemon and everything under it — and the build reaches outside this module
for nothing.

Rust and C++ sit beside it unchanged and are still measured against it by the
differential. That is the point of one repo: the reference implementation and
the two ports are the same checkout, so parity is a thing you can run rather
than a thing you assert.

Verified: builds, and the closure carries no lux-private — checked at build time
rather than believed. The daemon starts twelve chains on a local network
(P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
2026-09-07 16:15:25 -07:00

54 lines
1.4 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package server
import (
"context"
"io"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/require"
"github.com/zap-proto/zip"
)
type said struct {
Word string `json:"word"`
}
// TestMount asserts both halves of a mount: a typed op answers an ordinary
// net/http request, and the OpenAPI document answers too. The document is the
// half that says Mount SERVES the app rather than reaching past zip for its
// request handler — the document route is installed by serving.
func TestMount(t *testing.T) {
require := require.New(t)
app := zip.New(zip.Config{AppName: "mounted"})
zip.Get(app, "/say", func(context.Context, *struct{}) (*said, error) {
return &said{Word: "hello"}, nil
})
handler, err := Mount(app)
require.NoError(err)
t.Cleanup(func() { _ = app.Shutdown() })
body, code := ask(t, handler, "/say")
require.Equal(http.StatusOK, code)
require.JSONEq(`{"word":"hello"}`, body)
body, code = ask(t, handler, zip.SpecPath)
require.Equal(http.StatusOK, code)
require.Contains(body, `"/say"`)
}
func ask(t *testing.T, handler http.Handler, path string) (string, int) {
t.Helper()
rec := httptest.NewRecorder()
handler.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, path, nil))
body, err := io.ReadAll(rec.Result().Body)
require.NoError(t, err)
return string(body), rec.Code
}