1// Copyright 2009 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 5package ioutil 6 7import ( 8 "os" 9 "testing" 10) 11 12func checkSize(t *testing.T, path string, size int64) { 13 dir, err := os.Stat(path) 14 if err != nil { 15 t.Fatalf("Stat %q (looking for size %d): %s", path, size, err) 16 } 17 if dir.Size() != size { 18 t.Errorf("Stat %q: size %d want %d", path, dir.Size(), size) 19 } 20} 21 22func TestReadFile(t *testing.T) { 23 filename := "rumpelstilzchen" 24 contents, err := ReadFile(filename) 25 if err == nil { 26 t.Fatalf("ReadFile %s: error expected, none found", filename) 27 } 28 29 filename = "ioutil_test.go" 30 contents, err = ReadFile(filename) 31 if err != nil { 32 t.Fatalf("ReadFile %s: %v", filename, err) 33 } 34 35 checkSize(t, filename, int64(len(contents))) 36} 37 38func TestWriteFile(t *testing.T) { 39 f, err := TempFile("", "ioutil-test") 40 if err != nil { 41 t.Fatal(err) 42 } 43 filename := f.Name() 44 data := "Programming today is a race between software engineers striving to " + 45 "build bigger and better idiot-proof programs, and the Universe trying " + 46 "to produce bigger and better idiots. So far, the Universe is winning." 47 48 if err := WriteFile(filename, []byte(data), 0644); err != nil { 49 t.Fatalf("WriteFile %s: %v", filename, err) 50 } 51 52 contents, err := ReadFile(filename) 53 if err != nil { 54 t.Fatalf("ReadFile %s: %v", filename, err) 55 } 56 57 if string(contents) != data { 58 t.Fatalf("contents = %q\nexpected = %q", string(contents), data) 59 } 60 61 // cleanup 62 f.Close() 63 os.Remove(filename) // ignore error 64} 65 66func TestReadDir(t *testing.T) { 67 dirname := "rumpelstilzchen" 68 _, err := ReadDir(dirname) 69 if err == nil { 70 t.Fatalf("ReadDir %s: error expected, none found", dirname) 71 } 72 73 /* Does not work in gccgo testing environment. 74 dirname = ".." 75 list, err := ReadDir(dirname) 76 if err != nil { 77 t.Fatalf("ReadDir %s: %v", dirname, err) 78 } 79 80 foundFile := false 81 foundSubDir := false 82 for _, dir := range list { 83 switch { 84 case !dir.IsDir() && dir.Name() == "io_test.go": 85 foundFile = true 86 case dir.IsDir() && dir.Name() == "ioutil": 87 foundSubDir = true 88 } 89 } 90 if !foundFile { 91 t.Fatalf("ReadDir %s: io_test.go file not found", dirname) 92 } 93 if !foundSubDir { 94 t.Fatalf("ReadDir %s: ioutil directory not found", dirname) 95 } 96 */ 97} 98