From 919597df7c49bb9d18835123970d27e9653f2876 Mon Sep 17 00:00:00 2001 From: pnezis Date: Wed, 11 Mar 2026 18:01:39 +0200 Subject: [PATCH] Fix invalid mfa validation if value was `nil` --- lib/nimble_options.ex | 2 +- test/nimble_options_test.exs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/nimble_options.ex b/lib/nimble_options.ex index a26fd60..71f2bef 100644 --- a/lib/nimble_options.ex +++ b/lib/nimble_options.ex @@ -700,7 +700,7 @@ defmodule NimbleOptions do {:ok, value} end - defp validate_type(:mfa, key, value, redact) when not is_nil(value) do + defp validate_type(:mfa, key, value, redact) do structured_error_tuple(key, value, "tuple {mod, fun, args}", inspect(value), redact) end diff --git a/test/nimble_options_test.exs b/test/nimble_options_test.exs index 39d319b..cab96bc 100644 --- a/test/nimble_options_test.exs +++ b/test/nimble_options_test.exs @@ -666,6 +666,22 @@ defmodule NimbleOptionsTest do } end + test "mfa rejects nil" do + schema = [transformer: [type: :mfa]] + + opts = [transformer: nil] + + assert NimbleOptions.validate(opts, schema) == { + :error, + %ValidationError{ + key: :transformer, + value: nil, + message: + "invalid value for :transformer option: expected tuple {mod, fun, args}, got: nil" + } + } + end + test "redacted invalid mfa" do schema = [transformer: [type: :mfa, redact: true]]