66 * found in the LICENSE file at https://angular.io/license
77 */
88
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' ;
1011
1112describe ( 'nodejs file system' , ( ) => {
1213 describe ( 'async method patch test' , ( ) => {
@@ -88,4 +89,60 @@ describe('nodejs file system', () => {
8889 } ) ;
8990 } ) ;
9091 } ) ;
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+ } ) ;
91148} ) ;
0 commit comments