mirror of
https://github.com/cheat/cheat.git
synced 2024-09-06 19:51:36 +02:00
- Re-implemented the project in Golang, and deprecated Python entirely - Implemented several new, long-requested features - Refactored cheatsheets into a separate repository
151 lines
3.3 KiB
Go
151 lines
3.3 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")
|
|
}
|
|
}
|
|
|
|
// TestMissingInvalidFormatters asserts that configs which contain invalid
|
|
// formatters are invalidated
|
|
func TestMissingInvalidFormatters(t *testing.T) {
|
|
|
|
// mock a config
|
|
conf := Config{
|
|
Colorize: true,
|
|
Editor: "vim",
|
|
}
|
|
|
|
// assert that no errors are returned
|
|
if err := conf.Validate(); err == nil {
|
|
t.Errorf("failed to invalidate config without 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")
|
|
}
|
|
}
|