cmd/tailscale/cli: add test to catch ipn.Pref additions
"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)
+ }
+}
