Current section

Files

Jump to
scrypath lib mix tasks verify.phase107.ex
Raw

lib/mix/tasks/verify.phase107.ex

defmodule Mix.Tasks.Verify.Phase107 do
@moduledoc false
use Mix.Task
@shortdoc "Runs focused ecommerce readiness regression checks (Phase 107)"
@focused_tests [
"examples/scrypath_ecommerce/test/scrypath_ecommerce_web/controllers/e2e_controller_test.exs",
"test/mix/tasks/verify.phase107_test.exs"
]
@impl true
def run(args) do
ensure_no_args!(args)
Mix.Task.run("app.start")
Mix.shell().info("==> verify.phase107: ecommerce readiness regression checks")
[ecommerce_test, task_test] = @focused_tests
run_ecommerce_test!(ecommerce_test)
run_test!(
[task_test],
"Phase 107 ecommerce readiness regression guard"
)
end
defp run_test!(args, label) do
Mix.shell().info("==> Running #{label}")
Mix.Task.reenable("test")
Mix.Task.run("test", args)
end
defp run_ecommerce_test!(path) do
app_path = "examples/scrypath_ecommerce"
test_path = String.replace_prefix(path, "#{app_path}/", "")
Mix.shell().info("==> Running Phase 107 ecommerce readiness regression guard")
{out, status} =
System.cmd("mix", ["test", test_path],
cd: app_path,
stderr_to_stdout: true
)
Mix.shell().info(out)
if status != 0 do
Mix.raise("verify.phase107 ecommerce test failed with status #{status}")
end
end
defp ensure_no_args!([]), do: :ok
defp ensure_no_args!(args) do
Mix.raise("verify.phase107 does not accept arguments, got: #{Enum.join(args, " ")}")
end
end