diff --git a/testsuite/expect/README b/testsuite/expect/README
index 5f6eab797086295776ccbfeb89d9365ee997a7f3..8b31df54961250b75883e703e261be074e7177c9 100644
--- a/testsuite/expect/README
+++ b/testsuite/expect/README
@@ -485,4 +485,4 @@ test18.35  Test of task layout controls (--task-layout-byid,
            --task-layout-byname and --task-layout-file options).
 test18.36  Test of CPU affinity support (--cpu-bind option).
 test18.37  Test of memory affinity support for NUMA systems (--mem-bind option).
-
+test18.38  Test of slaunch --jobid
diff --git a/testsuite/expect/test1.58 b/testsuite/expect/test1.58
index f292a7c4f0f287c1037d27475b50b6bc6d9e5aa6..9864dbc63dda7c4c99905317bc2701798c9a6c34 100755
--- a/testsuite/expect/test1.58
+++ b/testsuite/expect/test1.58
@@ -49,7 +49,7 @@ expect {
     }
     timeout {
 	send_user "\nFAILURE: srun failed to grab an allocation in a timely manner.\n"
-	kill $srun_alloc_pid
+	exec kill $srun_alloc_pid
 	exit 1
     }
 }
@@ -71,9 +71,9 @@ expect {
 	exp_continue
     }
     timeout {
-	kill $srun_launch_pid
-	kill $srun_launch_pid
-	kill -9 $srun_launch_pid
+	exec kill $srun_launch_pid
+	exec kill $srun_launch_pid
+	exec kill -9 $srun_launch_pid
     }
     eof {
 	wait
@@ -88,15 +88,19 @@ if {$got_pattern == 0} {
 #
 # Release the allocation by killing the first srun (really it kills the "sleep")
 #
-kill $srun_alloc_pid
+exec $scancel $jobid
 set spawn_id $srun_alloc_sid
+exec kill -9 $srun_alloc_pid
 expect {
     timeout {
-	kill -9 $srun_alloc_pid
+	exec kill -9 $srun_alloc_pid
     }
     eof {
 	wait
     }
 }
 
+if {$got_pattern == 1} {
+    send_user "\nSUCCESS\n"
+}
 exit $exit_code
diff --git a/testsuite/expect/test18.38 b/testsuite/expect/test18.38
new file mode 100755
index 0000000000000000000000000000000000000000..fd9a28578950bd98702fa4e87223038494a4f507
--- /dev/null
+++ b/testsuite/expect/test18.38
@@ -0,0 +1,108 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Test of slaunch --jobid option
+#
+# Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
+#          "FAILURE: ..." otherwise with an explanation of the failure, OR
+#          anything else indicates a failure mode that must be investigated.
+############################################################################
+# Copyright (C) 2002-2006 The Regents of the University of California.
+# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+# Written by Christopher J. Morrone <morrone2@llnl.gov>
+# UCRL-CODE-217948.
+# 
+# This file is part of SLURM, a resource management program.
+# For details, see <http://www.llnl.gov/linux/slurm/>.
+#  
+# SLURM is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+# 
+# SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+# details.
+# 
+# You should have received a copy of the GNU General Public License along
+# with SLURM; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
+############################################################################
+source ./globals
+
+set test_id              "18.38"
+set exit_code            0
+
+print_header $test_id
+set timeout $max_job_delay
+
+#
+# Run an salloc to grab a single node allocation.
+#
+set salloc_pid [spawn $salloc -N1 $slaunch $bin_sleep 600]
+set salloc_sid $spawn_id
+expect {
+    -re "Granted job allocation ($number)" {
+	set jobid $expect_out(1,string)
+    }
+    timeout {
+	send_user "\nFAILURE: salloc failed to grab an allocation in a timely manner.\n"
+	exec kill $salloc_pid
+	exit 1
+    }
+}
+
+#
+# Now try to use the slaunch --jobid option to run in the already existing
+# allocation.
+#
+set pattern "xcoetn46398vnk"
+set got_pattern 0
+set slaunch_pid [spawn $slaunch --jobid $jobid echo $pattern]
+expect {
+    -re "error" {
+	send_user "\nFAILURE: unexpected error occurred\n"
+	set exit_code 1
+    }
+    -re $pattern {
+	set got_pattern 1
+	exp_continue
+    }
+    timeout {
+	exec kill $slaunch_pid
+	exec kill -9 $slaunch_pid
+    }
+    eof {
+	wait
+    }
+}
+
+if {$got_pattern == 0} {
+    send_user "\nFAILURE: unable to srun step under existing job allocation\n"
+    set exit_code 1
+}
+
+#
+# Release the allocation by killing the first srun (really it kills the "sleep")
+#
+exec $scancel $jobid
+exec kill $salloc_pid
+set spawn_id $salloc_sid
+expect {
+    -re "error.*already completed" {
+	send_user "The \"already completed\" error is normal.\n"
+	exp_continue
+    }
+    timeout {
+	exec kill -9 $salloc_pid
+    }
+    eof {
+	wait
+    }
+}
+
+if {$got_pattern == 1} {
+    send_user "\nSUCCESS\n"
+}
+exit $exit_code
diff --git a/testsuite/expect/test7.4.sh b/testsuite/expect/test7.4.sh
index 52f90d409dcebdd8794d4b2b296f9dfc41bae834..3591aa6e194f5d29499c1fe37b57071fd28504f1 100755
--- a/testsuite/expect/test7.4.sh
+++ b/testsuite/expect/test7.4.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+s#!/bin/sh
 # Usage: <squeue path> <hostlist file>
 # Returns SLURM job id allocated  to that node for that user
 # Note: The hostlist file contains full pathnames that need to