(t *testing.T)
| 315 | } |
| 316 | |
| 317 | func TestSetFlagsForRange(t *testing.T) { |
| 318 | type testCase struct { |
| 319 | name string |
| 320 | startFd int32 |
| 321 | endFd int32 |
| 322 | wantErr bool |
| 323 | } |
| 324 | testCases := []testCase{ |
| 325 | {"negative ranges", -100, -10, true}, |
| 326 | {"inverted positive ranges", 100, 10, true}, |
| 327 | {"good range", maxFD / 4, maxFD / 2, false}, |
| 328 | } |
| 329 | |
| 330 | for _, test := range testCases { |
| 331 | runTest(t, func(ctx context.Context, fdTable *FDTable, fd *vfs.FileDescription, _ *limits.LimitSet) { |
| 332 | for i := 0; i < maxFD; i++ { |
| 333 | if _, err := fdTable.NewFDs(ctx, 0, []*vfs.FileDescription{fd}, FDFlags{}); err != nil { |
| 334 | t.Fatalf("testCase: %v\nfdTable.NewFDs(_, 0, %+v, FDFlags{}): %d, want: nil", test, []*vfs.FileDescription{fd}, err) |
| 335 | } |
| 336 | } |
| 337 | |
| 338 | newFlags := FDFlags{CloseOnExec: true} |
| 339 | if err := fdTable.SetFlagsForRange(ctx, test.startFd, test.endFd, newFlags); (err == nil) == test.wantErr { |
| 340 | t.Fatalf("testCase: %v\nfdTable.SetFlagsForRange(_, %d, %d, %v): %v, waf: %t", test, test.startFd, test.endFd, newFlags, err, test.wantErr) |
| 341 | } |
| 342 | |
| 343 | if test.wantErr { |
| 344 | return |
| 345 | } |
| 346 | |
| 347 | testRangeFlags := func(start int32, end int32, expected FDFlags) { |
| 348 | for i := start; i <= end; i++ { |
| 349 | file, flags := fdTable.Get(i) |
| 350 | if file == nil || flags != expected { |
| 351 | t.Fatalf("testCase: %v\nfdTable.Get(%d): (%v, %v), wanted (non-nil, %v)", test, i, file, flags, expected) |
| 352 | } |
| 353 | } |
| 354 | } |
| 355 | testRangeFlags(0, test.startFd-1, FDFlags{}) |
| 356 | testRangeFlags(test.startFd, test.endFd, newFlags) |
| 357 | testRangeFlags(test.endFd+1, maxFD-1, FDFlags{}) |
| 358 | }) |
| 359 | } |
| 360 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…