@@ -24,7 +24,7 @@ defmodule Mix.Tasks.Igniter.NewTest do
2424 "mix" ,
2525 [ "igniter.new" , project_name , "--git" , "--yes" , "--no-installer-version-check" ] ,
2626 stderr_to_stdout: true ,
27- env: [ { "MIX_ENV" , "test" } ]
27+ env: [ { "MIX_ENV" , "test" } , { "IGNITER_SKIP_GIT_CHECK" , "true" } ]
2828 )
2929
3030 if exit_code != 0 do
@@ -112,6 +112,42 @@ defmodule Mix.Tasks.Igniter.NewTest do
112112 end
113113 end
114114
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+
115151 @ tag :integration
116152 test "git functionality works with other flags" , % { tmp_dir: tmp_dir } do
117153 unless git_available? ( ) do
@@ -137,7 +173,7 @@ defmodule Mix.Tasks.Igniter.NewTest do
137173 "--no-installer-version-check"
138174 ] ,
139175 stderr_to_stdout: true ,
140- env: [ { "MIX_ENV" , "test" } ]
176+ env: [ { "MIX_ENV" , "test" } , { "IGNITER_SKIP_GIT_CHECK" , "true" } ]
141177 )
142178
143179 assert exit_code == 0 ,
0 commit comments