golang.org/x/tools/gopls@v0.15.3/internal/test/integration/watch/setting_test.go (about) 1 // Copyright 2023 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package watch 6 7 import ( 8 "fmt" 9 "testing" 10 11 . "golang.org/x/tools/gopls/internal/test/integration" 12 ) 13 14 func TestSubdirWatchPatterns(t *testing.T) { 15 const files = ` 16 -- go.mod -- 17 module mod.test 18 19 go 1.18 20 -- subdir/subdir.go -- 21 package subdir 22 ` 23 24 tests := []struct { 25 clientName string 26 subdirWatchPatterns string 27 wantWatched bool 28 }{ 29 {"other client", "on", true}, 30 {"other client", "off", false}, 31 {"other client", "auto", false}, 32 {"Visual Studio Code", "auto", true}, 33 } 34 35 for _, test := range tests { 36 t.Run(fmt.Sprintf("%s_%s", test.clientName, test.subdirWatchPatterns), func(t *testing.T) { 37 WithOptions( 38 ClientName(test.clientName), 39 Settings{ 40 "subdirWatchPatterns": test.subdirWatchPatterns, 41 }, 42 ).Run(t, files, func(t *testing.T, env *Env) { 43 var expectation Expectation 44 if test.wantWatched { 45 expectation = FileWatchMatching("subdir") 46 } else { 47 expectation = NoFileWatchMatching("subdir") 48 } 49 env.OnceMet( 50 InitialWorkspaceLoad, 51 expectation, 52 ) 53 }) 54 }) 55 } 56 } 57 58 // This test checks that we surface errors for invalid subdir watch patterns, 59 // as the triple of ("off"|"on"|"auto") may be confusing to users inclined to 60 // use (true|false) or some other truthy value. 61 func TestSubdirWatchPatterns_BadValues(t *testing.T) { 62 tests := []struct { 63 badValue interface{} 64 wantMessage string 65 }{ 66 {true, "invalid type bool, expect string"}, 67 {false, "invalid type bool, expect string"}, 68 {"yes", `invalid option "yes"`}, 69 } 70 71 for _, test := range tests { 72 t.Run(fmt.Sprint(test.badValue), func(t *testing.T) { 73 WithOptions( 74 Settings{ 75 "subdirWatchPatterns": test.badValue, 76 }, 77 ).Run(t, "", func(t *testing.T, env *Env) { 78 env.OnceMet( 79 InitialWorkspaceLoad, 80 ShownMessage(test.wantMessage), 81 ) 82 }) 83 }) 84 } 85 }