github.com/april1989/origin-go-tools@v0.0.32/internal/lsp/cache/view_test.go (about) 1 // Copyright 2020 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 package cache 5 6 import ( 7 "io/ioutil" 8 "os" 9 "path/filepath" 10 "testing" 11 ) 12 13 func TestCaseInsensitiveFilesystem(t *testing.T) { 14 base, err := ioutil.TempDir("", t.Name()) 15 if err != nil { 16 t.Fatal(err) 17 } 18 19 inner := filepath.Join(base, "a/B/c/DEFgh") 20 if err := os.MkdirAll(inner, 0777); err != nil { 21 t.Fatal(err) 22 } 23 file := filepath.Join(inner, "f.go") 24 if err := ioutil.WriteFile(file, []byte("hi"), 0777); err != nil { 25 t.Fatal(err) 26 } 27 if _, err := os.Stat(filepath.Join(inner, "F.go")); err != nil { 28 t.Skip("filesystem is case-sensitive") 29 } 30 31 tests := []struct { 32 path string 33 err bool 34 }{ 35 {file, false}, 36 {filepath.Join(inner, "F.go"), true}, 37 {filepath.Join(base, "a/b/c/defgh/f.go"), true}, 38 } 39 for _, tt := range tests { 40 err := checkPathCase(tt.path) 41 if err != nil != tt.err { 42 t.Errorf("checkPathCase(%q) = %v, wanted error: %v", tt.path, err, tt.err) 43 } 44 } 45 }