@@ -43,7 +43,7 @@ defmodule MixTest do
4343      assert  Protocol . consolidated? ( InstallTest.Protocol ) 
4444
4545      assert_received  { :mix_shell ,  :info ,  [ "==> install_test" ] } 
46-       assert_received  { :mix_shell ,  :info ,  [ "Compiling 2  files (.ex)" ] } 
46+       assert_received  { :mix_shell ,  :info ,  [ "Compiling 3  files (.ex)" ] } 
4747      assert_received  { :mix_shell ,  :info ,  [ "Generated install_test app" ] } 
4848      refute_received  _ 
4949
@@ -71,7 +71,7 @@ defmodule MixTest do
7171
7272      assert  File . dir? ( Path . join ( tmp_dir ,  "installs" ) ) 
7373      assert_received  { :mix_shell ,  :info ,  [ "==> install_test" ] } 
74-       assert_received  { :mix_shell ,  :info ,  [ "Compiling 2  files (.ex)" ] } 
74+       assert_received  { :mix_shell ,  :info ,  [ "Compiling 3  files (.ex)" ] } 
7575      assert_received  { :mix_shell ,  :info ,  [ "Generated install_test app" ] } 
7676      refute_received  _ 
7777
@@ -361,7 +361,7 @@ defmodule MixTest do
361361        ] ) 
362362
363363        assert_received  { :mix_shell ,  :info ,  [ "==> install_test" ] } 
364-         assert_received  { :mix_shell ,  :info ,  [ "Compiling 2  files (.ex)" ] } 
364+         assert_received  { :mix_shell ,  :info ,  [ "Compiling 3  files (.ex)" ] } 
365365        assert_received  { :mix_shell ,  :info ,  [ "Generated install_test app" ] } 
366366        refute_received  _ 
367367
@@ -430,6 +430,29 @@ defmodule MixTest do
430430      System . delete_env ( "MIX_INSTALL_RESTORE_PROJECT_DIR" ) 
431431    end 
432432
433+     test  "custom compilers" ,  % { tmp_dir:  tmp_dir }  do 
434+       Mix . install ( 
435+         [ 
436+           { :install_test ,  path:  Path . join ( tmp_dir ,  "install_test" ) } 
437+         ] , 
438+         compilers:  [ :elixir ,  :install_test ] 
439+       ) 
440+ 
441+       assert  File . dir? ( Path . join ( tmp_dir ,  "installs" ) ) 
442+ 
443+       assert  Protocol . consolidated? ( InstallTest.Protocol ) 
444+ 
445+       assert_received  { :mix_shell ,  :info ,  [ "==> install_test" ] } 
446+       assert_received  { :mix_shell ,  :info ,  [ "Compiling 3 files (.ex)" ] } 
447+       assert_received  { :mix_shell ,  :info ,  [ "Generated install_test app" ] } 
448+       assert_received  { :mix_shell ,  :info ,  [ "==> mix_install" ] } 
449+       assert_received  { :mix_shell ,  :info ,  [ "Hello from custom compiler!" ] } 
450+       refute_received  _ 
451+ 
452+       assert  List . keyfind ( Application . started_applications ( ) ,  :install_test ,  0 ) 
453+       assert  apply ( InstallTest ,  :hello ,  [ ] )  ==  :world 
454+     end 
455+ 
433456    test  "installed?" ,  % { tmp_dir:  tmp_dir }  do 
434457      refute  Mix . installed? ( ) 
435458
@@ -509,6 +532,20 @@ defmodule MixTest do
509532      end 
510533      """ ) 
511534
535+       File . mkdir_p! ( "#{ tmp_dir }  /install_test/lib/mix/tasks/compile/" ) 
536+ 
537+       File . write! ( "#{ tmp_dir }  /install_test/lib/mix/tasks/compile/install_test.ex" ,  """ 
538+       defmodule Mix.Tasks.Compile.InstallTest do 
539+         use Mix.Task.Compiler 
540+ 
541+         def run(_args) do 
542+           Mix.shell().info("Hello from custom compiler!") 
543+ 
544+           :noop 
545+         end 
546+       end 
547+       """ ) 
548+ 
512549      [ tmp_dir:  tmp_dir ] 
513550    end 
514551
0 commit comments