From 7c38061c1c065de63daa82a328be64a1ac4f3b1e Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Sun, 21 Jun 2026 15:46:16 +0200 Subject: [PATCH] Bump earmark and serialize test suite to clear validation gate --- .mix_audit.ignore | 7 ++++++- config/test.exs | 5 ++++- mix.lock | 2 +- test/test_helper.exs | 6 +++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.mix_audit.ignore b/.mix_audit.ignore index e995147..fe4bba9 100644 --- a/.mix_audit.ignore +++ b/.mix_audit.ignore @@ -1,4 +1,9 @@ # GHSA-rhv4-8758-jx7v is pinned transitively through bumblebee -> progress_bar. # ecto_sqlite3 0.24.x can move to decimal 3.x, but that line is currently # unsatisfiable alongside the app's Bumblebee dependency. -GHSA-rhv4-8758-jx7v \ No newline at end of file +GHSA-rhv4-8758-jx7v + +# GHSA-52mm-h59v-f3c7 has no patched Earmark release available on Hex at the +# time of validation. The repo is pinned to the latest 1.4.x release and needs +# a future migration off Earmark rather than a direct patched upgrade. +GHSA-52mm-h59v-f3c7 \ No newline at end of file diff --git a/config/test.exs b/config/test.exs index b5e50d2..82a6549 100644 --- a/config/test.exs +++ b/config/test.exs @@ -5,7 +5,10 @@ config :bds, BDS.Repo, pool: Ecto.Adapters.SQL.Sandbox, pool_size: 5, journal_mode: :wal, - busy_timeout: 15_000 + # Desktop/LiveView tests can leave short-lived reader/writer processes + # draining after assertions. Give SQLite more time to wait out those locks + # during serialized suite runs instead of failing the next test setup. + busy_timeout: 60_000 config :logger, level: :warning diff --git a/mix.lock b/mix.lock index d9329e3..a137800 100644 --- a/mix.lock +++ b/mix.lock @@ -15,7 +15,7 @@ "decimal": {:hex, :decimal, "2.4.1", "6c0fbede12fb122ba685e9ab41c6a40c129e322b3aa192f9e072e61f3a6ffaf2", [:mix], [], "hexpm", "7e618897933a8455f19a727d7c5e50a2c071a544b700e5e724298ecb4340187f"}, "desktop": {:hex, :desktop, "1.5.3", "dcf875dcff5b49a54646b4e6964acb079545c8c9c3790799aa5f1ccdcd314d15", [:mix], [{:debouncer, "~> 0.1", [hex: :debouncer, repo: "hexpm", optional: false]}, {:ex_sni, "~> 0.2", [hex: :ex_sni, repo: "hexpm", optional: false]}, {:gettext, "> 0.10.0", [hex: :gettext, repo: "hexpm", optional: false]}, {:oncrash, "~> 0.1", [hex: :oncrash, repo: "hexpm", optional: false]}, {:phoenix, "> 1.0.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_live_view, "> 0.15.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:plug, "> 1.0.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "3750aabb8ed8aaf09b33f3cad5bda20f8ce4dfa65b026c019baed99c5264e2aa"}, "dialyxir": {:hex, :dialyxir, "1.4.7", "dda948fcee52962e4b6c5b4b16b2d8fa7d50d8645bbae8b8685c3f9ecb7f5f4d", [:mix], [{:erlex, ">= 0.2.8", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b34527202e6eb8cee198efec110996c25c5898f43a4094df157f8d28f27d9efe"}, - "earmark": {:hex, :earmark, "1.4.48", "5f41e579d85ef812351211842b6e005f6e0cef111216dea7d4b9d58af4608434", [:mix], [], "hexpm", "a461a0ddfdc5432381c876af1c86c411fd78a25790c75023c7a4c035fdc858f9"}, + "earmark": {:hex, :earmark, "1.4.49", "024521298c2308f0193ba7a5df742a5e901dad03cd44ba57f861d3f0fada5d1b", [:mix], [], "hexpm", "ffad0257b92ac342b236d1744f7f19793da77bbd7281f32ccdfb44c047a05bf2"}, "ecto": {:hex, :ecto, "3.13.5", "9d4a69700183f33bf97208294768e561f5c7f1ecf417e0fa1006e4a91713a834", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "df9efebf70cf94142739ba357499661ef5dbb559ef902b68ea1f3c1fabce36de"}, "ecto_sql": {:hex, :ecto_sql, "3.13.5", "2f8282b2ad97bf0f0d3217ea0a6fff320ead9e2f8770f810141189d182dc304e", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.13.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.19 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "aa36751f4e6a2b56ae79efb0e088042e010ff4935fc8684e74c23b1f49e25fdc"}, "ecto_sqlite3": {:hex, :ecto_sqlite3, "0.22.0", "edab2d0f701b7dd05dcf7e2d97769c106aff62b5cfddc000d1dd6f46b9cbd8c3", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.13.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.13.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:exqlite, "~> 0.22", [hex: :exqlite, repo: "hexpm", optional: false]}], "hexpm", "5af9e031bffcc5da0b7bca90c271a7b1e7c04a93fecf7f6cd35bc1b1921a64bd"}, diff --git a/test/test_helper.exs b/test/test_helper.exs index 631c44a..7a69848 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -16,7 +16,11 @@ Enum.each(["LC_ALL", "LC_MESSAGES", "LANG"], fn variable -> System.put_env(variable, "en_US.UTF-8") end) -ExUnit.start() +# The test suite spins up long-lived LiveView, Bandit, and desktop automation +# processes against a single SQLite database. Running files concurrently causes +# intermittent `Database busy` failures in otherwise passing tests, so the +# default suite runs serially. +ExUnit.start(max_cases: 1) ExUnit.after_suite(fn _results -> File.rm_rf(cache_root)