@@ -8,8 +8,8 @@ import test from 'ava';
8
8
import uuid from 'uuid' ;
9
9
import sinon from 'sinon' ;
10
10
import cpFile from '..' ;
11
- import assertDateEqual from './helpers/assert ' ;
12
- import { buildEACCES , buildEIO , buildENOSPC , buildENOENT , buildEPERM } from './helpers/fs -errors' ;
11
+ import assertDateEqual from './helpers/_assert ' ;
12
+ import { buildEACCES , buildEIO , buildENOSPC , buildENOENT , buildEPERM } from './helpers/_fs -errors' ;
13
13
14
14
const THREE_HUNDRED_KILO = ( 100 * 3 * 1024 ) + 1 ;
15
15
@@ -24,7 +24,9 @@ test.beforeEach(t => {
24
24
} ) ;
25
25
26
26
test . afterEach . always ( t => {
27
- t . context . creates . forEach ( path => del . sync ( path ) ) ;
27
+ for ( const path_ of t . context . creates ) {
28
+ del . sync ( path_ ) ;
29
+ }
28
30
} ) ;
29
31
30
32
test ( 'reject an Error on missing `source`' , async t => {
@@ -47,10 +49,10 @@ test('copy an empty file', async t => {
47
49
} ) ;
48
50
49
51
test ( 'copy big files' , async t => {
50
- const buf = crypto . randomBytes ( THREE_HUNDRED_KILO ) ;
51
- fs . writeFileSync ( t . context . source , buf ) ;
52
+ const buffer = crypto . randomBytes ( THREE_HUNDRED_KILO ) ;
53
+ fs . writeFileSync ( t . context . source , buffer ) ;
52
54
await cpFile ( t . context . source , t . context . destination ) ;
53
- t . true ( buf . equals ( fs . readFileSync ( t . context . destination ) ) ) ;
55
+ t . true ( buffer . equals ( fs . readFileSync ( t . context . destination ) ) ) ;
54
56
} ) ;
55
57
56
58
test ( 'do not alter overwrite option' , async t => {
@@ -78,18 +80,18 @@ test('do not overwrite when disabled', async t => {
78
80
} ) ;
79
81
80
82
test ( 'do not create `destination` on unreadable `source`' , async t => {
81
- const error = await t . throwsAsync ( ( ) => cpFile ( 'node_modules' , t . context . destination ) ) ;
82
- t . is ( error . name , 'CpFileError' , error ) ;
83
- t . is ( error . code , 'EISDIR' , error ) ;
83
+ const error = await t . throwsAsync ( cpFile ( 'node_modules' , t . context . destination ) ) ;
84
+ t . is ( error . name , 'CpFileError' , error . message ) ;
85
+ t . is ( error . code , 'EISDIR' , error . message ) ;
84
86
t . throws ( ( ) => {
85
87
fs . statSync ( t . context . destination ) ;
86
88
} , / E N O E N T / ) ;
87
89
} ) ;
88
90
89
91
test ( 'do not create `destination` directory on unreadable `source`' , async t => {
90
- const error = await t . throwsAsync ( ( ) => cpFile ( 'node_modules' , 'subdir/' + uuid . v4 ( ) ) ) ;
91
- t . is ( error . name , 'CpFileError' , error ) ;
92
- t . is ( error . code , 'EISDIR' , error ) ;
92
+ const error = await t . throwsAsync ( cpFile ( 'node_modules' , path . join ( 'subdir' , uuid . v4 ( ) ) ) ) ;
93
+ t . is ( error . name , 'CpFileError' , error . message ) ;
94
+ t . is ( error . code , 'EISDIR' , error . message ) ;
93
95
t . throws ( ( ) => {
94
96
fs . statSync ( 'subdir' ) ;
95
97
} , / E N O E N T / ) ;
@@ -98,47 +100,47 @@ test('do not create `destination` directory on unreadable `source`', async t =>
98
100
test ( 'preserve timestamps' , async t => {
99
101
await cpFile ( 'license' , t . context . destination ) ;
100
102
const licenseStats = fs . lstatSync ( 'license' ) ;
101
- const tmpStats = fs . lstatSync ( t . context . destination ) ;
102
- assertDateEqual ( t , licenseStats . atime , tmpStats . atime ) ;
103
- assertDateEqual ( t , licenseStats . mtime , tmpStats . mtime ) ;
103
+ const tempStats = fs . lstatSync ( t . context . destination ) ;
104
+ assertDateEqual ( t , licenseStats . atime , tempStats . atime ) ;
105
+ assertDateEqual ( t , licenseStats . mtime , tempStats . mtime ) ;
104
106
} ) ;
105
107
106
108
test ( 'preserve mode' , async t => {
107
109
await cpFile ( 'license' , t . context . destination ) ;
108
110
const licenseStats = fs . lstatSync ( 'license' ) ;
109
- const tmpStats = fs . lstatSync ( t . context . destination ) ;
110
- t . is ( licenseStats . mode , tmpStats . mode ) ;
111
+ const tempStats = fs . lstatSync ( t . context . destination ) ;
112
+ t . is ( licenseStats . mode , tempStats . mode ) ;
111
113
} ) ;
112
114
113
115
test ( 'preserve ownership' , async t => {
114
116
await cpFile ( 'license' , t . context . destination ) ;
115
117
const licenseStats = fs . lstatSync ( 'license' ) ;
116
- const tmpStats = fs . lstatSync ( t . context . destination ) ;
117
- t . is ( licenseStats . gid , tmpStats . gid ) ;
118
- t . is ( licenseStats . uid , tmpStats . uid ) ;
118
+ const tempStats = fs . lstatSync ( t . context . destination ) ;
119
+ t . is ( licenseStats . gid , tempStats . gid ) ;
120
+ t . is ( licenseStats . uid , tempStats . uid ) ;
119
121
} ) ;
120
122
121
123
test ( 'throw an Error if `source` does not exists' , async t => {
122
124
const error = await t . throwsAsync ( cpFile ( 'NO_ENTRY' , t . context . destination ) ) ;
123
- t . is ( error . name , 'CpFileError' , error ) ;
124
- t . is ( error . code , 'ENOENT' , error ) ;
125
- t . regex ( error . message , / ` N O _ E N T R Y ` / , error ) ;
126
- t . regex ( error . stack , / ` N O _ E N T R Y ` / , error ) ;
125
+ t . is ( error . name , 'CpFileError' , error . message ) ;
126
+ t . is ( error . code , 'ENOENT' , error . message ) ;
127
+ t . regex ( error . message , / ` N O _ E N T R Y ` / , error . message ) ;
128
+ t . regex ( error . stack , / ` N O _ E N T R Y ` / , error . message ) ;
127
129
} ) ;
128
130
129
131
test . serial ( 'rethrow mkdir EACCES errors' , async t => {
130
- const dirPath = ' /root/NO_ACCESS_' + uuid . v4 ( ) ;
131
- const dest = dirPath + '/' + uuid . v4 ( ) ;
132
- const mkdirError = buildEACCES ( dirPath ) ;
132
+ const directoryPath = ` /root/NO_ACCESS_${ uuid . v4 ( ) } ` ;
133
+ const destination = path . join ( directoryPath , uuid . v4 ( ) ) ;
134
+ const mkdirError = buildEACCES ( directoryPath ) ;
133
135
134
136
fs . stat = sinon . stub ( fs , 'stat' ) . throws ( mkdirError ) ;
135
137
fs . mkdir = sinon . stub ( fs , 'mkdir' ) . throws ( mkdirError ) ;
136
138
137
- const error = await t . throwsAsync ( cpFile ( 'license' , dest ) ) ;
138
- t . is ( error . name , 'CpFileError' , error ) ;
139
- t . is ( error . errno , mkdirError . errno , error ) ;
140
- t . is ( error . code , mkdirError . code , error ) ;
141
- t . is ( error . path , mkdirError . path , error ) ;
139
+ const error = await t . throwsAsync ( cpFile ( 'license' , destination ) ) ;
140
+ t . is ( error . name , 'CpFileError' , error . message ) ;
141
+ t . is ( error . errno , mkdirError . errno , error . message ) ;
142
+ t . is ( error . code , mkdirError . code , error . message ) ;
143
+ t . is ( error . path , mkdirError . path , error . message ) ;
142
144
t . true ( fs . mkdir . called || fs . stat . called ) ;
143
145
144
146
fs . mkdir . restore ( ) ;
@@ -148,14 +150,14 @@ test.serial('rethrow mkdir EACCES errors', async t => {
148
150
test . serial ( 'rethrow ENOSPC errors' , async t => {
149
151
const { createWriteStream} = fs ;
150
152
const noSpaceError = buildENOSPC ( ) ;
151
- let called = false ;
153
+ let isCalled = false ;
152
154
153
155
fs . createWriteStream = ( path , options ) => {
154
156
const stream = createWriteStream ( path , options ) ;
155
157
if ( path === t . context . destination ) {
156
158
stream . on ( 'pipe' , ( ) => {
157
- if ( ! called ) {
158
- called = true ;
159
+ if ( ! isCalled ) {
160
+ isCalled = true ;
159
161
stream . emit ( 'error' , noSpaceError ) ;
160
162
}
161
163
} ) ;
@@ -167,10 +169,10 @@ test.serial('rethrow ENOSPC errors', async t => {
167
169
clearModule ( '../fs' ) ;
168
170
const uncached = importFresh ( '..' ) ;
169
171
const error = await t . throwsAsync ( uncached ( 'license' , t . context . destination ) ) ;
170
- t . is ( error . name , 'CpFileError' , error ) ;
171
- t . is ( error . errno , noSpaceError . errno , error ) ;
172
- t . is ( error . code , noSpaceError . code , error ) ;
173
- t . true ( called ) ;
172
+ t . is ( error . name , 'CpFileError' , error . message ) ;
173
+ t . is ( error . errno , noSpaceError . errno , error . message ) ;
174
+ t . is ( error . code , noSpaceError . code , error . message ) ;
175
+ t . true ( isCalled ) ;
174
176
175
177
fs . createWriteStream = createWriteStream ;
176
178
} ) ;
@@ -184,9 +186,9 @@ test.serial('rethrow stat errors', async t => {
184
186
clearModule ( '../fs' ) ;
185
187
const uncached = importFresh ( '..' ) ;
186
188
const error = await t . throwsAsync ( uncached ( t . context . source , t . context . destination ) ) ;
187
- t . is ( error . name , 'CpFileError' , error ) ;
188
- t . is ( error . errno , fstatError . errno , error ) ;
189
- t . is ( error . code , fstatError . code , error ) ;
189
+ t . is ( error . name , 'CpFileError' , error . message ) ;
190
+ t . is ( error . errno , fstatError . errno , error . message ) ;
191
+ t . is ( error . code , fstatError . code , error . message ) ;
190
192
t . true ( fs . lstat . called ) ;
191
193
192
194
fs . lstat . restore ( ) ;
@@ -200,8 +202,8 @@ test.serial('rethrow utimes errors', async t => {
200
202
clearModule ( '../fs' ) ;
201
203
const uncached = importFresh ( '..' ) ;
202
204
const error = await t . throwsAsync ( uncached ( 'license' , t . context . destination ) ) ;
203
- t . is ( error . name , 'CpFileError' , error ) ;
204
- t . is ( error . code , 'ENOENT' , error ) ;
205
+ t . is ( error . name , 'CpFileError' , error . message ) ;
206
+ t . is ( error . code , 'ENOENT' , error . message ) ;
205
207
t . true ( fs . utimes . called ) ;
206
208
207
209
fs . utimes . restore ( ) ;
@@ -215,9 +217,9 @@ test.serial('rethrow chmod errors', async t => {
215
217
clearModule ( '../fs' ) ;
216
218
const uncached = importFresh ( '..' ) ;
217
219
const error = await t . throwsAsync ( uncached ( 'license' , t . context . destination ) ) ;
218
- t . is ( error . name , 'CpFileError' , error ) ;
219
- t . is ( error . code , chmodError . code , error ) ;
220
- t . is ( error . path , chmodError . path , error ) ;
220
+ t . is ( error . name , 'CpFileError' , error . message ) ;
221
+ t . is ( error . code , chmodError . code , error . message ) ;
222
+ t . is ( error . path , chmodError . path , error . message ) ;
221
223
t . true ( fs . chmod . called ) ;
222
224
223
225
fs . chmod . restore ( ) ;
@@ -231,9 +233,9 @@ test.serial('rethrow chown errors', async t => {
231
233
clearModule ( '../fs' ) ;
232
234
const uncached = importFresh ( '..' ) ;
233
235
const error = await t . throwsAsync ( uncached ( 'license' , t . context . destination ) ) ;
234
- t . is ( error . name , 'CpFileError' , error ) ;
235
- t . is ( error . code , chownError . code , error ) ;
236
- t . is ( error . path , chownError . path , error ) ;
236
+ t . is ( error . name , 'CpFileError' , error . message ) ;
237
+ t . is ( error . code , chownError . code , error . message ) ;
238
+ t . is ( error . path , chownError . path , error . message ) ;
237
239
t . true ( fs . chown . called ) ;
238
240
239
241
fs . chown . restore ( ) ;
@@ -272,9 +274,9 @@ test.serial('rethrow read after open errors', async t => {
272
274
clearModule ( '../fs' ) ;
273
275
const uncached = importFresh ( '..' ) ;
274
276
const error = await t . throwsAsync ( uncached ( 'license' , t . context . destination ) ) ;
275
- t . is ( error . name , 'CpFileError' , error ) ;
276
- t . is ( error . errno , readError . errno , error ) ;
277
- t . is ( error . code , readError . code , error ) ;
277
+ t . is ( error . name , 'CpFileError' , error . message ) ;
278
+ t . is ( error . errno , readError . errno , error . message ) ;
279
+ t . is ( error . code , readError . code , error . message ) ;
278
280
t . is ( calledWriteEnd , 1 ) ;
279
281
280
282
Object . assign ( fs , { createWriteStream, createReadStream} ) ;
0 commit comments