diff -Nru erlang-p1-yaml-1.0.19/CHANGELOG.md erlang-p1-yaml-1.0.20/CHANGELOG.md --- erlang-p1-yaml-1.0.19/CHANGELOG.md 2019-05-23 09:55:26.000000000 +0000 +++ erlang-p1-yaml-1.0.20/CHANGELOG.md 2019-08-02 13:08:35.000000000 +0000 @@ -1,3 +1,8 @@ +# Version 1.0.20 + +* Updating p1_utils to version 1.0.16. +* Handle erlang escape sequences + # Version 1.0.19 * Updating p1_utils to version 1.0.15. diff -Nru erlang-p1-yaml-1.0.19/debian/changelog erlang-p1-yaml-1.0.20/debian/changelog --- erlang-p1-yaml-1.0.19/debian/changelog 2019-07-24 11:01:03.000000000 +0000 +++ erlang-p1-yaml-1.0.20/debian/changelog 2019-08-10 12:46:19.000000000 +0000 @@ -1,3 +1,11 @@ +erlang-p1-yaml (1.0.20-1) unstable; urgency=medium + + * New upstream version 1.0.20 + * Updated Erlang dependencies + * Added upstream patch to fix failing unit test + + -- Philipp Huebner Sat, 10 Aug 2019 14:46:19 +0200 + erlang-p1-yaml (1.0.19-1) unstable; urgency=medium * New upstream version 1.0.19 diff -Nru erlang-p1-yaml-1.0.19/debian/control erlang-p1-yaml-1.0.20/debian/control --- erlang-p1-yaml-1.0.19/debian/control 2019-07-24 11:01:03.000000000 +0000 +++ erlang-p1-yaml-1.0.20/debian/control 2019-08-10 12:46:19.000000000 +0000 @@ -7,7 +7,7 @@ dh-rebar, erlang-base (>= 1:19.2), erlang-eunit, - erlang-p1-utils (>= 1.0.15), + erlang-p1-utils (>= 1.0.16), erlang-syntax-tools, libyaml-dev Standards-Version: 4.4.0 @@ -21,7 +21,7 @@ ${misc:Depends}, erlang-base (>= 1:19.2) | ${erlang-abi:Depends}, ${erlang:Depends}, - erlang-p1-utils (>= 1.0.15) + erlang-p1-utils (>= 1.0.16) Description: erlang wrapper for libyaml C library This library was written for ejabberd which still uses it. It was split off into it's own project to follow diff -Nru erlang-p1-yaml-1.0.19/debian/patches/e789f68895f71b7ad31057177810ca0161bf790e.patch erlang-p1-yaml-1.0.20/debian/patches/e789f68895f71b7ad31057177810ca0161bf790e.patch --- erlang-p1-yaml-1.0.19/debian/patches/e789f68895f71b7ad31057177810ca0161bf790e.patch 1970-01-01 00:00:00.000000000 +0000 +++ erlang-p1-yaml-1.0.20/debian/patches/e789f68895f71b7ad31057177810ca0161bf790e.patch 2019-08-10 12:46:19.000000000 +0000 @@ -0,0 +1,31 @@ +From e789f68895f71b7ad31057177810ca0161bf790e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= +Date: Tue, 6 Aug 2019 12:37:28 +0200 +Subject: [PATCH] Don't escape ' inside "", this is not valid yaml + +This fixes issue #13 +--- + src/fast_yaml.erl | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/fast_yaml.erl b/src/fast_yaml.erl +index db2be4a..11e453c 100644 +--- a/src/fast_yaml.erl ++++ b/src/fast_yaml.erl +@@ -146,7 +146,6 @@ encode(B, _) when is_binary(B) -> + ($\s) -> [$\s]; % $\s == "space" + ($\t) -> [$\\, "t"]; % $\t == "tab" + ($\v) -> [$\\, "v"]; % $\v == "vertical tab" +- ($') -> [$\\, $']; % $" == simple quote + ($") -> [$\\, $"]; % $" == double quote + ($\\) -> [$\\, $\\]; % $\\ == backslash + (C) -> C +@@ -382,7 +381,7 @@ encode_decode_vertical_tab_test() -> + + encode_decode_simple_quote_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), +- Binary = <<"\'\"\'">>, ++ Binary = <<"'\"'">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), diff -Nru erlang-p1-yaml-1.0.19/debian/patches/remove-deps.diff erlang-p1-yaml-1.0.20/debian/patches/remove-deps.diff --- erlang-p1-yaml-1.0.19/debian/patches/remove-deps.diff 2019-07-24 11:01:03.000000000 +0000 +++ erlang-p1-yaml-1.0.20/debian/patches/remove-deps.diff 2019-08-10 12:46:19.000000000 +0000 @@ -11,7 +11,7 @@ {port_env, [{"CFLAGS", "$CFLAGS"}, {"LDFLAGS", "$LDFLAGS -lyaml"}]}. {port_specs, [{"priv/lib/fast_yaml.so", ["c_src/fast_yaml.c"]}]}. --{deps, [{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.15"}}}]}. +-{deps, [{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.16"}}}]}. {clean_files, ["c_src/fast_yaml.gcda", "c_src/fast_yaml.gcno"]}. diff -Nru erlang-p1-yaml-1.0.19/debian/patches/series erlang-p1-yaml-1.0.20/debian/patches/series --- erlang-p1-yaml-1.0.19/debian/patches/series 2019-07-24 11:01:03.000000000 +0000 +++ erlang-p1-yaml-1.0.20/debian/patches/series 2019-08-10 12:46:19.000000000 +0000 @@ -1 +1,2 @@ remove-deps.diff +e789f68895f71b7ad31057177810ca0161bf790e.patch diff -Nru erlang-p1-yaml-1.0.19/rebar.config erlang-p1-yaml-1.0.20/rebar.config --- erlang-p1-yaml-1.0.19/rebar.config 2019-05-23 09:55:26.000000000 +0000 +++ erlang-p1-yaml-1.0.20/rebar.config 2019-08-02 13:08:35.000000000 +0000 @@ -24,7 +24,7 @@ {port_env, [{"CFLAGS", "$CFLAGS"}, {"LDFLAGS", "$LDFLAGS -lyaml"}]}. {port_specs, [{"priv/lib/fast_yaml.so", ["c_src/fast_yaml.c"]}]}. -{deps, [{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.15"}}}]}. +{deps, [{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.16"}}}]}. {clean_files, ["c_src/fast_yaml.gcda", "c_src/fast_yaml.gcno"]}. diff -Nru erlang-p1-yaml-1.0.19/src/fast_yaml.app.src erlang-p1-yaml-1.0.20/src/fast_yaml.app.src --- erlang-p1-yaml-1.0.19/src/fast_yaml.app.src 2019-05-23 09:55:26.000000000 +0000 +++ erlang-p1-yaml-1.0.20/src/fast_yaml.app.src 2019-08-02 13:08:35.000000000 +0000 @@ -23,7 +23,7 @@ {application, fast_yaml, [{description, "Fast YAML native library for Erlang / Elixir"}, - {vsn, "1.0.19"}, + {vsn, "1.0.20"}, {modules, []}, {registered, []}, {applications, [kernel, stdlib]}, diff -Nru erlang-p1-yaml-1.0.19/src/fast_yaml.erl erlang-p1-yaml-1.0.20/src/fast_yaml.erl --- erlang-p1-yaml-1.0.19/src/fast_yaml.erl 2019-05-23 09:55:26.000000000 +0000 +++ erlang-p1-yaml-1.0.20/src/fast_yaml.erl 2019-08-02 13:08:35.000000000 +0000 @@ -133,10 +133,22 @@ io_lib:format("~f", [F]); encode(A, _) when is_atom(A) -> atom_to_list(A); +% http://erlang.org/doc/reference_manual/data_types.html#escape-sequences encode(B, _) when is_binary(B) -> [$", lists:map( - fun($") -> [$\\, $"]; + fun ($\b) -> [$\\, "b"]; % $\b == "backspace" + %($\d) -> [$\\, "d"]; % $\d = "delete" % Encode work, but decode fail + ($\e) -> [$\\, "e"]; % $\e == "escape" + ($\f) -> [$\\, "f"]; % $\f == "from feed" + ($\n) -> [$\\, "n"]; % $\n == "new line" + ($\r) -> [$\\, "r"]; % $\r == "carriage return" + ($\s) -> [$\s]; % $\s == "space" + ($\t) -> [$\\, "t"]; % $\t == "tab" + ($\v) -> [$\\, "v"]; % $\v == "vertical tab" + ($') -> [$\\, $']; % $" == simple quote + ($") -> [$\\, $"]; % $" == double quote + ($\\) -> [$\\, $\\]; % $\\ == backslash (C) -> C end, unicode:characters_to_list(B)), $"]. @@ -239,14 +251,185 @@ "Pz7Y6OjuDg4J+fn5OTk6enp\n56enmleECcgggoBADs=mZmE\n">>}]]}, decode_from_file(FileName)). +decode_test5_test() -> + FileName = filename:join(["..", "test", "test5.yml"]), + ?assertEqual( + {ok,[[ + {<<"Name">>,<<"Backslash">>}, + {<<"Source">>,<<"\\\\\\\\">>}], + [{<<"Name">>,<<"Double_Quote">>}, + {<<"Source">>,<<"\"\"">>}], + [{<<"Name">>,<<"Backslash_and_Double_Quote">>}, + {<<"Source">>,<<"\"\\\"\"">>}], + [{<<"Name">>,<<"New_Line">>}, + {<<"Source">>,<<"\\n">>}]] + }, + decode_from_file(FileName)). + encode_test1_test() -> ?assertEqual( - list_to_binary(encode(<<"a">>)), - <<"\"a\"">>). + list_to_binary(encode(<<"a">>)), + <<"\"a\"">>). encode_unicode_test1_test() -> ?assertEqual( - unicode:characters_to_binary(encode(<<"☃"/utf8>>)), - <<"\"☃\""/utf8>>). + unicode:characters_to_binary(encode(<<"☃"/utf8>>)), + <<"\"☃\""/utf8>>). + +encode_decode_backspace_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"abc\bdef">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_escape_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\en">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_from_feed_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\f\"">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_new_line_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\n">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_carriage_return_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"ref\r\n">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_space_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<" toto\stata \s ">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_tab_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\treturn True">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_vertical_tab_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\v ok">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_simple_quote_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\'\"\'">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_double_quote_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\"\"">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_backslash_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\\\\\\\\">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). + +encode_decode_quote_and_backslash_test() -> + FileName = filename:join(["..", "test", "temp_test.yml"]), + Binary = <<"\"\\\"\"">>, + Encoded = encode([[{'Source', Binary}]]), + file:write_file(FileName, Encoded), + Decoded = decode_from_file(FileName, [plain_as_atom]), + file:delete(FileName), + {ok, [[[{'Source', DecodedBinary}]]]} = Decoded, + ?assertEqual( + DecodedBinary, + Binary + ). -endif. diff -Nru erlang-p1-yaml-1.0.19/test/test5.yml erlang-p1-yaml-1.0.20/test/test5.yml --- erlang-p1-yaml-1.0.19/test/test5.yml 1970-01-01 00:00:00.000000000 +0000 +++ erlang-p1-yaml-1.0.20/test/test5.yml 2019-08-02 13:08:35.000000000 +0000 @@ -0,0 +1,13 @@ +--- +Name: Backslash +Source: "\\\\\\\\" +--- +Name: Double_Quote +Source: "\"\"" +--- +Name: Backslash_and_Double_Quote +Source: "\"\\\"\"" +--- +Name: New_Line +Source: "\\n" +... \ No newline at end of file