Merge branch 'dialyzer' into 'develop'

Dialyzer and test fixes

See merge request pleroma/pleroma!4383
This commit is contained in:
feld 2025-07-23 17:39:05 +00:00
commit b1c201d1c0
12 changed files with 29 additions and 22 deletions

View file

View file

@ -26,7 +26,11 @@ defmodule Mix.Pleroma do
Application.put_env(:phoenix, :serve_endpoints, false, persistent: true) Application.put_env(:phoenix, :serve_endpoints, false, persistent: true)
unless System.get_env("DEBUG") do unless System.get_env("DEBUG") do
try do
Logger.remove_backend(:console) Logger.remove_backend(:console)
catch
:exit, _ -> :ok
end
end end
adapter = Application.get_env(:tesla, :adapter) adapter = Application.get_env(:tesla, :adapter)

View file

@ -25,7 +25,7 @@ defmodule Pleroma.Language.Translation.Provider do
@callback supported_languages(type :: :string | :target) :: @callback supported_languages(type :: :string | :target) ::
{:ok, [String.t()]} | {:error, atom()} {:ok, [String.t()]} | {:error, atom()}
@callback languages_matrix() :: {:ok, Map.t()} | {:error, atom()} @callback languages_matrix() :: {:ok, map()} | {:error, atom()}
@callback name() :: String.t() @callback name() :: String.t()

View file

@ -19,8 +19,6 @@ defmodule Pleroma.Object.Fetcher do
require Logger require Logger
require Pleroma.Constants require Pleroma.Constants
@mix_env Mix.env()
@spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()} @spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()}
defp reinject_object(%Object{data: %{}} = object, new_data) do defp reinject_object(%Object{data: %{}} = object, new_data) do
Logger.debug("Reinjecting object #{new_data["id"]}") Logger.debug("Reinjecting object #{new_data["id"]}")
@ -178,14 +176,9 @@ defmodule Pleroma.Object.Fetcher do
def fetch_and_contain_remote_object_from_id(_id), def fetch_and_contain_remote_object_from_id(_id),
do: {:error, "id must be a string"} do: {:error, "id must be a string"}
defp check_crossdomain_redirect(final_host, original_url) defp check_crossdomain_redirect(final_host, _original_url) when is_nil(final_host) do
# 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} {:cross_domain_redirect, false}
end end
end
defp check_crossdomain_redirect(final_host, original_url) do defp check_crossdomain_redirect(final_host, original_url) do
{:cross_domain_redirect, final_host != URI.parse(original_url).host} {:cross_domain_redirect, final_host != URI.parse(original_url).host}

View file

@ -56,10 +56,6 @@ defmodule Pleroma.SafeZip do
{_, true} <- {:safe_path, safe_path?(path)} do {_, true} <- {:safe_path, safe_path?(path)} do
{:cont, {:ok, maybe_add_file(type, path, fl)}} {:cont, {:ok, maybe_add_file(type, path, fl)}}
else else
{:get_type, e} ->
{:halt,
{:error, "Couldn't determine file type of ZIP entry at #{path} (#{inspect(e)})"}}
{:type, _} -> {:type, _} ->
{:halt, {:error, "Potentially unsafe file type in ZIP at: #{path}"}} {:halt, {:error, "Potentially unsafe file type in ZIP at: #{path}"}}

View file

@ -15,7 +15,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.RemoteReportPolicy do
else else
{:local, true} -> {:ok, object} {:local, true} -> {:ok, object}
{:reject, message} -> {:reject, message} {:reject, message} -> {:reject, message}
error -> {:reject, error}
end end
end end

View file

@ -158,6 +158,6 @@ defmodule Pleroma.Web.ApiSpec do
} }
} }
# discover request/response schemas from path specs # discover request/response schemas from path specs
|> OpenApiSpex.resolve_schema_modules() |> then(&OpenApiSpex.resolve_schema_modules/1)
end end
end end

View file

@ -26,7 +26,11 @@ defmodule Pleroma.Web.ApiSpec.Scopes.Compiler do
end end
def extract_all_scopes do def extract_all_scopes do
try do
extract_all_scopes_from(Pleroma.Web.ApiSpec.spec()) extract_all_scopes_from(Pleroma.Web.ApiSpec.spec())
catch
_, _ -> []
end
end end
def extract_all_scopes_from(specs) do def extract_all_scopes_from(specs) do

View file

@ -584,6 +584,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
{:error, error} when error in [:unexpected_response, :quota_exceeded, :too_many_requests] -> {:error, error} when error in [:unexpected_response, :quota_exceeded, :too_many_requests] ->
render_error(conn, :service_unavailable, "Translation service not available") render_error(conn, :service_unavailable, "Translation service not available")
_ ->
render_error(conn, :internal_server_error, "Translation failed")
end end
end end

View file

@ -42,9 +42,10 @@ defmodule Mix.Tasks.Pleroma.AppTest do
test "with errors" do test "with errors" do
Mix.Tasks.Pleroma.App.run(["create"]) Mix.Tasks.Pleroma.App.run(["create"])
{:mix_shell, :error, ["Creating failed:"]}
{:mix_shell, :error, ["name: can't be blank"]} assert_receive {:mix_shell, :error, ["Creating failed:"]}
{:mix_shell, :error, ["redirect_uris: can't be blank"]} assert_receive {:mix_shell, :error, ["name: can't be blank"]}
assert_receive {:mix_shell, :error, ["redirect_uris: can't be blank"]}
end end
defp assert_app(name, redirect, scopes) do defp assert_app(name, redirect, scopes) do

View file

@ -13,6 +13,9 @@ defmodule Pleroma.Emoji.PackTest do
) )
setup do setup do
# Reload emoji to ensure a clean state
Emoji.reload()
pack_path = Path.join(@emoji_path, "dump_pack") pack_path = Path.join(@emoji_path, "dump_pack")
File.mkdir(pack_path) File.mkdir(pack_path)

View file

@ -292,10 +292,14 @@ defmodule Pleroma.Web.PleromaAPI.AccountControllerTest do
User.endorse(user1, user2) User.endorse(user1, user2)
User.endorse(user1, user3) User.endorse(user1, user3)
[%{"id" => ^id2}, %{"id" => ^id3}] = response =
conn conn
|> get("/api/v1/pleroma/accounts/#{id1}/endorsements") |> get("/api/v1/pleroma/accounts/#{id1}/endorsements")
|> json_response_and_validate_schema(200) |> 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 end
test "returns 404 error when specified user is not exist", %{conn: conn} do test "returns 404 error when specified user is not exist", %{conn: conn} do