// Package main is a NEGATIVE build fixture: its Register hook reaches a host // capability (a db.* call) at describe time, which is illegal — DESCRIBE runs // with no live host. `ninja plugin build` must surface an actionable error // naming the offending call rather than hanging or crashing. package main import ( "context" "database/sql" "fmt" // Registers the "bnwasm" database/sql driver (its init runs sql.Register). _ "git.dev.alexdunmow.com/block/pluginsdk/plugin/wasmguest/bnwasm" "git.dev.alexdunmow.com/block/pluginsdk/blocks" "git.dev.alexdunmow.com/block/pluginsdk/plugin" "git.dev.alexdunmow.com/block/pluginsdk/templates" ) var Registration = plugin.PluginRegistration{ Name: "capfixture", Version: "0.0.1", Register: func(_ templates.TemplateRegistry, _ blocks.BlockRegistry) error { // Illegal describe-time capability use: query the host DB from // Register. Over the packer's failing host stub this returns an error // naming "db.query". db, err := sql.Open("bnwasm", "") if err != nil { return err } defer func() { _ = db.Close() }() var n int if err := db.QueryRowContext(context.Background(), "SELECT 1").Scan(&n); err != nil { return fmt.Errorf("describe-time db probe: %w", err) } return nil }, }