mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
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.
109 lines
2.5 KiB
Go
109 lines
2.5 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package xvm
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var (
|
|
errCalledInitialize = errors.New("unexpectedly called Initialize")
|
|
errCalledBootstrapping = errors.New("unexpectedly called Bootstrapping")
|
|
errCalledBootstrapped = errors.New("unexpectedly called Bootstrapped")
|
|
errCalledVerifyTransfer = errors.New("unexpectedly called VerifyTransfer")
|
|
errCalledVerifyOperation = errors.New("unexpectedly called VerifyOperation")
|
|
)
|
|
|
|
type FxTest struct {
|
|
T *testing.T
|
|
|
|
CantInitialize,
|
|
CantBootstrapping,
|
|
CantBootstrapped,
|
|
CantVerifyTransfer,
|
|
CantVerifyOperation bool
|
|
|
|
InitializeF func(vm interface{}) error
|
|
BootstrappingF func() error
|
|
BootstrappedF func() error
|
|
VerifyTransferF func(tx, in, cred, utxo interface{}) error
|
|
VerifyOperationF func(tx, op, cred interface{}, utxos []interface{}) error
|
|
}
|
|
|
|
func (fx *FxTest) Default(cant bool) {
|
|
fx.CantInitialize = cant
|
|
fx.CantBootstrapping = cant
|
|
fx.CantBootstrapped = cant
|
|
fx.CantVerifyTransfer = cant
|
|
fx.CantVerifyOperation = cant
|
|
}
|
|
|
|
func (fx *FxTest) Initialize(vm interface{}) error {
|
|
if fx.InitializeF != nil {
|
|
return fx.InitializeF(vm)
|
|
}
|
|
if !fx.CantInitialize {
|
|
return nil
|
|
}
|
|
if fx.T != nil {
|
|
require.FailNow(fx.T, errCalledInitialize.Error())
|
|
}
|
|
return errCalledInitialize
|
|
}
|
|
|
|
func (fx *FxTest) Bootstrapping() error {
|
|
if fx.BootstrappingF != nil {
|
|
return fx.BootstrappingF()
|
|
}
|
|
if !fx.CantBootstrapping {
|
|
return nil
|
|
}
|
|
if fx.T != nil {
|
|
require.FailNow(fx.T, errCalledBootstrapping.Error())
|
|
}
|
|
return errCalledBootstrapping
|
|
}
|
|
|
|
func (fx *FxTest) Bootstrapped() error {
|
|
if fx.BootstrappedF != nil {
|
|
return fx.BootstrappedF()
|
|
}
|
|
if !fx.CantBootstrapped {
|
|
return nil
|
|
}
|
|
if fx.T != nil {
|
|
require.FailNow(fx.T, errCalledBootstrapped.Error())
|
|
}
|
|
return errCalledBootstrapped
|
|
}
|
|
|
|
func (fx *FxTest) VerifyTransfer(tx, in, cred, utxo interface{}) error {
|
|
if fx.VerifyTransferF != nil {
|
|
return fx.VerifyTransferF(tx, in, cred, utxo)
|
|
}
|
|
if !fx.CantVerifyTransfer {
|
|
return nil
|
|
}
|
|
if fx.T != nil {
|
|
require.FailNow(fx.T, errCalledVerifyTransfer.Error())
|
|
}
|
|
return errCalledVerifyTransfer
|
|
}
|
|
|
|
func (fx *FxTest) VerifyOperation(tx, op, cred interface{}, utxos []interface{}) error {
|
|
if fx.VerifyOperationF != nil {
|
|
return fx.VerifyOperationF(tx, op, cred, utxos)
|
|
}
|
|
if !fx.CantVerifyOperation {
|
|
return nil
|
|
}
|
|
if fx.T != nil {
|
|
require.FailNow(fx.T, errCalledVerifyOperation.Error())
|
|
}
|
|
return errCalledVerifyOperation
|
|
}
|