mirror of
https://github.com/ash-project/igniter.git
synced 2024-09-19 13:02:51 +12:00
fix: escape injected code in Common.replace_code/2 (#70)
This commit is contained in:
parent
2733449bf8
commit
bba8d5238e
2 changed files with 23 additions and 1 deletions
|
@ -272,7 +272,7 @@ defmodule Igniter.Code.Common do
|
||||||
|
|
||||||
def replace_code(zipper, code) do
|
def replace_code(zipper, code) do
|
||||||
# code = use_aliases(code, zipper)
|
# code = use_aliases(code, zipper)
|
||||||
Zipper.replace(zipper, code)
|
Zipper.replace(zipper, code |> Macro.to_string() |> Sourceror.parse_string!())
|
||||||
end
|
end
|
||||||
|
|
||||||
def extendable_block?({:__block__, meta, contents}) when is_list(contents) do
|
def extendable_block?({:__block__, meta, contents}) when is_list(contents) do
|
||||||
|
|
|
@ -234,6 +234,28 @@ defmodule Igniter.Project.ConfigTest do
|
||||||
"""
|
"""
|
||||||
end
|
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
|
test "present values can be updated by updating map keys" do
|
||||||
%{rewrite: rewrite} =
|
%{rewrite: rewrite} =
|
||||||
Igniter.new()
|
Igniter.new()
|
||||||
|
|
Loading…
Reference in a new issue