105 lines
2.6 KiB
Go
105 lines
2.6 KiB
Go
package cli
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestNormalizeCommandIsRecognized(t *testing.T) {
|
|
cmd := NewRootCommand()
|
|
cmd.SetArgs([]string{"normalize", "--help"})
|
|
if err := cmd.Execute(); err != nil {
|
|
t.Fatalf("normalize command should be recognized: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeMissingInputFileFails(t *testing.T) {
|
|
dir := t.TempDir()
|
|
output := filepath.Join(dir, "normalized.json")
|
|
|
|
err := executeNormalize(
|
|
"--output-file", output,
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected missing input-file error")
|
|
}
|
|
if !strings.Contains(err.Error(), "--input-file is required") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeMissingOutputFileFails(t *testing.T) {
|
|
dir := t.TempDir()
|
|
input := writeJSONFile(t, dir, "input.json", `{"segments":[]}`)
|
|
|
|
err := executeNormalize(
|
|
"--input-file", input,
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected missing output-file error")
|
|
}
|
|
if !strings.Contains(err.Error(), "--output-file is required") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeInvalidOutputSchemaFails(t *testing.T) {
|
|
dir := t.TempDir()
|
|
input := writeJSONFile(t, dir, "input.json", `{"segments":[]}`)
|
|
output := filepath.Join(dir, "normalized.json")
|
|
|
|
err := executeNormalize(
|
|
"--input-file", input,
|
|
"--output-file", output,
|
|
"--output-schema", "compact",
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected invalid output schema error")
|
|
}
|
|
if !strings.Contains(err.Error(), "--output-schema must be one of") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeInvalidOutputModuleFails(t *testing.T) {
|
|
dir := t.TempDir()
|
|
input := writeJSONFile(t, dir, "input.json", `{"segments":[]}`)
|
|
output := filepath.Join(dir, "normalized.json")
|
|
|
|
err := executeNormalize(
|
|
"--input-file", input,
|
|
"--output-file", output,
|
|
"--output-modules", "yaml",
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected invalid output module error")
|
|
}
|
|
if !strings.Contains(err.Error(), "unknown output module") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeValidFlagsReachNotImplementedBoundary(t *testing.T) {
|
|
dir := t.TempDir()
|
|
input := writeJSONFile(t, dir, "input.json", `{"segments":[]}`)
|
|
output := filepath.Join(dir, "normalized.json")
|
|
|
|
err := executeNormalize(
|
|
"--input-file", input,
|
|
"--output-file", output,
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected not implemented error")
|
|
}
|
|
if !strings.Contains(err.Error(), "not implemented") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func executeNormalize(args ...string) error {
|
|
cmd := NewRootCommand()
|
|
cmd.SetArgs(append([]string{"normalize"}, args...))
|
|
return cmd.Execute()
|
|
}
|