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
=== modified file 'ChangeLog'
--- ChangeLog 2012-11-23 11:36:47 +0000
+++ ChangeLog 2012-11-25 09:43:25 +0000
@@ -1,3 +1,10 @@
12012-11-25 Steve Langasek <steve.langasek@ubuntu.com>
2
3 * init/tests/test_job_process.c: POSIX does not guarantee any
4 particular ordering of environ, so sort the contents before
5 printing them. This will fix the recipe build failures in the
6 ppa builders.
7
12012-11-23 James Hunt <james.hunt@ubuntu.com>82012-11-23 James Hunt <james.hunt@ubuntu.com>
29
3 [ Colin King <colin.king@ubuntu.com> ]10 [ Colin King <colin.king@ubuntu.com> ]
411
=== modified file 'init/tests/test_job_process.c'
--- init/tests/test_job_process.c 2012-11-18 18:21:54 +0000
+++ init/tests/test_job_process.c 2012-11-25 09:43:25 +0000
@@ -163,6 +163,12 @@
163 return 1;163 return 1;
164}164}
165165
166static int
167strcmp_compar (const void *a, const void *b)
168{
169 return strcmp(*(char * const *)a, *(char * const *)b);
170}
171
166static void172static void
167child (enum child_tests test,173child (enum child_tests test,
168 const char *filename)174 const char *filename)
@@ -203,6 +209,10 @@
203 fprintf (out, "wd: %s\n", path);209 fprintf (out, "wd: %s\n", path);
204 break;210 break;
205 case TEST_ENVIRONMENT:211 case TEST_ENVIRONMENT:
212 /* guarantee output ordering */
213 for (i = 0; environ[i]; i++);
214 qsort (environ, i, sizeof (environ[0]), strcmp_compar);
215
206 for (char **env = environ; *env; env++)216 for (char **env = environ; *env; env++)
207 fprintf (out, "%s\n", *env);217 fprintf (out, "%s\n", *env);
208 break;218 break;
@@ -669,10 +679,10 @@
669 * the job.679 * the job.
670 */680 */
671 output = fopen (filename, "r");681 output = fopen (filename, "r");
682 TEST_FILE_EQ (output, "BAR=BAZ\n");
672 TEST_FILE_EQ (output, "FOO=BAR\n");683 TEST_FILE_EQ (output, "FOO=BAR\n");
673 TEST_FILE_EQ (output, "BAR=BAZ\n");684 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
674 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");685 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
675 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
676 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");686 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
677 TEST_FILE_END (output);687 TEST_FILE_END (output);
678 fclose (output);688 fclose (output);
@@ -722,10 +732,10 @@
722 * the job.732 * the job.
723 */733 */
724 output = fopen (filename, "r");734 output = fopen (filename, "r");
735 TEST_FILE_EQ (output, "BAR=BAZ\n");
725 TEST_FILE_EQ (output, "FOO=BAR\n");736 TEST_FILE_EQ (output, "FOO=BAR\n");
726 TEST_FILE_EQ (output, "BAR=BAZ\n");
727 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
728 TEST_FILE_EQ (output, "UPSTART_INSTANCE=foo\n");737 TEST_FILE_EQ (output, "UPSTART_INSTANCE=foo\n");
738 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
729 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");739 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
730 TEST_FILE_END (output);740 TEST_FILE_END (output);
731 fclose (output);741 fclose (output);
@@ -776,11 +786,11 @@
776 * the job.786 * the job.
777 */787 */
778 output = fopen (filename, "r");788 output = fopen (filename, "r");
779 TEST_FILE_EQ (output, "FOO=SMACK\n");
780 TEST_FILE_EQ (output, "BAR=BAZ\n");789 TEST_FILE_EQ (output, "BAR=BAZ\n");
781 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");790 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");
791 TEST_FILE_EQ (output, "FOO=SMACK\n");
792 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
782 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");793 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
783 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
784 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");794 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
785 TEST_FILE_END (output);795 TEST_FILE_END (output);
786 fclose (output);796 fclose (output);
@@ -831,11 +841,11 @@
831 * the job.841 * the job.
832 */842 */
833 output = fopen (filename, "r");843 output = fopen (filename, "r");
834 TEST_FILE_EQ (output, "FOO=SMACK\n");
835 TEST_FILE_EQ (output, "BAR=BAZ\n");844 TEST_FILE_EQ (output, "BAR=BAZ\n");
836 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");845 TEST_FILE_EQ (output, "CRACKLE=FIZZ\n");
846 TEST_FILE_EQ (output, "FOO=SMACK\n");
847 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
837 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");848 TEST_FILE_EQ (output, "UPSTART_JOB=test\n");
838 TEST_FILE_EQ (output, "UPSTART_INSTANCE=\n");
839 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");849 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
840 TEST_FILE_END (output);850 TEST_FILE_END (output);
841 fclose (output);851 fclose (output);
@@ -4337,8 +4347,8 @@
4337 waitpid (pid, NULL, 0);4347 waitpid (pid, NULL, 0);
4338 output = fopen (filename, "r");4348 output = fopen (filename, "r");
43394349
4350 TEST_FILE_EQ (output, "FOO=bar\n");
4340 TEST_FILE_EQ (output, "PATH=/bin\n");4351 TEST_FILE_EQ (output, "PATH=/bin\n");
4341 TEST_FILE_EQ (output, "FOO=bar\n");
4342 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");4352 TEST_FILE_EQ (output, "UPSTART_NO_SESSIONS=1\n");
4343 TEST_FILE_END (output);4353 TEST_FILE_END (output);
43444354

Subscribers

People subscribed via source and target branches