Skip to content

Commit 58739ea

Browse files
purplecabbageAmulya Kashyap
andauthored
audit all files uploaded (recursive), tweak info output (#828)
Co-authored-by: Amulya Kashyap <amulyak@adobe.com>
1 parent 88c2bc7 commit 58739ea

2 files changed

Lines changed: 31 additions & 15 deletions

File tree

src/lib/audit-logger.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,14 @@ function getFilesCountWithExtension (directory) {
101101
return log
102102
}
103103

104-
const files = fs.readdirSync(directory)
104+
const files = fs.readdirSync(directory, { recursive: true })
105105

106106
if (files.length === 0) {
107107
this.log(chalk.red(chalk.bold(`Error: No files found in directory ${directory}.`)))
108108
return log
109109
}
110110

111111
const fileTypeCounts = {}
112-
113112
files.forEach(file => {
114113
const ext = path.extname(file).toLowerCase() || 'no extension'
115114
if (fileTypeCounts[ext]) {
@@ -122,17 +121,32 @@ function getFilesCountWithExtension (directory) {
122121
Object.keys(fileTypeCounts).forEach(ext => {
123122
const count = fileTypeCounts[ext]
124123
let description
125-
126-
if (ext === '.js') description = 'Javascript file(s)'
127-
else if (ext === '.css') description = 'CSS file(s)'
128-
else if (ext === '.html') description = 'HTML page(s)'
129-
else if (['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp'].includes(ext)) description = 'image(s)'
130-
else if (ext === 'no extension') description = 'file(s) without extension'
131-
else description = `${ext} file(s)`
132-
124+
switch (ext) {
125+
case '.js':
126+
description = 'Javascript file(s)'
127+
break
128+
case '.css':
129+
description = 'CSS file(s)'
130+
break
131+
case '.html':
132+
description = 'HTML page(s)'
133+
break
134+
case '.png':
135+
case '.jpg':
136+
case '.jpeg':
137+
case '.gif':
138+
case '.svg':
139+
case '.webp':
140+
description = `${ext} image(s)`
141+
break
142+
case 'no extension':
143+
description = 'file(s) without extension'
144+
break
145+
default:
146+
description = `${ext} file(s)`
147+
}
133148
log.push(`${count} ${description}\n`)
134149
})
135-
136150
return log
137151
}
138152

test/commands/lib/audit-logger.test.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ describe('getFilesCountWithExtension', () => {
259259

260260
const result = auditLogger.getFilesCountWithExtension.call({ log: mockLog }, directory)
261261

262-
expect(fs.readdirSync).toHaveBeenCalledWith(directory)
262+
expect(fs.readdirSync).toHaveBeenCalledWith(directory, { recursive: true })
263263
expect(mockLog).toHaveBeenCalledWith(
264264
'Error: No files found in directory __fixtures__/app/web-src.'
265265
)
@@ -268,15 +268,17 @@ describe('getFilesCountWithExtension', () => {
268268

269269
it('should return a count of different file types', () => {
270270
fs.existsSync.mockReturnValue(true)
271-
fs.readdirSync.mockReturnValue(['index.html', 'script.js', 'styles.css', 'image.png', 'readme'])
271+
fs.readdirSync.mockReturnValue(['index.html', 'script.js', 'styles.css', 'image.png', 'image.jpg', 'readme'])
272272

273273
const result = auditLogger.getFilesCountWithExtension.call({ log: mockLog }, directory)
274-
274+
// this really should be 2 image(s) but there is a side effect in the code that makes it split by ext
275+
// and this makes more sense than seeing 1 image(s), 1 image(s)
275276
expect(result).toEqual([
276277
'1 HTML page(s)\n',
277278
'1 Javascript file(s)\n',
278279
'1 CSS file(s)\n',
279-
'1 image(s)\n',
280+
'1 .png image(s)\n',
281+
'1 .jpg image(s)\n',
280282
'1 file(s) without extension\n'
281283
])
282284
})

0 commit comments

Comments
 (0)