From f6e3240dee0da2f6772de8aac9c776b22ca4818a Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Fri, 30 Apr 2021 13:29:06 -0700 Subject: [PATCH] cmd/tailscale/cli: add test to catch ipn.Pref additions --- cmd/tailscale/cli/cli_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cmd/tailscale/cli/cli_test.go b/cmd/tailscale/cli/cli_test.go index 9f43d2fad..2456c1e83 100644 --- a/cmd/tailscale/cli/cli_test.go +++ b/cmd/tailscale/cli/cli_test.go @@ -9,6 +9,7 @@ import ( "encoding/json" "flag" "fmt" + "reflect" "strings" "testing" @@ -553,3 +554,26 @@ func TestPrefsFromUpArgs(t *testing.T) { } } + +func TestPrefFlagMapping(t *testing.T) { + prefType := reflect.TypeOf(ipn.Prefs{}) + for i := 0; i < prefType.NumField(); i++ { + prefName := prefType.Field(i).Name + if _, ok := flagForPref[prefName]; ok { + continue + } + switch prefName { + case "WantRunning", "Persist", "LoggedOut": + // All explicitly handled (ignored) by checkForAccidentalSettingReverts. + continue + case "OSVersion", "DeviceModel": + // Only used by Android, which doesn't have a CLI mode anyway, so + // fine to not map. + continue + case "NotepadURLs": + // TODO(bradfitz): https://github.com/tailscale/tailscale/issues/1830 + continue + } + t.Errorf("unexpected new ipn.Pref field %q is not handled by up.go (see addPrefFlagMapping and checkForAccidentalSettingReverts)", prefName) + } +}