(t *testing.T)
| 330 | } |
| 331 | |
| 332 | func 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 | } |
nothing calls this directly
no test coverage detected