diff options
author | Patrik Nyblom <[email protected]> | 2012-08-20 17:52:49 +0200 |
---|---|---|
committer | Patrik Nyblom <[email protected]> | 2012-08-20 17:52:49 +0200 |
commit | a49b1a844febb2740c530895b32c0bb0ae7d5aa0 (patch) | |
tree | 6e005b76b80ef0c8f629f291986087f51cbd5aff /lib/kernel/test/file_name_SUITE.erl | |
parent | 4e8f6f2e2cdec0e94f5b4e1a1a878190e4d01704 (diff) | |
parent | 0c387e88d5a6dc97466ec33088aa9798eeb1d16d (diff) | |
download | otp-a49b1a844febb2740c530895b32c0bb0ae7d5aa0.tar.gz otp-a49b1a844febb2740c530895b32c0bb0ae7d5aa0.tar.bz2 otp-a49b1a844febb2740c530895b32c0bb0ae7d5aa0.zip |
Merge branch 'pan/unicode_home/OTP-10160' into maint
* pan/unicode_home/OTP-10160:
Teach release_handler_SUITE about file:native_name_encoding/0
Add documetation about Unicode in environment
Make get/putenv and erlexec understand Unicode
Diffstat (limited to 'lib/kernel/test/file_name_SUITE.erl')
-rw-r--r-- | lib/kernel/test/file_name_SUITE.erl | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/lib/kernel/test/file_name_SUITE.erl b/lib/kernel/test/file_name_SUITE.erl index 53bcb1162d..be33ec2c06 100644 --- a/lib/kernel/test/file_name_SUITE.erl +++ b/lib/kernel/test/file_name_SUITE.erl @@ -74,7 +74,7 @@ init_per_suite/1,end_per_suite/1, init_per_group/2,end_per_group/2, init_per_testcase/2, end_per_testcase/2]). --export([normal/1,icky/1,very_icky/1,normalize/1]). +-export([normal/1,icky/1,very_icky/1,normalize/1,home_dir/1]). init_per_testcase(_Func, Config) -> @@ -88,7 +88,7 @@ end_per_testcase(_Func, Config) -> suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> - [normal, icky, very_icky, normalize]. + [normal, icky, very_icky, normalize, home_dir]. groups() -> []. @@ -105,6 +105,54 @@ init_per_group(_GroupName, Config) -> end_per_group(_GroupName, Config) -> Config. +home_dir(suite) -> + []; +home_dir(doc) -> + ["Check that Erlang can be started with unicode named home directory"]; +home_dir(Config) when is_list(Config) -> + try + Name=[960,945,964,961,953,954], + Priv = ?config(priv_dir, Config), + UniMode = file:native_name_encoding() =/= latin1, + if + not UniMode -> + throw(need_unicode_mode); + true -> + ok + end, + NewHome=filename:join(Priv,Name), + file:make_dir(NewHome), + {SaveOldName,SaveOldValue} = case os:type() of + {win32,nt} -> + HomePath=re:replace(filename:nativename(NewHome),"^[a-zA-Z]:","",[{return,list},unicode]), + Save = os:getenv("HOMEPATH"), + os:putenv("HOMEPATH",HomePath), + {"HOMEPATH",Save}; + {unix,_} -> + Save = os:getenv("HOME"), + os:putenv("HOME",NewHome), + {"HOME",Save}; + _ -> + rm_rf(prim_file,NewHome), + throw(unsupported_os) + end, + try + {ok,Node} = test_server:start_node(test_unicode_homedir,slave,[{args,"-setcookie "++atom_to_list(erlang:get_cookie())}]), + test_server:stop_node(Node), + ok + after + os:putenv(SaveOldName,SaveOldValue), + rm_rf(prim_file,NewHome) + end + catch + throw:need_unicode_mode -> + io:format("Sorry, can only run in unicode mode.~n"), + {skipped,"VM needs to be started in Unicode filename mode"}; + throw:unsupported_os -> + io:format("Sorry, can only run on Unix/Windows.~n"), + {skipped,"Runs only on Unix/Windows"} + end. + normalize(suite) -> []; normalize(doc) -> |