summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2024-09-16 20:13:10 +0000
committerfeld <feld@feld.me>2024-09-16 20:13:10 +0000
commite7176bb998a7e20f2bb3c9f32e1e2dfe8c3cd818 (patch)
tree902c179c947643e520579d49b80480eef86e2495
parent3a0d4e98374d77fd6721034362677984b97d2cab (diff)
parente24e107f3d3ae6024068c6509a7cb0582ea4bf02 (diff)
downloadpleroma-e7176bb998a7e20f2bb3c9f32e1e2dfe8c3cd818.tar.gz
pleroma-e7176bb998a7e20f2bb3c9f32e1e2dfe8c3cd818.zip
Merge branch 'retry-tests' into 'develop'
Reapply "Custom mix task to retry failed tests once in CI pipeline" See merge request pleroma/pleroma!4267
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--changelog.d/fix-test-failures.skip0
-rw-r--r--lib/mix/tasks/pleroma/test_runner.ex25
3 files changed, 26 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1e04dae76..76d1a4210 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -134,7 +134,7 @@ unit-testing-1.13.4-otp-25:
script: &testing_script
- mix ecto.create
- mix ecto.migrate
- - mix test --cover --preload-modules
+ - mix pleroma.test_runner --cover --preload-modules
coverage: '/^Line total: ([^ ]*%)$/'
artifacts:
reports:
diff --git a/changelog.d/fix-test-failures.skip b/changelog.d/fix-test-failures.skip
deleted file mode 100644
index e69de29bb..000000000
--- a/changelog.d/fix-test-failures.skip
+++ /dev/null
diff --git a/lib/mix/tasks/pleroma/test_runner.ex b/lib/mix/tasks/pleroma/test_runner.ex
new file mode 100644
index 000000000..69fefb001
--- /dev/null
+++ b/lib/mix/tasks/pleroma/test_runner.ex
@@ -0,0 +1,25 @@
+defmodule Mix.Tasks.Pleroma.TestRunner do
+ @shortdoc "Retries tests once if they fail"
+
+ use Mix.Task
+
+ def run(args \\ []) do
+ case System.cmd("mix", ["test"] ++ args, into: IO.stream(:stdio, :line)) do
+ {_, 0} ->
+ :ok
+
+ _ ->
+ retry(args)
+ end
+ end
+
+ def retry(args) do
+ case System.cmd("mix", ["test", "--failed"] ++ args, into: IO.stream(:stdio, :line)) do
+ {_, 0} ->
+ :ok
+
+ _ ->
+ exit(1)
+ end
+ end
+end