-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcompono_test.go
More file actions
113 lines (88 loc) · 3.22 KB
/
compono_test.go
File metadata and controls
113 lines (88 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package compono
import (
"bytes"
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/umono-cms/compono/logger"
)
type componoTestSuite struct {
suite.Suite
}
func (s *componoTestSuite) TestGolden() {
inputFiles, err := filepath.Glob("testdata/input/*.comp")
require.Nil(s.T(), err)
require.NotEmpty(s.T(), inputFiles, "no .comp files found")
for _, inputPath := range inputFiles {
name := filepath.Base(inputPath)
input, err := os.ReadFile(inputPath)
require.Nil(s.T(), err)
globalFiles, err := filepath.Glob("testdata/input/global/" + strings.TrimSuffix(name, ".comp") + "/*.comp")
require.Nil(s.T(), err)
comp := New()
comp.Logger().SetLogLevel(logger.All)
for _, gPath := range globalFiles {
globalCompName := filepath.Base(gPath)
globalInput, err := os.ReadFile(gPath)
require.Nil(s.T(), err)
err = comp.RegisterGlobalComponent(strings.TrimSuffix(globalCompName, ".comp"), []byte(strings.TrimSpace(string(globalInput))))
assert.Nil(s.T(), err)
}
var buf bytes.Buffer
err = comp.Convert([]byte(strings.TrimSpace(string(input))), &buf)
assert.Nil(s.T(), err)
goldenPath := filepath.Join(
"testdata/output",
strings.TrimSuffix(name, ".comp")+".golden",
)
golden, err := os.ReadFile(goldenPath)
require.Nil(s.T(), err, "golden file missing")
assert.Equal(s.T(), strings.TrimSpace(string(golden)), buf.String(), "from %s", inputPath)
}
}
func (s *componoTestSuite) TestGoldenForConvertGlobalComponent() {
inputFiles, err := filepath.Glob("testdata/global_input/*.comp")
require.Nil(s.T(), err)
require.NotEmpty(s.T(), inputFiles, "no .comp files found")
for _, inputPath := range inputFiles {
name := filepath.Base(inputPath)
input, err := os.ReadFile(inputPath)
require.Nil(s.T(), err)
globalFiles, err := filepath.Glob("testdata/global_input/global/" + strings.TrimSuffix(name, ".comp") + "/*.comp")
require.Nil(s.T(), err)
comp := New()
comp.Logger().SetLogLevel(logger.All)
for _, gPath := range globalFiles {
globalCompName := filepath.Base(gPath)
globalInput, err := os.ReadFile(gPath)
require.Nil(s.T(), err)
err = comp.RegisterGlobalComponent(strings.TrimSuffix(globalCompName, ".comp"), []byte(strings.TrimSpace(string(globalInput))))
assert.Nil(s.T(), err)
}
var buf bytes.Buffer
err = comp.ConvertGlobalComponent(strings.TrimSuffix(name, ".comp"), []byte(strings.TrimSpace(string(input))), &buf)
assert.Nil(s.T(), err)
goldenPath := filepath.Join(
"testdata/global_output",
strings.TrimSuffix(name, ".comp")+".golden",
)
golden, err := os.ReadFile(goldenPath)
require.Nil(s.T(), err, "golden file missing")
assert.Equal(s.T(), strings.TrimSpace(string(golden)), buf.String(), "from %s", inputPath)
}
}
func (s *componoTestSuite) TestUnregisterGlobalComponent() {
compono := New().(*compono)
err := compono.RegisterGlobalComponent("SAY_HELLO", []byte("# Hello"))
require.Nil(s.T(), err)
err = compono.UnregisterGlobalComponent("SAY_HELLO")
require.Nil(s.T(),err)
assert.Equal(s.T(), 0, len(compono.globalWrapper.Children()))
}
func TestComponoTestSuite(t *testing.T) {
suite.Run(t, new(componoTestSuite))
}