Codebase list libcapture-tiny-perl / 2a99fd6
fix capture/tee_stderr problem with string handles and ties David Golden 12 years ago
13 changed file(s) with 44 addition(s) and 4 deletion(s). Raw diff Collapse all Expand all
308308 $localize{stdout}++, local(*STDOUT)
309309 if $do_stdout && grep { $_ eq 'scalar' } @{$layers{stdout}};
310310 $localize{stderr}++, local(*STDERR)
311 if $do_stderr && grep { $_ eq 'scalar' } @{$layers{stderr}};
311 if ($do_stderr || $do_merge) && grep { $_ eq 'scalar' } @{$layers{stderr}};
312312 $localize{stdout}++, local(*STDOUT), _open( \*STDOUT, ">&=1")
313313 if $do_stdout && tied *STDOUT && $] >= 5.008;
314314 $localize{stderr}++, local(*STDERR), _open( \*STDERR, ">&=2")
315 if $do_stderr && tied *STDERR && $] >= 5.008;
315 if ($do_stderr || $do_merge) && tied *STDERR && $] >= 5.008;
316316 _debug( "# localized $_\n" ) for keys %localize;
317317 # proxy any closed/localized handles so we don't use fds 0, 1 or 2
318318 my %proxy_std = _proxy_std();
1010
1111 my @api = qw(
1212 capture
13 capture_stdout
14 capture_stderr
1315 capture_merged
1416 tee
17 tee_stdout
18 tee_stderr
1519 tee_merged
1620 );
1721
1919
2020 run_test('capture');
2121 run_test('capture_scalar');
22 run_test('capture_merged');
2322 run_test('capture_stdout');
2423 run_test('capture_stderr');
24 run_test('capture_merged');
2525
2626 is( next_fd, $fd, "no file descriptors leaked" );
2727
2626
2727 run_test('tee');
2828 run_test('tee_scalar');
29 run_test('tee_merged');
3029 run_test('tee_stdout');
3130 run_test('tee_stderr');
31 run_test('tee_merged');
3232
3333 is( next_fd, $fd, "no file descriptors leaked" );
3434
2626 run_test($_) for qw(
2727 capture
2828 capture_scalar
29 capture_stdout
30 capture_stderr
2931 capture_merged
3032 );
3133
3335 run_test($_) for qw(
3436 tee
3537 tee_scalar
38 tee_stdout
39 tee_stderr
3640 tee_merged
3741 );
3842 }
2626 run_test($_) for qw(
2727 capture
2828 capture_scalar
29 capture_stdout
30 capture_stderr
2931 capture_merged
3032 );
3133
3335 run_test($_) for qw(
3436 tee
3537 tee_scalar
38 tee_stdout
39 tee_stderr
3640 tee_merged
3741 );
3842 }
2626 run_test($_) for qw(
2727 capture
2828 capture_scalar
29 capture_stdout
30 capture_stderr
2931 capture_merged
3032 );
3133
3335 run_test($_) for qw(
3436 tee
3537 tee_scalar
38 tee_stdout
39 tee_stderr
3640 tee_merged
3741 );
3842 }
3030 run_test($_) for qw(
3131 capture
3232 capture_scalar
33 capture_stdout
34 capture_stderr
3335 capture_merged
3436 );
3537
3739 run_test($_) for qw(
3840 tee
3941 tee_scalar
42 tee_stdout
43 tee_stderr
4044 tee_merged
4145 );
4246 }
3030 run_test($_) for qw(
3131 capture
3232 capture_scalar
33 capture_stdout
34 capture_stderr
3335 capture_merged
3436 );
3537
3739 run_test($_) for qw(
3840 tee
3941 tee_scalar
42 tee_stdout
43 tee_stderr
4044 tee_merged
4145 );
4246 }
3636 run_test($_) for qw(
3737 capture
3838 capture_scalar
39 capture_stdout
40 capture_stderr
3941 capture_merged
4042 );
4143
4345 run_test($_) for qw(
4446 tee
4547 tee_scalar
48 tee_stdout
49 tee_stderr
4650 tee_merged
4751 );
4852 }
3333 run_test($_) for qw(
3434 capture
3535 capture_scalar
36 capture_stdout
37 capture_stderr
3638 capture_merged
3739 );
3840
4042 run_test($_) for qw(
4143 tee
4244 tee_scalar
45 tee_stdout
46 tee_stderr
4347 tee_merged
4448 );
4549 }
3333 run_test($_) for qw(
3434 capture
3535 capture_scalar
36 capture_stdout
37 capture_stderr
3638 capture_merged
3739 );
3840
4042 run_test($_) for qw(
4143 tee
4244 tee_scalar
45 tee_stdout
46 tee_stderr
4347 tee_merged
4448 );
4549 }
3535 run_test($_) for qw(
3636 capture
3737 capture_scalar
38 capture_stdout
39 capture_stderr
3840 capture_merged
3941 );
4042
4244 run_test($_) for qw(
4345 tee
4446 tee_scalar
47 tee_stdout
48 tee_stderr
4549 tee_merged
4650 );
4751 }