16b5dd92b3f9a9842e42d1216effacdcae07d68d
[platform/upstream/nodejs.git] / test / parallel / test-fs-error-messages.js
1 // Copyright Joyent, Inc. and other Node contributors.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a
4 // copy of this software and associated documentation files (the
5 // "Software"), to deal in the Software without restriction, including
6 // without limitation the rights to use, copy, modify, merge, publish,
7 // distribute, sublicense, and/or sell copies of the Software, and to permit
8 // persons to whom the Software is furnished to do so, subject to the
9 // following conditions:
10 //
11 // The above copyright notice and this permission notice shall be included
12 // in all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22
23
24
25 var common = require('../common');
26 var assert = require('assert');
27
28 var path = require('path'),
29     fs = require('fs'),
30     fn = path.join(common.fixturesDir, 'non-existent'),
31     existingFile = path.join(common.fixturesDir, 'exit.js'),
32     existingFile2 = path.join(common.fixturesDir, 'create-file.js'),
33     existingDir = path.join(common.fixturesDir, 'empty'),
34     existingDir2 = path.join(common.fixturesDir, 'keys');
35
36 // ASYNC_CALL
37
38 fs.stat(fn, function(err) {
39   assert.equal(fn, err.path);
40   assert.ok(0 <= err.message.indexOf(fn));
41 });
42
43 fs.lstat(fn, function(err) {
44   assert.ok(0 <= err.message.indexOf(fn));
45 });
46
47 fs.readlink(fn, function(err) {
48   assert.ok(0 <= err.message.indexOf(fn));
49 });
50
51 fs.link(fn, 'foo', function(err) {
52   assert.ok(0 <= err.message.indexOf(fn));
53 });
54
55 fs.link(existingFile, existingFile2, function(err) {
56   assert.ok(0 <= err.message.indexOf(existingFile2));
57 });
58
59 fs.symlink(existingFile, existingFile2, function(err) {
60   assert.ok(0 <= err.message.indexOf(existingFile2));
61 });
62
63 fs.unlink(fn, function(err) {
64   assert.ok(0 <= err.message.indexOf(fn));
65 });
66
67 fs.rename(fn, 'foo', function(err) {
68   assert.ok(0 <= err.message.indexOf(fn));
69 });
70
71 fs.rename(existingDir, existingDir2, function(err) {
72   assert.ok(0 <= err.message.indexOf(existingDir2));
73 });
74
75 fs.rmdir(fn, function(err) {
76   assert.ok(0 <= err.message.indexOf(fn));
77 });
78
79 fs.mkdir(existingFile, 0666, function(err) {
80   assert.ok(0 <= err.message.indexOf(existingFile));
81 });
82
83 fs.rmdir(existingFile, function(err) {
84   assert.ok(0 <= err.message.indexOf(existingFile));
85 });
86
87 fs.chmod(fn, 0666, function(err) {
88   assert.ok(0 <= err.message.indexOf(fn));
89 });
90
91 fs.open(fn, 'r', 0666, function(err) {
92   assert.ok(0 <= err.message.indexOf(fn));
93 });
94
95 fs.readFile(fn, function(err) {
96   assert.ok(0 <= err.message.indexOf(fn));
97 });
98
99 // Sync
100
101 var errors = [],
102     expected = 0;
103
104 try {
105   ++expected;
106   fs.statSync(fn);
107 } catch (err) {
108   errors.push('stat');
109   assert.ok(0 <= err.message.indexOf(fn));
110 }
111
112 try {
113   ++expected;
114   fs.mkdirSync(existingFile, 0666);
115 } catch (err) {
116   errors.push('mkdir');
117   assert.ok(0 <= err.message.indexOf(existingFile));
118 }
119
120 try {
121   ++expected;
122   fs.chmodSync(fn, 0666);
123 } catch (err) {
124   errors.push('chmod');
125   assert.ok(0 <= err.message.indexOf(fn));
126 }
127
128 try {
129   ++expected;
130   fs.lstatSync(fn);
131 } catch (err) {
132   errors.push('lstat');
133   assert.ok(0 <= err.message.indexOf(fn));
134 }
135
136 try {
137   ++expected;
138   fs.readlinkSync(fn);
139 } catch (err) {
140   errors.push('readlink');
141   assert.ok(0 <= err.message.indexOf(fn));
142 }
143
144 try {
145   ++expected;
146   fs.linkSync(fn, 'foo');
147 } catch (err) {
148   errors.push('link');
149   assert.ok(0 <= err.message.indexOf(fn));
150 }
151
152 try {
153   ++expected;
154   fs.linkSync(existingFile, existingFile2);
155 } catch (err) {
156   errors.push('link');
157   assert.ok(0 <= err.message.indexOf(existingFile2));
158 }
159
160 try {
161   ++expected;
162   fs.symlinkSync(existingFile, existingFile2);
163 } catch (err) {
164   errors.push('symlink');
165   assert.ok(0 <= err.message.indexOf(existingFile2));
166 }
167
168 try {
169   ++expected;
170   fs.unlinkSync(fn);
171 } catch (err) {
172   errors.push('unlink');
173   assert.ok(0 <= err.message.indexOf(fn));
174 }
175
176 try {
177   ++expected;
178   fs.rmdirSync(fn);
179 } catch (err) {
180   errors.push('rmdir');
181   assert.ok(0 <= err.message.indexOf(fn));
182 }
183
184 try {
185   ++expected;
186   fs.rmdirSync(existingFile);
187 } catch (err) {
188   errors.push('rmdir');
189   assert.ok(0 <= err.message.indexOf(existingFile));
190 }
191
192 try {
193   ++expected;
194   fs.openSync(fn, 'r');
195 } catch (err) {
196   errors.push('opens');
197   assert.ok(0 <= err.message.indexOf(fn));
198 }
199
200 try {
201   ++expected;
202   fs.renameSync(fn, 'foo');
203 } catch (err) {
204   errors.push('rename');
205   assert.ok(0 <= err.message.indexOf(fn));
206 }
207
208 try {
209   ++expected;
210   fs.renameSync(existingDir, existingDir2);
211 } catch (err) {
212   errors.push('rename');
213   assert.ok(0 <= err.message.indexOf(existingDir2));
214 }
215
216 try {
217   ++expected;
218   fs.readdirSync(fn);
219 } catch (err) {
220   errors.push('readdir');
221   assert.ok(0 <= err.message.indexOf(fn));
222 }
223
224 process.on('exit', function() {
225   assert.equal(expected, errors.length,
226                'Test fs sync exceptions raised, got ' + errors.length +
227                ' expected ' + expected);
228 });