Files
cheat/internal/config/validate_test.go
Christopher Allen Lane 971be88150 test: audit and clean up test suite
Delete tautological, no-assertion, and permanently-skipped tests.
Rewrite false-confidence tests that couldn't detect the bugs they
claimed to test. Decouple brittle assertions from error message
strings and third-party library output. Fix misleading test names
and error messages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:42:11 -05:00

160 lines
3.6 KiB
Go

package config
import (
"testing"
"github.com/cheat/cheat/internal/cheatpath"
)
// TestValidateCorrect asserts that valid configs are validated successfully
func TestValidateCorrect(t *testing.T) {
// mock a config
conf := Config{
Colorize: true,
Editor: "vim",
Formatter: "terminal16m",
Cheatpaths: []cheatpath.Cheatpath{
cheatpath.Cheatpath{
Name: "foo",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
},
}
// assert that no errors are returned
if err := conf.Validate(); err != nil {
t.Errorf("failed to validate valid config: %v", err)
}
}
// TestInvalidateMissingEditor asserts that configs with unspecified editors
// are invalidated
func TestInvalidateMissingEditor(t *testing.T) {
// mock a config
conf := Config{
Colorize: true,
Formatter: "terminal16m",
Cheatpaths: []cheatpath.Cheatpath{
cheatpath.Cheatpath{
Name: "foo",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
},
}
// assert that no errors are returned
if err := conf.Validate(); err == nil {
t.Errorf("failed to invalidate config with unspecified editor")
}
}
// TestInvalidateMissingCheatpaths asserts that configs without cheatpaths are
// invalidated
func TestInvalidateMissingCheatpaths(t *testing.T) {
// mock a config
conf := Config{
Colorize: true,
Editor: "vim",
Formatter: "terminal16m",
}
// assert that no errors are returned
if err := conf.Validate(); err == nil {
t.Errorf("failed to invalidate config without cheatpaths")
}
}
// TestInvalidateInvalidFormatter asserts that configs which contain invalid
// formatters are invalidated
func TestInvalidateInvalidFormatter(t *testing.T) {
// mock a config with a valid editor and cheatpaths but invalid formatter
conf := Config{
Colorize: true,
Editor: "vim",
Formatter: "html",
Cheatpaths: []cheatpath.Cheatpath{
cheatpath.Cheatpath{
Name: "foo",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
},
}
// assert that the config is invalidated due to the formatter
if err := conf.Validate(); err == nil {
t.Errorf("failed to invalidate config with invalid formatter")
}
}
// TestInvalidateDuplicateCheatpathNames asserts that configs which contain
// cheatpaths with duplcated names are invalidated
func TestInvalidateDuplicateCheatpathNames(t *testing.T) {
// mock a config
conf := Config{
Colorize: true,
Editor: "vim",
Formatter: "terminal16m",
Cheatpaths: []cheatpath.Cheatpath{
cheatpath.Cheatpath{
Name: "foo",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
cheatpath.Cheatpath{
Name: "foo",
Path: "/bar",
ReadOnly: false,
Tags: []string{},
},
},
}
// assert that no errors are returned
if err := conf.Validate(); err == nil {
t.Errorf("failed to invalidate config with cheatpaths with duplicate names")
}
}
// TestInvalidateDuplicateCheatpathPaths asserts that configs which contain
// cheatpaths with duplcated paths are invalidated
func TestInvalidateDuplicateCheatpathPaths(t *testing.T) {
// mock a config
conf := Config{
Colorize: true,
Editor: "vim",
Formatter: "terminal16m",
Cheatpaths: []cheatpath.Cheatpath{
cheatpath.Cheatpath{
Name: "foo",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
cheatpath.Cheatpath{
Name: "bar",
Path: "/foo",
ReadOnly: false,
Tags: []string{},
},
},
}
// assert that no errors are returned
if err := conf.Validate(); err == nil {
t.Errorf("failed to invalidate config with cheatpaths with duplicate paths")
}
}