@@ -13,6 +13,7 @@ defmodule Sentry.Mixfile do
1313 package: package ( ) ,
1414 deps: deps ( ) ,
1515 elixirc_paths: elixirc_paths ( Mix . env ( ) ) ,
16+ test_paths: test_paths ( System . get_env ( "SENTRY_INTEGRATION" ) ) ,
1617 dialyzer: [
1718 flags: [ :unmatched_returns , :error_handling , :extra_return ] ,
1819 plt_file: { :no_warn , "plts/dialyzer.plt" } ,
@@ -22,7 +23,9 @@ defmodule Sentry.Mixfile do
2223 ] ,
2324 test_coverage: [ tool: ExCoveralls ] ,
2425 preferred_cli_env: [
25- "coveralls.html": :test
26+ "coveralls.html": :test ,
27+ "test.all": :test ,
28+ "test.integrations": :test
2629 ] ,
2730 name: "Sentry" ,
2831 docs: [
@@ -83,6 +86,9 @@ defmodule Sentry.Mixfile do
8386 defp elixirc_paths ( :test ) , do: [ "test/support" ] ++ elixirc_paths ( :dev )
8487 defp elixirc_paths ( _other ) , do: [ "lib" ]
8588
89+ defp test_paths ( nil ) , do: [ "test" ]
90+ defp test_paths ( integration ) , do: [ "test_integrations/#{ integration } /test" ]
91+
8692 defp deps do
8793 [
8894 { :nimble_options , "~> 1.0" } ,
@@ -123,6 +129,42 @@ defmodule Sentry.Mixfile do
123129 end
124130
125131 defp aliases do
126- [ test: [ "sentry.package_source_code" , "test" ] ]
132+ [
133+ test: [ "sentry.package_source_code" , "test" , "test.integrations" ] ,
134+ "test.integrations": & test_integrations / 1
135+ ]
136+ end
137+
138+ @ integrations [
139+ "phoenix_app"
140+ ]
141+
142+ defp test_integrations ( args ) do
143+ for integration <- @ integrations do
144+ run_integration_tests ( integration , args )
145+ end
146+ end
147+
148+ defp run_integration_tests ( integration , args ) do
149+ header = if IO.ANSI . enabled? ( ) , do: IO.ANSI . bright ( ) <> IO.ANSI . cyan ( ) , else: ""
150+ reset = if IO.ANSI . enabled? ( ) , do: IO.ANSI . reset ( ) , else: ""
151+
152+ IO . puts ( "\n #{ header } ==> Running tests for integration: #{ integration } #{ reset } " )
153+
154+ integration_dir = Path . join ( "test_integrations" , integration )
155+
156+ { _ , status } =
157+ System . cmd ( "sh" , [ "-c" , "cd #{ integration_dir } && mix test #{ Enum . join ( args , " " ) } " ] ,
158+ into: IO . binstream ( :stdio , :line )
159+ )
160+
161+ if status > 0 do
162+ error = if IO.ANSI . enabled? ( ) , do: IO.ANSI . red ( ) , else: ""
163+ IO . puts ( "#{ error } Integration tests for #{ integration } failed#{ reset } " )
164+ System . at_exit ( fn _ -> exit ( { :shutdown , 1 } ) end )
165+ else
166+ success = if IO.ANSI . enabled? ( ) , do: IO.ANSI . green ( ) , else: ""
167+ IO . puts ( "#{ success } Integration tests for #{ integration } passed#{ reset } " )
168+ end
127169 end
128170end
0 commit comments