diff options
| -rw-r--r-- | .gitlab-ci.yml | 2 | ||||
| -rw-r--r-- | changelog.d/fix-test-failures.skip | 0 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/test_runner.ex | 25 | 
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  | 
