Merge lp:~vorlon/upstart/fix-environ-order-assumption into lp:upstart

Proposed by Steve Langasek
Status: Merged
Merged at revision: 1391
Proposed branch: lp:~vorlon/upstart/fix-environ-order-assumption
Merge into: lp:upstart
Diff against target: 105 lines (+26/-9)
2 files modified
ChangeLog (+7/-0)
init/tests/test_job_process.c (+19/-9)
To merge this branch: bzr merge lp:~vorlon/upstart/fix-environ-order-assumption
Reviewer Review Type Date Requested Status
James Hunt Approve
Review via email: mp+136045@code.launchpad.net

Description of the change

POSIX does not guarantee any particular ordering of environ, so sort the
  contents before printing them. This will fix the recipe build failures in
  the ppa builders.

To post a comment you must log in.
Revision history for this message
James Hunt (jamesodhunt) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2012-11-23 11:36:47 +0000
3+++ ChangeLog 2012-11-25 09:43:25 +0000
4@@ -1,3 +1,10 @@
5+2012-11-25 Steve Langasek <steve.langasek@ubuntu.com>
6+
7+ * init/tests/test_job_process.c: POSIX does not guarantee any
8+ particular ordering of environ, so sort the contents before
9+ printing them. This will fix the recipe build failures in the
10+ ppa builders.
11+
12 2012-11-23 James Hunt <james.hunt@ubuntu.com>
13
14 [ Colin King <colin.king@ubuntu.com> ]
15
16=== modified file 'init/tests/test_job_process.c'
17--- init/tests/test_job_process.c 2012-11-18 18:21:54 +0000
18+++ init/tests/test_job_process.c 2012-11-25 09:43:25 +0000
19@@ -163,6 +163,12 @@
20 return 1;
21 }
22
23+static int
24+strcmp_compar (const void *a, const void *b)
25+{
26+ return strcmp(*(char * const *)a, *(char * const *)b);
27+}
28+
29 static void
30 child (enum child_tests test,
31 const char *filename)
32@@ -203,6 +209,10 @@
33 fprintf (out, "wd: %s\n", path);
34 break;
35 case TEST_ENVIRONMENT:
36+ /* guarantee output ordering */
37+ for (i = 0; environ[i]; i++);
38+ qsort (environ, i, sizeof (environ[0]), strcmp_compar);
39+
40 for (char **env = environ; *env; env++)
41 fprintf (out, "%s\n", *env);
42 break;
43@@ -669,10 +679,10 @@
44 * the job.
45 */
46 output = fopen (filename, "r");
47+ TEST_FILE_EQ (output, "BAR=BAZ\n");
48 TEST_FILE_EQ (output, "FOO=BAR\n");
49- TEST_FILE_EQ (output, "BAR=BAZ\n");
50+ TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
51 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
52- TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
53 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
54 TEST_FILE_END (output);
55 fclose (output);
56@@ -722,10 +732,10 @@
57 * the job.
58 */
59 output = fopen (filename, "r");
60+ TEST_FILE_EQ (output, "BAR=BAZ\n");
61 TEST_FILE_EQ (output, "FOO=BAR\n");
62- TEST_FILE_EQ (output, "BAR=BAZ\n");
63- TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
64 TEST_FILE_EQ (output, "UPSTART_INSTANCE=foo\n");
65+ TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
66 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
67 TEST_FILE_END (output);
68 fclose (output);
69@@ -776,11 +786,11 @@
70 * the job.
71 */
72 output = fopen (filename, "r");
73- TEST_FILE_EQ (output, "FOO=SMACK\n");
74 TEST_FILE_EQ (output, "BAR=BAZ\n");
75 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");
76+ TEST_FILE_EQ (output, "FOO=SMACK\n");
77+ TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
78 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
79- TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
80 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
81 TEST_FILE_END (output);
82 fclose (output);
83@@ -831,11 +841,11 @@
84 * the job.
85 */
86 output = fopen (filename, "r");
87- TEST_FILE_EQ (output, "FOO=SMACK\n");
88 TEST_FILE_EQ (output, "BAR=BAZ\n");
89 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");
90+ TEST_FILE_EQ (output, "FOO=SMACK\n");
91+ TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
92 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
93- TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
94 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
95 TEST_FILE_END (output);
96 fclose (output);
97@@ -4337,8 +4347,8 @@
98 waitpid (pid, NULL, 0);
99 output = fopen (filename, "r");
100
101+ TEST_FILE_EQ (output, "FOO=bar\n");
102 TEST_FILE_EQ (output, "PATH=/bin\n");
103- TEST_FILE_EQ (output, "FOO=bar\n");
104 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
105 TEST_FILE_END (output);
106

Subscribers

People subscribed via source and target branches