From c848ca17ad05f781bd7f0fda47f697cd8e558978 Mon Sep 17 00:00:00 2001 From: Willem van den Ende Date: Sun, 14 Sep 2025 21:30:08 +0100 Subject: [PATCH] Gave up trying to reset env var - set to "*" after test And after doctest. it stayed at "*" after the last test anyway, letting the doctest fail. doctests are not recommended for side effectful tests anyway https://hexdocs.pm/ex_unit/main/ExUnit.DocTest.html --- lib/basic_signup_whitelist.ex | 3 +++ test/basic_signup_whitelist_test.exs | 38 +++++++++++++--------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/basic_signup_whitelist.ex b/lib/basic_signup_whitelist.ex index 4a02d1f..ea9a66d 100644 --- a/lib/basic_signup_whitelist.ex +++ b/lib/basic_signup_whitelist.ex @@ -21,6 +21,9 @@ defmodule BasicSignupWhitelist do iex> System.delete_env("SIGNUP_ALLOWED_EMAILS") iex> BasicSignupWhitelist.mail_whitelisted("joe@example.com") false + iex> System.put_env("SIGNUP_ALLOWED_EMAILS","*") + iex> BasicSignupWhitelist.mail_whitelisted("joe@example.com") + true """ def mail_whitelisted(email) do diff --git a/test/basic_signup_whitelist_test.exs b/test/basic_signup_whitelist_test.exs index 5397167..ff6f756 100644 --- a/test/basic_signup_whitelist_test.exs +++ b/test/basic_signup_whitelist_test.exs @@ -1,33 +1,29 @@ defmodule BasicSignupWhitelistTest do - use ExUnit.Case + use ExUnit.Case, async: false doctest BasicSignupWhitelist defp allow_signups_for(whitelist) do System.put_env("SIGNUP_ALLOWED_EMAILS", whitelist) end - setup do - # Save original env var - original_env = System.get_env("SIGNUP_ALLOWED_EMAILS") + describe "setup in describe block" do + setup do + on_exit(fn -> + # resetting values did not work, so 'just' set it to the effect without this module configured. + System.put_env("SIGNUP_ALLOWED_EMAILS", "*") + end) - on_exit(fn -> - # Restore original env var after each test - case original_env do - nil -> System.delete_env("SIGNUP_ALLOWED_EMAILS") - value -> System.put_env("SIGNUP_ALLOWED_EMAILS", value) - end - end) + :ok + end - :ok - end + test "When not set, not whitelisted" do + System.delete_env("SIGNUP_ALLOWED_EMAILS") + refute BasicSignupWhitelist.mail_whitelisted("joe@example.com") + end - test "When not set, not whitelisted" do - System.delete_env("SIGNUP_ALLOWED_EMAILS") - refute BasicSignupWhitelist.mail_whitelisted("joe@example.com") - end - - test "When set to star, whitelisted" do - allow_signups_for("*") - assert BasicSignupWhitelist.mail_whitelisted("joe@example.com") + test "When set to star, whitelisted" do + allow_signups_for("*") + assert BasicSignupWhitelist.mail_whitelisted("joe@example.com") + end end end