@@ -59,33 +59,89 @@ var _ = Describe("Build", func() {
5959 }
6060
6161 var checkConfigureCmd = func (cmd exec.Cmd ) {
62- Expect (cmd .String ()).To (ContainSubstring ("docker run" ))
63- Expect (cmd .String ()).To (ContainSubstring ("--env DISCOURSE_DEVELOPER_EMAILS" ))
64- Expect (cmd .String ()).To (ContainSubstring ("--env SKIP_EMBER_CLI_COMPILE=1" ))
65- // we commit, we need the container to stick around after it is stopped.
66- Expect (cmd .String ()).ToNot (ContainSubstring ("--rm" ))
67-
68- // we don't expose ports on configure command
69- Expect (cmd .String ()).ToNot (ContainSubstring ("-p 80" ))
70- Expect (cmd .Env ).To (ContainElement ("DISCOURSE_DB_PASSWORD=SOME_SECRET" ))
62+ Expect (cmd .String ()).To (Equal (
63+ "/usr/local/bin/docker run " +
64+ "--env DISCOURSE_DB_HOST " +
65+ "--env DISCOURSE_DB_PASSWORD " +
66+ "--env DISCOURSE_DB_PORT " +
67+ "--env DISCOURSE_DB_SOCKET " +
68+ "--env DISCOURSE_DEVELOPER_EMAILS " +
69+ "--env DISCOURSE_HOSTNAME " +
70+ "--env DISCOURSE_REDIS_HOST " +
71+ "--env DISCOURSE_SMTP_ADDRESS " +
72+ "--env DISCOURSE_SMTP_PASSWORD " +
73+ "--env DISCOURSE_SMTP_USER_NAME " +
74+ "--env LANG " +
75+ "--env LANGUAGE " +
76+ "--env LC_ALL " +
77+ "--env MULTI " +
78+ "--env RAILS_ENV " +
79+ "--env REPLACED " +
80+ "--env RUBY_GC_HEAP_GROWTH_MAX_SLOTS " +
81+ "--env RUBY_GC_HEAP_INIT_SLOTS " +
82+ "--env RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR " +
83+ "--env UNICORN_SIDEKIQS " +
84+ "--env UNICORN_WORKERS " +
85+ "--env SKIP_EMBER_CLI_COMPILE=1 " +
86+ "--volume /var/discourse/shared/web-only:/shared " +
87+ "--volume /var/discourse/shared/web-only/log/var-log:/var/log " +
88+ "--link data:data " +
89+ "--shm-size=512m " +
90+ "--restart=no " +
91+ "--interactive " +
92+ "--expose 100 " +
93+ "--name discourse-build-test " +
94+ "local_discourse/test /bin/bash -c /usr/local/bin/pups --stdin --tags=db,precompile" ,
95+ ))
96+
97+ Expect (cmd .Env ).To (Equal ([]string {
98+ "DISCOURSE_DB_HOST=data" ,
99+ "DISCOURSE_DB_PASSWORD=SOME_SECRET" ,
100+ "DISCOURSE_DB_PORT=" ,
101+ "DISCOURSE_DB_SOCKET=" ,
102+ 103+ "DISCOURSE_HOSTNAME=discourse.example.com" ,
104+ "DISCOURSE_REDIS_HOST=data" ,
105+ "DISCOURSE_SMTP_ADDRESS=smtp.example.com" ,
106+ "DISCOURSE_SMTP_PASSWORD=pa$$word" ,
107+ 108+ "LANG=en_US.UTF-8" ,
109+ "LANGUAGE=en_US.UTF-8" ,
110+ "LC_ALL=en_US.UTF-8" ,
111+ "MULTI=test\n multiline with some spaces\n var\n " ,
112+ "RAILS_ENV=production" ,
113+ "REPLACED=test/test/test" ,
114+ "RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000" ,
115+ "RUBY_GC_HEAP_INIT_SLOTS=400000" ,
116+ "RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5" ,
117+ "UNICORN_SIDEKIQS=1" ,
118+ "UNICORN_WORKERS=3" ,
119+ }))
120+
71121 buf := new (strings.Builder )
72122 io .Copy (buf , cmd .Stdin )
73123 // docker run's stdin is a pups config
124+
125+ // web.template.yml is merged with the test config
74126 Expect (buf .String ()).To (ContainSubstring ("path: /etc/service/nginx/run" ))
127+ Expect (buf .String ()).To (ContainSubstring (`exec: echo "custom test command"` ))
75128 }
76129
77130 // commit on configure
78131 var checkConfigureCommit = func (cmd exec.Cmd ) {
79- Expect (cmd .String ()).To (ContainSubstring ("docker commit" ))
80- Expect (cmd .String ()).To (ContainSubstring ("--change CMD [\" /sbin/boot\" ]" ))
81- Expect (cmd .String ()).To (ContainSubstring ("discourse-build" ))
82- Expect (cmd .String ()).To (ContainSubstring ("local_discourse/test" ))
83- Expect (cmd .Env ).ToNot (ContainElement ("DISCOURSE_DB_PASSWORD=SOME_SECRET" ))
132+ Expect (cmd .String ()).To (MatchRegexp (
133+ "/usr/local/bin/docker commit " +
134+ `--change LABEL org\.opencontainers\.image\.created="[\d\-T:+]+" ` +
135+ `--change CMD \["/sbin/boot"\] ` +
136+ "discourse-build-test local_discourse/test" ,
137+ ))
138+
139+ Expect (cmd .Env ).To (BeNil ())
84140 }
85141
86142 // configure also cleans up
87143 var checkConfigureClean = func (cmd exec.Cmd ) {
88- Expect (cmd .String ()).To (ContainSubstring ( " docker rm -f discourse-build-" ))
144+ Expect (cmd .String ()).To (Equal ( "/usr/local/bin/ docker rm --force discourse-build-test " ))
89145 }
90146
91147 It ("Should run docker build with correct arguments" , func () {
@@ -99,6 +155,7 @@ var _ = Describe("Build", func() {
99155 runner := ddocker.DockerConfigureCmd {Config : "test" }
100156 runner .Run (cli , & ctx )
101157 Expect (len (RanCmds )).To (Equal (3 ))
158+
102159 checkConfigureCmd (RanCmds [0 ])
103160 checkConfigureCommit (RanCmds [1 ])
104161 checkConfigureClean (RanCmds [2 ])
0 commit comments