Proposed approach - add these variables: `test_threads_max` default value of number of cores `test_threads_n` default value 1 `tests_threads_files_copied` default value list of supplied files tests would be run in `min(test_threads_max, test_threads_n)` threads if `tests_threads_files_copied` is non-empty run each test in a new directory, after copying the specified files to the directory.