diff --git a/lib/igniter/code/common.ex b/lib/igniter/code/common.ex index 03b8f72..e68602b 100644 --- a/lib/igniter/code/common.ex +++ b/lib/igniter/code/common.ex @@ -272,7 +272,7 @@ defmodule Igniter.Code.Common do def replace_code(zipper, code) do # code = use_aliases(code, zipper) - Zipper.replace(zipper, code) + Zipper.replace(zipper, code |> Macro.to_string() |> Sourceror.parse_string!()) end def extendable_block?({:__block__, meta, contents}) when is_list(contents) do diff --git a/test/igniter/project/config_test.exs b/test/igniter/project/config_test.exs index 526cb5e..2fad730 100644 --- a/test/igniter/project/config_test.exs +++ b/test/igniter/project/config_test.exs @@ -234,6 +234,28 @@ defmodule Igniter.Project.ConfigTest do """ end + @tag :regression + test "arbitrary data structures can be used as values" do + %{rewrite: rewrite} = + Igniter.new() + |> Igniter.create_new_elixir_file("config/fake.exs", """ + import Config + + config :level1, :level2, level3: [{"hello", "world"}] + """) + |> Igniter.Project.Config.configure("fake.exs", :level1, [:level2, :level3], [ + {"hello1", "world1"} + ]) + + config_file = Rewrite.source!(rewrite, "config/fake.exs") + + assert Source.get(config_file, :content) == """ + import Config + + config :level1, :level2, level3: [{"hello1", "world1"}] + """ + end + test "present values can be updated by updating map keys" do %{rewrite: rewrite} = Igniter.new()