@@ -14,73 +14,27 @@ const length = buffer.byteLength;
14
14
// allowedErrors is an array of acceptable internal errors
15
15
// For example, on some platforms read syscall might return -EFBIG
16
16
async function testValid ( position , allowedErrors = [ ] ) {
17
- let fdSync ;
18
- try {
19
- fdSync = fs . openSync ( filepath , 'r' ) ;
20
- fs . readSync ( fdSync , buffer , offset , length , position ) ;
21
- fs . readSync ( fdSync , buffer , { offset, length, position } ) ;
22
- } catch ( err ) {
23
- if ( ! allowedErrors . includes ( err . code ) ) {
24
- assert . fail ( err ) ;
25
- }
26
- } finally {
27
- if ( fdSync ) fs . closeSync ( fdSync ) ;
28
- }
29
-
30
- fs . open ( filepath , 'r' , common . mustSucceed ( ( fd ) => {
31
- try {
32
- if ( allowedErrors . length ) {
33
- fs . read ( fd , buffer , offset , length , position , common . mustCall ( ( err , ...results ) => {
34
- if ( err && ! allowedErrors . includes ( err . code ) ) {
35
- assert . fail ( err ) ;
36
- }
37
- } ) ) ;
38
- fs . read ( fd , { buffer, offset, length, position } , common . mustCall ( ( err , ...results ) => {
39
- if ( err && ! allowedErrors . includes ( err . code ) ) {
40
- assert . fail ( err ) ;
41
- }
42
- } ) ) ;
43
- } else {
44
- fs . read ( fd , buffer , offset , length , position , common . mustSucceed ( ) ) ;
45
- fs . read ( fd , { buffer, offset, length, position } , common . mustSucceed ( ) ) ;
46
- }
47
- } finally {
48
- fs . close ( fd , common . mustSucceed ( ) ) ;
49
- }
50
- } ) ) ;
51
- }
52
-
53
- async function testInvalid ( code , position , internalCatch = false ) {
54
- let fdSync ;
55
- try {
56
- fdSync = fs . openSync ( filepath , 'r' ) ;
57
- assert . throws (
58
- ( ) => fs . readSync ( fdSync , buffer , offset , length , position ) ,
59
- { code }
60
- ) ;
61
- assert . throws (
62
- ( ) => fs . readSync ( fdSync , buffer , { offset, length, position } ) ,
63
- { code }
64
- ) ;
65
- } finally {
66
- if ( fdSync ) fs . closeSync ( fdSync ) ;
67
- }
68
-
69
- // Set this flag for catching errors via first argument of callback function
70
- if ( internalCatch ) {
17
+ return new Promise ( ( resolve , reject ) => {
71
18
fs . open ( filepath , 'r' , common . mustSucceed ( ( fd ) => {
72
- try {
73
- fs . read ( fd , buffer , offset , length , position , ( err , ...results ) => {
74
- assert . strictEqual ( err . code , code ) ;
75
- } ) ;
76
- fs . read ( fd , { buffer, offset, length, position } , ( err , ...results ) => {
77
- assert . strictEqual ( err . code , code ) ;
78
- } ) ;
79
- } finally {
80
- fs . close ( fd , common . mustSucceed ( ) ) ;
81
- }
19
+ let callCount = 3 ;
20
+ const handler = common . mustCall ( ( err ) => {
21
+ callCount -- ;
22
+ if ( err && ! allowedErrors . includes ( err . code ) ) {
23
+ fs . close ( fd , common . mustSucceed ( ) ) ;
24
+ reject ( err ) ;
25
+ } else if ( callCount === 0 ) {
26
+ fs . close ( fd , common . mustSucceed ( resolve ) ) ;
27
+ }
28
+ } , callCount ) ;
29
+ fs . read ( fd , buffer , offset , length , position , handler ) ;
30
+ fs . read ( fd , { buffer, offset, length, position } , handler ) ;
31
+ fs . read ( fd , buffer , { offset, length, position } , handler ) ;
82
32
} ) ) ;
83
- } else {
33
+ } ) ;
34
+ }
35
+
36
+ async function testInvalid ( code , position ) {
37
+ return new Promise ( ( resolve , reject ) => {
84
38
fs . open ( filepath , 'r' , common . mustSucceed ( ( fd ) => {
85
39
try {
86
40
assert . throws (
@@ -91,11 +45,18 @@ async function testInvalid(code, position, internalCatch = false) {
91
45
( ) => fs . read ( fd , { buffer, offset, length, position } , common . mustNotCall ( ) ) ,
92
46
{ code }
93
47
) ;
48
+ assert . throws (
49
+ ( ) => fs . read ( fd , buffer , { offset, length, position } , common . mustNotCall ( ) ) ,
50
+ { code }
51
+ ) ;
52
+ resolve ( ) ;
53
+ } catch ( err ) {
54
+ reject ( err ) ;
94
55
} finally {
95
56
fs . close ( fd , common . mustSucceed ( ) ) ;
96
57
}
97
58
} ) ) ;
98
- }
59
+ } ) ;
99
60
}
100
61
101
62
{
0 commit comments