@@ -9,6 +9,24 @@ defmodule Mix.Tasks.App.StartTest do
9
9
end
10
10
end
11
11
12
+ defmodule BadReturnSample do
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 , [ ] } ]
19
+ end
20
+ end
21
+
22
+ defmodule BadReturnApp do
23
+ use Application.Behaviour
24
+
25
+ def start ( _type , _args ) do
26
+ :bar # Bad return
27
+ end
28
+ end
29
+
12
30
defmodule WrongElixirProject do
13
31
def project do
14
32
[ app: :error , version: "0.1.0" , elixir: "~> 0.8.1" ]
@@ -76,4 +94,41 @@ defmodule Mix.Tasks.App.StartTest do
76
94
after
77
95
purge [ A , B , C ]
78
96
end
97
+
98
+ test "start does nothing if project[:app] is nil" do
99
+ project = Mix . project
100
+ assert Mix.Tasks.App.Start . start ( project ) == nil
101
+ end
102
+
103
+ test "start runs successfully in okay case" do
104
+ Mix.Project . push MixTest.Case.Sample
105
+ in_fixture "no_mixfile" , fn ->
106
+ Mix.Tasks.Compile . run [ ]
107
+ project = Mix . project
108
+ assert Mix.Tasks.App.Start . start ( project ) == :ok
109
+ end
110
+ end
111
+
112
+ test "start raises an exception on :error" do
113
+ Mix.Project . push AppStartSample
114
+
115
+ in_fixture "no_mixfile" , fn ->
116
+ project = Mix . project
117
+ assert_raise Mix.Error , fn ->
118
+ Mix.Tasks.App.Start . start ( project )
119
+ end
120
+ end
121
+ end
122
+
123
+ test "start raises a stacktrace on bad_return" do
124
+ Mix.Project . push BadReturnSample
125
+
126
+ in_fixture "no_mixfile" , fn ->
127
+ Mix.Tasks.Compile . run [ ]
128
+ project = Mix . project
129
+ assert_raise ErlangError , fn ->
130
+ Mix.Tasks.App.Start . start ( project )
131
+ end
132
+ end
133
+ end
79
134
end
0 commit comments