@@ -39,6 +39,12 @@ defmodule Mix.Tasks.DepsTest do
3939 end
4040 end
4141
42+ defmodule NoSCMApp do
43+ def project do
44+ [ deps: [ { :ok , "~> 0.1" , not_really: :ok } ] ]
45+ end
46+ end
47+
4248 test "prints list of dependencies and their status" do
4349 Mix.Project . push DepsApp
4450
@@ -116,6 +122,20 @@ defmodule Mix.Tasks.DepsTest do
116122 end
117123 end
118124
125+ test "raises when no SCM is specified" do
126+ Mix.Project . push NoSCMApp
127+
128+ in_fixture "deps_status" , fn ->
129+ Mix.Tasks.Deps . run [ ]
130+
131+ msg = " the dependency defined in mix.exs did not specify a supported scm, " <>
132+ "expected one of :git, :path, :in_umbrella " <>
133+ "or the package manager Hex to be installed"
134+ assert_received { :mix_shell , :info , [ "* ok" ] }
135+ assert_received { :mix_shell , :info , [ ^ msg ] }
136+ end
137+ end
138+
119139 test "checks list of dependencies and their status with success" do
120140 Mix.Project . push SuccessfulDepsApp
121141
@@ -312,6 +332,19 @@ defmodule Mix.Tasks.DepsTest do
312332 end
313333 end
314334
335+ defmodule OverridenSCMApp do
336+ def project do
337+ [
338+ app: :raw_sample ,
339+ version: "0.1.0" ,
340+ deps: [
341+ { :noscm_repo , path: "custom/noscm_repo" } ,
342+ { :git_repo , "0.1.0" , git: MixTest.Case . fixture_path ( "git_repo" ) , override: true }
343+ ]
344+ ]
345+ end
346+ end
347+
315348 test "fails on missing dependencies" do
316349 Mix.Project . push SuccessfulDepsApp
317350
@@ -477,6 +510,18 @@ defmodule Mix.Tasks.DepsTest do
477510 purge [ GitRepo , GitRepo.Mix ]
478511 end
479512
513+ test "overrides unspecified SCM" do
514+ Mix.Project . push OverridenSCMApp
515+
516+ in_fixture "deps_status" , fn ->
517+ Mix.Tasks.Deps.Get . run [ ]
518+ message = "* Getting git_repo (#{ fixture_path ( "git_repo" ) } )"
519+ assert_received { :mix_shell , :info , [ ^ message ] }
520+ end
521+ after
522+ purge [ GitRepo , GitRepo.Mix ]
523+ end
524+
480525 test "updates parent dependencies" do
481526 Mix.Project . push NestedDepsApp
482527
0 commit comments