mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-13 21:56:38 +01:00
test: check flag/docs consistency (#1770)
This commit is contained in:
parent
7648e9c98a
commit
1d5a8d9a4c
4 changed files with 171 additions and 64 deletions
|
|
@ -1,12 +1,16 @@
|
|||
package flags
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/pflag"
|
||||
"github.com/spf13/viper"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEnvConfig_Defaults(t *testing.T) {
|
||||
|
|
@ -222,3 +226,63 @@ func TestProcessFlagAliasesInvalidPorcelaineVersion(t *testing.T) {
|
|||
ProcessFlagAliases(flags)
|
||||
})
|
||||
}
|
||||
|
||||
func TestFlagsArePrecentInDocumentation(t *testing.T) {
|
||||
|
||||
// Legacy notifcations are ignored, since they are (soft) deprecated
|
||||
ignoredEnvs := map[string]string{
|
||||
"WATCHTOWER_NOTIFICATION_SLACK_ICON_EMOJI": "legacy",
|
||||
"WATCHTOWER_NOTIFICATION_SLACK_ICON_URL": "legacy",
|
||||
}
|
||||
|
||||
ignoredFlags := map[string]string{
|
||||
"notification-gotify-url": "legacy",
|
||||
"notification-slack-icon-emoji": "legacy",
|
||||
"notification-slack-icon-url": "legacy",
|
||||
}
|
||||
|
||||
cmd := new(cobra.Command)
|
||||
SetDefaults()
|
||||
RegisterDockerFlags(cmd)
|
||||
RegisterSystemFlags(cmd)
|
||||
RegisterNotificationFlags(cmd)
|
||||
|
||||
flags := cmd.PersistentFlags()
|
||||
|
||||
docFiles := []string{
|
||||
"../../docs/arguments.md",
|
||||
"../../docs/lifecycle-hooks.md",
|
||||
"../../docs/notifications.md",
|
||||
}
|
||||
allDocs := ""
|
||||
for _, f := range docFiles {
|
||||
bytes, err := os.ReadFile(f)
|
||||
if err != nil {
|
||||
t.Fatalf("Could not load docs file %q: %v", f, err)
|
||||
}
|
||||
allDocs += string(bytes)
|
||||
}
|
||||
|
||||
flags.VisitAll(func(f *pflag.Flag) {
|
||||
if !strings.Contains(allDocs, "--"+f.Name) {
|
||||
if _, found := ignoredFlags[f.Name]; !found {
|
||||
t.Logf("Docs does not mention flag long name %q", f.Name)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
if !strings.Contains(allDocs, "-"+f.Shorthand) {
|
||||
t.Logf("Docs does not mention flag shorthand %q (%q)", f.Shorthand, f.Name)
|
||||
t.Fail()
|
||||
}
|
||||
})
|
||||
|
||||
for _, key := range viper.AllKeys() {
|
||||
envKey := strings.ToUpper(key)
|
||||
if !strings.Contains(allDocs, envKey) {
|
||||
if _, found := ignoredEnvs[envKey]; !found {
|
||||
t.Logf("Docs does not mention environment variable %q", envKey)
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue