fuzzyworld

template / files / internal / core / main_test.go

main_test.go

Blame: the commit that last changed each line · file · history

37160b89 2026-05-01 Pavel Safronov1package core
8fc7c452 2023-03-29 Pavel Safronov2
3import (
4 "os"
5 "testing"
6
2105a1d7 2023-04-02 Pavel Safronov7 "github.com/stretchr/testify/assert"
8fc7c452 2023-03-29 Pavel Safronov8)
9
10func TestMain(m *testing.M) {
11 setup()
12 code := m.Run()
13 shutdown()
14 os.Exit(code)
15}
16
17func setup() {
18 // setup code
19}
20func shutdown() {
21 // shutdown code
22
23 // not really necessary, but why not?
24 undoMonkeyPatch()
25}
26
27func TestFindProfile(t *testing.T) {
28 fileTemplate := "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}.txt"
37160b89 2026-05-01 Pavel Safronov29 profile, err := findProfile(settings{
30 argumentValues: argumentValues{
8fc7c452 2023-03-29 Pavel Safronov31 fileTemplate: fileTemplate,
32 },
33 })
2105a1d7 2023-04-02 Pavel Safronov34 assert.NoError(t, err)
35 assert.Equal(t, "temp", profile.Name)
36 assert.Equal(t, FileType, profile.Type)
37 assert.Equal(t, 1, len(profile.NamePatterns))
38 assert.Equal(t, ParameterizedText(fileTemplate), profile.NamePatterns[0])
8fc7c452 2023-03-29 Pavel Safronov39
40 dirTemplate := "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}"
37160b89 2026-05-01 Pavel Safronov41 profile, err = findProfile(settings{
42 argumentValues: argumentValues{
8fc7c452 2023-03-29 Pavel Safronov43 dirTemplate: dirTemplate,
44 },
45 })
2105a1d7 2023-04-02 Pavel Safronov46 assert.NoError(t, err)
47 assert.Equal(t, "temp", profile.Name)
48 assert.Equal(t, FolderType, profile.Type)
49 assert.Equal(t, 1, len(profile.NamePatterns))
50 assert.Equal(t, ParameterizedText(dirTemplate), profile.NamePatterns[0])
ecad2935 2026-05-01 Pavel Safronov51
52 // script template → ScriptType
53 scriptTemplate := "echo hello"
54 profile, err = findProfile(settings{
55 argumentValues: argumentValues{
56 scriptTemplate: scriptTemplate,
57 },
58 })
59 assert.NoError(t, err)
60 assert.Equal(t, ScriptType, profile.Type)
61 assert.Equal(t, 1, len(profile.PostScripts))
62 assert.Equal(t, ParameterizedText(scriptTemplate), profile.PostScripts[0])
63
64 // named profile resolved from config
65 namedProfile := Profile{Name: "my-profile", Type: FileType, NamePatterns: []ParameterizedText{"name"}, TargetDirectory: "~/dir"}
66 profile, err = findProfile(settings{
67 argumentValues: argumentValues{profile: "my-profile"},
68 config: Config{Profiles: []Profile{namedProfile}},
69 })
70 assert.NoError(t, err)
71 assert.Equal(t, "my-profile", profile.Name)
72
73 // default profile when no name given
74 defaultProfile := Profile{Name: "default-profile", IsDefault: true, Type: FileType, NamePatterns: []ParameterizedText{"name"}, TargetDirectory: "~/dir"}
75 profile, err = findProfile(settings{
76 config: Config{Profiles: []Profile{defaultProfile}},
77 })
78 assert.NoError(t, err)
79 assert.Equal(t, "default-profile", profile.Name)
80
81 // error: no profile specified and no default
82 _, err = findProfile(settings{
83 config: Config{Profiles: []Profile{}},
84 })
85 assert.Error(t, err)
8fc7c452 2023-03-29 Pavel Safronov86}