• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / realtime / d309c55bfb60c8377eb7cb4b240f2ecf7b2d6962

27 Sep 2025 08:43AM UTC coverage: 85.802% (+0.1%) from 85.703%
d309c55bfb60c8377eb7cb4b240f2ecf7b2d6962

push

github

web-flow
build: automatically cancel old tests/build on new push (#1545)

Currently, whenever you push any commit to your branch, the old builds are still running and a new build is started. Once a new commit is added, the old test results no longer matter and it's just a waste of CI resources. Also reduces confusion with multiple builds running in parallel for the same branch/possibly blocking any merges.

With this little change, we ensure that whenever a new commit is added, the previous build is immediately canceled/stopped and only the build (latest commit) runs.

2103 of 2451 relevant lines covered (85.8%)

5784.89 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

50.0
/lib/realtime_web/controllers/fallback_controller.ex
1
defmodule RealtimeWeb.FallbackController do
2
  @moduledoc """
3
  Translates controller action results into valid `Plug.Conn` responses.
4

5
  See `Phoenix.Controller.action_fallback/1` for more details.
6
  """
7

8
  use RealtimeWeb, :controller
9
  use Realtime.Logs
10

11
  import RealtimeWeb.ErrorHelpers
12

13
  def call(conn, {:error, :not_found}) do
14
    conn
15
    |> put_status(:not_found)
16
    |> put_view(RealtimeWeb.ErrorView)
17
    |> render("error.json", message: "Not found")
×
18
  end
19

20
  def call(conn, {:error, %Ecto.Changeset{} = changeset}) do
21
    log_error(
2✔
22
      "UnprocessableEntity",
23
      Ecto.Changeset.traverse_errors(changeset, &translate_error/1)
24
    )
25

26
    conn
27
    |> put_status(:unprocessable_entity)
28
    |> put_view(RealtimeWeb.ChangesetView)
29
    |> render("error.json", changeset: changeset)
2✔
30
  end
31

32
  def call(conn, {:error, _}) do
33
    conn
34
    |> put_status(:unauthorized)
35
    |> put_view(RealtimeWeb.ErrorView)
36
    |> render("error.json", message: "Unauthorized")
×
37
  end
38

39
  def call(conn, {:error, status, message}) when is_atom(status) and is_binary(message) do
40
    log_error("UnprocessableEntity", message)
2✔
41

42
    conn
43
    |> put_status(status)
44
    |> put_view(RealtimeWeb.ErrorView)
45
    |> render("error.json", message: message)
2✔
46
  end
47

48
  def call(conn, %Ecto.Changeset{valid?: true} = changeset) do
49
    log_error(
×
50
      "UnprocessableEntity",
51
      Ecto.Changeset.traverse_errors(changeset, &translate_error/1)
52
    )
53

54
    conn
55
    |> put_status(:unprocessable_entity)
56
    |> put_view(RealtimeWeb.ChangesetView)
57
    |> render("error.json", changeset: changeset)
×
58
  end
59

60
  def call(conn, %Ecto.Changeset{valid?: false} = changeset) do
61
    log_error(
3✔
62
      "UnprocessableEntity",
63
      Ecto.Changeset.traverse_errors(changeset, &translate_error/1)
64
    )
65

66
    conn
67
    |> put_status(:unprocessable_entity)
68
    |> put_view(RealtimeWeb.ChangesetView)
69
    |> render("error.json", changeset: changeset)
3✔
70
  end
71

72
  def call(conn, response) do
73
    log_error("UnknownErrorOnController", response)
×
74

75
    conn
76
    |> put_status(:unprocessable_entity)
77
    |> put_view(RealtimeWeb.ErrorView)
78
    |> render("error.json", message: "Unknown error")
×
79
  end
80
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc