Fix Pleroma.Config.get!/1 raising an error when value is false
authorAaron Tinio <aptinio@gmail.com>
Mon, 13 May 2019 22:40:59 +0000 (06:40 +0800)
committerAaron Tinio <aptinio@gmail.com>
Mon, 13 May 2019 22:40:59 +0000 (06:40 +0800)
lib/pleroma/config.ex
test/config_test.exs

index 189faa15f8ef13ba858e75d2a6a14be54241a6b0..71a47b9fb99615db9e837d9edb08216e47811fe6 100644 (file)
@@ -12,8 +12,12 @@ defmodule Pleroma.Config do
   def get([key], default), do: get(key, default)
 
   def get([parent_key | keys], default) do
-    Application.get_env(:pleroma, parent_key)
-    |> get_in(keys) || default
+    case :pleroma
+         |> Application.get_env(parent_key)
+         |> get_in(keys) do
+      nil -> default
+      any -> any
+    end
   end
 
   def get(key, default) do
index 0a6f0395a1287837433cf0081fe4a115c79ba272..73f3fcb0a3b92e1fa071b70cfadd681d4dec35a5 100644 (file)
@@ -28,6 +28,15 @@ defmodule Pleroma.ConfigTest do
     assert Pleroma.Config.get([:azerty, :uiop], true) == true
   end
 
+  test "get/1 when value is false" do
+    Pleroma.Config.put([:instance, :false_test], false)
+    Pleroma.Config.put([:instance, :nested], [])
+    Pleroma.Config.put([:instance, :nested, :false_test], false)
+
+    assert Pleroma.Config.get([:instance, :false_test]) == false
+    assert Pleroma.Config.get([:instance, :nested, :false_test]) == false
+  end
+
   test "get!/1" do
     assert Pleroma.Config.get!(:instance) == Application.get_env(:pleroma, :instance)
 
@@ -43,6 +52,15 @@ defmodule Pleroma.ConfigTest do
     end)
   end
 
+  test "get!/1 when value is false" do
+    Pleroma.Config.put([:instance, :false_test], false)
+    Pleroma.Config.put([:instance, :nested], [])
+    Pleroma.Config.put([:instance, :nested, :false_test], false)
+
+    assert Pleroma.Config.get!([:instance, :false_test]) == false
+    assert Pleroma.Config.get!([:instance, :nested, :false_test]) == false
+  end
+
   test "put/2 with a key" do
     Pleroma.Config.put(:config_test, true)