aboutsummaryrefslogtreecommitdiff
path: root/src/embed/internal/embedtest
diff options
context:
space:
mode:
authorNuno Cruces <ncruces@users.noreply.github.com>2023-04-11 23:25:07 +0000
committerGopher Robot <gobot@golang.org>2023-04-12 20:00:50 +0000
commitda2755b4721bc8f0361690401e4436fec2bbe984 (patch)
treed8ca7fb52f04b4b5dcfe32de6770112389e6b48c /src/embed/internal/embedtest
parent6116a47800b4e2aa477702b415752995a3156b26 (diff)
downloadgo-da2755b4721bc8f0361690401e4436fec2bbe984.tar.xz
embed: implement openFile.ReadAt
Implementation copied from testing/fstest/mapfs.go Fixes #57803 Change-Id: I531682b50ab6663511bac41fce7614ab9197bf38 GitHub-Last-Rev: d9bcc1c0bf4d339edcdabaf4d4d67b848ad8818d GitHub-Pull-Request: golang/go#59489 Reviewed-on: https://go-review.googlesource.com/c/go/+/483235 Run-TryBot: Ian Lance Taylor <iant@golang.org> Auto-Submit: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/embed/internal/embedtest')
-rw-r--r--src/embed/internal/embedtest/embed_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/embed/internal/embedtest/embed_test.go b/src/embed/internal/embedtest/embed_test.go
index cbd58ee846..c925942191 100644
--- a/src/embed/internal/embedtest/embed_test.go
+++ b/src/embed/internal/embedtest/embed_test.go
@@ -6,6 +6,7 @@ package embedtest
import (
"embed"
+ "io"
"reflect"
"testing"
"testing/fstest"
@@ -176,3 +177,59 @@ func TestAliases(t *testing.T) {
check(helloBytes)
check(helloString)
}
+
+func TestOffset(t *testing.T) {
+ file, err := testDirAll.Open("testdata/hello.txt")
+ if err != nil {
+ t.Fatal("Open:", err)
+ }
+
+ const want = "hello, world\n"
+
+ // Read the entire file.
+ got := make([]byte, len(want))
+ n, err := file.Read(got)
+ if err != nil {
+ t.Fatal("Read:", err)
+ }
+ if n != len(want) {
+ t.Fatal("Read:", n)
+ }
+ if string(got) != want {
+ t.Fatalf("Read: %q", got)
+ }
+
+ // Try to read one byte; confirm we're at the EOF.
+ var buf [1]byte
+ n, err = file.Read(buf[:])
+ if err != io.EOF {
+ t.Fatal("Read:", err)
+ }
+ if n != 0 {
+ t.Fatal("Read:", n)
+ }
+
+ // Use seek to get the offset at the EOF.
+ seeker := file.(io.Seeker)
+ off, err := seeker.Seek(0, io.SeekCurrent)
+ if err != nil {
+ t.Fatal("Seek:", err)
+ }
+ if off != int64(len(want)) {
+ t.Fatal("Seek:", off)
+ }
+
+ // Use ReadAt to read the entire file, ignoring the offset.
+ at := file.(io.ReaderAt)
+ got = make([]byte, len(want))
+ n, err = at.ReadAt(got, 0)
+ if err != nil {
+ t.Fatal("ReadAt:", err)
+ }
+ if n != len(want) {
+ t.Fatal("ReadAt:", n)
+ }
+ if string(got) != want {
+ t.Fatalf("ReadAt: %q", got)
+ }
+}