0	osh	fg twice should not result in fatal error (issue 1004)


	0	osh-cpp	fg twice should not result in fatal error (issue 1004)


	0	bash	fg twice should not result in fatal error (issue 1004)


	0	dash	fg twice should not result in fatal error (issue 1004)


	1	osh	Call fg twice after process exits (issue 721)


	1	osh-cpp	Call fg twice after process exits (issue 721)


	1	bash	Call fg twice after process exits (issue 721)


	1	dash	Call fg twice after process exits (issue 721)


	2	osh	sleep 10 then Ctrl-Z then wait should not hang (issue 1005)


	2	osh-cpp	sleep 10 then Ctrl-Z then wait should not hang (issue 1005)


	2	bash	sleep 10 then Ctrl-Z then wait should not hang (issue 1005)


	2	dash	sleep 10 then Ctrl-Z then wait should not hang (issue 1005)


	3	osh	sleep 10 then Ctrl-Z then wait -n should not hang


	3	osh-cpp	sleep 10 then Ctrl-Z then wait -n should not hang


	3	bash	sleep 10 then Ctrl-Z then wait -n should not hang


SKIP	3	dash	sleep 10 then Ctrl-Z then wait -n should not hang


	4	osh	ESRCH bug - pipeline with builtin


	4	osh-cpp	ESRCH bug - pipeline with builtin


	4	bash	ESRCH bug - pipeline with builtin


	4	dash	ESRCH bug - pipeline with builtin


	5	osh	Resuming a stopped process


	5	osh-cpp	Resuming a stopped process


	5	bash	Resuming a stopped process


	5	dash	Resuming a stopped process


N-I	6	osh	Suspend and resume a pipeline (issue 1087)


N-I	6	osh-cpp	Suspend and resume a pipeline (issue 1087)


	6	bash	Suspend and resume a pipeline (issue 1087)


	6	dash	Suspend and resume a pipeline (issue 1087)


	7	osh	Suspend and resume a process several times


	7	osh-cpp	Suspend and resume a process several times


	7	bash	Suspend and resume a process several times


	7	dash	Suspend and resume a process several times


	8	osh	Ctrl-Z and then look at $?


	8	osh-cpp	Ctrl-Z and then look at $?


	8	bash	Ctrl-Z and then look at $?


	8	dash	Ctrl-Z and then look at $?


	9	osh	A background job getting stopped (e.g. by SIGTTIN) or exiting should not disrupt foreground processes


	9	osh-cpp	A background job getting stopped (e.g. by SIGTTIN) or exiting should not disrupt foreground processes


	9	bash	A background job getting stopped (e.g. by SIGTTIN) or exiting should not disrupt foreground processes


	9	dash	A background job getting stopped (e.g. by SIGTTIN) or exiting should not disrupt foreground processes


	10	osh	Resume the special jobs: %- and %+

Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b0580>
command: bin/osh
args: [b'bin/osh', b'--rcfile', b'/dev/null']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3254
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	FAILED first time: Retrying 4 times
	Retry 1 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b09d0>
command: bin/osh
args: [b'bin/osh', b'--rcfile', b'/dev/null']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3263
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 2 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b10c0>
command: bin/osh
args: [b'bin/osh', b'--rcfile', b'/dev/null']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3272
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 3 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b1390>
command: bin/osh
args: [b'bin/osh', b'--rcfile', b'/dev/null']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3281
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 4 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b1840>
command: bin/osh
args: [b'bin/osh', b'--rcfile', b'/dev/null']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3290
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')

	10	osh-cpp	Resume the special jobs: %- and %+

Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b0ee0>
command: _bin/cxx-asan/osh
args: [b'_bin/cxx-asan/osh']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3299
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	FAILED first time: Retrying 4 times
	Retry 1 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b11b0>
command: _bin/cxx-asan/osh
args: [b'_bin/cxx-asan/osh']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3306
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 2 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b0df0>
command: _bin/cxx-asan/osh
args: [b'_bin/cxx-asan/osh']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3313
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 3 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b1a80>
command: _bin/cxx-asan/osh
args: [b'_bin/cxx-asan/osh']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3320
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')
	Retry 4 of 4
Traceback (most recent call last):
  File "/home/uke/oil/spec/stateful/harness.py", line 103, in RunOnce
    func(sh)
  File "/home/uke/oil/spec/stateful/job_control.py", line 369, in fg_current_previous
    sh.expect('bar')
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 343, in expect
    return self.expect_list(compiled_pattern_list,
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/spawnbase.py", line 372, in expect_list
    return exp.expect_loop(timeout)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 181, in expect_loop
    return self.timeout(e)
  File "/home/uke/wedge/oils-for-unix.org/pkg/py3-libs/2023-03-04/lib/python3.10/site-packages/pexpect/expect.py", line 144, in timeout
    raise exc
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f475f9b1d80>
command: _bin/cxx-asan/osh
args: [b'_bin/cxx-asan/osh']
buffer (last 100 chars): '\r\n'
before (last 100 chars): '\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 3327
child_fd: 7
closed: False
timeout: 1.0
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('bar')

	10	bash	Resume the special jobs: %- and %+


	10	dash	Resume the special jobs: %- and %+


	11	osh	Resume jobs with integral job specs using `fg` builtin


	11	osh-cpp	Resume jobs with integral job specs using `fg` builtin


	11	bash	Resume jobs with integral job specs using `fg` builtin


SKIP	11	dash	Resume jobs with integral job specs using `fg` builtin


	12	osh	Wait using a job spec


	12	osh-cpp	Wait using a job spec


	12	bash	Wait using a job spec


	12	dash	Wait using a job spec

Ignoring osh-cpp failure: 10 Resume the special jobs: %- and %+
spec/stateful/job_control.py: Expected 0 failures, got 1