logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: b1c201d1c02971679f8528f39fdf782403cb789b
parent b082e1f86b412b627db04d719233432fd387a30a
Author: feld <feld@feld.me>
Date:   Wed, 23 Jul 2025 17:39:05 +0000

Merge branch 'dialyzer' into 'develop'

Dialyzer and test fixes

See merge request pleroma/pleroma!4383

Diffstat:

Achangelog.d/noop-fixes.skip0
Mlib/mix/pleroma.ex6+++++-
Mlib/pleroma/language/translation/provider.ex2+-
Mlib/pleroma/object/fetcher.ex11++---------
Mlib/pleroma/safe_zip.ex4----
Mlib/pleroma/web/activity_pub/mrf/remote_report_policy.ex1-
Mlib/pleroma/web/api_spec.ex2+-
Mlib/pleroma/web/api_spec/scopes/compiler.ex6+++++-
Mlib/pleroma/web/mastodon_api/controllers/status_controller.ex3+++
Mtest/mix/tasks/pleroma/app_test.exs7++++---
Mtest/pleroma/emoji/pack_test.exs3+++
Mtest/pleroma/web/pleroma_api/controllers/account_controller_test.exs6+++++-
12 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/changelog.d/noop-fixes.skip b/changelog.d/noop-fixes.skip diff --git 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) diff --git 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() diff --git 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 diff --git 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}"}} diff --git 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 diff --git 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 diff --git 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 diff --git 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 diff --git 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 diff --git 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) diff --git 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