From 35fc285f9aa2b254ea23abbf1000c6bc85186ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20M=C3=A4nnchen?= Date: Tue, 21 Oct 2025 01:17:18 +0200 Subject: [PATCH] fix: implements_behaviour? do not return true for any module --- lib/spark.ex | 2 +- test/spark_test.exs | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/spark.ex b/lib/spark.ex index 21ee0ea..5a43a4f 100644 --- a/lib/spark.ex +++ b/lib/spark.ex @@ -46,7 +46,7 @@ defmodule Spark do # never seen a module with three behaviours in real life, let alone four. {:behaviour, behaviours} when is_list(behaviours) -> - module in behaviours + behaviour in behaviours _ -> false diff --git a/test/spark_test.exs b/test/spark_test.exs index f0d921e..2b8fa5e 100644 --- a/test/spark_test.exs +++ b/test/spark_test.exs @@ -6,4 +6,19 @@ defmodule SparkTest do use ExUnit.Case doctest Spark doctest Spark.Options + + describe inspect(&Spark.implements_behaviour?/2) do + test "returns true if the module implements the specified behavior" do + defmodule TestModule do + @callback foo :: any() + + @behaviour TestModule + + def foo, do: :ok + end + + refute Spark.implements_behaviour?(TestModule, AnyOtherModule) + assert Spark.implements_behaviour?(TestModule, TestModule) + end + end end