@@ -36,7 +36,6 @@ import { getExercises } from "./exercises.js"
3636type TaskResult = { success : boolean ; retry : boolean }
3737type TaskPromise = Promise < TaskResult >
3838
39- const MAX_CONCURRENCY = 5
4039const TASK_TIMEOUT = 10 * 60 * 1_000
4140const UNIT_TEST_TIMEOUT = 60 * 1_000
4241
@@ -78,12 +77,14 @@ const run = async (toolbox: GluegunToolbox) => {
7877 const exercises = getExercises ( ) [ language as ExerciseLanguage ]
7978
8079 await pMap ( exercises , ( exercise ) => createTask ( { runId : run . id , language, exercise } ) , {
81- concurrency : 10 ,
80+ concurrency : run . concurrency ,
8281 } )
8382 }
8483 } else if ( exercise === "all" ) {
8584 const exercises = getExercises ( ) [ language as ExerciseLanguage ]
86- await pMap ( exercises , ( exercise ) => createTask ( { runId : run . id , language, exercise } ) , { concurrency : 10 } )
85+ await pMap ( exercises , ( exercise ) => createTask ( { runId : run . id , language, exercise } ) , {
86+ concurrency : run . concurrency ,
87+ } )
8788 } else {
8889 language = language || ( await askLanguage ( prompt ) )
8990 exercise = exercise || ( await askExercise ( prompt , language ) )
@@ -145,13 +146,14 @@ const run = async (toolbox: GluegunToolbox) => {
145146 }
146147
147148 let delay = 0
149+
148150 for ( const task of tasks ) {
149151 const promise = processTask ( task , delay )
150152 delay = delay + 5_000
151153 runningPromises . push ( promise )
152154 promise . then ( ( ) => processTaskResult ( task , promise ) )
153155
154- if ( runningPromises . length >= MAX_CONCURRENCY ) {
156+ if ( runningPromises . length >= run . concurrency ) {
155157 delay = 0
156158 await Promise . race ( runningPromises )
157159 }
@@ -179,7 +181,7 @@ const runExercise = async ({ run, task, server }: { run: Run; task: Task; server
179181 // subprocess.stdout.pipe(process.stdout)
180182
181183 // Sleep for a random amount of time before opening a new VSCode window.
182- await new Promise ( ( resolve ) => setTimeout ( resolve , 1_000 + Math . random ( ) * MAX_CONCURRENCY * 1_000 ) )
184+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1_000 + Math . random ( ) * 5_000 ) )
183185 console . log ( `Opening new VS Code window at ${ workspacePath } ` )
184186
185187 await execa ( {
0 commit comments