16436
16436
assert (upstart_pid);
16437
16437
assert (dbus_pid);
16439
/*******************************************************************/
16440
/* Ensure basic variables are set in the current environment */
16442
if (! getenv ("TERM")) {
16443
fprintf (stderr, "WARNING: setting TERM to '%s' as not set\n",
16444
TEST_INITCTL_DEFAULT_TERM);
16445
assert0 (setenv ("TERM", TEST_INITCTL_DEFAULT_TERM, 1));
16448
if (! getenv ("PATH")) {
16449
fprintf (stderr, "WARNING: setting PATH to '%s' as not set\n",
16450
TEST_INITCTL_DEFAULT_PATH);
16451
assert0 (setenv ("PATH", TEST_INITCTL_DEFAULT_PATH, 1));
16454
16439
cmd = nih_sprintf (NULL, "%s reset-env 2>&1", get_initctl ());
16455
16440
TEST_NE_P (cmd, NULL);
16456
16441
RUN_COMMAND (NULL, cmd, &output, &line_count);
16463
16448
TEST_NE_P (cmd, NULL);
16464
16449
RUN_COMMAND (NULL, cmd, &output, &line_count);
16466
TEST_EQ (line_count, 2);
16467
TEST_STR_MATCH (output[0], "PATH=*");
16468
TEST_STR_MATCH (output[1], "TERM=*");
16451
TEST_GE (line_count, 2);
16452
TEST_STR_ARRAY_CONTAINS (output, "PATH=*");
16453
TEST_STR_ARRAY_CONTAINS (output, "TERM=*");
16469
16454
nih_free (output);
16471
16456
/*******************************************************************/
16475
16460
TEST_NE_P (cmd, NULL);
16476
16461
RUN_COMMAND (NULL, cmd, &output, &line_count);
16478
TEST_EQ (line_count, 2);
16479
TEST_STR_MATCH (output[0], "PATH=*");
16480
TEST_STR_MATCH (output[1], "TERM=*");
16463
TEST_GE (line_count, 2);
16464
TEST_STR_ARRAY_CONTAINS (output, "PATH=*");
16465
TEST_STR_ARRAY_CONTAINS (output, "TERM=*");
16481
16466
nih_free (output);
16483
16468
/*******************************************************************/
16543
16528
fi = fopen (logfile, "r");
16544
16529
TEST_NE_P (fi, NULL);
16545
TEST_FILE_MATCH (fi, "PATH=*");
16546
TEST_FILE_MATCH (fi, "TERM=*");
16530
TEST_FILE_CONTAINS (fi, "PATH=*");
16531
TEST_FILE_CONTAINS (fi, "TERM=*");
16548
16533
/* asterisk required to match '\r\n' */
16549
TEST_FILE_MATCH (fi, "UPSTART_JOB=foo*");
16550
TEST_FILE_MATCH (fi, "UPSTART_INSTANCE=*");
16551
TEST_FILE_MATCH (fi, "UPSTART_SESSION=*");
16552
TEST_FILE_END (fi);
16534
TEST_FILE_CONTAINS (fi, "UPSTART_JOB=foo*");
16535
TEST_FILE_CONTAINS (fi, "UPSTART_INSTANCE=*");
16536
TEST_FILE_CONTAINS (fi, "UPSTART_SESSION=*");
16556
16539
DELETE_FILE (confdir, "foo.conf");
16557
16540
TEST_EQ (unlink (logfile), 0);
16917
16906
get_initctl (), name, "HELLO");
16918
16907
TEST_NE_P (cmd, NULL);
16919
16908
RUN_COMMAND (NULL, cmd, &output, &line_count);
16909
TEST_EQ (line_count, 0);
16922
16911
/* check that value did *NOT* change */
16923
16912
cmd = nih_sprintf (NULL, "%s get-env %s 2>&1", get_initctl (),
16981
16972
"zygote", "cell");
16982
16973
TEST_NE_P (cmd, NULL);
16983
16974
RUN_COMMAND (NULL, cmd, &output, &line_count);
16975
TEST_EQ (line_count, 0);
16986
16977
cmd = nih_sprintf (NULL, "%s set-env %s='%s' 2>&1", get_initctl (),
16987
16978
"median", "middle");
16988
16979
TEST_NE_P (cmd, NULL);
16989
16980
RUN_COMMAND (NULL, cmd, &output, &line_count);
16981
TEST_EQ (line_count, 0);
16992
16983
cmd = nih_sprintf (NULL, "%s set-env %s='%s' 2>&1", get_initctl (),
16993
16984
"aardvark", "mammal");
16994
16985
TEST_NE_P (cmd, NULL);
16995
16986
RUN_COMMAND (NULL, cmd, &output, &line_count);
16987
TEST_EQ (line_count, 0);
16998
16989
cmd = nih_sprintf (NULL, "%s list-env 2>&1", get_initctl ());
16999
16990
TEST_NE_P (cmd, NULL);
17037
17028
"aardvark", "mammal");
17038
17029
TEST_NE_P (cmd, NULL);
17039
17030
RUN_COMMAND (NULL, cmd, &output, &line_count);
17031
TEST_EQ (line_count, 0);
17042
17033
cmd = nih_sprintf (NULL, "%s set-env %s='%s' 2>&1", get_initctl (),
17043
17034
"zygote", "cell");
17044
17035
TEST_NE_P (cmd, NULL);
17045
17036
RUN_COMMAND (NULL, cmd, &output, &line_count);
17037
TEST_EQ (line_count, 0);
17048
17039
cmd = nih_sprintf (NULL, "%s list-env 2>&1", get_initctl ());
17049
17040
TEST_NE_P (cmd, NULL);
17067
17058
"aardvark", "mammal");
17068
17059
TEST_NE_P (cmd, NULL);
17069
17060
RUN_COMMAND (NULL, cmd, &output, &line_count);
17061
TEST_EQ (line_count, 0);
17072
17063
cmd = nih_sprintf (NULL, "%s set-env %s='%s' 2>&1", get_initctl (),
17073
17064
"FOO", "BAR");
17074
17065
TEST_NE_P (cmd, NULL);
17075
17066
RUN_COMMAND (NULL, cmd, &output, &line_count);
17067
TEST_EQ (line_count, 0);
17078
17069
cmd = nih_sprintf (NULL, "%s set-env %s='%s' 2>&1", get_initctl (),
17079
17070
"_________", "_________");
17080
17071
TEST_NE_P (cmd, NULL);
17081
17072
RUN_COMMAND (NULL, cmd, &output, &line_count);
17073
TEST_EQ (line_count, 0);
17084
17075
CREATE_FILE (confdir, "modified-env.conf", "exec env");
17086
17077
cmd = nih_sprintf (NULL, "%s start modified-env 2>&1", get_initctl ());
17087
17078
TEST_NE_P (cmd, NULL);
17088
17079
RUN_COMMAND (NULL, cmd, &output, &line_count);
17080
TEST_EQ (line_count, 1);
17089
17081
nih_free (output);
17091
17083
logfile = NIH_MUST (nih_sprintf (NULL, "%s/%s",
17333
17327
/*******************************************************************/
17331
test_no_inherit_job_env (const char *runtimedir, const char *confdir, const char *logdir)
17333
nih_local char *cmd = NULL;
17336
pid_t upstart_pid = 0;
17337
char *extra[] = { "--no-inherit-env", NULL };
17338
nih_local char *logfile = NULL;
17339
nih_local char *session_file = NULL;
17342
start_upstart_common (&upstart_pid, TRUE, confdir, logdir, extra);
17344
/*******************************************************************/
17345
TEST_FEATURE ("ensure list-env in '--user --no-inherit-env' environment gives expected output");
17347
cmd = nih_sprintf (NULL, "%s list-env 2>&1", get_initctl ());
17348
TEST_NE_P (cmd, NULL);
17349
RUN_COMMAND (NULL, cmd, &output, &lines);
17351
/* environment should comprise the default environment only */
17352
TEST_EQ (lines, 2);
17353
TEST_STR_MATCH (output[0], "PATH=*");
17354
TEST_STR_MATCH (output[1], "TERM=*");
17357
/*******************************************************************/
17358
TEST_FEATURE ("ensure '--user --no-inherit-env' provides expected job environment");
17360
CREATE_FILE (confdir, "foo.conf", "exec env");
17362
cmd = nih_sprintf (NULL, "%s start foo 2>&1", get_initctl ());
17363
TEST_NE_P (cmd, NULL);
17364
RUN_COMMAND (NULL, cmd, &output, &lines);
17367
logfile = NIH_MUST (nih_sprintf (NULL, "%s/%s",
17371
WAIT_FOR_FILE (logfile);
17373
fi = fopen (logfile, "r");
17374
TEST_NE_P (fi, NULL);
17375
TEST_FILE_CONTAINS (fi, "PATH=*");
17376
TEST_FILE_CONTAINS (fi, "TERM=*");
17378
/* asterisk required to match '\r\n' */
17379
TEST_FILE_CONTAINS (fi, "UPSTART_JOB=foo*");
17380
TEST_FILE_CONTAINS (fi, "UPSTART_INSTANCE=*");
17381
TEST_FILE_CONTAINS (fi, "UPSTART_SESSION=*");
17384
DELETE_FILE (confdir, "foo.conf");
17385
TEST_EQ (unlink (logfile), 0);
17387
/*******************************************************************/
17389
session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions/%d.session",
17390
runtimedir, (int)upstart_pid));
17392
STOP_UPSTART (upstart_pid);
17394
unlink (session_file);
17337
17398
* Test all the commands which affect the job environment table together
17338
17399
* as they are so closely related.
17377
17438
TEST_EQ (setenv ("XDG_RUNTIME_DIR", runtimedir, 1), 0);
17440
/*******************************************************************/
17441
/* Ensure basic variables are set in the current environment */
17443
if (! getenv ("TERM")) {
17444
fprintf (stderr, "WARNING: setting TERM to '%s' as not set\n",
17445
TEST_INITCTL_DEFAULT_TERM);
17446
assert0 (setenv ("TERM", TEST_INITCTL_DEFAULT_TERM, 1));
17449
if (! getenv ("PATH")) {
17450
fprintf (stderr, "WARNING: setting PATH to '%s' as not set\n",
17451
TEST_INITCTL_DEFAULT_PATH);
17452
assert0 (setenv ("PATH", TEST_INITCTL_DEFAULT_PATH, 1));
17379
17455
TEST_DBUS (dbus_pid);
17380
17456
start_upstart_common (&upstart_pid, TRUE, confdir, logdir, NULL);
17410
17486
/*******************************************************************/
17412
17488
STOP_UPSTART (upstart_pid);
17489
session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions/%d.session",
17490
runtimedir, (int)upstart_pid));
17491
unlink (session_file);
17493
/*******************************************************************/
17495
test_no_inherit_job_env (runtimedir, confdir, logdir);
17497
/*******************************************************************/
17413
17499
TEST_DBUS_END (dbus_pid);
17414
17500
assert0 (unsetenv ("UPSTART_CONFDIR"));
17415
17501
assert0 (unsetenv ("UPSTART_LOGDIR"));
17416
17502
assert0 (unsetenv ("UPSTART_SESSION"));
17418
session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions/%d.session",
17419
runtimedir, (int)upstart_pid));
17420
unlink (session_file);
17421
17504
session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart/sessions", runtimedir));
17422
17505
TEST_EQ (rmdir (session_file), 0);
17423
17506
session_file = NIH_MUST (nih_sprintf (NULL, "%s/upstart", runtimedir));