@@ -9,28 +9,30 @@ defmodule Mix.Tasks.App.StartTest do
99 end
1010 end
1111
12- defmodule BadReturnSample do
12+ defmodule WrongElixirProject do
1313 def project do
14- [ app: :bad_return_app , version: "0.1.0" ]
15- end
16- # Configuration for the OTP application
17- def application do
18- [ mod: { Mix.Tasks.App.StartTest.BadReturnApp , [ ] } ]
14+ [ app: :error , version: "0.1.0" , elixir: "~> 0.8.1" ]
1915 end
2016 end
2117
22- defmodule BadReturnApp do
23- use Application.Behaviour
24-
25- def start ( _type , _args ) do
26- :bar # Bad return
18+ setup config do
19+ if config [ :app ] do
20+ :error_logger . tty ( false )
2721 end
22+ :ok
2823 end
2924
30- defmodule WrongElixirProject do
31- def project do
32- [ app: :error , version: "0.1.0" , elixir: "~> 0.8.1" ]
25+ teardown config do
26+ if app = config [ :app ] do
27+ :application . stop ( app )
28+ :application . unload ( app )
3329 end
30+ :ok
31+ end
32+
33+ teardown do
34+ :error_logger . tty ( true )
35+ :ok
3436 end
3537
3638 test "recompiles project if elixir version changed" do
@@ -89,39 +91,50 @@ defmodule Mix.Tasks.App.StartTest do
8991 end
9092 end
9193
92- test "start does nothing if project[:app] is nil" do
93- project = Mix.project
94- assert Mix.Tasks.App.Start.start(project) == nil
94+ defmodule BadReturnSample do
95+ def project do
96+ [app: :bad_return_sample, version: "0.1.0"]
97+ end
98+
99+ def application do
100+ Process.get(:application_definition)
101+ end
95102 end
96103
97- test "start runs successfully in okay case" do
98- Mix.Project.push MixTest.Case.Sample
99- in_fixture "no_mixfile", fn ->
100- Mix.Tasks.Compile.run []
101- project = Mix.project
102- assert Mix.Tasks.App.Start.start(project) == :ok
104+ defmodule BadReturnApp do
105+ use Application.Behaviour
106+
107+ def start(_type, _args) do
108+ :bad # Bad return
103109 end
104110 end
105111
106- test "start raises an exception on :error" do
107- Mix.Project.push AppStartSample
112+ test "start does nothing if app is nil" do
113+ assert Mix.Tasks.App.Start.start(nil) == :error
114+ end
108115
116+ @tag app: :bad_return_sample
117+ test "start raises on :error" do
118+ Mix.Project.push BadReturnSample
109119 in_fixture "no_mixfile", fn ->
110- project = Mix.project
111- assert_raise Mix.Error, fn ->
112- Mix.Tasks.App.Start.start(project)
120+ Process.put(:application_definition, applications: [:unknown])
121+ Mix.Tasks.Compile.run []
122+
123+ assert_raise Mix.Error, %r"Could not start application bad_return_sample: ", fn ->
124+ Mix.Tasks.App.Start.start(:bad_return_sample)
113125 end
114126 end
115127 end
116128
117- test "start raises a stacktrace on bad_return" do
129+ @tag app: :bad_return_sample
130+ test "start points to report on bad return" do
118131 Mix.Project.push BadReturnSample
119-
120132 in_fixture "no_mixfile", fn ->
133+ Process.put(:application_definition, mod: { BadReturnApp, [] })
121134 Mix.Tasks.Compile.run []
122- project = Mix.project
123- assert_raise ErlangError , fn ->
124- Mix.Tasks.App.Start.start(project )
135+
136+ assert_raise Mix.Error, %r"Could not start application bad_return_sample, please see report above" , fn ->
137+ Mix.Tasks.App.Start.start(:bad_return_sample )
125138 end
126139 end
127140 end
0 commit comments