Skip to content

Commit 5d34fcd

Browse files
committed
Clear project stack in mix teardown
1 parent e63546b commit 5d34fcd

23 files changed

+13
-175
lines changed

lib/iex/test/iex/helpers_test.exs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,6 @@ defmodule IEx.HelpersTest do
300300
end
301301
after
302302
# Clean up the old version left over after l()
303-
:code.purge(Sample)
304303
cleanup_modules([Sample])
305304
end
306305

@@ -331,7 +330,6 @@ defmodule IEx.HelpersTest do
331330
end
332331
after
333332
# Clean up old version produced by the r helper
334-
:code.purge(Sample)
335333
cleanup_modules([Sample])
336334
end
337335

@@ -350,7 +348,6 @@ defmodule IEx.HelpersTest do
350348
assert :sample.hello == :bye
351349
end
352350
after
353-
:code.purge(:sample)
354351
cleanup_modules([:sample])
355352
end
356353

@@ -393,8 +390,8 @@ defmodule IEx.HelpersTest do
393390
defp cleanup_modules(mods) do
394391
Enum.each mods, fn mod ->
395392
File.rm("#{mod}.beam")
393+
:code.purge(mod)
396394
true = :code.delete(mod)
397-
:code.purge mod
398395
end
399396
end
400397

lib/mix/lib/mix/project_stack.ex

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ defmodule Mix.ProjectStack do
4343
call :output_app?
4444
end
4545

46+
@spec clear_stack() :: :ok
47+
def clear_stack do
48+
cast :clear_stack
49+
end
50+
4651
@doc """
4752
Enables the recursion for the project at the top of the stack.
4853
Returns true if recursion was enabled or false if the project
@@ -158,6 +163,10 @@ defmodule Mix.ProjectStack do
158163
{ :noreply, state.update_post_config(&Keyword.merge(&1, value)) }
159164
end
160165

166+
def handle_cast(:clear_stack, State[] = state) do
167+
{ :noreply, state.stack([]).post_config([]) }
168+
end
169+
161170
def handle_cast({ :write_cache, key, value }, State[] = state) do
162171
{ :noreply, state.update_cache(&Dict.put(&1, key, value)) }
163172
end
@@ -193,4 +202,4 @@ defmodule Mix.ProjectStack do
193202
defp project_to_tuple(Project[name: name, config: config, file: file]) do
194203
{ name, config, file }
195204
end
196-
end
205+
end

lib/mix/lib/mix/tasks/loadpaths.ex

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ defmodule Mix.Tasks.Loadpaths do
44
@moduledoc """
55
Load the application and its dependencies paths.
66
7-
## Configuration
8-
9-
* `:load_paths` extra load paths to be added.
10-
They are added with lower priority than the app ones.
11-
127
## Command line options
138
149
* `--no-deps` - do not load dependencies

lib/mix/lib/mix/tasks/local.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ defmodule Mix.Tasks.Local do
2727
end
2828

2929
defp format(expression, args) do
30-
:io_lib.format(expression, args) |> iolist_to_binary
30+
:io_lib.format(expression, args) |> String.from_char_list!
3131
end
3232
end

lib/mix/test/mix/deps/lock_test.exs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ defmodule Mix.Deps.LockTest do
88
:ok
99
end
1010

11-
teardown do
12-
Mix.Project.pop
13-
:ok
14-
end
15-
1611
test "creates new lock and manifest files" do
1712
in_fixture "no_mixfile", fn ->
1813
Mix.Deps.Lock.write [foo: :bar]

lib/mix/test/mix/deps_test.exs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ defmodule Mix.DepsTest do
4141
assert Enum.find deps, &match?(Mix.Dep[app: :uncloned, status: { :unavailable, _ }], &1)
4242
assert Enum.find deps, &match?(Mix.Dep[app: :optional, status: { :unavailable, _ }], &1)
4343
end
44-
after
45-
Mix.Project.pop
4644
end
4745

4846
test "use mix version for dependencies" do
@@ -52,8 +50,6 @@ defmodule Mix.DepsTest do
5250
deps = Mix.Deps.loaded
5351
assert Enum.find deps, &match?(Mix.Dep[app: :ok, status: { :ok, _ }], &1)
5452
end
55-
after
56-
Mix.Project.pop
5753
end
5854

5955
test "raises when no SCM is specified" do
@@ -64,8 +60,6 @@ defmodule Mix.DepsTest do
6460
"expected one of :git, :path or :in_umbrella"
6561
assert_raise Mix.Error, msg, fn -> Mix.Deps.loaded end
6662
end
67-
after
68-
Mix.Project.pop
6963
end
7064

7165
test "does not set the manager before the dependency was loaded" do
@@ -79,8 +73,6 @@ defmodule Mix.DepsTest do
7973
assert nil?(dep.manager)
8074
{ dep, acc or true }
8175
end)
82-
after
83-
Mix.Project.pop
8476
end
8577

