<div>One test fails when running 'make check'.</div><div><br></div><div>I got : BAD: eof on file 0xbcf550 (output), expected 'stderr' at tests/test_job_process.c:3461 (test_spawn).</div><div><br></div><div>
<br></div><div>Ubuntu 11.10
</div><div><br></div><div>$ uname -a</div><div>Linux ip-10-242-81-44 3.0.0-14-virtual #23-Ubuntu SMP Mon Nov 21 21:09:11 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux</div><div><br></div><div>Thanks,</div><div><br></div><div>Bruno</div>
<div><br></div><div><br></div><div><div><br></div><div>ubuntu@ip-10-242-81-44:~/upstart/testUp/upstart-1.4$ make check</div><div>Making check in intl</div><div>make[1]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/intl'</div>
<div>make[1]: Nothing to be done for `check'.</div><div>make[1]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/intl'</div><div>Making check in dbus</div><div>make[1]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/dbus'</div>
<div>make[1]: Nothing to be done for `check'.</div><div>make[1]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/dbus'</div><div>Making check in init</div><div>make[1]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div>
<div>make  check-am</div><div>make[2]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>make  test_system test_environ test_process test_job_class test_job_process test_job test_log test_event test_event_operator test_blocked test_parse_job test_parse_conf test_conf test_control</div>
<div>make[3]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>make[3]: `test_system' is up to date.</div><div>make[3]: `test_environ' is up to date.</div><div>make[3]: `test_process' is up to date.</div>
<div>make[3]: `test_job_class' is up to date.</div><div>make[3]: `test_job_process' is up to date.</div><div>make[3]: `test_job' is up to date.</div><div>make[3]: `test_log' is up to date.</div><div>make[3]: `test_event' is up to date.</div>
<div>make[3]: `test_event_operator' is up to date.</div><div>make[3]: `test_blocked' is up to date.</div><div>make[3]: `test_parse_job' is up to date.</div><div>make[3]: `test_parse_conf' is up to date.</div>
<div>make[3]: `test_conf' is up to date.</div><div>make[3]: `test_control' is up to date.</div><div>make[3]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>make  check-TESTS</div><div>
make[3]: Entering directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>Testing system_kill()</div><div>...with TERM signal</div><div>...with KILL signal</div><div>...with no group leader</div><div>PASS: test_system</div>
<div>Testing environ_add()</div><div>...with empty table</div><div>...with new variable</div><div>...with new variable from environment</div><div>...with new variable unset in environment</div><div>...with replacement variable</div>
<div>...with replacement variable from environment</div><div>...with replacement variable unset in environment</div><div>...with new variable but no replace</div><div>...with existing variable</div><div>...with existing variable from environment</div>
<div>...with existing variable unset in environment</div><div>Testing environ_append()</div><div>...with new entries</div><div>...with replacement entries</div><div>...with preserve existing entries</div><div>Testing environ_set()</div>
<div>Testing environ_lookup()</div><div>...with empty table</div><div>...with key to be found</div><div>...with key not found</div><div>...with key that is prefix of another</div><div>...with longer key</div><div>Testing environ_get()</div>
<div>...with empty table</div><div>...with key to be found</div><div>...with key not found</div><div>...with key that is prefix of another</div><div>Testing environ_getn()</div><div>...with empty table</div><div>...with key to be found</div>
<div>...with key not found</div><div>...with key that is prefix of another</div><div>...with longer key</div><div>Testing environ_all_valid()</div><div>...with valid table</div><div>...with empty table</div><div>...with missing equals</div>
<div>Testing environ_expand()</div><div>...with no expansion</div><div>...with simple expansion</div><div>...with simple expansion of smaller value</div><div>...with simple expansion of same size value</div><div>...with multiple simple expansions</div>
<div>...with simple bracketed expression</div><div>...with multiple simple bracketed expression</div><div>...with simple expression inside bracketed expression</div><div>...with bracketed expression inside bracketed expression</div>
<div>...with bracketed default expression</div><div>...with bracketed default expression for set variable</div><div>...with bracketed default expression for null variable</div><div>...with bracketed default or null expression</div>
<div>...with bracketed default or null expression for set variable</div><div>...with bracketed default or null expression for null variable</div><div>...with bracketed alternate expression</div><div>...with bracketed alternate expression for set variable</div>
<div>...with bracketed alternate expression for null variable</div><div>...with bracketed alternate or null expression</div><div>...with bracketed alternate or null expression for set variable</div><div>...with bracketed alternate or null expression for null variable</div>
<div>...with references in bracketed expression argument</div><div>...with dollar sign in whitespace</div><div>...with bracketed dollar sign</div><div>...with simple expansion of unknown variable</div><div>...with bracketed expansion of unknown variable</div>
<div>...with expansion of unknown variable within expression name</div><div>...with expansion of unknown variable within expression argument</div><div>...with unknown operator in expression</div><div>...with missing close brace after expression</div>
<div>PASS: test_environ</div><div>Testing process_new()</div><div>Testing process_name()</div><div>...with main process</div><div>...with pre-start process</div><div>...with post-start process</div><div>...with pre-stop process</div>
<div>...with post-stop process</div><div>...with invalid process</div><div>Testing process_from_name()</div><div>...with main process</div><div>...with pre-start process</div><div>...with post-start process</div><div>...with pre-stop process</div>
<div>...with post-stop process</div><div>...with invalid process</div><div>PASS: test_process</div><div>Testing job_class_new()</div><div>Testing job_class_consider()</div><div>...with no registered class and best class</div>
<div>...with no registered class and not best class</div><div>...with registered class that cannot be replaced</div><div>...with replacable registered class and best class</div><div>...with replacable registered class and not best class</div>
<div>Testing job_class_reconsider()</div><div>...with registered best class</div><div>...with registered not best class</div><div>...with registered not best class that can't be replaced</div><div>...with unregistered class</div>
<div>...with no registered class</div><div>...with no classes to replace it</div><div>Testing job_class_register()</div><div>...with signal emission</div><div>...without signal emission</div><div>Testing job_class_unregister()</div>
<div>Testing job_class_environment()</div><div>...with no configured environment</div><div>...with configured environment</div><div>...with configuration overriding built-ins</div><div>Testing job_class_get_instance()</div>
<div>...with running job</div><div>...with unknown job</div><div>...with environment</div><div>...with invalid environment</div><div>Testing job_class_get_instance_by_name()</div><div>...with known job</div><div>...with singleton job</div>
<div>...with unknown instance</div><div>Testing job_class_get_all_instances()</div><div>...with active instances</div><div>...with no instances</div><div>Testing job_class_start()</div><div>...with new job</div><div>...with no wait</div>
<div>...with stopping job</div><div>...with starting job</div><div>...with environment</div><div>...with invalid environment</div><div>Testing job_class_stop()</div><div>...with running job</div><div>...with no wait</div>
<div>...with stopping job</div><div>...with unknown job</div><div>...with environment</div><div>...with invalid environment</div><div>Testing job_class_restart()</div><div>...with running job</div><div>...with no wait</div>
<div>...with stopping job</div><div>...with unknown job</div><div>...with environment</div><div>...with invalid environment</div><div>Testing job_class_get_name()</div><div>Testing job_class_get_description()</div><div>...with description</div>
<div>...with no description</div><div>Testing job_class_get_author()</div><div>...with author</div><div>...with no author</div><div>Testing job_class_get_version()</div><div>...with version</div><div>...with no version</div>
<div>Testing job_class_get_start_on()</div><div>...with event tree</div><div>...with no events</div><div>Testing job_class_get_stop_on()</div><div>...with event tree</div><div>...with no events</div><div>Testing job_class_get_emits()</div>
<div>...with events</div><div>...with no events</div><div>PASS: test_job_class</div><div>Testing job_process_run()</div><div>...with simple command</div><div>...with shell command</div><div>...with small script</div>
<div>...with small script and trailing newlines</div><div>...with script that will fail</div><div>...with environment of unnamed instance</div><div>...with environment of named instance</div><div>...with environment for pre-stop</div>
<div>...with environment for post-stop</div><div>...with long script</div><div>...with non-daemon job</div><div>...with script for daemon job</div><div>...with daemon job</div><div>...with forking job</div><div>...with no such file</div>
<div>...ensure that no log file written for single-line no-output script</div><div>...ensure that no log file written for single-line no-output command</div><div>...ensure that no log file written for CONSOLE_NONE</div><div>
...ensure that no log file written for multi-line no-output script</div><div>...with single-line script that writes 1 line to stdout</div><div>...with single-line script that is killed</div><div>...with single-line command that is killed</div>
<div>...with multi-line script that is killed</div><div>...with single-line script that writes 1 byte and is killed</div><div>...with multi-line script that writes 1 byte and is killed</div><div>...with single-line command that writes 1 line to stdout</div>
<div>...with multi-line script that writes 1 line to stdout</div><div>...with instance job and single-line script that writes 1 line to stdout</div><div>...with single-line script that writes >1 lines to stdout</div><div>
...with single-line command that writes >1 lines to stdout</div><div>...with multi-line script that writes >1 lines to stdout</div><div>...with single-line script that writes 1 line to stderr</div><div>...with single-line command that writes 1 line to stderr</div>
<div>...with multi-line script that writes 1 line to stderr</div><div>...with single-line script that writes >1 lines to stderr</div><div>...with single-line command that writes >1 lines to stderr</div><div>...with multi-line script that writes >1 lines to stderr</div>
<div>...with single-line script that writes 1 line to stdout then 1 line to stderr</div><div>...with single-line script that writes 1 line to stderr then 1 line to stdout</div><div>...with single-line command that writes to stdout and stderr</div>
<div>...with single-line script running an invalid command</div><div>...with multi-line script running an invalid command</div><div>...with multi-line script that writes 1 line to stdout then 1 line to stderr</div><div>...with multi-line script that writes 1 line to stderr then 1 line to stdout</div>
<div>...with setuid me</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div>
<div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div>
<div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>test: Temporary process spawn error: Cannot allocate memory</div><div>Testing job_process_spawn()</div>
<div>...with simple job</div><div>...with no console</div><div>...with console logging</div><div>...with working directory</div><div>...with environment</div><div>...with non-daemon job</div><div>...with daemon job</div><div>
...with no such file</div><div>...with debug enabled</div><div>...ensure sane signal state with no console</div><div>...ensure sane signal state with log console</div><div>...simple test</div><div>...with single-line script and 'console log'</div>
<div>...with multi-line script and 'console log'</div><div>...read single null byte with 'console log'</div><div>...read data from forked process</div><div>...read data from daemon process</div><div>BAD: eof on file 0xbcf550 (output), expected 'stderr</div>
<div><br></div><div>'</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>at tests/test_job_process.c:3461 (test_spawn).</div><div>/bin/bash: line 5: 14840 Aborted                 ${dir}$tst</div><div>
FAIL: test_job_process</div><div>Testing job_new()</div><div>...with no name</div><div>...with name given</div><div>...with D-Bus connection</div><div>Testing job_register()</div><div>...with signal emission</div>
<div>...without signal emission</div><div>Testing job_change_goal()</div><div>...with waiting job</div><div>...with stopping job</div><div>...with running job and start</div><div>...with running job and stop</div><div>...with running job and no process</div>
<div>...with starting job</div><div>...with waiting job</div><div>Testing job_change_state()</div><div>...waiting to starting</div><div>...waiting to starting for named instance</div><div>...waiting to starting with export</div>
<div>...starting to pre-start</div><div>...starting to pre-start without process</div><div>...starting to pre-start for failed process</div><div>...pre-start to spawned</div><div>...pre-start to spawned for named instance</div>
<div>...pre-start to spawned with export</div><div>...pre-start to spawned without process</div><div>...pre-start to spawned for failed process</div><div>...pre-start to spawned for waiting job</div><div>...spawned to post-start</div>
<div>...spawned to post-start without process</div><div>...spawned to post-start for failed process</div><div>...post-start to running for service</div><div>...post-start to running for task</div><div>...running to pre-stop</div>
<div>...running to pre-stop without process</div><div>...running to pre-stop for named instance</div><div>...running to pre-stop with export</div><div>...running to pre-stop for failed process</div><div>...running to stopping</div>
<div>...running to stopping for named instance</div><div>...running to stopping with export</div><div>...running to stopping for killed process</div><div>...running to stopping for unknown signal</div><div>...pre-stop to running</div>
<div>...pre-stop to stopping</div><div>...stopping to killed</div><div>...stopping to killed without process</div><div>...killed to post-stop</div><div>...killed to post-stop without process</div><div>...killed to post-stop for failed process</div>
<div>...post-stop to waiting</div><div>...post-stop to waiting for named instance</div><div>...post-stop to waiting with export</div><div>...post-stop to waiting with d-bus connection</div><div>...post-stop to starting</div>
<div>...post-stop to starting without new environment</div><div>...post-stop to waiting for replaced job</div><div>...post-stop to waiting for still active job</div><div>...post-stop to waiting for deleted job</div><div>Testing job_next_state()</div>
<div>...with waiting job and a goal of start</div><div>...with starting job and a goal of stop</div><div>...with starting job and a goal of start</div><div>...with pre-start job and a goal of stop</div><div>...with pre-start job and a goal of start</div>
<div>...with spawned job and a goal of stop</div><div>...with spawned job and a goal of start</div><div>...with post-start job and a goal of stop</div><div>...with post-start job and a goal of start</div><div>...with post-start job and a goal of respawn</div>
<div>...with running job and a goal of stop</div><div>...with dead running job and a goal of stop</div><div>...with running job and a goal of start</div><div>...with pre-stop job and a goal of start</div><div>...with pre-stop job and a goal of stop</div>
<div>...with post-start job and a goal of respawn</div><div>...with stopping job and a goal of start</div><div>...with stopping job and a goal of stop</div><div>...with killed job and a goal of start</div><div>...with killed job and a goal of stop</div>
<div>...with post-stop job and a goal of start</div><div>...with post-stop job and a goal of stop</div><div>Testing job_failed()</div><div>...with no current failure</div><div>...with previous failure</div><div>Testing job_finished()</div>
<div>...with blocked events</div><div>...with blocked events and failure</div><div>...without blocked events</div><div>Testing job_emit_event()</div><div>...with singleton in starting state</div><div>...with instance in starting state</div>
<div>...with singleton in running state</div><div>...with instance in running state</div><div>...with non-failed singleton in stopping state</div><div>...with non-failed instance in stopping state</div><div>...with failed singleton in stopping state</div>
<div>...with failed instance in stopping state</div><div>...with killed singleton in stopping state</div><div>...with killed instance in stopping state</div><div>...with unknown killed singleton in stopping state</div><div>
...with unknown killed instance in stopping state</div><div>...with unstarted singleton in stopping state</div><div>...with unstarted instance in stopping state</div><div>...with failed respawn singleton in stopping state</div>
<div>...with failed respawn instance in stopping state</div><div>...with non-failed singleton in stopped state</div><div>...with non-failed instance in waiting state</div><div>...with failed singleton in waiting state</div>
<div>...with failed instance in waiting state</div><div>...with killed singleton in waiting state</div><div>...with killed instance in waiting state</div><div>...with unknown killed singleton in waiting state</div><div>...with unknown killed instance in waiting state</div>
<div>...with unstarted singleton in waiting state</div><div>...with unstarted instance in waiting state</div><div>...with failed respawn singleton in waiting state</div><div>...with failed respawn instance in waiting state</div>
<div>Testing job_name()</div><div>...with non-instance job</div><div>...with instance job</div><div>...with multiple calls</div><div>Testing job_goal_name()</div><div>...with stop goal</div><div>...with start goal</div><div>
...with respawn goal</div><div>...with invalid goal</div><div>Testing job_goal_from_name()</div><div>...with stop goal</div><div>...with start goal</div><div>...with respawn goal</div><div>...with invalid goal</div><div>Testing job_state_name()</div>
<div>...with waiting state</div><div>...with starting state</div><div>...with pre-start state</div><div>...with spawned state</div><div>...with post-start state</div><div>...with running state</div><div>...with pre-stop state</div>
<div>...with stopping state</div><div>...with killed state</div><div>...with post-stop state</div><div>...with invalid state</div><div>Testing job_state_from_name()</div><div>...with waiting state</div><div>...with starting state</div>
<div>...with pre-start state</div><div>...with spawned state</div><div>...with post-start state</div><div>...with running state</div><div>...with pre-stop state</div><div>...with stopping state</div><div>...with killed state</div>
<div>...with post-stop state</div><div>...with invalid state</div><div>Testing job_start()</div><div>...with stopping job</div><div>...with no wait</div><div>...with starting job</div><div>Testing job_stop()</div><div>...with running job</div>
<div>...with no wait</div><div>...with stopping job</div><div>Testing job_restart()</div><div>...with running job</div><div>...with no wait</div><div>...with stopping job</div><div>Testing job_get_name()</div><div>...with instance name</div>
<div>...with no instance name</div><div>Testing job_get_goal()</div><div>Testing job_get_state()</div><div>Testing job_get_processes()</div><div>...with no processes</div><div>...with pre-start process</div><div>...with post-start process and no main process</div>
<div>...with main process</div><div>...with main process and post-start process</div><div>...with main process and pre-stop process</div><div>...with pre-stop process and no main process</div><div>...with post-stop process</div>
<div>PASS: test_job</div><div>Testing log_new()</div><div>...object checks with uid 0</div><div>...ensure logging disallowed for uid >0</div><div>...parent check</div><div>...writing a new log file with uid 0</div>
<div>...same logger appending to file with uid 0</div><div>...different logger appending to file with uid 0</div><div>...ensure logging resumes when file made accessible with uid 0</div><div>...ensure logger flushes when destroyed with uid 0</div>
<div>...ensure log written when directory created accessible with uid 0</div><div>...ensure remainder of log written when file deleted with uid 0</div><div>...writing 1 null with uid 0</div><div>...writing >1 null with uid 0</div>
<div>...writing 1 non-printable only with uid 0</div><div>...writing >1 non-printable only with uid 0</div><div>...with very long relative path and uid 0</div><div>...with overly long relative path and uid 0</div><div>
...with very long absolute path and uid 0</div><div>...with overly long absolute path and uid 0</div><div>Testing log_destroy()</div><div>...ensure log fd closed with uid 0</div><div>...ensure path and io elements freed with uid 0</div>
<div>...ensure unflushed data freed with uid 0</div><div>PASS: test_log</div><div>Testing event_new()</div><div>Testing event_block()</div><div>Testing event_unblock()</div><div>Testing event_poll()</div><div>...with unblocked pending event</div>
<div>...with unblocked handling event</div><div>...with blocked handling event</div><div>...with finished event</div><div>Testing event_pending()</div><div>Testing event_pending_handle_jobs()</div><div>...with non-matching event for start</div>
<div>...with partial matching event to start</div><div>...with matching events to start</div><div>...with environment in start event</div><div>...with restart of stopping job</div><div>...with already running job</div><div>
...with instance name</div><div>...with restart of existing instance</div><div>...with error in instance name</div><div>...with non-matching event for stop</div><div>...with matching event to stop</div><div>...with environment in stop event</div>
<div>...with stop of restarting job</div><div>...with already stopping job</div><div>...with environment expansion in stop event</div><div>Testing event_finished()</div><div>...with non-failed event</div><div>...with failed event</div>
<div>...with failed failed event</div><div>...with non-blocked stopping job</div><div>...with non-blocked starting job</div><div>...with stopping job but wrong event</div><div>...with starting job but wrong event</div><div>
...with stopping job</div><div>...with starting job</div><div>PASS: test_event</div><div>Testing event_operator_new()</div><div>...with EVENT_MATCH</div><div>...with EVENT_MATCH and environment</div><div>...with EVENT_OR</div>
<div>Testing event_operator_copy()</div><div>...with EVENT_OR</div><div>...with EVENT_MATCH and no environment or event</div><div>...with EVENT_MATCH and environment</div><div>...with EVENT_MATCH and referenced event</div>
<div>...with children</div><div>Testing event_operator_destroy()</div><div>...with referenced event</div><div>...without referenced event</div><div>Testing event_operator_update()</div><div>...with EVENT_OR and both children FALSE</div>
<div>...with EVENT_OR and only left child TRUE</div><div>...with EVENT_OR and only right child TRUE</div><div>...with EVENT_OR and both children TRUE</div><div>...with EVENT_AND and both children FALSE</div><div>...with EVENT_AND and only left child TRUE</div>
<div>...with EVENT_AND and only right child TRUE</div><div>...with EVENT_AND and both children TRUE</div><div>Testing event_operator_match()</div><div>...with different name events</div><div>...with same name events</div>
<div>...with same environment lists</div><div>...with environment lists and wrong values</div><div>...with environment lists and wrong values negated</div><div>...with environment lists and correct values negated</div><div>
...with shorter environment list in operator</div><div>...with matching value lists</div><div>...with non-matching value lists</div><div>...with shorter value list in operator</div><div>...with shorter list in event</div>
<div>...with different order environment lists</div><div>...with value list and variable list</div><div>...with unknown variable in operator</div><div>...with globs in operator environment</div><div>...with globs in operator value</div>
<div>...with variable reference in operator</div><div>...with unknown variable reference in operator</div><div>Testing event_operator_handle()</div><div>...with non-matching event</div><div>...with matching event</div><div>
...with duplicate matching event</div><div>...with matching event and complete expression</div><div>...with environment</div><div>Testing event_operator_environment()</div><div>...with environment table</div><div>...with environment variable for event list</div>
<div>...with no matches</div><div>Testing event_operator_events()</div><div>...with matches in tree</div><div>...with no matches</div><div>Testing event_operator_reset()</div><div>PASS: test_event_operator</div>
<div>Testing blocked_new()</div><div>...with job</div><div>...with event</div><div>...with D-Bus EmitEvent method</div><div>...with D-Bus Instance.Start method</div><div>...with D-Bus Instance.Stop method</div><div>...with D-Bus Instance.Restart method</div>
<div>...with D-Bus Job.Start method</div><div>...with D-Bus Job.Stop method</div><div>...with D-Bus Job.Restart method</div><div>PASS: test_blocked</div><div>Testing parse_job()</div><div>...with simple job file</div>
<div>...with missing exec and script</div><div>...with non-NULL update parameter (override)</div><div>Testing stanza_instance()</div><div>...with argument</div><div>...with multiple stanzas</div><div>...with extra argument</div>
<div>...with missing argument</div><div>Testing stanza_description()</div><div>...with single argument</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with extra argument</div><div>Testing stanza_version()</div>
<div>...with single argument</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with extra argument</div><div>Testing stanza_author()</div><div>...with single argument</div><div>...with multiple stanzas</div>
<div>...with missing argument</div><div>...with extra argument</div><div>Testing stanza_env()</div><div>...with single argument</div><div>...with repeated stanzas</div><div>...with missing argument</div><div>...with extra argument</div>
<div>Testing stanza_export()</div><div>...with single argument</div><div>...with multiple arguments</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>Testing stanza_start()</div><div>...with event name</div>
<div>...with event name and arguments</div><div>...with event name and various arguments</div><div>...with operator and two events</div><div>...with operator and two events with arguments</div><div>...with multiple operators</div>
<div>...with parentheses</div><div>...with nested parentheses</div><div>...with multiple on stanzas</div><div>...with missing argument</div><div>...with unknown argument</div><div>...with on and missing argument</div><div>
...with operator at start of expression</div><div>...with operator at end of expression</div><div>...with consecutive operators</div><div>...with operator at start of group</div><div>...with operator at end of group</div>
<div>...with missing open paren</div><div>...with missing close paren</div><div>...with group immediately after event</div><div>...with event immediately after group</div><div>...with positional arguments after name-based ones</div>
<div>Testing stanza_stop()</div><div>...with event name</div><div>...with event name and arguments</div><div>...with event name and various arguments</div><div>...with operator and two events</div><div>...with operator and two events with arguments</div>
<div>...with multiple operators</div><div>...with parentheses</div><div>...with nested parentheses</div><div>...with multiple on stanzas</div><div>...with missing argument</div><div>...with unknown argument</div><div>...with on and missing argument</div>
<div>...with operator at start of expression</div><div>...with operator at end of expression</div><div>...with consecutive operators</div><div>...with operator at start of group</div><div>...with operator at end of group</div>
<div>...with missing open paren</div><div>...with missing close paren</div><div>...with group immediately after event</div><div>...with event immediately after group</div><div>...with positional arguments after name-based ones</div>
<div>Testing stanza_emits()</div><div>...with single argument</div><div>...with multiple arguments</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>Testing stanza_manual()</div><div>...manual_stanza before start on</div>
<div>...manual stanza after start on</div><div>Testing stanza_exec()</div><div>...with arguments</div><div>...with duplicates</div><div>...with exec following script</div><div>...with no arguments</div><div>Testing stanza_script()</div>
<div>...with block</div><div>...with multiple blocks</div><div>...with script following exec</div><div>...with argument</div><div>Testing stanza_pre_start()</div><div>...with exec and command</div><div>...with multiple exec</div>
<div>...with script and block</div><div>...with multiple script</div><div>...with script following exec</div><div>...with exec following script</div><div>...with exec but no command</div><div>...with argument to script</div>
<div>...with unknown argument</div><div>...with missing argument</div><div>Testing stanza_post_start()</div><div>...with exec and command</div><div>...with multiple exec</div><div>...with script and block</div><div>...with multiple script</div>
<div>...with script following exec</div><div>...with exec following script</div><div>...with exec but no command</div><div>...with argument to script</div><div>...with unknown argument</div><div>...with missing argument</div>
<div>Testing stanza_pre_stop()</div><div>...with exec and command</div><div>...with multiple exec</div><div>...with script and block</div><div>...with multiple script</div><div>...with script following exec</div><div>...with exec following script</div>
<div>...with exec but no command</div><div>...with argument to script</div><div>...with unknown argument</div><div>...with missing argument</div><div>Testing stanza_post_stop()</div><div>...with exec and command</div><div>
...with multiple exec</div><div>...with script and block</div><div>...with multiple script</div><div>...with script following exec</div><div>...with exec following script</div><div>...with exec but no command</div><div>...with argument to script</div>
<div>...with unknown argument</div><div>...with missing argument</div><div>Testing stanza_expect()</div><div>...with stop argument</div><div>...with daemon argument</div><div>...with fork argument</div><div>...with none argument</div>
<div>...with multiple for stanzas</div><div>...with missing argument</div><div>...with unknown argument</div><div>...with extra argument</div><div>Testing stanza_task()</div><div>...with no arguments</div><div>...with multiple stanzas</div>
<div>...with arguments</div><div>Testing stanza_kill()</div><div>...with timeout and single argument</div><div>...with signal and single argument</div><div>...with multiple timeout and single argument stanzas</div><div>...with multiple signal and single argument stanzas</div>
<div>...with missing argument</div><div>...with unknown second argument</div><div>...with timeout and missing argument</div><div>...with signal and missing argument</div><div>...with timeout and non-integer argument</div>
<div>...with timeout and too-large argument</div><div>...with timeout and alphanumeric argument</div><div>...with timeout and negative argument</div><div>...with signal and unknown signal argument</div><div>...with timeout and extra argument</div>
<div>...with signal and extra argument</div><div>Testing stanza_respawn()</div><div>...with no argument</div><div>...with multiple no argument stanzas</div><div>...with limit and two arguments</div><div>...with limit and unlimited</div>
<div>...with multiple limit and two argument stanzas</div><div>...with limit and missing second argument</div><div>...with limit and missing arguments</div><div>...with limit and non-integer interval argument</div><div>...with limit and too-large interval argument</div>
<div>...with limit and non-integer limit argument</div><div>...with limit and too-large limit argument</div><div>...with limit and alphanumeric interval argument</div><div>...with limit and alphanumeric limit argument</div>
<div>...with limit and negative interval argument</div><div>...with limit and negative interval argument</div><div>...with extra argument to limit</div><div>...with unknown argument to limit</div><div>Testing stanza_normal()</div>
<div>...with single argument</div><div>...with single argument containing signal name</div><div>...with multiple arguments</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with non-integer argument</div>
<div>...with alphanumeric argument</div><div>...with negative argument</div><div>...with unknown argument</div><div>...with missing exit</div><div>Testing stanza_console()</div><div>...with none argument</div><div>...with output argument</div>
<div>...with owner argument</div><div>...with log argument</div><div>...with multiple stanzas</div><div>...with unknown argument</div><div>...with argument</div><div>...with missing argument</div><div>Testing stanza_umask()</div>
<div>...with single argument</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with non-octal argument</div><div>...with non-integer argument</div><div>...with alphanumeric argument</div><div>
...with negative argument</div><div>...with extra argument</div><div>Testing stanza_nice()</div><div>...with positive argument</div><div>...with negative argument</div><div>...with multiple stanzas</div><div>...with missing argument</div>
<div>...with overly large argument</div><div>...with overly small argument</div><div>...with non-integer argument</div><div>...with alphanumeric argument</div><div>...with extra argument</div><div>Testing stanza_oom()</div>
<div>...with positive argument</div><div>...with positive score argument</div><div>...with negative argument</div><div>...with negative score argument</div><div>...with never argument</div><div>...with never score argument</div>
<div>...with multiple stanzas</div><div>...with multiple score stanzas</div><div>...with an oom overriding an oom score stanza</div><div>...with an oom score overriding an oom stanza</div><div>...with missing argument</div>
<div>...with missing score argument</div><div>...with overly large argument</div><div>...with overly large score argument</div><div>...with overly small argument</div><div>...with overly small score argument</div><div>...with non-integer argument</div>
<div>...with non-integer score argument</div><div>...with alphanumeric argument</div><div>...with alphanumeric score argument</div><div>...with extra argument</div><div>...with extra score argument</div><div>Testing stanza_limit()</div>
<div>...with as limit</div><div>...with core limit</div><div>...with cpu limit</div><div>...with data limit</div><div>...with fsize limit</div><div>...with memlock limit</div><div>...with msgqueue limit</div><div>...with nice limit</div>
<div>...with nofile limit</div><div>...with nproc limit</div><div>...with rss limit</div><div>...with rtprio limit</div><div>...with sigpending limit</div><div>...with stack limit</div><div>...with multiple limits</div><div>
...with multiple of a single limit</div><div>...with unlimited hard limit</div><div>...with unlimited soft limit</div><div>...with missing hard limit</div><div>...with missing soft limit</div><div>...with unknown resource type</div>
<div>...with missing resource type</div><div>...with non-integer hard value argument</div><div>...with non-integer soft value argument</div><div>...with too-large hard value argument</div><div>...with too-large soft value argument</div>
<div>...with alphanumeric hard value argument</div><div>...with alphanumeric soft value argument</div><div>...with extra argument</div><div>Testing stanza_chroot()</div><div>...with single argument</div><div>...with multiple stanzas</div>
<div>...with missing argument</div><div>...with extra argument</div><div>Testing stanza_chdir()</div><div>...with single argument</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with extra argument</div>
<div>Testing stanza_setuid()</div><div>...with single argument</div><div>...with multiple stanzas</div><div>...with missing argument</div><div>...with extra argument</div><div>Testing stanza_setgid()</div><div>...with single argument</div>
<div>...with multiple stanzas</div><div>...with missing argument</div><div>...with extra argument</div><div>PASS: test_parse_job</div><div>Testing parse_conf()</div><div>...with simple file</div><div>PASS: test_parse_conf</div>
<div>Testing conf_source_new()</div><div>Testing conf_file_new()</div><div>Testing conf_source_reload() with job directory</div><div>...with new job directory</div><div>...with new file in directory (direct write)</div><div>
...with modified job (direct write)</div><div>...with modified job (atomic rename)</div><div>...with deleted job</div><div>...with modification to running job</div><div>...with modification to replacement for running job</div>
<div>...with deletion of replacement for running job</div><div>...with deletion of running job</div><div>...with error after modification of job</div><div>...with parse error after modification of job</div><div>...with error parsing job</div>
<div>...with job parse error</div><div>...with non-existant directory</div><div>...with deletion of top-level directory</div><div>...without .conf extension only</div><div>...with literal .conf file</div><div>...with new job directory but no inotify</div>
<div>...with reload of job directory</div><div>...with error parsing job without inotify</div><div>...with job parse error without inotify</div><div>...with non-existant directory and no inotify</div><div>...with reload of deleted directory</div>
<div>...without .conf extension only</div><div>...with literal .conf file</div><div>Testing conf_source_reload() with config directory</div><div>...with new conf directory</div><div>...with new file in directory</div><div>
...with modified file in directory</div><div>...with deleted file</div><div>...with error after modification of file</div><div>...with parse error after modification of file</div><div>...with error parsing file</div><div>
...with non-existant directory</div><div>...with deletion of top-level directory</div><div>...with new conf directory but no inotify</div><div>...with reload of conf directory</div><div>...with error parsing file without inotify</div>
<div>...with parse error without inotify</div><div>...with non-existant directory and no inotify</div><div>...with reload of deleted directory</div><div>Testing conf_source_reload() with configuration file</div><div>...with new conf file</div>
<div>...with new file alongside conf file</div><div>...with modification to file alongside conf file</div><div>...with modification (direct write)</div><div>...with modification (atomic rename)</div><div>...with deletion</div>
<div>...with creation (direct write)</div><div>...with creation (atomic rename)</div><div>...with error after modification</div><div>...with parse error after modification</div><div>...with physical error parsing file</div>
<div>...with parse error</div><div>...with non-existant file</div><div>...with deletion of parent directory</div><div>...with new conf file but no inotify</div><div>...with reload of conf file</div><div>...with error parsing file without inotify</div>
<div>...with parse error without inotify</div><div>...with non-existant conf file and no inotify</div><div>...with reload of deleted conf file</div><div>Testing conf_source_reload()</div><div>Testing toggle_conf_name() changing conf to override</div>
<div>...changing override to conf</div><div>Testing override files</div><div>...with pre-override environment (conf with no override before watch)</div><div>...with pre-override environment (conf with no override after watch)</div>
<div>...ensure lone override ignored before watch</div><div>...ensure lone override ignored after watch</div><div>...create conf, watch, then create/modify/delete override</div><div>...create watch, conf, then create/modify/delete override</div>
<div>...create override, watch, then create/modify/delete conf</div><div>...create watch, override, then create/modify/delete conf</div><div>...create override, watch, conf, then modify/delete override</div><div>...create watch, override, conf, then modify/delete override</div>
<div>...create both conf+override files, watch, then modify/delete conf</div><div>...create both conf+override files, watch, then modify/delete override</div><div>...create conf, watch, then create invalid override, delete override</div>
<div>...ensure override ignored for CONF_FILE</div><div>...both conf+override files with no inotify support</div><div>Testing conf_file_destroy()</div><div>...with not-current job</div><div>...with stopped job</div><div>...with running job</div>
<div>Testing conf_select_job()</div><div>...with one file</div><div>...with multiple files</div><div>...with file but no attached job</div><div>...with no match</div><div>PASS: test_conf</div><div>Testing control_server_open()</div>
<div>...with expected success</div><div>...with already listening</div><div>Testing control_server_connect()</div><div>...with no jobs</div><div>...with existing jobs</div><div>Testing control_server_close()</div><div>Testing control_bus_open()</div>
<div>...with system bus</div><div>...with existing jobs</div><div>...with disconnect during registration</div><div>...with our name already taken</div><div>...with no system bus</div><div>Testing control_bus_close()</div>
<div>Testing control_disconnected()</div><div>Testing control_reload_configuration()</div><div>Testing control_get_job_by_name()</div><div>...with known job</div><div>...with unknown job</div><div>...with illegal job name</div>
<div>Testing control_get_all_jobs()</div><div>...with registered jobs</div><div>...with no registered jobs</div><div>Testing control_emit_event()</div><div>...with empty environment list</div><div>...with environment list</div>
<div>...with no wait</div><div>...with failed event</div><div>...with empty name</div><div>...with missing equals in environment list</div><div>Testing control_get_version()</div><div>Testing control_get_log_priority()</div>
<div>...with fatal</div><div>...with error</div><div>...with warn</div><div>...with message</div><div>...with info</div><div>...with debug</div><div>Testing control_set_log_priority()</div><div>...with fatal</div><div>...with error</div>
<div>...with warn</div><div>...with message</div><div>...with info</div><div>...with debug</div><div>...with unknown string</div><div>PASS: test_control</div><div>===============================================</div>
<div>1 of 14 tests failed</div><div>Please report to <a href="mailto:upstart-devel@lists.ubuntu.com">upstart-devel@lists.ubuntu.com</a></div><div>===============================================</div><div>make[3]: *** [check-TESTS] Error 1</div>
<div>make[3]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>make[2]: *** [check-am] Error 2</div><div>make[2]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>
make[1]: *** [check] Error 2</div><div>make[1]: Leaving directory `/home/ubuntu/upstart/testUp/upstart-1.4/init'</div><div>make: *** [check-recursive] Error 1</div><div>ubuntu@ip-10-242-81-44:~/upstart/testUp/upstart-1.4$ </div>
</div>