1 package tsserver 2 3 import ( 4 "bytes" 5 "io" 6 "io/fs" 7 "testing" 8 "time" 9 ) 10 11 type fileInfo struct{} 12 13 func (fileInfo) Name() string { return "" } 14 15 func (fileInfo) Size() int64 { return 0 } 16 17 func (fileInfo) ModTime() time.Time { return time.Now() } 18 19 func (fileInfo) Mode() fs.FileMode { return 0o755 } 20 21 func (fileInfo) IsDir() bool { return false } 22 23 func (fileInfo) Sys() any { return nil } 24 25 type pseudoFS string 26 27 func (p pseudoFS) Open(name string) (fs.File, error) { 28 return &file{ 29 Reader: bytes.NewReader([]byte(p)), 30 name: name, 31 FileInfo: fileInfo{}, 32 }, nil 33 } 34 35 func TestWrap(t *testing.T) { 36 for n, test := range [...]struct { 37 Input, Output string 38 }{ 39 { 40 "", 41 "", 42 }, 43 { 44 "const a: number = 1;\n\nconsole.log(a);", 45 "const a = 1;\n\nconsole.log(a);", 46 }, 47 } { 48 f, err := WrapFS(pseudoFS(test.Input)).Open("a.js") 49 if err != nil { 50 t.Errorf("test %d: unexpected error while getting file: %s", n+1, err) 51 } else if b, _ := io.ReadAll(f); string(b) != test.Output { 52 t.Errorf("test %d: expecting output %s, got %s", n+1, test.Output, b) 53 } 54 } 55 } 56