134 lines
2.5 KiB
Go
134 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var originalPlugin = `package main
|
|
func (*Plugin) SampleConfig() string {
|
|
return ` + "`{{ .SampleConfig }}`" + `
|
|
}
|
|
|
|
`
|
|
|
|
func TestGeneratePluginData(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping test in short mode.")
|
|
}
|
|
|
|
readme := `# plugin
|
|
|
|
## Configuration
|
|
|
|
` + "```" + `toml
|
|
# test plugin
|
|
[[input.plugin]]
|
|
# No configuration
|
|
` + "```"
|
|
r, err := os.Create("README.md")
|
|
require.NoError(t, err)
|
|
_, err = r.Write([]byte(readme))
|
|
require.NoError(t, err)
|
|
err = r.Close()
|
|
require.NoError(t, err)
|
|
|
|
sourceFile, err := os.Create("test_sample_config.go")
|
|
require.NoError(t, err)
|
|
_, err = sourceFile.Write([]byte(originalPlugin))
|
|
require.NoError(t, err)
|
|
err = sourceFile.Close()
|
|
require.NoError(t, err)
|
|
|
|
defer func() {
|
|
err = os.Remove("test_sample_config.go")
|
|
require.NoError(t, err)
|
|
err = os.Remove("README.md")
|
|
require.NoError(t, err)
|
|
}()
|
|
|
|
s, err := extractPluginData()
|
|
require.NoError(t, err)
|
|
|
|
err = generatePluginData("test", s)
|
|
require.NoError(t, err)
|
|
|
|
expected := `package main
|
|
func (*Plugin) SampleConfig() string {
|
|
return ` + "`" + `# test plugin
|
|
[[input.plugin]]
|
|
# No configuration
|
|
` + "`" + `
|
|
}
|
|
|
|
`
|
|
|
|
newSourceFile, err := os.ReadFile("test_sample_config.go")
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, expected, string(newSourceFile))
|
|
}
|
|
|
|
func TestGeneratePluginDataNoConfig(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping test in short mode.")
|
|
}
|
|
|
|
readme := `# plugin`
|
|
|
|
r, err := os.Create("README.md")
|
|
require.NoError(t, err)
|
|
_, err = r.Write([]byte(readme))
|
|
require.NoError(t, err)
|
|
err = r.Close()
|
|
require.NoError(t, err)
|
|
|
|
defer func() {
|
|
err = os.Remove("README.md")
|
|
require.NoError(t, err)
|
|
}()
|
|
|
|
s, err := extractPluginData()
|
|
require.NoError(t, err)
|
|
require.Empty(t, s)
|
|
}
|
|
|
|
func setupGeneratedPluginFile(t *testing.T, fileName string) {
|
|
// Create files that will be cleaned up
|
|
r, err := os.Create(fileName)
|
|
require.NoError(t, err)
|
|
defer r.Close()
|
|
|
|
updatePlugin := `package main
|
|
func (*Plugin) SampleConfig() string {
|
|
return "I am a sample config"
|
|
}
|
|
|
|
`
|
|
_, err = r.Write([]byte(updatePlugin))
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestCleanGeneratedFiles(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping test in short mode.")
|
|
}
|
|
|
|
filename := "testClean_sample_config.go"
|
|
|
|
setupGeneratedPluginFile(t, filename)
|
|
|
|
err := cleanGeneratedFiles("testClean")
|
|
require.NoError(t, err)
|
|
|
|
b, err := os.ReadFile(filename)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, originalPlugin, string(b))
|
|
|
|
err = os.Remove(filename)
|
|
require.NoError(t, err)
|
|
}
|