11'use strict' ;
22
3- const fs = require ( 'node:fs' ) ;
4-
53const { test, stub} = require ( 'supertape' ) ;
6- const mockRequire = require ( 'mock-require' ) ;
74
85const { tryToCatch} = require ( 'try-to-catch' ) ;
9- const { reRequire, stopAll} = mockRequire ;
6+ const { readdir : _readdir } = require ( '../lib/readdir' ) ;
7+
108const noop = ( ) => { } ;
119
1210test ( 'readdir: empty dir' , async ( t ) => {
13- const { readdir} = fs . promises ;
14-
15- fs . promises . readdir = async ( ) => [ ] ;
11+ const readdir = stub ( ) . resolves ( [ ] ) ;
1612
17- const _readdir = reRequire ( '../lib/readdir' ) ;
18- const [ , result ] = await tryToCatch ( _readdir , '.' ) ;
19-
20- fs . promises . readdir = readdir ;
13+ const [ , result ] = await tryToCatch ( _readdir , '.' , {
14+ readdir,
15+ } ) ;
2116
2217 t . deepEqual ( result , [ ] , 'should return empty array' ) ;
2318 t . end ( ) ;
2419} ) ;
2520
2621test ( 'readdir: empty stat' , async ( t ) => {
27- const { readdir} = fs . promises ;
22+ const superstat = stub ( ) . rejects ( Error ( 'some' ) ) ;
23+ const readdir = stub ( ) . resolves ( [ 'hello' ] ) ;
2824
29- mockRequire ( 'superstat' , async ( ) => {
30- throw Error ( 'some' ) ;
25+ const [ , result ] = await tryToCatch ( _readdir , '/' , {
26+ readdir,
27+ superstat,
3128 } ) ;
3229
33- fs . promises . readdir = async ( ) => [
34- 'hello' ,
35- ] ;
36-
37- const _readdir = reRequire ( '../lib/readdir' ) ;
38-
39- const [ , result ] = await tryToCatch ( _readdir , '/' ) ;
40-
41- fs . promises . readdir = readdir ;
42-
4330 const expected = [ {
4431 name : 'hello' ,
4532 size : 0 ,
@@ -49,34 +36,30 @@ test('readdir: empty stat', async (t) => {
4936 type : 'file' ,
5037 } ] ;
5138
52- stopAll ( ) ;
53-
5439 t . deepEqual ( result , expected , 'should return empty array' ) ;
5540 t . end ( ) ;
5641} ) ;
5742
5843test ( 'readdir: result' , async ( t ) => {
59- const { readdir} = fs . promises ;
60-
6144 const name = 'hello.txt' ;
6245 const mode = 16_893 ;
6346 const size = 1024 ;
6447 const mtime = new Date ( ) ;
6548 const uid = 1000 ;
6649
67- fs . promises . readdir = async ( ) => [
50+ const readdir = stub ( ) . resolves ( [
6851 name ,
69- ] ;
52+ ] ) ;
7053
71- mockRequire ( ' superstat' , async ( ) => ( {
54+ const superstat = stub ( ) . resolves ( {
7255 isDirectory : noop ,
7356 isSymbolicLink : noop ,
7457 name,
7558 mode,
7659 size,
7760 mtime,
7861 uid,
79- } ) ) ;
62+ } ) ;
8063
8164 const expected = [ {
8265 name,
@@ -87,61 +70,55 @@ test('readdir: result', async (t) => {
8770 type : 'file' ,
8871 } ] ;
8972
90- const _readdir = reRequire ( '../lib/readdir' ) ;
91- const [ , result ] = await tryToCatch ( _readdir , '.' ) ;
92-
93- fs . promises . readdir = readdir ;
94- stopAll ( ) ;
73+ const [ , result ] = await tryToCatch ( _readdir , '.' , {
74+ readdir,
75+ superstat,
76+ } ) ;
9577
9678 t . deepEqual ( result , expected , 'should get raw values' ) ;
9779 t . end ( ) ;
9880} ) ;
9981
10082test ( 'readdir: result: no error' , async ( t ) => {
101- const { readdir} = fs . promises ;
102-
10383 const name = 'hello.txt' ;
10484 const mode = 16_893 ;
10585 const size = 1024 ;
10686 const mtime = new Date ( ) ;
10787 const uid = 1000 ;
10888
109- fs . promises . readdir = ( ) => [
89+ const readdir = stub ( ) . resolves ( [
11090 name ,
111- ] ;
91+ ] ) ;
11292
113- mockRequire ( ' superstat' , async ( ) => ( {
93+ const superstat = stub ( ) . resolves ( {
11494 isDirectory : noop ,
11595 isSymbolicLink : noop ,
11696 name,
11797 mode,
11898 size,
11999 mtime,
120100 uid,
121- } ) ) ;
122-
123- const _readdir = reRequire ( '../lib/readdir' ) ;
124- const [ e ] = await tryToCatch ( _readdir , '.' ) ;
101+ } ) ;
125102
126- stopAll ( ) ;
127- fs . promises . readdir = readdir ;
103+ const [ e ] = await tryToCatch ( _readdir , '.' , {
104+ readdir,
105+ superstat,
106+ } ) ;
128107
129108 t . notOk ( e , e ?. message || 'should not receive error' ) ;
130109 t . end ( ) ;
131110} ) ;
132111
133112test ( 'readdir: result: directory link' , async ( t ) => {
134- const { readdir} = fs . promises ;
135-
136113 const name = 'hello' ;
137114 const mode = 16_893 ;
138115 const size = 1024 ;
139116 const mtime = new Date ( ) ;
140117 const uid = 1000 ;
141118
142- fs . promises . readdir = ( ) => [
119+ const readdir = stub ( ) . resolves ( [
143120 name ,
144- ] ;
121+ ] ) ;
145122
146123 const info = {
147124 isDirectory : stub ( ) . returns ( true ) ,
@@ -155,7 +132,7 @@ test('readdir: result: directory link', async (t) => {
155132 dev : 1337 ,
156133 } ;
157134
158- mockRequire ( ' superstat' , async ( ) => info ) ;
135+ const superstat = stub ( ) . resolves ( info ) ;
159136
160137 const expected = [ {
161138 name,
@@ -166,11 +143,10 @@ test('readdir: result: directory link', async (t) => {
166143 type : 'directory-link' ,
167144 } ] ;
168145
169- const _readdir = reRequire ( '../lib/readdir' ) ;
170- const [ , result ] = await tryToCatch ( _readdir , '.' ) ;
171-
172- fs . promises . readdir = readdir ;
173- stopAll ( ) ;
146+ const [ , result ] = await tryToCatch ( _readdir , '.' , {
147+ readdir,
148+ superstat,
149+ } ) ;
174150
175151 t . deepEqual ( result , expected , 'should get raw values' ) ;
176152 t . end ( ) ;
@@ -183,9 +159,9 @@ test('readdir: result: zip link', async (t) => {
183159 const mtime = new Date ( ) ;
184160 const uid = 1000 ;
185161
186- const readdir = ( ) => [
162+ const readdir = stub ( ) . resolves ( [
187163 name ,
188- ] ;
164+ ] ) ;
189165
190166 const info = {
191167 isDirectory : stub ( ) . returns ( false ) ,
@@ -199,10 +175,7 @@ test('readdir: result: zip link', async (t) => {
199175 dev : 1337 ,
200176 } ;
201177
202- mockRequire ( 'node:fs/promises' , {
203- readdir,
204- } ) ;
205- mockRequire ( 'superstat' , async ( ) => info ) ;
178+ const superstat = stub ( ) . resolves ( info ) ;
206179
207180 const expected = [ {
208181 name,
@@ -213,43 +186,40 @@ test('readdir: result: zip link', async (t) => {
213186 type : 'archive-link' ,
214187 } ] ;
215188
216- const _readdir = reRequire ( '../lib/readdir' ) ;
217- const [ , result ] = await tryToCatch ( _readdir , '.' ) ;
218-
219- stopAll ( ) ;
189+ const [ , result ] = await tryToCatch ( _readdir , '.' , {
190+ readdir ,
191+ superstat ,
192+ } ) ;
220193
221194 t . deepEqual ( result , expected , 'should get raw values' ) ;
222195 t . end ( ) ;
223196} ) ;
224197
225198test ( 'readdir: result: directory link: no error' , async ( t ) => {
226- const { readdir} = fs . promises ;
227-
228199 const name = 'hello' ;
229200 const mode = 16_893 ;
230201 const size = 1024 ;
231202 const mtime = new Date ( ) ;
232203 const uid = 1000 ;
233204
234- fs . promises . readdir = ( ) => [
205+ const readdir = stub ( ) . resolves ( [
235206 name ,
236- ] ;
207+ ] ) ;
237208
238- mockRequire ( ' superstat' , async ( ) => ( {
239- isDirectory : stub . returns ( true ) ,
240- isSymbolicLink : stub . returns ( true ) ,
209+ const superstat = stub ( ) . resolves ( {
210+ isDirectory : stub ( ) . returns ( true ) ,
211+ isSymbolicLink : stub ( ) . returns ( true ) ,
241212 name,
242213 mode,
243214 size,
244215 mtime,
245216 uid,
246- } ) ) ;
247-
248- const _readdir = reRequire ( '../lib/readdir' ) ;
249- const [ e ] = await tryToCatch ( _readdir , '.' ) ;
217+ } ) ;
250218
251- stopAll ( ) ;
252- fs . promises . readdir = readdir ;
219+ const [ e ] = await tryToCatch ( _readdir , '.' , {
220+ readdir,
221+ superstat,
222+ } ) ;
253223
254224 t . notOk ( e , e ?. message || 'should not receive error' ) ;
255225 t . end ( ) ;
0 commit comments