diff options
Diffstat (limited to 'lib/stdlib/test')
| -rw-r--r-- | lib/stdlib/test/filename_SUITE.erl | 120 | 
1 files changed, 116 insertions, 4 deletions
| diff --git a/lib/stdlib/test/filename_SUITE.erl b/lib/stdlib/test/filename_SUITE.erl index fc77593bb8..f284eb1ed6 100644 --- a/lib/stdlib/test/filename_SUITE.erl +++ b/lib/stdlib/test/filename_SUITE.erl @@ -107,6 +107,17 @@ absname(Config) when is_list(Config) ->              [Drive|":/erlang/src"] = filename:absname([Drive|":erlang/src"]),              "a:/erlang" = filename:absname("a:erlang"), +            "//foo" = filename:absname("//foo"), +            "//foo/bar" = filename:absname("//foo/bar"), +            "//foo/\bar" = filename:absname("//foo/\bar"), +            "//foo/bar/baz" = filename:absname("//foo/bar\\baz"), +            "//foo/bar/baz" = filename:absname("//foo\\bar/baz"), +            "//foo" = filename:absname("\\\\foo"), +            "//foo/bar" = filename:absname("\\\\foo/bar"), +            "//foo/\bar" = filename:absname("\\\\foo/\bar"), +            "//foo/bar/baz" = filename:absname("\\\\foo/bar\\baz"), +            "//foo/bar/baz" = filename:absname("\\\\foo\\bar/baz"), +              file:set_cwd(Cwd),              ok;          {unix, _} -> @@ -167,6 +178,23 @@ absname_2(Config) when is_list(Config) ->                                                        [Drive|":/"]),              "a:/erlang" = filename:absname("a:erlang", [Drive|":/"]), +            "//foo" = filename:absname("foo","//"), +            "//foo/bar" = filename:absname("foo/bar", "//"), +            "//foo/bar" = filename:absname("bar", "//foo"), +            "//bar" = filename:absname("/bar", "//foo"), +            "//foo/bar/baz" = filename:absname("bar/baz", "//foo"), +            "//bar/baz" = filename:absname("//bar/baz", "//foo"), +            "//\bar" = filename:absname("/\bar", "//foo"), +            "//foo" = filename:absname("foo","\\\\"), +            "//foo/bar" = filename:absname("foo/bar", "\\\\"), +            "//foo/bar" = filename:absname("bar", "\\\\foo"), +            "//bar" = filename:absname("/bar", "\\\\foo"), +            "//foo/bar/baz" = filename:absname("bar/baz", "\\\\foo"), +            "//bar/baz" = filename:absname("\\\\bar/baz", "\\\\foo"), +            "//\bar" = filename:absname("/\bar", "\\\\foo"), +            "//bar/baz" = filename:absname("\\\\bar/baz", "//foo"), +            "//bar/baz" = filename:absname("//bar/baz", "\\\\foo"), +              ok;          _ ->              "/usr/foo" = filename:absname(foo, "/usr"), @@ -244,6 +272,18 @@ dirname(Config) when is_list(Config) ->              "A:usr" = filename:dirname("A:usr/foo.erl"),              "/usr" = filename:dirname("\\usr\\foo.erl"),              "/" = filename:dirname("\\usr"), +            "//foo/bar" = filename:dirname("//foo/bar/baz.erl"), +            "//foo/\bar" = filename:dirname("//foo/\bar/baz.erl"), +            "//foo/bar" = filename:dirname("//foo\\bar/baz.erl"), +            "//foo/bar" = filename:dirname("\\\\foo/bar/baz.erl"), +            "//foo/\bar" = filename:dirname("\\\\foo/\bar/baz.erl"), +            "//foo/bar" = filename:dirname("\\\\foo\\bar/baz.erl"), +            "//foo" = filename:dirname("//foo/baz.erl"), +            "//foo" = filename:dirname("//foo/\baz.erl"), +            "//foo" = filename:dirname("//foo\\baz.erl"), +            "//foo" = filename:dirname("\\\\foo/baz.erl"), +            "//foo" = filename:dirname("\\\\foo/\baz.erl"), +            "//foo" = filename:dirname("\\\\foo\\baz.erl"),              "A:" = filename:dirname("A:");          _ -> true      end, @@ -289,7 +329,6 @@ join(Config) when is_list(Config) ->      %% join/1 and join/2 (OTP-12158) by using help function      %% filename_join/2.      "/" = filename:join(["/"]), -    "/" = filename:join(["//"]),      "usr/foo.erl" = filename_join("usr","foo.erl"),      "/src/foo.erl" = filename_join(usr, "/src/foo.erl"),      "/src/foo.erl" = filename_join("/src/",'foo.erl'), @@ -301,7 +340,6 @@ join(Config) when is_list(Config) ->      "a/b/c/d/e/f/g" = filename_join("a//b/c/", "d//e/f/g"),      "a/b/c/d/e/f/g" = filename_join("a//b/c", "d//e/f/g"),      "/d/e/f/g" = filename_join("a//b/c", "/d//e/f/g"), -    "/d/e/f/g" = filename:join("a//b/c", "//d//e/f/g"),      "foo/bar" = filename_join([$f,$o,$o,$/,[]], "bar"), @@ -332,6 +370,7 @@ join(Config) when is_list(Config) ->      case os:type() of          {win32, _} -> +            "//" = filename:join(["//"]),              "d:/" = filename:join(["D:/"]),              "d:/" = filename:join(["D:\\"]),              "d:/abc" = filename_join("D:/", "abc"), @@ -345,8 +384,35 @@ join(Config) when is_list(Config) ->              "c:/usr/foo.erl" = filename:join(["A:","C:/usr","foo.erl"]),              "c:usr/foo.erl" = filename:join(["A:","C:usr","foo.erl"]),              "d:/foo" = filename:join([$D, $:, $/, []], "foo"), +            "//" = filename:join("\\\\", ""), +            "//foo" = filename:join("\\\\", "foo"), +            "//foo/bar" = filename:join("\\\\", "foo\\\\bar"), +            "//foo/bar/baz" = filename:join("\\\\foo", "bar\\\\baz"), +            "//foo/bar/baz" = filename:join("\\\\foo", "bar\\baz"), +            "//foo/bar/baz" = filename:join("\\\\foo\\bar", baz), +            "//foo/\bar/baz" = filename:join("\\\\foo/\bar", baz), +            "//foo/bar/baz" = filename:join("\\\\foo/bar", baz), +            "//bar/baz" = filename:join("\\\\foo", "\\\\bar\\baz"), +            "//bar/baz" = filename:join("\\\\foo", "//bar\\baz"), +            "//bar/baz" = filename:join("\\\\foo", "//bar/baz"), +            "//bar/baz" = filename:join("\\\\foo", "\\\\bar/baz"), +            "//d/e/f/g" = filename:join("a//b/c", "//d//e/f/g"), +            "//" = filename:join("//", ""), +            "//foo" = filename:join("//", "foo"), +            "//foo/bar" = filename:join("//", "foo\\\\bar"), +            "//foo/bar/baz" = filename:join("//foo", "bar\\\\baz"), +            "//foo/bar/baz" = filename:join("//foo", "bar\\baz"), +            "//foo/bar/baz" = filename:join("//foo\\bar", baz), +            "//foo/\bar/baz" = filename:join("//foo/\bar", baz), +            "//foo/bar/baz" = filename:join("//foo/bar", baz), +            "//bar/baz" = filename:join("//foo", "\\\\bar\\baz"), +            "//bar/baz" = filename:join("//foo", "//bar\\baz"), +            "//bar/baz" = filename:join("//foo", "//bar/baz"), +            "//bar/baz" = filename:join("//foo", "\\\\bar/baz"),              ok;          _ -> +            "/" = filename:join(["//"]), +            "/d/e/f/g" = filename:join("a//b/c", "//d//e/f/g"),              ok      end. @@ -402,6 +468,16 @@ split(Config) when is_list(Config) ->                  filename:split("a:\\msdev\\include"),              ["a:","msdev","include"] =                  filename:split("a:msdev\\include"), +            ["//","foo"] = +                filename:split("\\\\foo"), +            ["//","foo"] = +                filename:split("//foo"), +            ["//","foo","bar"] = +                filename:split("\\\\foo\\\\bar"), +            ["//","foo","baz"] = +                filename:split("\\\\foo\\baz"), +            ["//","foo","baz"] = +                filename:split("//foo\\baz"),              ok;          _ ->  	    ok @@ -630,7 +706,6 @@ extension_bin(Config) when is_list(Config) ->  join_bin(Config) when is_list(Config) ->      <<"/">> = filename:join([<<"/">>]), -    <<"/">> = filename:join([<<"//">>]),      <<"usr/foo.erl">> = filename:join(<<"usr">>,<<"foo.erl">>),      <<"/src/foo.erl">> = filename:join(usr, <<"/src/foo.erl">>),      <<"/src/foo.erl">> = filename:join([<<"/src/">>,'foo.erl']), @@ -642,7 +717,6 @@ join_bin(Config) when is_list(Config) ->      <<"a/b/c/d/e/f/g">> = filename:join([<<"a//b/c/">>, <<"d//e/f/g">>]),      <<"a/b/c/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"d//e/f/g">>]),      <<"/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"/d//e/f/g">>]), -    <<"/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"//d//e/f/g">>]),      <<"foo/bar">> = filename:join([$f,$o,$o,$/,[]], <<"bar">>), @@ -695,6 +769,7 @@ join_bin(Config) when is_list(Config) ->      case os:type() of          {win32, _} -> +            <<"//">> = filename:join([<<"//">>]),              <<"d:/">> = filename:join([<<"D:/">>]),              <<"d:/">> = filename:join([<<"D:\\">>]),              <<"d:/abc">> = filename:join([<<"D:/">>, <<"abc">>]), @@ -708,8 +783,35 @@ join_bin(Config) when is_list(Config) ->              <<"c:/usr/foo.erl">> = filename:join([<<"A:">>,<<"C:/usr">>,<<"foo.erl">>]),              <<"c:usr/foo.erl">> = filename:join([<<"A:">>,<<"C:usr">>,<<"foo.erl">>]),              <<"d:/foo">> = filename:join([$D, $:, $/, []], <<"foo">>), +            <<"//">> = filename:join(<<"\\\\">>, <<"">>), +            <<"//foo">> = filename:join(<<"\\\\">>, <<"foo">>), +            <<"//foo/bar">> = filename:join(<<"\\\\">>, <<"foo\\\\bar">>), +            <<"//foo/bar/baz">> = filename:join(<<"\\\\foo">>, <<"bar\\\\baz">>), +            <<"//bar/baz">> = filename:join(<<"\\\\foo">>, <<"\\\\bar\\baz">>), +            <<"//foo/bar/baz">> = filename:join(<<"\\\\foo\\bar">>, baz), +            <<"//foo/\bar/baz">> = filename:join(<<"\\\\foo/\bar">>, baz), +            <<"//foo/bar/baz">> = filename:join(<<"\\\\foo/bar">>, baz), +            <<"//bar/baz">> = filename:join(<<"\\\\foo">>, <<"\\\\bar\\baz">>), +            <<"//bar/baz">> = filename:join(<<"\\\\foo">>, <<"//bar\\baz">>), +            <<"//bar/baz">> = filename:join(<<"\\\\foo">>, <<"//bar/baz">>), +            <<"//bar/baz">> = filename:join(<<"\\\\foo">>, <<"\\\\bar/baz">>), +            <<"//d/e/f/g">> = filename:join([<<"a//b/c">>, <<"//d//e/f/g">>]), +            <<"//">> = filename:join(<<"//">>, <<"">>), +            <<"//foo">> = filename:join(<<"//">>, <<"foo">>), +            <<"//foo/bar">> = filename:join(<<"//">>, <<"foo\\\\bar">>), +            <<"//foo/bar/baz">> = filename:join(<<"//foo">>, <<"bar\\\\baz">>), +            <<"//bar/baz">> = filename:join(<<"//foo">>, <<"\\\\bar\\baz">>), +            <<"//foo/bar/baz">> = filename:join(<<"//foo\\bar">>, baz), +            <<"//foo/\bar/baz">> = filename:join(<<"//foo/\bar">>, baz), +            <<"//foo/bar/baz">> = filename:join(<<"//foo/bar">>, baz), +            <<"//bar/baz">> = filename:join(<<"//foo">>, <<"\\\\bar\\baz">>), +            <<"//bar/baz">> = filename:join(<<"//foo">>, <<"//bar\\baz">>), +            <<"//bar/baz">> = filename:join(<<"//foo">>, <<"//bar/baz">>), +            <<"//bar/baz">> = filename:join(<<"//foo">>, <<"\\\\bar/baz">>),              ok;          _ -> +            <<"/">> = filename:join([<<"//">>]), +            <<"/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"//d//e/f/g">>]),              ok      end. @@ -756,6 +858,16 @@ split_bin(Config) when is_list(Config) ->                  filename:split(<<"a:\\msdev\\include">>),              [<<"a:">>,<<"msdev">>,<<"include">>] =                  filename:split(<<"a:msdev\\include">>), +            [<<"//">>,<<"foo">>] = +                filename:split(<<"\\\\foo">>), +            [<<"//">>,<<"foo">>] = +                filename:split(<<"//foo">>), +            [<<"//">>,<<"foo">>,<<"bar">>] = +                filename:split(<<"\\\\foo\\\\bar">>), +            [<<"//">>,<<"foo">>,<<"baz">>] = +                filename:split(<<"\\\\foo\\baz">>), +            [<<"//">>,<<"foo">>,<<"baz">>] = +                filename:split(<<"//foo\\baz">>),              ok;          _ ->              ok | 
