Index: src/tests/test.py
===================================================================
--- src/tests/test.py	(revision 7d05e7e1d81b9041e298ff69ebfbf7fdff9b0733)
+++ src/tests/test.py	(revision 03e3117a7e3b45a2630c45573da8be2726432de3)
@@ -285,10 +285,11 @@
 # check if the user already passed in a number of jobs for multi-threading
 make_flags = environ.get('MAKEFLAGS')
-make_has_max_jobs = re.search("(-j|--jobs)\s*([0-9]+)", make_flags) if make_flags else None
-make_max_jobs = make_has_max_jobs.group(2) if make_has_max_jobs else None
-make_cmd = "make" if make_flags and "-j" in make_flags else "make -j8"
+make_jobs_fds = re.search("--jobserver-fds=\s*([0-9]+),([0-9]+)", make_flags) if make_flags else None
+if make_jobs_fds :
+	tokens = os.read(int(make_jobs_fds.group(1)), 1024)
+	options.jobs = len(tokens)
+	os.write(int(make_jobs_fds.group(2)), tokens)
 
 # make sure we have a valid number of jobs that corresponds to user input
-options.jobs = int(make_max_jobs) if make_max_jobs else (options.jobs if options.jobs else 1)
 if options.jobs <= 0 :
 	print('ERROR: Invalid number of jobs', file=sys.stderr)
@@ -296,4 +297,5 @@
 
 print('Running on %i cores' % options.jobs)
+make_cmd = "make" if make_flags else ("make -j%i" % options.jobs)
 
 # users may want to simply list the tests
