diff options
author | Robert Griesemer <gri@golang.org> | 2009-06-01 19:00:07 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2009-06-01 19:00:07 -0700 |
commit | ad3bd653fed89b3d9ea879254243d7fdc764d342 (patch) | |
tree | 5ac92d346d82a47925b26afc2ae9a607402a5dc5 | |
parent | 3cac49d2f3f4f587869c270790324d010ede3830 (diff) | |
download | golang-ad3bd653fed89b3d9ea879254243d7fdc764d342.tar.gz |
io.ReadFile
R=r,rsc
DELTA=64 (63 added, 0 deleted, 1 changed)
OCL=29702
CL=29702
-rw-r--r-- | src/lib/io/Makefile | 3 | ||||
-rw-r--r-- | src/lib/io/utils.go | 27 | ||||
-rw-r--r-- | src/lib/io/utils_test.go | 37 |
3 files changed, 66 insertions, 1 deletions
diff --git a/src/lib/io/Makefile b/src/lib/io/Makefile index d9f8f30a2..2e8207014 100644 --- a/src/lib/io/Makefile +++ b/src/lib/io/Makefile @@ -45,6 +45,7 @@ O1=\ O2=\ pipe.$O\ + utils.$O\ phases: a1 a2 @@ -55,7 +56,7 @@ a1: $(O1) rm -f $(O1) a2: $(O2) - $(AR) grc _obj$D/io.a pipe.$O + $(AR) grc _obj$D/io.a pipe.$O utils.$O rm -f $(O2) diff --git a/src/lib/io/utils.go b/src/lib/io/utils.go new file mode 100644 index 000000000..736097946 --- /dev/null +++ b/src/lib/io/utils.go @@ -0,0 +1,27 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Utility functions. + +package io + +import ( + "io"; + "os"; +) + + +// ReadFile reads the file named by filename and returns +// its contents if successful. +// +func ReadFile(filename string) ([]byte, os.Error) { + f, err := os.Open(filename, os.O_RDONLY, 0); + if err != nil { + return nil, err; + } + var b io.ByteBuffer; + _, err := io.Copy(f, &b); + f.Close(); + return b.Data(), err; +} diff --git a/src/lib/io/utils_test.go b/src/lib/io/utils_test.go new file mode 100644 index 000000000..f35dad60c --- /dev/null +++ b/src/lib/io/utils_test.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package io + +import ( + "io"; + "os"; + "testing"; +) + +func checkSize(t *testing.T, path string, size uint64) { + dir, err := os.Stat(path); + if err != nil { + t.Fatalf("Stat %q (looking for size %d): %s", path, size, err); + } + if dir.Size != size { + t.Errorf("Stat %q: size %d want %d", path, dir.Size, size); + } +} + +func TestReadFile(t *testing.T) { + filename := "rumpelstilzchen"; + contents, err := ReadFile(filename); + if err == nil { + t.Fatalf("ReadFile %s: error expected, none found", filename); + } + + filename = "utils_test.go"; + contents, err = ReadFile(filename); + if err != nil { + t.Fatalf("ReadFile %s: %v", filename, err); + } + + checkSize(t, filename, uint64(len(contents))); +} |