@@ -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
0 commit comments