MCPcopy
hub / github.com/perkeep/perkeep / TestDifferentWriteTypes

Function TestDifferentWriteTypes

pkg/fs/fs_test.go:332–406  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

330}
331
332func TestDifferentWriteTypes(t *testing.T) {
333 condSkip(t)
334 inEmptyMutDir(t, func(env *mountEnv, rootDir string) {
335 filename := filepath.Join(rootDir, "big")
336
337 writes := []struct {
338 name string
339 flag int
340 write []byte // if non-nil, Write is called
341 writeAt []byte // if non-nil, WriteAt is used
342 writePos int64 // writeAt position
343 want string // shortenString of remaining file
344 }{
345 {
346 name: "write 8k of a",
347 flag: os.O_RDWR | os.O_CREATE | os.O_TRUNC,
348 write: bytes.Repeat([]byte("a"), 8<<10),
349 want: "a{8192}",
350 },
351 {
352 name: "writeAt HI at offset 10",
353 flag: os.O_RDWR,
354 writeAt: []byte("HI"),
355 writePos: 10,
356 want: "a{10}HIa{8180}",
357 },
358 {
359 name: "append single C",
360 flag: os.O_WRONLY | os.O_APPEND,
361 write: []byte("C"),
362 want: "a{10}HIa{8180}C",
363 },
364 {
365 name: "append 8k of b",
366 flag: os.O_WRONLY | os.O_APPEND,
367 write: bytes.Repeat([]byte("b"), 8<<10),
368 want: "a{10}HIa{8180}Cb{8192}",
369 },
370 }
371
372 for _, wr := range writes {
373 f, err := os.OpenFile(filename, wr.flag, 0644)
374 if err != nil {
375 t.Fatalf("%s: OpenFile: %v", wr.name, err)
376 }
377 if wr.write != nil {
378 if n, err := f.Write(wr.write); err != nil || n != len(wr.write) {
379 t.Fatalf("%s: Write = (%v, %v); want (%d, nil)", wr.name, n, err, len(wr.write))
380 }
381 }
382 if wr.writeAt != nil {
383 if n, err := f.WriteAt(wr.writeAt, wr.writePos); err != nil || n != len(wr.writeAt) {
384 t.Fatalf("%s: WriteAt = (%v, %v); want (%d, nil)", wr.name, n, err, len(wr.writeAt))
385 }
386 }
387 if err := f.Close(); err != nil {
388 t.Fatalf("%s: Close: %v", wr.name, err)
389 }

Callers

nothing calls this directly

Calls 8

condSkipFunction · 0.85
inEmptyMutDirFunction · 0.85
shortenStringFunction · 0.85
FatalMethod · 0.80
FatalfMethod · 0.65
CloseMethod · 0.65
RemoveMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected