@@ -9,28 +9,30 @@ defmodule Mix.Tasks.App.StartTest do
9
9
end
10
10
end
11
11
12
- defmodule BadReturnSample do
12
+ defmodule WrongElixirProject do
13
13
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" ]
19
15
end
20
16
end
21
17
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 )
27
21
end
22
+ :ok
28
23
end
29
24
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 )
33
29
end
30
+ :ok
31
+ end
32
+
33
+ teardown do
34
+ :error_logger . tty ( true )
35
+ :ok
34
36
end
35
37
36
38
test "recompiles project if elixir version changed" do
@@ -89,39 +91,50 @@ defmodule Mix.Tasks.App.StartTest do
89
91
end
90
92
end
91
93
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
95
102
end
96
103
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
103
109
end
104
110
end
105
111
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
108
115
116
+ @tag app: :bad_return_sample
117
+ test "start raises on :error" do
118
+ Mix.Project.push BadReturnSample
109
119
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)
113
125
end
114
126
end
115
127
end
116
128
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
118
131
Mix.Project.push BadReturnSample
119
-
120
132
in_fixture "no_mixfile", fn ->
133
+ Process.put(:application_definition, mod: { BadReturnApp, [] })
121
134
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 )
125
138
end
126
139
end
127
140
end
0 commit comments