diff options
author | Björn Gustavsson <[email protected]> | 2017-10-05 10:40:52 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2017-10-05 10:40:52 +0200 |
commit | f7476ef04d6cad95a54aff3aae734c25a283e3fd (patch) | |
tree | feb60a7333102e60fce579a3a50685272a0825a9 /lib/stdlib/test/filelib_SUITE.erl | |
parent | b6c52ec1a344d7ee42b10feddb10c1d03b3a7c27 (diff) | |
parent | 36dc96339e2b2b692e6dfe6de43db3a2348732bd (diff) | |
download | otp-f7476ef04d6cad95a54aff3aae734c25a283e3fd.tar.gz otp-f7476ef04d6cad95a54aff3aae734c25a283e3fd.tar.bz2 otp-f7476ef04d6cad95a54aff3aae734c25a283e3fd.zip |
Merge pull request #1567 from bjorng/bjorn/stdlib/wildcard-escaping/ERL-451/OTP-14577
Implement escaping of special characters in wildcards
Diffstat (limited to 'lib/stdlib/test/filelib_SUITE.erl')
-rw-r--r-- | lib/stdlib/test/filelib_SUITE.erl | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/lib/stdlib/test/filelib_SUITE.erl b/lib/stdlib/test/filelib_SUITE.erl index c94821bc75..1236fe45f4 100644 --- a/lib/stdlib/test/filelib_SUITE.erl +++ b/lib/stdlib/test/filelib_SUITE.erl @@ -120,7 +120,7 @@ wcc(Wc, Error) -> do_wildcard_1(Dir, Wcf0) -> do_wildcard_2(Dir, Wcf0), Wcf = fun(Wc0) -> - Wc = filename:join(Dir, Wc0), + Wc = Dir ++ "/" ++ Wc0, L = Wcf0(Wc), [subtract_dir(N, Dir) || N <- L] end, @@ -268,8 +268,37 @@ do_wildcard_9(Dir, Wcf) -> %% Cleanup. del(Files), [ok = file:del_dir(D) || D <- lists:reverse(Dirs)], - ok. + do_wildcard_10(Dir, Wcf). + +%% ERL-451/OTP-14577: Escape characters using \\. +do_wildcard_10(Dir, Wcf) -> + All0 = ["{abc}","abc","def","---","z--","@a,b","@c"], + All = case os:type() of + {unix,_} -> + %% '?' is allowed in file names on Unix, but + %% not on Windows. + ["?q"|All0]; + _ -> + All0 + end, + Files = mkfiles(lists:reverse(All), Dir), + + ["{abc}"] = Wcf("\\{a*"), + ["{abc}"] = Wcf("\\{abc}"), + ["abc","def","z--"] = Wcf("[a-z]*"), + ["---","abc","z--"] = Wcf("[a\\-z]*"), + ["@a,b","@c"] = Wcf("@{a\\,b,c}"), + ["@c"] = Wcf("@{a,b,c}"), + + case os:type() of + {unix,_} -> + ["?q"] = Wcf("\\?q"); + _ -> + [] = Wcf("\\?q") + end, + del(Files), + ok. fold_files(Config) when is_list(Config) -> Dir = filename:join(proplists:get_value(priv_dir, Config), "fold_files"), |