From 7d0368768b54b3225d4fadc0079544b6cb60e4fe Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Tue, 28 Dec 2021 14:34:56 +0800 Subject: [PATCH] fix(include_dirs): Don't truncation include_dirs dir path name. --- src/hocon.erl | 4 ++-- test/hocon_tests.erl | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/hocon.erl b/src/hocon.erl index c596577..9ff86c1 100644 --- a/src/hocon.erl +++ b/src/hocon.erl @@ -48,7 +48,7 @@ load(Filename0) -> -spec(load(file:filename(), opts()) -> {ok, config()} | {error, term()}). load(Filename0, Opts) -> Filename = hocon_util:real_file_name(filename:absname(Filename0)), - IncludeDirs = [filename:dirname(Dir) || Dir <- maps:get(include_dirs, Opts, [])], + IncludeDirs = maps:get(include_dirs, Opts, []), CtxList = [{path, '$root'}, {filename, Filename}, {include_dirs, IncludeDirs}], Ctx = hocon_util:stack_multiple_push(CtxList, #{}), try @@ -93,7 +93,7 @@ binary(Binary) -> binary(Binary, Opts) -> try - IncludeDirs = [filename:dirname(Dir) || Dir <-maps:get(include_dirs, Opts, [])], + IncludeDirs = maps:get(include_dirs, Opts, []), CtxList = [{path, '$root'}, {filename, undefined}, {include_dirs, IncludeDirs}], Ctx = hocon_util:stack_multiple_push(CtxList, #{}), Map = transform(do_binary(Binary, Ctx), Opts), diff --git a/test/hocon_tests.erl b/test/hocon_tests.erl index 0352c08..bf9b147 100644 --- a/test/hocon_tests.erl +++ b/test/hocon_tests.erl @@ -330,9 +330,12 @@ include_dirs_test() -> #{<<"cookie">> => <<"emqxsecretcookie">>, <<"data_dir">> => <<"platform_data_dir">>, <<"name">> => <<"emqx@127.0.0.1">>}}, - Opts = #{include_dirs => ["test/data/", "sample-configs/"]}, - {ok, Map} = hocon:load("etc/include-dir.conf", Opts), + Opts = #{include_dirs => ["test/data", "sample-configs/", "etc/"]}, + Filename = "etc/include-dir.conf", + {ok, Map} = hocon:load(Filename, Opts), ?assertEqual(Expect, Map), + {ok, Map2} = hocon:binary(hocon_token:read(Filename), Opts), + ?assertEqual(Expect, Map2), {error, Reason} = hocon:load("etc/include-dir-enoent.conf", Opts), ?assertEqual({enoent, <<"not-exist.conf">>}, Reason), ok.