@@ -24,7 +24,7 @@ defmodule Mix.Tasks.Igniter.NewTest do
24
24
"mix" ,
25
25
[ "igniter.new" , project_name , "--git" , "--yes" , "--no-installer-version-check" ] ,
26
26
stderr_to_stdout: true ,
27
- env: [ { "MIX_ENV" , "test" } ]
27
+ env: [ { "MIX_ENV" , "test" } , { "IGNITER_SKIP_GIT_CHECK" , "true" } ]
28
28
)
29
29
30
30
if exit_code != 0 do
@@ -112,6 +112,42 @@ defmodule Mix.Tasks.Igniter.NewTest do
112
112
end
113
113
end
114
114
115
+ @ tag :integration
116
+ test "does not run git init when already in git project" , % { tmp_dir: tmp_dir } do
117
+ if ! git_available? ( ) do
118
+ :ok
119
+ else
120
+ project_parent = "parent_folder"
121
+ project_name = "child_project_with_git_parent"
122
+
123
+ original_cwd = File . cwd! ( )
124
+
125
+ try do
126
+ File . cd! ( tmp_dir )
127
+ File . mkdir! ( project_parent )
128
+ File . cd! ( project_parent )
129
+ System . cmd ( "git" , [ "init" , "." ] )
130
+ assert File . exists? ( ".git" ) , "Git was not successfully set up in the parent folder"
131
+
132
+ # Run igniter.new with --git flag using System.cmd
133
+ { _output , exit_code } =
134
+ System . cmd (
135
+ "mix" ,
136
+ [ "igniter.new" , project_name , "--git" , "--yes" , "--no-installer-version-check" ] ,
137
+ stderr_to_stdout: true ,
138
+ env: [ { "MIX_ENV" , "test" } ]
139
+ )
140
+
141
+ assert exit_code == 0
142
+
143
+ File . cd! ( project_name )
144
+ refute File . exists? ( ".git" ) , "git should not be initialized when already in git project"
145
+ after
146
+ File . cd! ( original_cwd )
147
+ end
148
+ end
149
+ end
150
+
115
151
@ tag :integration
116
152
test "git functionality works with other flags" , % { tmp_dir: tmp_dir } do
117
153
unless git_available? ( ) do
@@ -137,7 +173,7 @@ defmodule Mix.Tasks.Igniter.NewTest do
137
173
"--no-installer-version-check"
138
174
] ,
139
175
stderr_to_stdout: true ,
140
- env: [ { "MIX_ENV" , "test" } ]
176
+ env: [ { "MIX_ENV" , "test" } , { "IGNITER_SKIP_GIT_CHECK" , "true" } ]
141
177
)
142
178
143
179
assert exit_code == 0 ,
0 commit comments