Compare commits

...
2 changed files with 13 additions and 9 deletions
+1 -1
View File
@@ -484,7 +484,7 @@ describe('action', () => {
expect(setFailedMock).toHaveBeenCalledWith( expect(setFailedMock).toHaveBeenCalledWith(
new Error( new Error(
'Too many subjects specified (1025). The maximum number of subjects is 1024.' 'Too many subjects specified (>1024). The maximum number of subjects is 1024.'
) )
) )
}) })
+12 -8
View File
@@ -94,14 +94,18 @@ const getSubjectFromPath = async (
// Expand the globbed paths to a list of actual paths // Expand the globbed paths to a list of actual paths
const paths = await glob.create(subjectPaths).then(async g => g.glob()) const paths = await glob.create(subjectPaths).then(async g => g.glob())
// Filter path list to just the files (not directories) // Filter path list to just the files (not directories), enforcing the maximum
const stats = await Promise.all(paths.map(async p => fs.stat(p))) const files: string[] = []
const files = paths.filter((_, i) => stats[i].isFile()) for (const p of paths) {
const stat = await fs.stat(p)
if (files.length > MAX_SUBJECT_COUNT) { if (stat.isFile()) {
throw new Error( if (files.length >= MAX_SUBJECT_COUNT) {
`Too many subjects specified (${files.length}). The maximum number of subjects is ${MAX_SUBJECT_COUNT}.` throw new Error(
) `Too many subjects specified (>${MAX_SUBJECT_COUNT}). The maximum number of subjects is ${MAX_SUBJECT_COUNT}.`
)
}
files.push(p)
}
} }
for (const file of files) { for (const file of files) {