package modernzconf import ( "path/filepath" "sync" "testing" ) func TestSetValueFileConcurrentUpdatesPreserveEveryOption(t *testing.T) { path := filepath.Join(t.TempDir(), "modernz.conf") options := KnownOptions() if len(options) < 2 { t.Fatal("expected at least two ModernZ options") } start := make(chan struct{}) errs := make(chan error, len(options)) var wg sync.WaitGroup for _, option := range options { option := option wg.Add(1) go func() { defer wg.Done() <-start if err := SetValueFile(path, option.Key, option.Default); err != nil { errs <- err } }() } close(start) wg.Wait() close(errs) for err := range errs { t.Fatal(err) } conf, err := ParseModernZConf(path) if err != nil { t.Fatal(err) } for _, option := range options { if !conf.IsSet(option.Key) { t.Errorf("concurrent update lost option %q", option.Key) } } }