Skip to content

Commit 5242b28

Browse files
committed
test: Fix running multiple tests in one session
1 parent 85b52b9 commit 5242b28

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

.github/workflows/elixir.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,9 @@ jobs:
5151
run: mix ci
5252

5353
- name: Run tests
54-
run: mix test
54+
run: |
55+
# Need to install for app `:devenv_new` to be available
56+
mix archive.build
57+
mix archive.install devenv_new-*.ez --force
58+
mix test
5559

test/devenv_new_test.exs

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,18 @@ defmodule DevenvNewTest do
1212
File.cd!(original_cwd)
1313
end)
1414

15-
%{original_cwd: original_cwd}
15+
%{original_cwd: original_cwd, tmp_dir: tmp_dir}
1616
end
1717

1818
describe "devenv.new wrapper" do
19-
test "generates correct devenv.nix for elixir+postgres" do
19+
test "generates correct devenv.nix for elixir+postgres", %{tmp_dir: tmp_dir} do
2020
project_name = "test_app"
2121

2222
# Mock devenv init command success
23-
with_mock_devenv_init(fn ->
23+
with_mock_devenv_init(tmp_dir, fn ->
2424
# Use the full Mix task to create the project
2525
capture_io(fn ->
26+
Mix.Task.reenable("test.mock")
2627
Mix.Tasks.Devenv.New.run(["test.mock", project_name, "--devenv", "postgres"])
2728
end)
2829

@@ -38,13 +39,15 @@ defmodule DevenvNewTest do
3839
end)
3940
end
4041

41-
test "generates correct devenv.nix for all features" do
42+
test "generates correct devenv.nix for all features", %{tmp_dir: tmp_dir} do
4243
project_name = "test_app"
4344

44-
# Mock devenv init command success
45-
with_mock_devenv_init(fn ->
45+
# Mock devenv init command success
46+
with_mock_devenv_init(tmp_dir, fn ->
4647
# Use the full Mix task to create the project with all features
4748
capture_io(fn ->
49+
Mix.Task.reenable("test.mock")
50+
4851
Mix.Tasks.Devenv.New.run([
4952
"test.mock",
5053
project_name,
@@ -65,18 +68,26 @@ defmodule DevenvNewTest do
6568
end)
6669
end
6770

68-
test "handles missing project name gracefully" do
71+
test "handles missing project name gracefully", %{tmp_dir: tmp_dir} do
6972
assert catch_exit(
70-
capture_io(:stderr, fn ->
71-
Mix.Tasks.Devenv.New.run(["test.mock"])
73+
# Mock devenv init command success
74+
with_mock_devenv_init(tmp_dir, fn ->
75+
capture_io(:stderr, fn ->
76+
Mix.Task.reenable("test.mock")
77+
Mix.Tasks.Devenv.New.run(["test.mock"])
78+
end)
7279
end)
7380
) == {:shutdown, 1}
7481
end
7582

76-
test "handles missing embedded task gracefully" do
83+
test "handles missing embedded task gracefully", %{tmp_dir: tmp_dir} do
7784
assert catch_exit(
78-
capture_io(:stderr, fn ->
79-
Mix.Tasks.Devenv.New.run([])
85+
# Mock devenv init command success
86+
with_mock_devenv_init(tmp_dir, fn ->
87+
capture_io(:stderr, fn ->
88+
Mix.Task.reenable("test.mock")
89+
Mix.Tasks.Devenv.New.run([])
90+
end)
8091
end)
8192
) == {:shutdown, 1}
8293
end
@@ -102,9 +113,9 @@ defmodule DevenvNewTest do
102113
|> String.trim()
103114
end
104115

105-
defp with_mock_devenv_init(test_fn) do
116+
defp with_mock_devenv_init(tmp_dir, test_fn) do
106117
# Create a mock devenv binary that always succeeds
107-
mock_devenv_path = Path.join(System.tmp_dir!(), "devenv")
118+
mock_devenv_path = Path.join(tmp_dir, "devenv")
108119

109120
File.write!(mock_devenv_path, """
110121
#!/bin/bash
@@ -113,6 +124,10 @@ defmodule DevenvNewTest do
113124
echo "devenv initialized successfully"
114125
exit 0
115126
;;
127+
--version)
128+
echo "devenv 1.6.1 (aarch64-darwin)"
129+
exit 0
130+
;;
116131
*)
117132
echo "Mock devenv: unknown command $1"
118133
exit 1

test/fixtures/test_mock_task.ex

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ defmodule Mix.Tasks.Test.Mock do
99
def run(argv) do
1010
case argv do
1111
[project_name | _rest] ->
12-
# Create project directory
1312
File.mkdir_p!(project_name)
14-
15-
# Change to project directory (like real generators do)
1613
File.cd!(project_name)
1714

1815
# Create a minimal project structure

0 commit comments

Comments
 (0)