6
6
* found in the LICENSE file at https://angular.io/license
7
7
*/
8
8
9
- import { exists , unlink , unwatchFile , watch , watchFile , writeFile } from 'fs' ;
9
+ import { exists , read , unlink , unwatchFile , watch , write , watchFile , writeFile , openSync , fstatSync , closeSync , unlinkSync } from 'fs' ;
10
+ import * as util from 'util' ;
10
11
11
12
describe ( 'nodejs file system' , ( ) => {
12
13
describe ( 'async method patch test' , ( ) => {
@@ -88,4 +89,60 @@ describe('nodejs file system', () => {
88
89
} ) ;
89
90
} ) ;
90
91
} ) ;
92
+ } ) ;
93
+
94
+ describe ( 'util.promisify' , ( ) => {
95
+ it ( 'fs.exists should work with util.promisify' , ( done : DoneFn ) => {
96
+ const promisifyExists = util . promisify ( exists ) ;
97
+ promisifyExists ( __filename ) . then ( r => {
98
+ expect ( r ) . toBe ( true ) ;
99
+ done ( ) ;
100
+ } , err => {
101
+ fail ( `should not be here with error: ${ err } ` ) ;
102
+ } ) ;
103
+ } ) ;
104
+
105
+ it ( 'fs.read should work with util.promisify' , ( done : DoneFn ) => {
106
+ const promisifyRead = util . promisify ( read ) ;
107
+ const fd = openSync ( __filename , 'r' ) ;
108
+ const stats = fstatSync ( fd ) ;
109
+ const bufferSize = stats . size ;
110
+ const chunkSize = 512 ;
111
+ const buffer = new Buffer ( bufferSize ) ;
112
+ let bytesRead = 0 ;
113
+ // fd, buffer, offset, length, position, callback
114
+ promisifyRead ( fd , buffer , bytesRead , chunkSize , bytesRead ) . then (
115
+ ( value ) => {
116
+ expect ( value . bytesRead ) . toBe ( chunkSize ) ;
117
+ closeSync ( fd ) ;
118
+ done ( ) ;
119
+ } , err => {
120
+ closeSync ( fd ) ;
121
+ fail ( `should not be here with error: ${ error } .` ) ;
122
+ } ) ;
123
+ } ) ;
124
+
125
+ it ( 'fs.write should work with util.promisify' , ( done : DoneFn ) => {
126
+ const promisifyWrite = util . promisify ( write ) ;
127
+ const dest = __filename + 'write' ;
128
+ const fd = openSync ( dest , 'a' ) ;
129
+ const stats = fstatSync ( fd ) ;
130
+ const chunkSize = 512 ;
131
+ const buffer = new Buffer ( chunkSize ) ;
132
+ for ( let i = 0 ; i < chunkSize ; i ++ ) {
133
+ buffer [ i ] = 0 ;
134
+ }
135
+ // fd, buffer, offset, length, position, callback
136
+ promisifyWrite ( fd , buffer , 0 , chunkSize , 0 ) . then (
137
+ ( value ) => {
138
+ expect ( value . bytesWritten ) . toBe ( chunkSize ) ;
139
+ closeSync ( fd ) ;
140
+ unlinkSync ( dest ) ;
141
+ done ( ) ;
142
+ } , err => {
143
+ closeSync ( fd ) ;
144
+ unlinkSync ( dest ) ;
145
+ fail ( `should not be here with error: ${ error } .` ) ;
146
+ } ) ;
147
+ } ) ;
91
148
} ) ;
0 commit comments