diff options
| author | Nuno Cruces <ncruces@users.noreply.github.com> | 2023-04-11 23:25:07 +0000 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-04-12 20:00:50 +0000 |
| commit | da2755b4721bc8f0361690401e4436fec2bbe984 (patch) | |
| tree | d8ca7fb52f04b4b5dcfe32de6770112389e6b48c /src/embed/internal/embedtest | |
| parent | 6116a47800b4e2aa477702b415752995a3156b26 (diff) | |
| download | go-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.go | 57 |
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) + } +} |
