Index: src/tests/pybin/tools.py
===================================================================
--- src/tests/pybin/tools.py	(revision ca54499c30d3851f774da304ea39374bc91c002d)
+++ src/tests/pybin/tools.py	(revision d142ec5da42a1be20c906da7cdcd7113b90c8208)
@@ -168,12 +168,16 @@
 def jobCount( options, tests ):
 	# check if the user already passed in a number of jobs for multi-threading
-	make_flags = os.environ.get('MAKEFLAGS')
-	make_jobs_fds = re.search("--jobserver-(auth|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(2)), 1024)
-		options.jobs = len(tokens)
-		os.write(int(make_jobs_fds.group(3)), tokens)
+	if not options.jobs:
+		make_flags = os.environ.get('MAKEFLAGS')
+		force = bool(make_flags)
+		make_jobs_fds = re.search("--jobserver-(auth|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(2)), 1024)
+			options.jobs = len(tokens)
+			os.write(int(make_jobs_fds.group(3)), tokens)
+		else :
+			options.jobs = multiprocessing.cpu_count()
 	else :
-		options.jobs = multiprocessing.cpu_count()
+		force = True
 
 	# make sure we have a valid number of jobs that corresponds to user input
@@ -182,5 +186,5 @@
 		sys.exit(1)
 
-	return min( options.jobs, len(tests) ), True if make_flags else False
+	return min( options.jobs, len(tests) ), force
 
 # setup a proper processor pool with correct signal handling
