go-scm/cmd/scm/cmd_compile_test.go
Virgil de94350f13
Some checks failed
Security Scan / security (push) Failing after 16s
Test / test (push) Failing after 55s
feat(manifest): allow version override during compile
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 14:51:41 +00:00

122 lines
3.3 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package scm
import (
filepath "dappco.re/go/core/scm/internal/ax/filepathx"
os "dappco.re/go/core/scm/internal/ax/osx"
"encoding/hex"
"testing"
"dappco.re/go/core/io"
"dappco.re/go/core/scm/manifest"
"forge.lthn.ai/core/cli/pkg/cli"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestRunCompile_Good_DefaultOutput_Good(t *testing.T) {
dir := t.TempDir()
coreDir := filepath.Join(dir, ".core")
require.NoError(t, os.MkdirAll(coreDir, 0755))
require.NoError(t, os.WriteFile(filepath.Join(coreDir, "manifest.yaml"), []byte(`
code: compile-default
name: Compile Default
version: 1.0.0
`), 0644))
err := runCompile(dir, "", "", "core scm compile", "core.json")
require.NoError(t, err)
raw, err := io.Local.Read(filepath.Join(dir, "core.json"))
require.NoError(t, err)
cm, err := manifest.ParseCompiled([]byte(raw))
require.NoError(t, err)
assert.Equal(t, "compile-default", cm.Code)
assert.Equal(t, "core scm compile", cm.BuiltBy)
}
func TestRunCompile_Good_CustomOutput_Good(t *testing.T) {
dir := t.TempDir()
coreDir := filepath.Join(dir, ".core")
require.NoError(t, os.MkdirAll(coreDir, 0755))
require.NoError(t, os.WriteFile(filepath.Join(coreDir, "manifest.yaml"), []byte(`
code: compile-custom
name: Compile Custom
version: 2.0.0
`), 0644))
output := filepath.Join("dist", "core.json")
err := runCompile(dir, "", "", "custom builder", output)
require.NoError(t, err)
raw, err := io.Local.Read(filepath.Join(dir, output))
require.NoError(t, err)
cm, err := manifest.ParseCompiled([]byte(raw))
require.NoError(t, err)
assert.Equal(t, "compile-custom", cm.Code)
assert.Equal(t, "custom builder", cm.BuiltBy)
}
func TestRunCompile_Bad_InvalidSignKey_Good(t *testing.T) {
dir := t.TempDir()
coreDir := filepath.Join(dir, ".core")
require.NoError(t, os.MkdirAll(coreDir, 0755))
require.NoError(t, os.WriteFile(filepath.Join(coreDir, "manifest.yaml"), []byte(`
code: compile-invalid-key
name: Compile Invalid Key
version: 1.0.0
`), 0644))
err := runCompile(dir, "", hex.EncodeToString([]byte("short")), "core scm compile", "core.json")
require.Error(t, err)
assert.Contains(t, err.Error(), "invalid private key length")
}
func TestRunCompile_Good_VersionOverride_Good(t *testing.T) {
dir := t.TempDir()
coreDir := filepath.Join(dir, ".core")
require.NoError(t, os.MkdirAll(coreDir, 0755))
require.NoError(t, os.WriteFile(filepath.Join(coreDir, "manifest.yaml"), []byte(`
code: compile-version
name: Compile Version
version: 1.0.0
`), 0644))
err := runCompile(dir, "3.2.1", "", "core scm compile", "core.json")
require.NoError(t, err)
raw, err := io.Local.Read(filepath.Join(dir, "core.json"))
require.NoError(t, err)
cm, err := manifest.ParseCompiled([]byte(raw))
require.NoError(t, err)
assert.Equal(t, "3.2.1", cm.Version)
}
func TestAddScmCommands_Good_CompileVersionFlagRegistered_Good(t *testing.T) {
root := &cli.Command{Use: "root"}
AddScmCommands(root)
var scmCmd *cli.Command
for _, cmd := range root.Commands() {
if cmd.Name() == "scm" {
scmCmd = cmd
break
}
}
require.NotNil(t, scmCmd)
var compileCmd *cli.Command
for _, cmd := range scmCmd.Commands() {
if cmd.Name() == "compile" {
compileCmd = cmd
break
}
}
require.NotNil(t, compileCmd)
assert.NotNil(t, compileCmd.Flags().Lookup("version"))
}