8678
defmodule NestedDepsApp do
@@ -101,8 +93,6 @@ defmodule Mix.DepsTest do
10193
in_fixture "deps_status", fn ->
10294
assert Enum.map(Mix.Deps.loaded, &(&1.app)) == [:git_repo, :deps_repo]
10395
end
104-
after
105-
Mix.Project.pop
10696
end
10797

10898
test "nested optional deps are never added" do
@@ -127,8 +117,6 @@ defmodule Mix.DepsTest do
127117

128118
assert Enum.map(Mix.Deps.loaded, &(&1.app)) == [:deps_repo]
129119
end
130-
after
131-
Mix.Project.pop
132120
end
133121

134122
defmodule ConvergedDepsApp do
@@ -150,8 +138,6 @@ defmodule Mix.DepsTest do
150138
in_fixture "deps_status", fn ->
151139
assert Enum.map(Mix.Deps.loaded, &(&1.app)) == [:git_repo, :deps_repo]
152140
end
153-
after
154-
Mix.Project.pop
155141
end
156142

157143
test "correctly order converged deps even with optional dependencies" do
@@ -176,7 +162,5 @@ defmodule Mix.DepsTest do
176162

177163
assert Enum.map(Mix.Deps.loaded, &(&1.app)) == [:git_repo, :deps_repo]
178164
end
179-
after
180-
Mix.Project.pop
181165
end
182166
end

lib/mix/test/mix/project_test.exs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ defmodule Mix.ProjectTest do
2323

2424
assert { SampleProject, _config, "sample" } = Mix.Project.pop
2525
assert nil = Mix.Project.pop
26-
after
27-
Mix.Project.pop
2826
end
2927

3028
test "does not allow the same project to be pushed twice" do
@@ -33,8 +31,6 @@ defmodule Mix.ProjectTest do
3331
assert_raise Mix.Error, %r/Mix.ProjectTest.SampleProject from "another"/, fn ->
3432
Mix.Project.push(SampleProject, "another")
3533
end
36-
after
37-
Mix.Project.pop
3834
end
3935

4036
test "allows nil projects to be pushed twice" do
@@ -48,23 +44,17 @@ defmodule Mix.ProjectTest do
4844
test "retrieves configuration from projects" do
4945
Mix.Project.push(SampleProject)
5046
assert Mix.project[:hello] == "world"
51-
after
52-
Mix.Project.pop
5347
end
5448
5549
test "removes private configuration" do
5650
Mix.Project.push(SampleProject)
5751
assert nil? Mix.project[:app_path]
58-
after
59-
Mix.Project.pop
6052
end
6153
6254
test "reads environment info when a project is set" do
6355
Mix.env(:prod)
6456
Mix.Project.push(EnvProject)
6557
assert Mix.project[:hello] == "new"
66-
after
67-
Mix.Project.pop
6858
end
6959
7060
test "retrieves configuration even when a project is not set" do

lib/mix/test/mix/rebar_test.exs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ defmodule Mix.RebarTest do
6565
true
6666
end
6767
end)
68-
after
69-
Mix.Project.pop
7068
end
7169

7270
test "recurs over sub dirs" do
@@ -111,7 +109,5 @@ defmodule Mix.RebarTest do
111109
assert Enum.any?(load_paths, &String.ends_with?(&1, "git_rebar/ebin"))
112110
assert Enum.any?(load_paths, &String.ends_with?(&1, "rebar_dep/ebin"))
113111
end
114-
after
115-
Mix.Project.pop
116112
end
117113
end

lib/mix/test/mix/tasks/clean_test.exs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ defmodule Mix.Tasks.CleanTest do
2121
:ok
2222
end
2323

24-
teardown do
25-
Mix.Project.pop
26-
:ok
27-
end
28-
2924
test "removes the build application" do
3025
in_fixture "deps_status", fn ->
3126
Mix.Tasks.Compile.run ["--no-deps"]

lib/mix/test/mix/tasks/compile.app_test.exs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ defmodule Mix.Tasks.Compile.AppTest do
4747

4848
assert Mix.Tasks.Compile.App.run([]) == :noop
4949
end
50-
after
51-
Mix.Project.pop
5250
end
5351

5452
test "use custom application settings" do
@@ -61,8 +59,6 @@ defmodule Mix.Tasks.Compile.AppTest do
6159
assert contents =~ "0.2.0"
6260
assert contents =~ "{maxT,infinity}"
6361
end
64-
after
65-
Mix.Project.pop
6662
end
6763

6864
test "application properties validation" do
@@ -87,8 +83,6 @@ defmodule Mix.Tasks.Compile.AppTest do
8783
end
8884
Process.delete(:error)
8985
end
90-
after
91-
Mix.Project.pop
9286
end
9387

9488
test ".app contains description and registered (as required by systools)" do
@@ -105,7 +99,5 @@ defmodule Mix.Tasks.Compile.AppTest do
10599

106100
assert Mix.Tasks.Compile.App.run([]) == :noop
107101
end
108-
after
109-
Mix.Project.pop
110102
end
111103
end

0 commit comments

Comments
 (0)