@@ -7,24 +7,6 @@ Code.require_file("../../test_helper.exs", __DIR__)
77defmodule Mix.Tasks.Compile.AppTest do
88 use MixTest.Case
99
10- defmodule CustomProject do
11- def project do
12- [
13- app: :custom_project ,
14- version: "0.2.0" ,
15- description: "Some UTF-8 dëscriptión"
16- ]
17- end
18-
19- def application do
20- [
21- maxT: :infinity ,
22- applications: [ :example_app , mix: :optional ] ,
23- extra_applications: [ :logger , ex_unit: :optional ]
24- ]
25- end
26- end
27-
2810 defmodule CustomDeps do
2911 def project do
3012 [ app: :custom_deps , version: "0.2.0" , deps: deps ( ) ]
@@ -51,9 +33,13 @@ defmodule Mix.Tasks.Compile.AppTest do
5133 end
5234 end
5335
54- defmodule InvalidProject do
36+ defmodule CustomProject do
5537 def project do
56- [ app: :invalid_project , version: "0.3.0" ]
38+ [
39+ app: :custom_project ,
40+ version: "0.3.0" ,
41+ description: "Some UTF-8 dëscriptión"
42+ ]
5743 end
5844
5945 def application do
@@ -124,20 +110,30 @@ defmodule Mix.Tasks.Compile.AppTest do
124110 test "uses custom application settings" do
125111 in_fixture ( "no_mixfile" , fn ->
126112 Mix.Project . push ( CustomProject )
113+ env = [ foo: [ :one , "two" , 3 , 4 ] , bar: [ { } | % { foo: :bar } ] ]
114+
115+ Process . put ( :application ,
116+ maxT: :infinity ,
117+ applications: [ :example_app , mix: :optional ] ,
118+ extra_applications: [ :logger , ex_unit: :optional ] ,
119+ env: env
120+ )
127121
128122 Mix.Tasks.Compile.Elixir . run ( [ ] )
129123 Mix.Tasks.Compile.App . run ( [ ] )
130124
131125 properties = parse_resource_file ( :custom_project )
132- assert Application . spec ( :custom_project , :vsn ) == ~c" 0.2 .0"
133- assert properties [ :vsn ] == ~c" 0.2 .0"
126+ assert Application . spec ( :custom_project , :vsn ) == ~c" 0.3 .0"
127+ assert properties [ :vsn ] == ~c" 0.3 .0"
134128 assert properties [ :maxT ] == :infinity
135129 assert properties [ :optional_applications ] == [ :ex_unit , :mix ]
136130 assert properties [ :description ] == ~c" Some UTF-8 dëscriptión"
137131
138132 assert properties [ :applications ] ==
139133 [ :kernel , :stdlib , :elixir , :logger , :ex_unit , :example_app , :mix ]
140134
135+ assert properties [ :env ] == [ foo: [ :one , "two" , 3 , 4 ] , bar: [ { } | % { foo: :bar } ] ]
136+
141137 refute Keyword . has_key? ( properties , :extra_applications )
142138 end )
143139 end
@@ -160,7 +156,7 @@ defmodule Mix.Tasks.Compile.AppTest do
160156
161157 test "validates properties" do
162158 in_fixture ( "no_mixfile" , fn ->
163- Mix.Project . push ( InvalidProject )
159+ Mix.Project . push ( CustomProject )
164160
165161 Process . put ( :application , [ :not_a_keyword , applications: [ ] ] )
166162 message = "Application configuration returned from application/0 should be a keyword list"
@@ -252,6 +248,15 @@ defmodule Mix.Tasks.Compile.AppTest do
252248 assert_raise Mix.Error , message , fn ->
253249 Mix.Tasks.Compile.App . run ( [ ] )
254250 end
251+
252+ Process . put ( :application , env: [ foo: make_ref ( ) ] )
253+
254+ message =
255+ ~r" \" def application\" has a term which cannot be written to \. app files: #Reference"
256+
257+ assert_raise Mix.Error , message , fn ->
258+ Mix.Tasks.Compile.App . run ( [ ] )
259+ end
255260 end )
256261 end
257262
0 commit comments