Index: src/tests/test.py
===================================================================
--- src/tests/test.py	(revision 9f70ab57e9b76f554f66f776331f1a9a40295901)
+++ src/tests/test.py	(revision 850fda659f2028368a3d905df7c60ce89d8ac4cc)
@@ -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
