From 9ea55a38885c4c4142ca9a479ce0eb23886fbaa4 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:49:48 -0700 Subject: [PATCH 01/12] Fix dialyzer error in API spec: Use then/2 for OpenApiSpex.resolve_schema_modules/1 call --- lib/pleroma/web/api_spec.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex index e5339097f..3e0ac3704 100644 --- a/lib/pleroma/web/api_spec.ex +++ b/lib/pleroma/web/api_spec.ex @@ -158,6 +158,6 @@ defmodule Pleroma.Web.ApiSpec do } } # discover request/response schemas from path specs - |> OpenApiSpex.resolve_schema_modules() + |> then(&OpenApiSpex.resolve_schema_modules/1) end end From daad35aeb95d0367d1525c60213db1ee6cede6bc Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:49:56 -0700 Subject: [PATCH 02/12] Fix dialyzer error in scopes compiler: Add error handling for extract_all_scopes/0 --- lib/pleroma/web/api_spec/scopes/compiler.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/api_spec/scopes/compiler.ex b/lib/pleroma/web/api_spec/scopes/compiler.ex index 162edc9a3..a92cf1199 100644 --- a/lib/pleroma/web/api_spec/scopes/compiler.ex +++ b/lib/pleroma/web/api_spec/scopes/compiler.ex @@ -26,7 +26,11 @@ defmodule Pleroma.Web.ApiSpec.Scopes.Compiler do end def extract_all_scopes do - extract_all_scopes_from(Pleroma.Web.ApiSpec.spec()) + try do + extract_all_scopes_from(Pleroma.Web.ApiSpec.spec()) + catch + _, _ -> [] + end end def extract_all_scopes_from(specs) do From 47ebbc4d212c0adffd212c66fc6b14b1a2ec24e8 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:50:01 -0700 Subject: [PATCH 03/12] Fix dialyzer error in status controller: Add catch-all pattern for translate function --- lib/pleroma/web/mastodon_api/controllers/status_controller.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 10549fb20..32874d464 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -584,6 +584,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do {:error, error} when error in [:unexpected_response, :quota_exceeded, :too_many_requests] -> render_error(conn, :service_unavailable, "Translation service not available") + + _ -> + render_error(conn, :internal_server_error, "Translation failed") end end From 1d4482047f1ab40ae10f8086620658b327d8d64d Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:50:23 -0700 Subject: [PATCH 04/12] Fix dialyzer error in translation provider: Change Map.t() to map() in callback spec --- lib/pleroma/language/translation/provider.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/language/translation/provider.ex b/lib/pleroma/language/translation/provider.ex index 533b5355a..4b423247a 100644 --- a/lib/pleroma/language/translation/provider.ex +++ b/lib/pleroma/language/translation/provider.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Language.Translation.Provider do @callback supported_languages(type :: :string | :target) :: {:ok, [String.t()]} | {:error, atom()} - @callback languages_matrix() :: {:ok, Map.t()} | {:error, atom()} + @callback languages_matrix() :: {:ok, map()} | {:error, atom()} @callback name() :: String.t() From e0104132a7fa5f4a913e33e7f654b6cd64df0107 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:50:28 -0700 Subject: [PATCH 05/12] Fix dialyzer error in object fetcher: Add proper guard clause for check_crossdomain_redirect/2 Also remove unnecessary and incorrect usage of Mix.env() --- lib/pleroma/object/fetcher.ex | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index b54ef9ce5..c02069ecc 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -19,8 +19,6 @@ defmodule Pleroma.Object.Fetcher do require Logger require Pleroma.Constants - @mix_env Mix.env() - @spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()} defp reinject_object(%Object{data: %{}} = object, new_data) do Logger.debug("Reinjecting object #{new_data["id"]}") @@ -178,13 +176,8 @@ defmodule Pleroma.Object.Fetcher do def fetch_and_contain_remote_object_from_id(_id), do: {:error, "id must be a string"} - defp check_crossdomain_redirect(final_host, original_url) - - # Handle the common case in tests where responses don't include URLs - if @mix_env == :test do - defp check_crossdomain_redirect(nil, _) do - {:cross_domain_redirect, false} - end + defp check_crossdomain_redirect(final_host, _original_url) when is_nil(final_host) do + {:cross_domain_redirect, false} end defp check_crossdomain_redirect(final_host, original_url) do From 28146ee7d258a70366bd16e5e099e5c1f4adc25b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:50:38 -0700 Subject: [PATCH 06/12] Fix dialyzer error in safe_zip: Remove impossible pattern match for {:get_type, _e} --- lib/pleroma/safe_zip.ex | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/pleroma/safe_zip.ex b/lib/pleroma/safe_zip.ex index 25fe434d6..ece18e645 100644 --- a/lib/pleroma/safe_zip.ex +++ b/lib/pleroma/safe_zip.ex @@ -56,10 +56,6 @@ defmodule Pleroma.SafeZip do {_, true} <- {:safe_path, safe_path?(path)} do {:cont, {:ok, maybe_add_file(type, path, fl)}} else - {:get_type, e} -> - {:halt, - {:error, "Couldn't determine file type of ZIP entry at #{path} (#{inspect(e)})"}} - {:type, _} -> {:halt, {:error, "Potentially unsafe file type in ZIP at: #{path}"}} From 28cff592b134c9a884d7e8dc147743686c523a89 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 11:50:45 -0700 Subject: [PATCH 07/12] Fix dialyzer error in MRF remote report policy: Remove unreachable pattern match --- lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex b/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex index fa0610bf1..8422832dd 100644 --- a/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex @@ -15,7 +15,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.RemoteReportPolicy do else {:local, true} -> {:ok, object} {:reject, message} -> {:reject, message} - error -> {:reject, error} end end From b54b19a0f4fa3c7220994f259e1a0d12757321ff Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 13:22:51 -0700 Subject: [PATCH 08/12] Fix test for mix task Missing assert_receive which would cause the test to randomly fail --- test/mix/tasks/pleroma/app_test.exs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/mix/tasks/pleroma/app_test.exs b/test/mix/tasks/pleroma/app_test.exs index f35447edc..65245eadd 100644 --- a/test/mix/tasks/pleroma/app_test.exs +++ b/test/mix/tasks/pleroma/app_test.exs @@ -42,9 +42,10 @@ defmodule Mix.Tasks.Pleroma.AppTest do test "with errors" do Mix.Tasks.Pleroma.App.run(["create"]) - {:mix_shell, :error, ["Creating failed:"]} - {:mix_shell, :error, ["name: can't be blank"]} - {:mix_shell, :error, ["redirect_uris: can't be blank"]} + + assert_receive {:mix_shell, :error, ["Creating failed:"]} + assert_receive {:mix_shell, :error, ["name: can't be blank"]} + assert_receive {:mix_shell, :error, ["redirect_uris: can't be blank"]} end defp assert_app(name, redirect, scopes) do From 113261146ff5e643c9598189f8157dfd60516016 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 13:28:25 -0700 Subject: [PATCH 09/12] Fix account endorsements test Random failures were caused by the results sometimes being returned out of order. --- .../web/pleroma_api/controllers/account_controller_test.exs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/pleroma/web/pleroma_api/controllers/account_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/account_controller_test.exs index 61880e2c0..d152a44cd 100644 --- a/test/pleroma/web/pleroma_api/controllers/account_controller_test.exs +++ b/test/pleroma/web/pleroma_api/controllers/account_controller_test.exs @@ -292,10 +292,14 @@ defmodule Pleroma.Web.PleromaAPI.AccountControllerTest do User.endorse(user1, user2) User.endorse(user1, user3) - [%{"id" => ^id2}, %{"id" => ^id3}] = + response = conn |> get("/api/v1/pleroma/accounts/#{id1}/endorsements") |> json_response_and_validate_schema(200) + + assert length(response) == 2 + assert Enum.any?(response, fn user -> user["id"] == id2 end) + assert Enum.any?(response, fn user -> user["id"] == id3 end) end test "returns 404 error when specified user is not exist", %{conn: conn} do From 28b69f5c04e3ef05216c73f85696e44fb4a047af Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 14:11:28 -0700 Subject: [PATCH 10/12] Reset Emoji cache between tests This fixes intermittent test failures --- test/pleroma/emoji/pack_test.exs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/pleroma/emoji/pack_test.exs b/test/pleroma/emoji/pack_test.exs index b458401a7..56b17ac31 100644 --- a/test/pleroma/emoji/pack_test.exs +++ b/test/pleroma/emoji/pack_test.exs @@ -13,6 +13,9 @@ defmodule Pleroma.Emoji.PackTest do ) setup do + # Reload emoji to ensure a clean state + Emoji.reload() + pack_path = Path.join(@emoji_path, "dump_pack") File.mkdir(pack_path) From 6da5ca9b2d271179e0ec912f642ec51f98be3e80 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Jul 2025 14:16:17 -0700 Subject: [PATCH 11/12] Prevent test crash if it cannot successfully remove the console Logger backend --- lib/mix/pleroma.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex index c01cf054d..e7869919c 100644 --- a/lib/mix/pleroma.ex +++ b/lib/mix/pleroma.ex @@ -26,7 +26,11 @@ defmodule Mix.Pleroma do Application.put_env(:phoenix, :serve_endpoints, false, persistent: true) unless System.get_env("DEBUG") do - Logger.remove_backend(:console) + try do + Logger.remove_backend(:console) + catch + :exit, _ -> :ok + end end adapter = Application.get_env(:tesla, :adapter) From a504c28106be8b9c4020ab2abc194ba6a10b076a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 23 Jul 2025 09:55:03 -0700 Subject: [PATCH 12/12] Not changelog worthy --- changelog.d/noop-fixes.skip | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 changelog.d/noop-fixes.skip diff --git a/changelog.d/noop-fixes.skip b/changelog.d/noop-fixes.skip new file mode 100644 index 000000000..e69de29bb