diff --git a/testsuite/expect/globals b/testsuite/expect/globals
index c079ca37475a61c9dbff1763545af598bfa883c5..4a6db27f6c9aa4360dd089875f3f33acfb57384c 100755
--- a/testsuite/expect/globals
+++ b/testsuite/expect/globals
@@ -305,83 +305,74 @@ proc wait_for_file { file_name } {
 #
 # Input: job_id   -- The SLURM job id of a job we want to
 #                    wait for.
-#        state    -- The state you want the job to attain before
-#                    returning.  Currently supports:
-#                        DONE any terminated state
-#                        RUNNING job is running
+#        desired_state -- The state you want the job to attain before
+#                         returning.  Currently supports:
+#                            DONE any terminated state
+#                            RUNNING job is running
 #
 # NOTE: We sleep for two seconds before replying that a job is 
 # done to give time for I/O completion (stdout/stderr files)
 #
 ################################################################
 
-proc wait_for_job { job_id state } {
-	global max_job_delay
-	global scontrol
-	set is_done     0
-	set is_running  0
-	set sleep_time  1
+proc wait_for_job { job_id desired_state } {
+    global scontrol
 
-	log_user 0
-	while { 1 == 1 } {
-		spawn -noecho $scontrol -o show job $job_id
-		expect {
-			-re "Job \[0-9]* not found" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=CANCELLED" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=COMPLETE" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=FAILED" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=TIMEOUT" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=NODE_FAIL" {
-				set is_done 1 
-				exp_continue
-			}
-			-re "JobState=RUNNING" {
-				set is_running 1 
-				exp_continue
-			}
-			timeout {
-				send_user "\nFAILURE: scontrol not responding\n"
-				log_user 1
-				return 1
-			}
-			eof {
-				wait
-			}
-		}
-		log_user 1
-	
-		if {[string compare $state "DONE"] == 0    && $is_done == 1 } {
-			sleep  2
-			return 0
-		}
-		if {[string compare $state "RUNNING"] == 0 && $is_running == 1 } {
-			return 0
+    # First verify that desired_state is supported
+    switch $desired_state {
+	"DONE" {}
+	"RUNNING" {}
+	default {
+	    send_user "Unsupported desired state: $desired_state\n"
+	    return 1
+	}
+    }
+
+    set sleep_time  1
+    while 1 {
+	set fd [open "|$scontrol -o show job $job_id"]
+	gets $fd line
+	close $fd
+	if {[regexp {JobState\s*=\s*(\w+)} $line foo state] != 1} {
+	    set state "NOT_FOUND"
+	}
+
+	switch $state {
+	    "NOT_FOUND" -
+	    "CANCELLED" -
+	    "FAILED" -
+	    "TIMEOUT" -
+	    "NODE_FAIL" -
+	    "COMPLETED" {
+		if {[string compare $desired_state "DONE"] == 0} {
+		    send_user "Job $job_id is DONE\n"
+		    sleep 2
+		    return 0
+		} else {
+		    if {[string compare $desired_state "RUNNING"] == 0} {
+			send_user "Job $job_id is $state, but we wanted RUNNING\n"
+		    }
+		    return 1
 		}
-		if {                                          $is_done == 1 } {
-			return 1
+	    }
+	    "RUNNING" {
+		if {[string compare $desired_state "RUNNING"] == 0} {
+		    send_user "Job $job_id is RUNNING\n"
+		    return 0
 		}
+		send_user "Job $job_id is in state $state, desire $desired_state\n"
+	    }
+	    default {
+		send_user "Job $job_id is in state $state, desire $desired_state\n"
+	    }
+	}
 
-		sleep $sleep_time
-		set sleep_time  [expr $sleep_time * 2]
-		if { $sleep_time > 10 } {
-			set sleep_time 10
-		}
+	sleep $sleep_time
+	set sleep_time  [expr $sleep_time * 2]
+	if { $sleep_time > 10 } {
+	    set sleep_time 10
 	}
+    }
 }
 
 ################################################################