telegraf/tools/generate_plugindata/main_test.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)
}