@@ -9,202 +9,156 @@ const existingFile2 = path.join(common.fixturesDir, 'create-file.js');
9
9
const existingDir = path . join ( common . fixturesDir , 'empty' ) ;
10
10
const existingDir2 = path . join ( common . fixturesDir , 'keys' ) ;
11
11
12
- // ASYNC_CALL
12
+ // Test all operations failing with ENOENT errors
13
+ function testEnoentError ( file , endMessage , syscal , err ) {
14
+ const sufix = ( endMessage ) ? endMessage : '' ;
13
15
14
- fs . stat ( fn , function ( err ) {
16
+ assert ( err instanceof Error ) ;
15
17
assert . strictEqual ( fn , err . path ) ;
16
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
17
- } ) ;
18
+ assert . strictEqual (
19
+ err . message ,
20
+ `ENOENT: no such file or directory, ${ syscal } '${ file } '${ sufix } `
21
+ ) ;
18
22
19
- fs . lstat ( fn , function ( err ) {
20
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
21
- } ) ;
23
+ return true ;
24
+ }
22
25
23
- fs . readlink ( fn , function ( err ) {
24
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
25
- } ) ;
26
+ // Test all operations failing with EEXIST errors
27
+ function testEexistError ( source , dest , syscal , err ) {
28
+ const sufix = ( dest ) ? ` -> ' ${ dest } '` : '' ;
26
29
27
- fs . link ( fn , 'foo' , function ( err ) {
28
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
29
- } ) ;
30
+ assert ( err instanceof Error ) ;
31
+ assert . strictEqual ( source , err . path ) ;
32
+ assert . strictEqual (
33
+ err . message ,
34
+ `EEXIST: file already exists, ${ syscal } '${ source } '${ sufix } `
35
+ ) ;
30
36
31
- fs . link ( existingFile , existingFile2 , function ( err ) {
32
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
33
- assert . ok ( 0 <= err . message . indexOf ( existingFile2 ) ) ;
34
- } ) ;
37
+ return true ;
38
+ }
35
39
36
- fs . symlink ( existingFile , existingFile2 , function ( err ) {
37
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
38
- assert . ok ( 0 <= err . message . indexOf ( existingFile2 ) ) ;
39
- } ) ;
40
+ // Test all operations failing with ENOTEMPTY errors
41
+ function testEnoemptyError ( source , dest , err ) {
42
+ assert ( err instanceof Error ) ;
43
+ assert . strictEqual ( source , err . path ) ;
44
+ assert . strictEqual (
45
+ err . message ,
46
+ `ENOTEMPTY: directory not empty, rename '${ source } ' ` +
47
+ `-> '${ dest } '`
48
+ ) ;
49
+
50
+ return true ;
51
+ }
40
52
41
- fs . unlink ( fn , function ( err ) {
42
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
43
- } ) ;
53
+ // Test all operations failing with ENOTDIR errors
54
+ function testEnotdirError ( dir , err ) {
55
+ assert ( err instanceof Error ) ;
56
+ assert . strictEqual ( dir , err . path ) ;
57
+ assert . strictEqual (
58
+ err . message ,
59
+ `ENOTDIR: not a directory, rmdir '${ dir } '`
60
+ ) ;
44
61
45
- fs . rename ( fn , 'foo' , function ( err ) {
46
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
47
- } ) ;
62
+ return true ;
63
+ }
48
64
49
- fs . rename ( existingDir , existingDir2 , function ( err ) {
50
- assert . ok ( 0 <= err . message . indexOf ( existingDir ) ) ;
51
- assert . ok ( 0 <= err . message . indexOf ( existingDir2 ) ) ;
52
- } ) ;
65
+ // Generating ENOENTS errors
66
+ fs . stat ( fn , ( err ) => testEnoentError ( fn , '' , 'stat' , err ) ) ;
67
+ fs . lstat ( fn , ( err ) => testEnoentError ( fn , '' , 'lstat' , err ) ) ;
68
+ fs . readlink ( fn , ( err ) => testEnoentError ( fn , '' , 'readlink' , err ) ) ;
69
+ fs . link ( fn , 'foo' , ( err ) => testEnoentError ( fn , ' -> \'foo\'' , 'link' , err ) ) ;
70
+ fs . unlink ( fn , ( err ) => testEnoentError ( fn , '' , 'unlink' , err ) ) ;
71
+ fs . rmdir ( fn , ( err ) => testEnoentError ( fn , '' , 'rmdir' , err ) ) ;
72
+ fs . chmod ( fn , 0o666 , ( err ) => testEnoentError ( fn , '' , 'chmod' , err ) ) ;
73
+ fs . open ( fn , 'r' , 0o666 , ( err ) => testEnoentError ( fn , '' , 'open' , err ) ) ;
74
+ fs . readFile ( fn , ( err ) => testEnoentError ( fn , '' , 'open' , err ) ) ;
75
+ fs . readdir ( fn , ( err ) => testEnoentError ( fn , '' , 'scandir' , err ) ) ;
53
76
54
- fs . rmdir ( fn , function ( err ) {
55
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
77
+ fs . rename ( fn , 'foo' , ( err ) => {
78
+ testEnoentError ( fn , ' -> \'foo\'' , 'rename' , err ) ;
56
79
} ) ;
57
80
58
- fs . mkdir ( existingFile , 0o666 , function ( err ) {
59
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
60
- } ) ;
81
+ assert . throws ( ( ) => {
82
+ fs . statSync ( fn ) ;
83
+ } , ( err ) => testEnoentError ( fn , '' , 'stat' , err ) ) ;
61
84
62
- fs . rmdir ( existingFile , function ( err ) {
63
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
64
- } ) ;
85
+ assert . throws ( ( ) => {
86
+ fs . lstatSync ( fn ) ;
87
+ } , ( err ) => testEnoentError ( fn , '' , 'lstat' , err ) ) ;
65
88
66
- fs . chmod ( fn , 0o666 , function ( err ) {
67
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
68
- } ) ;
89
+ assert . throws ( ( ) => {
90
+ fs . readlinkSync ( fn ) ;
91
+ } , ( err ) => testEnoentError ( fn , '' , 'readlink' , err ) ) ;
69
92
70
- fs . open ( fn , 'r' , 0o666 , function ( err ) {
71
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
72
- } ) ;
93
+ assert . throws ( ( ) => {
94
+ fs . linkSync ( fn , 'foo' ) ;
95
+ } , ( err ) => testEnoentError ( fn , ' -> \'foo\'' , 'link' , err ) ) ;
73
96
74
- fs . readFile ( fn , function ( err ) {
75
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
76
- } ) ;
97
+ assert . throws ( ( ) => {
98
+ fs . unlinkSync ( fn ) ;
99
+ } , ( err ) => testEnoentError ( fn , '' , 'unlink' , err ) ) ;
77
100
78
- // Sync
101
+ assert . throws ( ( ) => {
102
+ fs . rmdirSync ( fn ) ;
103
+ } , ( err ) => testEnoentError ( fn , '' , 'rmdir' , err ) ) ;
79
104
80
- const errors = [ ] ;
81
- let expected = 0 ;
105
+ assert . throws ( ( ) => {
106
+ fs . chmodSync ( fn , 0o666 ) ;
107
+ } , ( err ) => testEnoentError ( fn , '' , 'chmod' , err ) ) ;
82
108
83
- try {
84
- ++ expected ;
85
- fs . statSync ( fn ) ;
86
- } catch ( err ) {
87
- errors . push ( 'stat' ) ;
88
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
89
- }
109
+ assert . throws ( ( ) => {
110
+ fs . openSync ( fn , 'r' ) ;
111
+ } , ( err ) => testEnoentError ( fn , '' , 'open' , err ) ) ;
90
112
91
- try {
92
- ++ expected ;
93
- fs . mkdirSync ( existingFile , 0o666 ) ;
94
- } catch ( err ) {
95
- errors . push ( 'mkdir' ) ;
96
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
97
- }
113
+ assert . throws ( ( ) => {
114
+ fs . readFileSync ( fn ) ;
115
+ } , ( err ) => testEnoentError ( fn , '' , 'open' , err ) ) ;
98
116
99
- try {
100
- ++ expected ;
101
- fs . chmodSync ( fn , 0o666 ) ;
102
- } catch ( err ) {
103
- errors . push ( 'chmod' ) ;
104
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
105
- }
117
+ assert . throws ( ( ) => {
118
+ fs . readdirSync ( fn ) ;
119
+ } , ( err ) => testEnoentError ( fn , '' , 'scandir' , err ) ) ;
106
120
107
- try {
108
- ++ expected ;
109
- fs . lstatSync ( fn ) ;
110
- } catch ( err ) {
111
- errors . push ( 'lstat' ) ;
112
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
113
- }
121
+ assert . throws ( ( ) => {
122
+ fs . renameSync ( fn , 'foo' ) ;
123
+ } , ( err ) => testEnoentError ( fn , ' -> \'foo\'' , 'rename' , err ) ) ;
114
124
115
- try {
116
- ++ expected ;
117
- fs . readlinkSync ( fn ) ;
118
- } catch ( err ) {
119
- errors . push ( 'readlink' ) ;
120
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
121
- }
125
+ // Generating EEXIST errors
126
+ fs . link ( existingFile , existingFile2 , ( err ) => {
127
+ testEexistError ( existingFile , existingFile2 , 'link' , err ) ;
128
+ } ) ;
122
129
123
- try {
124
- ++ expected ;
125
- fs . linkSync ( fn , 'foo' ) ;
126
- } catch ( err ) {
127
- errors . push ( 'link' ) ;
128
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
129
- }
130
+ fs . symlink ( existingFile , existingFile2 , ( err ) => {
131
+ testEexistError ( existingFile , existingFile2 , 'symlink' , err ) ;
132
+ } ) ;
130
133
131
- try {
132
- ++ expected ;
134
+ fs . mkdir ( existingFile , 0o666 , ( err ) => {
135
+ testEexistError ( existingFile , null , 'mkdir' , err ) ;
136
+ } ) ;
137
+
138
+ assert . throws ( ( ) => {
133
139
fs . linkSync ( existingFile , existingFile2 ) ;
134
- } catch ( err ) {
135
- errors . push ( 'link' ) ;
136
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
137
- assert . ok ( 0 <= err . message . indexOf ( existingFile2 ) ) ;
138
- }
140
+ } , ( err ) => testEexistError ( existingFile , existingFile2 , 'link' , err ) ) ;
139
141
140
- try {
141
- ++ expected ;
142
+ assert . throws ( ( ) => {
142
143
fs . symlinkSync ( existingFile , existingFile2 ) ;
143
- } catch ( err ) {
144
- errors . push ( 'symlink' ) ;
145
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
146
- assert . ok ( 0 <= err . message . indexOf ( existingFile2 ) ) ;
147
- }
144
+ } , ( err ) => testEexistError ( existingFile , existingFile2 , 'symlink' , err ) ) ;
148
145
149
- try {
150
- ++ expected ;
151
- fs . unlinkSync ( fn ) ;
152
- } catch ( err ) {
153
- errors . push ( 'unlink' ) ;
154
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
155
- }
156
-
157
- try {
158
- ++ expected ;
159
- fs . rmdirSync ( fn ) ;
160
- } catch ( err ) {
161
- errors . push ( 'rmdir' ) ;
162
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
163
- }
164
-
165
- try {
166
- ++ expected ;
167
- fs . rmdirSync ( existingFile ) ;
168
- } catch ( err ) {
169
- errors . push ( 'rmdir' ) ;
170
- assert . ok ( 0 <= err . message . indexOf ( existingFile ) ) ;
171
- }
172
-
173
- try {
174
- ++ expected ;
175
- fs . openSync ( fn , 'r' ) ;
176
- } catch ( err ) {
177
- errors . push ( 'opens' ) ;
178
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
179
- }
146
+ assert . throws ( ( ) => {
147
+ fs . mkdirSync ( existingFile , 0o666 ) ;
148
+ } , ( err ) => testEexistError ( existingFile , null , 'mkdir' , err ) ) ;
180
149
181
- try {
182
- ++ expected ;
183
- fs . renameSync ( fn , 'foo' ) ;
184
- } catch ( err ) {
185
- errors . push ( 'rename' ) ;
186
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
187
- }
150
+ // Generating ENOTEMPTY errors
151
+ fs . rename ( existingDir , existingDir2 , ( err ) => {
152
+ testEnoemptyError ( existingDir , existingDir2 , err ) ;
153
+ } ) ;
188
154
189
- try {
190
- ++ expected ;
155
+ assert . throws ( ( ) => {
191
156
fs . renameSync ( existingDir , existingDir2 ) ;
192
- } catch ( err ) {
193
- errors . push ( 'rename' ) ;
194
- assert . ok ( 0 <= err . message . indexOf ( existingDir ) ) ;
195
- assert . ok ( 0 <= err . message . indexOf ( existingDir2 ) ) ;
196
- }
157
+ } , ( err ) => testEnoemptyError ( existingDir , existingDir2 , err ) ) ;
197
158
198
- try {
199
- ++ expected ;
200
- fs . readdirSync ( fn ) ;
201
- } catch ( err ) {
202
- errors . push ( 'readdir' ) ;
203
- assert . ok ( 0 <= err . message . indexOf ( fn ) ) ;
204
- }
159
+ // Generating ENOTDIR errors
160
+ fs . rmdir ( existingFile , ( err ) => testEnotdirError ( existingFile , err ) ) ;
205
161
206
- process . on ( 'exit' , function ( ) {
207
- assert . strictEqual ( expected , errors . length ,
208
- 'Test fs sync exceptions raised, got ' + errors . length +
209
- ' expected ' + expected ) ;
210
- } ) ;
162
+ assert . throws ( ( ) => {
163
+ fs . rmdirSync ( existingFile ) ;
164
+ } , ( err ) => testEnotdirError ( existingFile , err ) ) ;
0 commit comments