@@ -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