@@ -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" ]
@@ -70,4 +88,41 @@ defmodule Mix.Tasks.App.StartTest do
70
88
Mix.Tasks.App.Start.run ["--no-start", "--no-elixir-version-check"]
71
89
end
72
90
end
91
+
92
+ test "start does nothing if project[:app] is nil" do
93
+ project = Mix.project
94
+ assert Mix.Tasks.App.Start.start(project) == nil
95
+ end
96
+
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
103
+ end
104
+ end
105
+
106
+ test "start raises an exception on :error" do
107
+ Mix.Project.push AppStartSample
108
+
109
+ in_fixture "no_mixfile", fn ->
110
+ project = Mix.project
111
+ assert_raise Mix.Error, fn ->
112
+ Mix.Tasks.App.Start.start(project)
113
+ end
114
+ end
115
+ end
116
+
117
+ test "start raises a stacktrace on bad_return" do
118
+ Mix.Project.push BadReturnSample
119
+
120
+ in_fixture "no_mixfile", fn ->
121
+ Mix.Tasks.Compile.run []
122
+ project = Mix.project
123
+ assert_raise ErlangError, fn ->
124
+ Mix.Tasks.App.Start.start(project)
125
+ end
126
+ end
127
+ end
73
128
end
0 commit comments