122 lines
3.3 KiB
Go
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"))
|
|
}
|