diff options
Diffstat (limited to 'lib/common_test')
38 files changed, 218 insertions, 210 deletions
| diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index a12c0c9101..875301a8b2 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -1030,7 +1030,7 @@ make_and_load(Dir, Suite) ->      EnvInclude =  	case os:getenv("CT_INCLUDE_PATH") of  	    false -> []; -	    CtInclPath -> string:tokens(CtInclPath, [$:,$ ,$,]) +	    CtInclPath -> string:lexemes(CtInclPath, [$:,$ ,$,])  	end,      StartInclude =  	case init:get_argument(include) of diff --git a/lib/common_test/src/ct_config.erl b/lib/common_test/src/ct_config.erl index d48ae830bb..b3f983dd46 100644 --- a/lib/common_test/src/ct_config.erl +++ b/lib/common_test/src/ct_config.erl @@ -659,7 +659,7 @@ decrypt_config_file(EncryptFileName, TargetFileName, {key,Key}) ->  get_crypt_key_from_file(File) ->      case file:read_file(File) of  	{ok,Bin} -> -	    case catch string:tokens(binary_to_list(Bin), [$\n,$\r]) of +	    case catch string:lexemes(binary_to_list(Bin), [$\n,$\r]) of  		[Key] ->  		    Key;  		_ -> @@ -693,7 +693,7 @@ get_crypt_key_from_file() ->  	noent ->  	    Result;  	_ -> -	    case catch string:tokens(binary_to_list(Result), [$\n,$\r]) of +	    case catch string:lexemes(binary_to_list(Result), [$\n,$\r]) of  		[Key] ->  		    io:format("~nCrypt key file: ~ts~n", [FullName]),  		    Key; diff --git a/lib/common_test/src/ct_config_plain.erl b/lib/common_test/src/ct_config_plain.erl index e72b55971b..e77381d7cf 100644 --- a/lib/common_test/src/ct_config_plain.erl +++ b/lib/common_test/src/ct_config_plain.erl @@ -106,7 +106,7 @@ read_config_terms1({done,{eof,EL},_}, L, _, _) ->  read_config_terms1({done,{error,Info,EL},_}, L, _, _) ->      {error,{Info,{L,EL}}};  read_config_terms1({more,_}, L, Terms, Rest) -> -    case string:tokens(Rest, [$\n,$\r,$\t]) of +    case string:lexemes(Rest, [$\n,$\r,$\t]) of  	[] ->  	    lists:reverse(Terms);  	_ -> diff --git a/lib/common_test/src/ct_conn_log_h.erl b/lib/common_test/src/ct_conn_log_h.erl index cf0a228e1b..3e83020f45 100644 --- a/lib/common_test/src/ct_conn_log_h.erl +++ b/lib/common_test/src/ct_conn_log_h.erl @@ -224,7 +224,7 @@ now_to_time({_,_,MicroS}=Now) ->      {calendar:now_to_local_time(Now),MicroS}.  pretty_head({{{Y,Mo,D},{H,Mi,S}},MicroS},ConnMod,Text0) -> -    Text = string:to_upper(atom_to_list(ConnMod) ++ Text0), +    Text = string:uppercase(atom_to_list(ConnMod) ++ Text0),      io_lib:format("= ~s ==== ~s-~s-~w::~s:~s:~s,~s ",  		  [Text,t(D),month(Mo),Y,t(H),t(Mi),t(S),  		   micro2milli(MicroS)]). @@ -275,7 +275,7 @@ pad0(N,Str) ->      lists:duplicate(N-M,$0) ++ Str.  pad_char_end(N,Str,Char) -> -    case length(lists:flatten(Str)) of +    case string:length(Str) of  	M when M<N -> Str ++ lists:duplicate(N-M,Char);  	_ -> Str      end. diff --git a/lib/common_test/src/ct_framework.erl b/lib/common_test/src/ct_framework.erl index 6066470233..7f7e9ae6f9 100644 --- a/lib/common_test/src/ct_framework.erl +++ b/lib/common_test/src/ct_framework.erl @@ -921,9 +921,10 @@ error_notification(Mod,Func,_Args,{Error,Loc}) ->  	      end,      ErrorStr = case ErrorSpec of  		 {badmatch,Descr} -> -		     Descr1 = lists:flatten(io_lib:format("~tP",[Descr,10])), -		     if length(Descr1) > 50 -> -			     Descr2 = string:substr(Descr1,1,50), +                     Descr1 = io_lib:format("~tP",[Descr,10]), +                     DescrLength = string:length(Descr1), +                     if DescrLength > 50 -> +			     Descr2 = string:slice(Descr1,0,50),  			     io_lib:format("{badmatch,~ts...}",[Descr2]);  			true ->  			     io_lib:format("{badmatch,~ts}",[Descr1]) diff --git a/lib/common_test/src/ct_ftp.erl b/lib/common_test/src/ct_ftp.erl index 8effb06e7e..ee4a6a6c45 100644 --- a/lib/common_test/src/ct_ftp.erl +++ b/lib/common_test/src/ct_ftp.erl @@ -285,7 +285,7 @@ init(KeyOrName,{IP,Port},{Username,Password}) ->  	{ok,FtpPid} ->  	    log(heading(init,KeyOrName),   		"Opened ftp connection:\nIP: ~tp\nUsername: ~tp\nPassword: ~p\n", -		[IP,Username,lists:duplicate(length(Password),$*)]), +		[IP,Username,lists:duplicate(string:length(Password),$*)]),  	    {ok,FtpPid,#state{ftp_pid=FtpPid,target_name=KeyOrName}};  	Error ->  	    Error diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index ba7660fe6a..028c265420 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -1188,26 +1188,23 @@ print_style(Fd, IoFormat, StyleSheet) ->      case file:read_file(StyleSheet) of  	{ok,Bin} ->  	    Str = b2s(Bin,encoding(StyleSheet)), -	    Pos0 = case string:str(Str,"<style>") of -		       0 -> string:str(Str,"<STYLE>"); -		       N0 -> N0 -		   end, -	    Pos1 = case string:str(Str,"</style>") of -		       0 -> string:str(Str,"</STYLE>"); -		       N1 -> N1 -		   end, -	    if (Pos0 == 0) and (Pos1 /= 0) -> -		    print_style_error(Fd, IoFormat, -				      StyleSheet, missing_style_start_tag); -	       (Pos0 /= 0) and (Pos1 == 0) -> -		    print_style_error(Fd, IoFormat, -				      StyleSheet,missing_style_end_tag); -	       Pos0 /= 0 -> -		    Style = string:sub_string(Str,Pos0,Pos1+7), -		    IoFormat(Fd,"~ts\n",[Style]); -	       Pos0 == 0 -> -		    IoFormat(Fd,"<style>\n~ts</style>\n",[Str]) -	    end; +            case re:run(Str,"<style>.*</style>", +                        [dotall,caseless,{capture,all,list}]) of +                nomatch -> +                    case re:run(Str,"</?style>",[caseless,{capture,all,list}]) of +                        nomatch -> +                            IoFormat(Fd,"<style>\n~ts</style>\n",[Str]); +                        {match,["</"++_]} -> +                            print_style_error(Fd, IoFormat, +                                              StyleSheet, +                                              missing_style_start_tag); +                        {match,[_]} -> +                            print_style_error(Fd, IoFormat, +                                              StyleSheet,missing_style_end_tag) +                    end; +                {match,[Style]} -> +                    IoFormat(Fd,"~ts\n",[Style]) +            end;  	{error,Reason} ->  	    print_style_error(Fd,IoFormat,StyleSheet,Reason)      end. @@ -1414,9 +1411,9 @@ make_one_index_entry1(SuiteName, Link, Label, Success, Fail, UserSkip, AutoSkip,      {Lbl,Timestamp,Node,AllInfo} =  	case All of  	    {true,OldRuns} ->  -		[_Prefix,NodeOrDate|_] = string:tokens(Link,"."), -		Node1 = case string:chr(NodeOrDate,$@) of -			    0 -> "-"; +		[_Prefix,NodeOrDate|_] = string:lexemes(Link,"."), +		Node1 = case string:find(NodeOrDate,[$@]) of +			    nomatch -> "-";  			    _ -> NodeOrDate  			end, @@ -1523,7 +1520,7 @@ not_built(BaseName,_LogDir,_All,Missing) ->      %%            Top.ObjDir | Top.ObjDir.suites | Top.ObjDir.Suite |       %%            Top.ObjDir.Suite.cases | Top.ObjDir.Suite.Case          Failed = -	case string:tokens(BaseName,".") of +	case string:lexemes(BaseName,".") of  	    [T,O] when is_list(T) ->		% all under Top.ObjDir  		locate_info({T,O},all,Missing);  	    [T,O,"suites"] -> @@ -2051,9 +2048,9 @@ sort_all_runs(Dirs) ->      %% "YYYY-MM-DD_HH.MM.SS"      lists:sort(fun(Dir1,Dir2) ->  		       [SS1,MM1,HH1,Date1|_] = -			   lists:reverse(string:tokens(Dir1,[$.,$_])), +			   lists:reverse(string:lexemes(Dir1,[$.,$_])),  		       [SS2,MM2,HH2,Date2|_] = -			   lists:reverse(string:tokens(Dir2,[$.,$_])), +			   lists:reverse(string:lexemes(Dir2,[$.,$_])),  		       {Date1,HH1,MM1,SS1} > {Date2,HH2,MM2,SS2}  	       end, Dirs). @@ -2063,9 +2060,9 @@ sort_ct_runs(Dirs) ->      lists:sort(        fun(Dir1,Dir2) ->  	      [SS1,MM1,DateHH1 | _] = -		  lists:reverse(string:tokens(filename:dirname(Dir1),[$.])), +		  lists:reverse(string:lexemes(filename:dirname(Dir1),[$.])),  	      [SS2,MM2,DateHH2 | _] = -		  lists:reverse(string:tokens(filename:dirname(Dir2),[$.])), +		  lists:reverse(string:lexemes(filename:dirname(Dir2),[$.])),  	      {DateHH1,MM1,SS1} =< {DateHH2,MM2,SS2}        end, Dirs). @@ -2211,27 +2208,15 @@ runentry(Dir, Totals={Node,Label,Logs,  		    0 -> "-";  		    N -> integer_to_list(N)  		end, -    StripExt =  -	fun(File) -> -		string:sub_string(File,1, -				  length(File)- -				      length(?logdir_ext)) ++ ", " -	end, -    Polish =  fun(S) -> case lists:reverse(S) of -			    [32,$,|Rev] -> lists:reverse(Rev); -			    [$,|Rev] -> lists:reverse(Rev); -			    _ -> S -			end  -	      end, -    TestNames = Polish(lists:flatten(lists:map(StripExt,Logs))), + +    RootNames = lists:map(fun(F) -> filename:rootname(F,?logdir_ext) end, Logs), +    TestNames = lists:flatten(lists:join(", ", RootNames)),      TestNamesTrunc = -	if TestNames=="" ->  -		""; -	   length(TestNames) < ?testname_width -> +	if length(TestNames) < ?testname_width ->  		TestNames;  	   true -> -		Trunc = Polish(string:substr(TestNames,1, -					     ?testname_width-3)), +		Trunc = string:trim(string:slice(TestNames,0,?testname_width-3), +                                    trailing,",\s"),  		lists:flatten(io_lib:format("~ts...",[Trunc]))  	end,      TotMissingStr = @@ -2374,7 +2359,7 @@ force_rename(From,To,Number) ->  timestamp(Dir) -> -    TsR = lists:reverse(string:tokens(Dir,".-_")), +    TsR = lists:reverse(string:lexemes(Dir,".-_")),      [S,Min,H,D,M,Y] = [list_to_integer(N) || N <- lists:sublist(TsR,6)],      format_time({{Y,M,D},{H,Min,S}}). @@ -2923,7 +2908,7 @@ cache_vsn() ->  	    VSNfile = filename:join([EbinDir,"..","vsn.mk"]),  	    case file:read_file(VSNfile) of  		{ok,Bin} -> -		    [_,VSN] = string:tokens(binary_to_list(Bin),[$=,$\n,$ ]), +		    [_,VSN] = string:lexemes(binary_to_list(Bin),[$=,$\n,$ ]),  		    VSN;  		_ ->  		    undefined @@ -3320,7 +3305,7 @@ insert_javascript({tablesorter,TableName,  			  end, [{"CTDateSorter",DateCols},  				{"CTTextSorter",TextCols},  				{"CTValSorter",ValCols}]))), -    Headers1 = string:substr(Headers, 1, length(Headers)-2), +    Headers1 = string:trim(Headers, trailing, ",\n"),      ["<script type=\"text/javascript\">\n",       "// Parser for date format, e.g: Wed Jul 4 2012 11:24:15\n", diff --git a/lib/common_test/src/ct_master.erl b/lib/common_test/src/ct_master.erl index 6e6d1879c2..44d3fb8f64 100644 --- a/lib/common_test/src/ct_master.erl +++ b/lib/common_test/src/ct_master.erl @@ -807,7 +807,7 @@ filter_accessible(InitOptions, Inaccessible)->  start_nodes(InitOptions)->      lists:foreach(fun({NodeName, Options})-> -	[NodeS,HostS]=string:tokens(atom_to_list(NodeName), "@"), +	[NodeS,HostS]=string:lexemes(atom_to_list(NodeName), "@"),  	Node=list_to_atom(NodeS),  	Host=list_to_atom(HostS),  	HasNodeStart = lists:keymember(node_start, 1, Options), diff --git a/lib/common_test/src/ct_master_logs.erl b/lib/common_test/src/ct_master_logs.erl index d8ecd641ed..fd92f73f63 100644 --- a/lib/common_test/src/ct_master_logs.erl +++ b/lib/common_test/src/ct_master_logs.erl @@ -297,7 +297,7 @@ sort_all_runs(Dirs) ->      %% "YYYY-MM-DD_HH.MM.SS"      KeyList =  	lists:map(fun(Dir) -> -			  case lists:reverse(string:tokens(Dir,[$.,$_])) of +			  case lists:reverse(string:lexemes(Dir,[$.,$_])) of  			      [SS,MM,HH,Date|_] ->  				  {{Date,HH,MM,SS},Dir};  			      _Other -> @@ -312,18 +312,8 @@ runentry(Dir) ->      {MasterStr,NodesStr} =   	case read_details_file(Dir) of  	    {Master,Nodes} when is_list(Nodes) -> -		[_,Host] = string:tokens(atom_to_list(Master),"@"), -		NodesList =  -		    lists:reverse(lists:map(fun(N) -> -						    atom_to_list(N) ++ ", " -					    end,Nodes)), -		case NodesList of -		    [N|NListR] -> -			N1 = string:sub_string(N,1,length(N)-2), -			{Host,lists:flatten(lists:reverse([N1|NListR]))}; -		    [] -> -			{Host,""} -		end; +		[_,Host] = string:lexemes(atom_to_list(Master),"@"), +                {Host,lists:concat(lists:join(", ",Nodes))};  	    _Error ->  		{"unknown",""}  	end, @@ -348,7 +338,7 @@ all_runs_header() ->        xhtml("", "</tr></thead>\n<tbody>\n")]].  timestamp(Dir) -> -    [S,Min,H,D,M,Y|_] = lists:reverse(string:tokens(Dir,".-_")), +    [S,Min,H,D,M,Y|_] = lists:reverse(string:lexemes(Dir,".-_")),      [S1,Min1,H1,D1,M1,Y1] = [list_to_integer(N) || N <- [S,Min,H,D,M,Y]],      format_time({{Y1,M1,D1},{H1,Min1,S1}}). diff --git a/lib/common_test/src/ct_netconfc.erl b/lib/common_test/src/ct_netconfc.erl index 2c4b97df20..29188a648e 100644 --- a/lib/common_test/src/ct_netconfc.erl +++ b/lib/common_test/src/ct_netconfc.erl @@ -1467,7 +1467,7 @@ decode_data(Other) ->      {error,{unexpected_rpc_reply,Other}}.  get_qualified_name(Tag) -> -    case string:tokens(atom_to_list(Tag),":") of +    case string:lexemes(atom_to_list(Tag),":") of  	[TagStr] -> {[],TagStr};  	[PrefixStr,TagStr] -> {PrefixStr,TagStr}      end. diff --git a/lib/common_test/src/ct_release_test.erl b/lib/common_test/src/ct_release_test.erl index 551a7e06d7..4af9afb45b 100644 --- a/lib/common_test/src/ct_release_test.erl +++ b/lib/common_test/src/ct_release_test.erl @@ -817,7 +817,7 @@ get_runtime_deps([App|Apps],StartApps,Acc,Visited) ->  	    RuntimeDeps =  		lists:flatmap(  		  fun(Str) -> -			  [RuntimeAppStr,_] = string:tokens(Str,"-"), +			  [RuntimeAppStr,_] = string:lexemes(Str,"-"),  			  RuntimeApp = list_to_atom(RuntimeAppStr),  			  case {lists:keymember(RuntimeApp,1,Acc),  				lists:member(RuntimeApp,StartApps)} of diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index 14f28f9ca3..9436236719 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -147,7 +147,7 @@ script_start(Args) ->  	    CTVsn =  		case filename:basename(code:lib_dir(common_test)) of  		    CTBase when is_list(CTBase) -> -			case string:tokens(CTBase, "-") of +			case string:lexemes(CTBase, "-") of  			    ["common_test",Vsn] -> " v"++Vsn;  			    _ -> ""  			end @@ -315,7 +315,7 @@ script_start1(Parent, Args) ->  			{undefined,InclDirs};  		    CtInclPath ->  			AllInclDirs = -			    string:tokens(CtInclPath,[$:,$ ,$,]) ++ InclDirs, +			    string:lexemes(CtInclPath,[$:,$ ,$,]) ++ InclDirs,  			application:set_env(common_test, include, AllInclDirs),  			{undefined,AllInclDirs}  		end; @@ -1096,7 +1096,7 @@ run_test2(StartOpts) ->  			application:set_env(common_test, include, InclDirs),  			{undefined,InclDirs};  		    CtInclPath -> -			InclDirs1 = string:tokens(CtInclPath, [$:,$ ,$,]), +			InclDirs1 = string:lexemes(CtInclPath, [$:,$ ,$,]),  			AllInclDirs = InclDirs1++InclDirs,  			application:set_env(common_test, include, AllInclDirs),  			{undefined,AllInclDirs} @@ -1482,7 +1482,7 @@ run_testspec2(TestSpec) ->  		    false ->  			Opts#opts.include;  		    CtInclPath -> -			EnvInclude = string:tokens(CtInclPath, [$:,$ ,$,]), +			EnvInclude = string:lexemes(CtInclPath, [$:,$ ,$,]),  			EnvInclude++Opts#opts.include  		end,  	    application:set_env(common_test, include, AllInclude), diff --git a/lib/common_test/src/ct_slave.erl b/lib/common_test/src/ct_slave.erl index 4188bd7c3b..61e6446df8 100644 --- a/lib/common_test/src/ct_slave.erl +++ b/lib/common_test/src/ct_slave.erl @@ -38,7 +38,8 @@  -record(options, {username, password, boot_timeout, init_timeout,  		  startup_timeout, startup_functions, monitor_master, -		  kill_if_fail, erl_flags, env, ssh_port, ssh_opts}). +		  kill_if_fail, erl_flags, env, ssh_port, ssh_opts, +		  stop_timeout}).  %%%-----------------------------------------------------------------  %%% @spec start(Node) -> Result @@ -198,6 +199,7 @@ start(Host, Node, Opts) ->  	    end      end. +%%%-----------------------------------------------------------------  %%% @spec stop(Node) -> Result  %%%   Node = atom()  %%%   Result = {ok, NodeName} | @@ -205,16 +207,41 @@ start(Host, Node, Opts) ->  %%%   Reason = not_started |  %%%            not_connected |  %%%            stop_timeout -  %%%   NodeName = atom()  %%% @doc Stops the running Erlang node with name <code>Node</code> on  %%% the localhost.  stop(Node) ->      stop(gethostname(), Node). -%%% @spec stop(Host, Node) -> Result +%%%----------------------------------------------------------------- +%%% @spec stop(HostOrNode, NodeOrOpts) -> Result +%%%   HostOrNode = atom() +%%%   NodeOrOpts = atom() | list() +%%%   Result = {ok, NodeName} | +%%%            {error, Reason, NodeName} +%%%   Reason = not_started | +%%%            not_connected | +%%%            stop_timeout +%%%   NodeName = atom() +%%% @doc Stops the running Erlang node with default options on a specified +%%% host, or on the local host with specified options. That is, +%%% the call is interpreted as <code>stop(Host, Node)</code> when the +%%% second argument is atom-valued and <code>stop(Node, Opts)</code> +%%% when it's list-valued. +%%% @see stop/3 +stop(_HostOrNode = Node, _NodeOrOpts = Opts) %% match to satiate edoc +  when is_list(Opts) -> +    stop(gethostname(), Node, Opts); + +stop(Host, Node) -> +    stop(Host, Node, []). + +%%% @spec stop(Host, Node, Opts) -> Result  %%%   Host = atom()  %%%   Node = atom() +%%%   Opts = [OptTuples] +%%%   OptTuples = {stop_timeout, StopTimeout} +%%%   StopTimeout = integer()  %%%   Result = {ok, NodeName} |  %%%            {error, Reason, NodeName}  %%%   Reason = not_started | @@ -222,12 +249,19 @@ stop(Node) ->  %%%            stop_timeout  %%%   NodeName = atom()  %%% @doc Stops the running Erlang node with name <code>Node</code> on -%%% host <code>Host</code>. -stop(Host, Node) -> +%%% host <code>Host</code> as specified by options <code>Opts</code>. +%%% +%%% <p>Option <code>stop_timeout</code> specifies, in seconds, +%%% the time to wait until the node is disconnected. +%%% Defaults to 5 seconds. If this timeout occurs, +%%% the result <code>{error, stop_timeout, NodeName}</code> is returned. +%%% +stop(Host, Node, Opts) ->      ENode = enodename(Host, Node),      case is_started(ENode) of  	{true, connected}-> -	     do_stop(ENode); +	     OptionsRec = fetch_options(Opts), +	     do_stop(ENode, OptionsRec);  	{true, not_connected}->  	     {error, not_connected, ENode};  	false-> @@ -257,11 +291,13 @@ fetch_options(Options) ->      EnvVars = get_option_value(env, Options, []),      SSHPort = get_option_value(ssh_port, Options, []),      SSHOpts = get_option_value(ssh_opts, Options, []), +    StopTimeout = get_option_value(stop_timeout, Options, 5),      #options{username=UserName, password=Password,  	     boot_timeout=BootTimeout, init_timeout=InitTimeout,  	     startup_timeout=StartupTimeout, startup_functions=StartupFunctions,  	     monitor_master=Monitor, kill_if_fail=KillIfFail, -	     erl_flags=ErlFlags, env=EnvVars, ssh_port=SSHPort, ssh_opts=SSHOpts}. +	     erl_flags=ErlFlags, env=EnvVars, ssh_port=SSHPort, ssh_opts=SSHOpts, +	     stop_timeout=StopTimeout}.  % send a message when slave node is started  % @hidden @@ -461,6 +497,8 @@ wait_for_node_alive(Node, N) ->  % call init:stop on a remote node  do_stop(ENode) -> +    do_stop(ENode, fetch_options([])). +do_stop(ENode, Options) ->      {Cover,MainCoverNode} =  	case test_server:is_cover() of  	    true -> @@ -471,7 +509,8 @@ do_stop(ENode) ->  		{false,undefined}      end,      spawn(ENode, init, stop, []), -    case wait_for_node_dead(ENode, 5) of +    StopTimeout = Options#options.stop_timeout, +    case wait_for_node_dead(ENode, StopTimeout) of  	{ok,ENode} ->  	    if Cover ->  		    %% To avoid that cover is started again if a node diff --git a/lib/common_test/src/ct_ssh.erl b/lib/common_test/src/ct_ssh.erl index ca62357e1c..491d56dfc1 100644 --- a/lib/common_test/src/ct_ssh.erl +++ b/lib/common_test/src/ct_ssh.erl @@ -996,7 +996,8 @@ init(KeyOrName, {ConnType,Addr,Port}, AllOpts) ->  	    try_log(heading(init,KeyOrName),   		    "Opened ~w connection:\n"  		    "Host: ~tp (~p)\nUser: ~tp\nPassword: ~p\n", -		[ConnType,Addr,Port,User,lists:duplicate(length(Password),$*)]), +		[ConnType,Addr,Port,User, +                 lists:duplicate(string:length(Password),$*)]),  	    {ok,SSHRef,#state{ssh_ref=SSHRef, conn_type=ConnType,  			      target=KeyOrName}}      end. diff --git a/lib/common_test/src/ct_util.erl b/lib/common_test/src/ct_util.erl index abf131f4df..3c0fead5b2 100644 --- a/lib/common_test/src/ct_util.erl +++ b/lib/common_test/src/ct_util.erl @@ -795,25 +795,25 @@ parse_table(Data) ->      {Heading,Lines}.  get_headings(["|" ++ Headings | Rest]) -> -    {remove_space(string:tokens(Headings, "|"),[]), Rest}; +    {remove_space(string:lexemes(Headings, "|"),[]), Rest};  get_headings([_ | Rest]) ->      get_headings(Rest);  get_headings([]) ->      {{},[]}.  parse_row(["|" ++ _ = Row | T], Rows, NumCols) when NumCols > 1 -> -    case string:tokens(Row, "|") of +    case string:lexemes(Row, "|") of  	Values when length(Values) =:= NumCols ->  	    parse_row(T,[remove_space(Values,[])|Rows], NumCols);  	Values when length(Values) < NumCols ->  	    parse_row([Row ++"\n"++ hd(T) | tl(T)], Rows, NumCols)      end; -parse_row(["|" ++ _ = Row | T], Rows, 1 = NumCols) -> -    case string:rchr(Row, $|) of -	1 -> +parse_row(["|" ++ X = Row | T], Rows, 1 = NumCols) -> +    case string:find(X, [$|]) of +	nomatch ->  	    parse_row([Row ++"\n"++hd(T) | tl(T)], Rows, NumCols);  	_Else -> -	    parse_row(T, [remove_space(string:tokens(Row,"|"),[])|Rows], +	    parse_row(T, [remove_space(string:lexemes(Row,"|"),[])|Rows],  		      NumCols)      end;  parse_row([_Skip | T], Rows, NumCols) -> @@ -822,7 +822,7 @@ parse_row([], Rows, _NumCols) ->      lists:reverse(Rows).  remove_space([Str|Rest],Acc) -> -    remove_space(Rest,[string:strip(string:strip(Str),both,$')|Acc]); +    remove_space(Rest,[string:trim(string:trim(Str,both,[$\s]),both,[$'])|Acc]);  remove_space([],Acc) ->      list_to_tuple(lists:reverse(Acc)). @@ -832,7 +832,7 @@ remove_space([],Acc) ->  %%%  %%% @doc  is_test_dir(Dir) -> -    lists:last(string:tokens(filename:basename(Dir), "_")) == "test". +    lists:last(string:lexemes(filename:basename(Dir), "_")) == "test".  %%%-----------------------------------------------------------------  %%% @spec  @@ -1077,7 +1077,7 @@ open_url(iexplore, Args, URL) ->      _ = case win32reg:values(R) of  	{ok, Paths} ->  	    Path = proplists:get_value(default, Paths), -	    [Cmd | _] = string:tokens(Path, "%"), +	    [Cmd | _] = string:lexemes(Path, "%"),  	    Cmd1 = Cmd ++ " " ++ Args ++ " " ++ URL,  	    io:format(?def_gl, "~nOpening ~ts with command:~n  ~ts~n", [URL,Cmd1]),  	    open_port({spawn,Cmd1}, []); diff --git a/lib/common_test/src/cth_surefire.erl b/lib/common_test/src/cth_surefire.erl index da68bd105e..4407ff56c1 100644 --- a/lib/common_test/src/cth_surefire.erl +++ b/lib/common_test/src/cth_surefire.erl @@ -184,15 +184,14 @@ end_tc(Name, _Config, _Res, State = #state{ curr_suite = Suite,      Log =  	case Log0 of  	    "" -> -		LowerSuiteName = string:to_lower(atom_to_list(Suite)), +		LowerSuiteName = string:lowercase(atom_to_list(Suite)),  		filename:join(CurrLogDir,LowerSuiteName++"."++Name++".html");  	    _ ->  		Log0  	end,      Url = make_url(UrlBase,Log),      ClassName = atom_to_list(Suite), -    PGroup = string:join([ atom_to_list(Group)|| -			     Group <- lists:reverse(Groups)],"."), +    PGroup = lists:concat(lists:join(".",lists:reverse(Groups))),      TimeTakes = io_lib:format("~f",[timer:now_diff(?now,TS) / 1000000]),      State#state{ test_cases = [#testcase{ log = Log,  					  url = Url, @@ -317,9 +316,9 @@ make_url(undefined,_) ->  make_url(_,[]) ->      undefined;  make_url(UrlBase0,Log) -> -    UrlBase = string:strip(UrlBase0,right,$/), +    UrlBase = string:trim(UrlBase0,trailing,[$/]),      RelativeLog = get_relative_log_url(Log), -    string:join([UrlBase,RelativeLog],"/"). +    lists:flatten(lists:join($/,[UrlBase,RelativeLog])).  get_test_root(Log) ->      LogParts = filename:split(Log), @@ -329,7 +328,7 @@ get_relative_log_url(Log) ->      LogParts = filename:split(Log),      Start = length(LogParts)-?log_depth,      Length = ?log_depth+1, -    string:join(lists:sublist(LogParts,Start,Length),"/"). +    lists:flatten(lists:join($/,lists:sublist(LogParts,Start,Length))).  count_tcs([#testcase{name=ConfCase}|TCs],Ok,F,S)    when ConfCase=="init_per_suite"; diff --git a/lib/common_test/src/test_server.erl b/lib/common_test/src/test_server.erl index dc6b7a536c..35a73e6d2e 100644 --- a/lib/common_test/src/test_server.erl +++ b/lib/common_test/src/test_server.erl @@ -462,11 +462,12 @@ run_test_case_msgloop(#st{ref=Ref,pid=Pid,end_conf_pid=EndConfPid0}=St0) ->  			 %% it as a comment, potentially replacing user data  			 Error = lists:flatten(io_lib:format("Aborted: ~tp",  							     [Reason])), -			 Error1 = lists:flatten([string:strip(S,left) || -						    S <- string:tokens(Error, -								       [$\n])]), -			 Comment = if length(Error1) > 63 -> -					   string:substr(Error1,1,60) ++ "..."; +			 Error1 = lists:flatten([string:trim(S,leading,"\s") || +						    S <- string:lexemes(Error, +                                                                        [$\n])]), +                         ErrorLength = string:length(Error1), +			 Comment = if ErrorLength > 63 -> +					   string:slice(Error1,0,60) ++ "...";  				      true ->  					   Error1  				   end, @@ -2697,9 +2698,9 @@ is_cover() ->  is_debug() ->      case catch erlang:system_info(debug_compiled) of  	{'EXIT', _} -> -	    case string:str(erlang:system_info(system_version), "debug") of -		Int when is_integer(Int), Int > 0 -> true; -		_ -> false +	    case string:find(erlang:system_info(system_version), "debug") of +                nomatch -> false; +		_ -> true  	    end;  	Res ->  	    Res @@ -2735,9 +2736,9 @@ has_superfluous_schedulers() ->  %% We might want to do more tests on a commercial platform, for instance  %% ensuring that all applications have documentation).  is_commercial() -> -    case string:str(erlang:system_info(system_version), "source") of -	Int when is_integer(Int), Int > 0 -> false; -	_ -> true +    case string:find(erlang:system_info(system_version), "source") of +        nomatch -> true; +	_ -> false      end.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/lib/common_test/src/test_server_ctrl.erl b/lib/common_test/src/test_server_ctrl.erl index 71978c7267..c70ea4ef9d 100644 --- a/lib/common_test/src/test_server_ctrl.erl +++ b/lib/common_test/src/test_server_ctrl.erl @@ -1464,13 +1464,14 @@ get_suites([], Mods) ->      lists:reverse(Mods).  add_mod(Mod, Mods) -> -    case string:rstr(atom_to_list(Mod), "_SUITE") of -	0 -> false; -	_ ->					% test suite +    case lists:reverse(atom_to_list(Mod)) of +        "ETIUS_" ++ _ -> % test suite  	     case lists:member(Mod, Mods) of  		 true ->  false;  		 false -> true -	     end +	     end; +        _ -> +            false      end. @@ -2611,7 +2612,7 @@ run_test_cases_loop([{conf,Ref,Props,{Mod,Func}}|_Cases]=Cs0,  				NumStr ->  				    %% Ex: "123 456 789" or "123,456,789" -> {123,456,789}  				    list_to_tuple([list_to_integer(NS) || -						   NS <- string:tokens(NumStr, [$ ,$:,$,])]) +						   NS <- string:lexemes(NumStr, [$ ,$:,$,])])  			    end,  			{shuffle_cases(Ref, Cs0, UseSeed),{shuffle,UseSeed}}  		end; @@ -3979,11 +3980,12 @@ progress(skip, CaseNum, Mod, Func, GrName, Loc, Reason, Time,  			       true -> "~w"  			    end, [Time]),      ReasonStr = escape_chars(reason_to_string(Reason1)), -    ReasonStr1 = lists:flatten([string:strip(S,left) || -				S <- string:tokens(ReasonStr,[$\n])]), +    ReasonStr1 = lists:flatten([string:trim(S,leading,"\s") || +				S <- string:lexemes(ReasonStr,[$\n])]), +    ReasonLength = string:length(ReasonStr1),      ReasonStr2 = -	if length(ReasonStr1) > 80 -> -		string:substr(ReasonStr1, 1, 77) ++ "..."; +	if ReasonLength > 80 -> +		string:slice(ReasonStr1, 0, 77) ++ "...";  	   true ->  		ReasonStr1  	end, @@ -4067,11 +4069,12 @@ progress(failed, CaseNum, Mod, Func, GrName, unknown, Reason, Time,  			       true -> "~w"  			    end, [Time]),      ErrorReason = escape_chars(lists:flatten(io_lib:format("~tp", [Reason]))), -    ErrorReason1 = lists:flatten([string:strip(S,left) || -				  S <- string:tokens(ErrorReason,[$\n])]), +    ErrorReason1 = lists:flatten([string:trim(S,leading,"\s") || +				  S <- string:lexemes(ErrorReason,[$\n])]), +    ErrorReasonLength = string:length(ErrorReason1),      ErrorReason2 = -	if length(ErrorReason1) > 63 -> -		string:substr(ErrorReason1, 1, 60) ++ "..."; +	if ErrorReasonLength > 63 -> +		string:slice(ErrorReason1, 0, 60) ++ "...";  	   true ->  		ErrorReason1  	end, diff --git a/lib/common_test/src/test_server_node.erl b/lib/common_test/src/test_server_node.erl index c0d7e12721..f0f9cea6e0 100644 --- a/lib/common_test/src/test_server_node.erl +++ b/lib/common_test/src/test_server_node.erl @@ -315,9 +315,11 @@ start_node_peer(SlaveName, OptList, From, TI) ->      Prog0 = start_node_get_option_value(erl, OptList, default),      Prog = quote_progname(pick_erl_program(Prog0)),      Args =  -	case string:str(SuppliedArgs,"-setcookie") of -	    0 -> "-setcookie " ++ TI#target_info.cookie ++ " " ++ SuppliedArgs; -	    _ -> SuppliedArgs +	case string:find(SuppliedArgs,"-setcookie") of +	    nomatch -> +                "-setcookie " ++ TI#target_info.cookie ++ " " ++ SuppliedArgs; +	    _ -> +                SuppliedArgs  	end,      Cmd = lists:concat([Prog,  			" -detached ", @@ -612,7 +614,7 @@ pick_erl_program(L) ->  %% emulator and flags as the test node. The return from lib:progname()  %% could then typically be '/<full_path_to>/cerl -gcov').  quote_progname(Progname) -> -    do_quote_progname(string:tokens(Progname," ")). +    do_quote_progname(string:lexemes(Progname," ")).  do_quote_progname([Prog]) ->      "\""++Prog++"\""; diff --git a/lib/common_test/src/unix_telnet.erl b/lib/common_test/src/unix_telnet.erl index 8ac467014c..5992f26e6d 100644 --- a/lib/common_test/src/unix_telnet.erl +++ b/lib/common_test/src/unix_telnet.erl @@ -121,7 +121,8 @@ connect1(Name,Ip,Port,Timeout,KeepAlive,TCPNoDelay,Username,Password) ->  							  prompt,?prx,[]) of  			    {ok,{prompt,?password},_} ->  				ok = ct_telnet_client:send_data(Pid,Password), -				Stars = lists:duplicate(length(Password),$*), +				Stars = +                                    lists:duplicate(string:length(Password),$*),  				log(Name,send,"Password: ~s",[Stars]),  %				ok = ct_telnet_client:send_data(Pid,""),  				case ct_telnet:silent_teln_expect(Name,Pid,[], diff --git a/lib/common_test/test/ct_config_SUITE.erl b/lib/common_test/test/ct_config_SUITE.erl index 250700741c..5ffc735d6a 100644 --- a/lib/common_test/test/ct_config_SUITE.erl +++ b/lib/common_test/test/ct_config_SUITE.erl @@ -213,8 +213,8 @@ reformat_events(Events, EH) ->  skip_dynamic() ->      case os:getenv("TS_EXTRA_PLATFORM_LABEL") of  	TSExtraPlatformLabel when is_list(TSExtraPlatformLabel) -> -	    case string:str(TSExtraPlatformLabel,"TimeWarpingOS") of -		0 -> false; +	    case string:find(TSExtraPlatformLabel,"TimeWarpingOS") of +		nomatch -> false;  		_ -> true  	    end;  	_ -> diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index 8ba14e63bc..3c1e887f65 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -257,7 +257,7 @@ cth_log(Config) when is_list(Config) ->      lists:foreach(        fun(UnexpIoLog) ->  	      {ok,Bin} = file:read_file(UnexpIoLog), -	      Ts = string:tokens(binary_to_list(Bin),[$\n]), +	      Ts = string:lexemes(binary_to_list(Bin),[$\n]),  	      Matches = lists:foldl(fun([$=,$E,$R,$R,$O,$R|_],  N) ->  					    N+1;  				       ([$L,$o,$g,$g,$e,$r|_],  N) -> diff --git a/lib/common_test/test/ct_log_SUITE.erl b/lib/common_test/test/ct_log_SUITE.erl index 93affda398..9655b6f09a 100644 --- a/lib/common_test/test/ct_log_SUITE.erl +++ b/lib/common_test/test/ct_log_SUITE.erl @@ -174,7 +174,7 @@ verify(Config) ->      TcLogFile = proplists:get_value(the_logfile, SavedCfg),      Pid = proplists:get_value(the_pid, SavedCfg),      StrPid = lists:flatten(io_lib:format("~p",[Pid])), -    EscPid = "<" ++ string:substr(StrPid, 2, length(StrPid)-2) ++ ">",  +    EscPid = "<" ++ string:slice(StrPid, 1, length(StrPid)-2) ++ ">",       String = proplists:get_value(the_string, SavedCfg),      ct:log("Read from prev testcase: ~p & ~p", [TcLogFile,Pid]),      {ok,Dev} = file:open(TcLogFile, [read]), diff --git a/lib/common_test/test/ct_pre_post_test_io_SUITE.erl b/lib/common_test/test/ct_pre_post_test_io_SUITE.erl index 7ffe6f045b..0b85392009 100644 --- a/lib/common_test/test/ct_pre_post_test_io_SUITE.erl +++ b/lib/common_test/test/ct_pre_post_test_io_SUITE.erl @@ -164,7 +164,7 @@ pre_post_io(Config) ->        fun(PrePostIoFile) ->  	      ct:log("Reading Pre/Post Test IO Log file: ~ts", [PrePostIoFile]),  	      {ok,Bin} = file:read_file(PrePostIoFile), -	      Ts = string:tokens(binary_to_list(Bin),[$\n]), +	      Ts = string:lexemes(binary_to_list(Bin),[$\n]),  	      PrePostIOEntries =  		  lists:foldl(fun([$L,$o,$g,$g,$e,$r|_],  				  {pre,PreLogN,PreErrN,0,0}) -> @@ -203,7 +203,7 @@ pre_post_io(Config) ->        fun(UnexpIoFile) ->  	      ct:log("Reading Unexpected IO Log file: ~ts", [UnexpIoFile]),  	      {ok,Bin} = file:read_file(UnexpIoFile), -	      Ts = string:tokens(binary_to_list(Bin),[$\n]), +	      Ts = string:lexemes(binary_to_list(Bin),[$\n]),  	      UnexpIOEntries =  		  lists:foldl(fun([$L,$o,$g,$g,$e,$r|_], [LogN,ErrN]) ->  				      [LogN+1,ErrN]; diff --git a/lib/common_test/test/ct_priv_dir_SUITE_data/priv_dir_SUITE.erl b/lib/common_test/test/ct_priv_dir_SUITE_data/priv_dir_SUITE.erl index 1b171801a3..b1d191873d 100644 --- a/lib/common_test/test/ct_priv_dir_SUITE_data/priv_dir_SUITE.erl +++ b/lib/common_test/test/ct_priv_dir_SUITE_data/priv_dir_SUITE.erl @@ -126,12 +126,12 @@ default(Config) ->  auto_per_tc(Config) ->      PrivDir = proplists:get_value(priv_dir, Config), -    ["log_private",_] = string:tokens(filename:basename(PrivDir), "."), +    ["log_private",_] = string:lexemes(filename:basename(PrivDir), "."),      {ok,_} = file:list_dir(PrivDir).  manual_per_tc(Config) ->      PrivDir = proplists:get_value(priv_dir, Config), -    ["log_private",_] = string:tokens(filename:basename(PrivDir), "."), +    ["log_private",_] = string:lexemes(filename:basename(PrivDir), "."),      {error,_} = file:list_dir(PrivDir),      ok = ct:make_priv_dir(),      {ok,_} = file:list_dir(PrivDir). diff --git a/lib/common_test/test/ct_test_support.erl b/lib/common_test/test/ct_test_support.erl index 44c27e54c2..2ba7c7c13f 100644 --- a/lib/common_test/test/ct_test_support.erl +++ b/lib/common_test/test/ct_test_support.erl @@ -88,7 +88,7 @@ start_slave(Config, Level) ->      start_slave(ct, Config, Level).  start_slave(NodeName, Config, Level) -> -    [_,Host] = string:tokens(atom_to_list(node()), "@"), +    [_,Host] = string:lexemes(atom_to_list(node()), "@"),      test_server:format(0, "Trying to start ~s~n",  		       [atom_to_list(NodeName)++"@"++Host]),      PR = proplists:get_value(printable_range,Config,io:printable_range()), @@ -1088,8 +1088,8 @@ locate({TEH,Name,{'DEF','RUNDIR'}}, Node, [Ev|Evs], Config) ->  	{TEH,#event{name=Name, node=Node, data=EvData}} ->  	    {_,{_,LogDir}} = lists:keysearch(logdir, 1, get_opts(Config)),  	    D = filename:join(LogDir, "ct_run." ++ atom_to_list(Node)), -	    case string:str(EvData, D) of -		0 -> exit({badmatch,EvData}); +	    case string:find(EvData, D) of +		nomatch -> exit({badmatch,EvData});  		_ -> ok	      	    end,  	    {Config,Evs}; @@ -1104,8 +1104,8 @@ locate({TEH,Name,{'DEF',{'START_TIME','LOGDIR'}}}, Node, [Ev|Evs], Config) ->  		{DT={{_,_,_},{_,_,_}},Dir} when is_list(Dir) ->  		    {_,{_,LogDir}} = lists:keysearch(logdir, 1, get_opts(Config)),  		    D = filename:join(LogDir, "ct_run." ++ atom_to_list(Node)), -		    case string:str(Dir, D) of -			0 -> exit({badmatch,Dir}); +		    case string:find(Dir, D) of +			nomatch -> exit({badmatch,Dir});  			_ -> ok	      		    end,  		    {[{start_time,DT}|Config],Evs}; @@ -1373,7 +1373,7 @@ delete_dirs(LogDir) ->      Dirs2Del =  	lists:foldl(fun(Dir, Del) ->  			    [S,Mi,H,D,Mo,Y|_] =  -				lists:reverse(string:tokens(Dir, [$.,$-,$_])), +				lists:reverse(string:lexemes(Dir, [$.,$-,$_])),  			    S2I = fun(Str) -> list_to_integer(Str) end,  			    DT = {{S2I(Y),S2I(Mo),S2I(D)}, {S2I(H),S2I(Mi),S2I(S)}},  			    Then = calendar:datetime_to_gregorian_seconds(DT), diff --git a/lib/common_test/test/ct_unicode_SUITE.erl b/lib/common_test/test/ct_unicode_SUITE.erl index 355503a5dc..6f6ec97ceb 100644 --- a/lib/common_test/test/ct_unicode_SUITE.erl +++ b/lib/common_test/test/ct_unicode_SUITE.erl @@ -191,7 +191,7 @@ check_logs(Dirs) ->          [] ->              ok;          Match -> -            MatchStr = string:join(Match,"\n"), +            MatchStr = lists:join("\n",Match),              ct:log("ERROR: Escaped unicode characters found in:~n~ts",[MatchStr]),              ct:fail(escaped_unicode_characters_found)      end. diff --git a/lib/common_test/test/ct_userconfig_callback.erl b/lib/common_test/test/ct_userconfig_callback.erl index c723f4ca1c..14e3d9a688 100644 --- a/lib/common_test/test/ct_userconfig_callback.erl +++ b/lib/common_test/test/ct_userconfig_callback.erl @@ -21,7 +21,7 @@  -export([check_parameter/1, read_config/1]).  read_config(Str) -> -    KeyVals = string:tokens(Str, " "), +    KeyVals = string:lexemes(Str, " "),      {ok,read_config1(KeyVals)}.  read_config1([Key,Val | KeyVals]) -> diff --git a/lib/common_test/test/erl2html2_SUITE.erl b/lib/common_test/test/erl2html2_SUITE.erl index 53a63578b2..b2336ff0bc 100644 --- a/lib/common_test/test/erl2html2_SUITE.erl +++ b/lib/common_test/test/erl2html2_SUITE.erl @@ -214,10 +214,10 @@ check_line_number(Last,Line,OrigLine) ->  	    [$>|Rest] = lists:dropwhile(fun($>) -> false; (_) -> true end,Line),  	    check_line_number(Last,Rest,OrigLine);  	_ -> -	    [N |_] = string:tokens(Line,":"), +	    [N |_] = string:lexemes(Line,":"),  %	    erlang:display(N),  	    Num = -		try list_to_integer(string:strip(N)) +		try list_to_integer(string:trim(N,both,"\s"))  		catch _:_ -> ct:fail({no_line_number_after,Last,OrigLine})  		end,  	    if Num == Last+1 -> diff --git a/lib/common_test/test/telnet_server.erl b/lib/common_test/test/telnet_server.erl index 65300b0bdf..cef7784333 100644 --- a/lib/common_test/test/telnet_server.erl +++ b/lib/common_test/test/telnet_server.erl @@ -249,7 +249,7 @@ do_handle_data("echo " ++ Data,State) ->      send(Data++"\r\n> ",State),      {ok,State};  do_handle_data("echo_sep " ++ Data,State) -> -    Msgs = string:tokens(Data," "), +    Msgs = string:lexemes(Data," "),      lists:foreach(fun(Msg) ->  			  send(Msg,State),  			  timer:sleep(10) @@ -260,28 +260,28 @@ do_handle_data("echo_no_prompt " ++ Data,State) ->      send(Data,State),      {ok,State};  do_handle_data("echo_ml " ++ Data,State) -> -    Lines = string:tokens(Data," "), -    ReturnData = string:join(Lines,"\n"), +    Lines = string:lexemes(Data," "), +    ReturnData = lists:flatten(lists:join("\n",Lines)),      send(ReturnData++"\r\n> ",State),      {ok,State};  do_handle_data("echo_ml_no_prompt " ++ Data,State) -> -    Lines = string:tokens(Data," "), -    ReturnData = string:join(Lines,"\n"), +    Lines = string:lexemes(Data," "), +    ReturnData = lists:flatten(lists:join("\n",Lines)),      send(ReturnData,State),      {ok,State};  do_handle_data("echo_loop " ++ Data,State) -> -    [TStr|Lines] = string:tokens(Data," "), -    ReturnData = string:join(Lines,"\n"), +    [TStr|Lines] = string:lexemes(Data," "), +    ReturnData = lists:flatten(lists:join("\n",Lines)),      send_loop(list_to_integer(TStr),ReturnData,State),      {ok,State};  do_handle_data("echo_delayed_prompt "++Data,State) -> -    [MsStr|EchoData] = string:tokens(Data, " "), -    send(string:join(EchoData,"\n"),State), +    [MsStr|EchoData] = string:lexemes(Data, " "), +    send(lists:flatten(lists:join("\n",EchoData)),State),      timer:sleep(list_to_integer(MsStr)),      send("\r\n> ",State),      {ok,State};  do_handle_data("disconnect_after " ++WaitStr,State) -> -    Wait = list_to_integer(string:strip(WaitStr,right,$\n)), +    Wait = list_to_integer(string:trim(WaitStr,trailing,"\n")),      dbg("Server will close connection in ~w ms...", [Wait]),      erlang:send_after(Wait,self(),disconnect),      {ok,State}; diff --git a/lib/common_test/test/test_server_SUITE.erl b/lib/common_test/test/test_server_SUITE.erl index 50d8bdd1ac..edfaea1d08 100644 --- a/lib/common_test/test/test_server_SUITE.erl +++ b/lib/common_test/test/test_server_SUITE.erl @@ -71,7 +71,7 @@ init_per_testcase(_TestCase, Config) ->  %% @spec end_per_testcase(TestCase, Config0) ->  %%               void() | {save_config,Config1} | {fail,Reason}  end_per_testcase(test_server_unicode, _Config) -> -    [_,Host] = string:tokens(atom_to_list(node()), "@"), +    [_,Host] = string:lexemes(atom_to_list(node()), "@"),      N1 = list_to_atom("test_server_tester_latin1" ++ "@" ++ Host),      N2 = list_to_atom("test_server_tester_utf8" ++ "@" ++ Host),      test_server:stop_node(N1), @@ -347,7 +347,7 @@ generate_and_run_unicode_test(Config0,Encoding) ->      RunDir = get_latest_run_dir(LogDir),      true = filelib:is_dir(RunDir), -    LowerModStr = string:to_lower(ModStr), +    LowerModStr = string:lowercase(ModStr),      SuiteHtml = translate_filename(LowerModStr++".src.html",Encoding),      true = filelib:is_regular(filename:join(RunDir,SuiteHtml)), @@ -362,7 +362,7 @@ generate_and_run_unicode_test(Config0,Encoding) ->  %% remote file system on master - i.e. they will use same file name  %% mode as the master.  start_node(Config,Name,Args) -> -    [_,Host] = string:tokens(atom_to_list(node()), "@"), +    [_,Host] = string:lexemes(atom_to_list(node()), "@"),      ct:log("Trying to start ~w@~s~n",[Name,Host]),      case test_server:start_node(Name, peer, [{args,Args}]) of  	{error,Reason} -> diff --git a/lib/common_test/test/test_server_test_lib.erl b/lib/common_test/test/test_server_test_lib.erl index c18b89b178..e3d987a2ea 100644 --- a/lib/common_test/test/test_server_test_lib.erl +++ b/lib/common_test/test/test_server_test_lib.erl @@ -43,7 +43,7 @@ pre_init_per_testcase(_TC,Config,State) ->      {start_slave(Config, 50),State}.  start_slave(Config,_Level) -> -    [_,Host] = string:tokens(atom_to_list(node()), "@"), +    [_,Host] = string:lexemes(atom_to_list(node()), "@"),      ct:log("Trying to start ~s~n",   	   ["test_server_tester@"++Host]), diff --git a/lib/common_test/test_server/ts.erl b/lib/common_test/test_server/ts.erl index 5bfea9f4de..330652e73f 100644 --- a/lib/common_test/test_server/ts.erl +++ b/lib/common_test/test_server/ts.erl @@ -583,7 +583,7 @@ is_list_of_suites(List) ->  		      S = if is_atom(Suite) -> atom_to_list(Suite);  			     true -> Suite  			  end, -		      try lists:last(string:tokens(S,"_")) of +		      try lists:last(string:lexemes(S,"_")) of  			  "SUITE" -> true;  			  "suite" -> true;  			  _ -> false diff --git a/lib/common_test/test_server/ts_autoconf_win32.erl b/lib/common_test/test_server/ts_autoconf_win32.erl index 52e5ac8e69..6f6caaeb70 100644 --- a/lib/common_test/test_server/ts_autoconf_win32.erl +++ b/lib/common_test/test_server/ts_autoconf_win32.erl @@ -228,7 +228,7 @@ make(Vars) ->      end.  find_make(MakeCmd, Vars) -> -    [Make|_] = string:tokens(MakeCmd, " \t"), +    [Make|_] = string:lexemes(MakeCmd, " \t"),      case os:find_executable(Make) of  	false ->  	    {no, Vars}; @@ -248,9 +248,9 @@ javac(Vars) ->      end.  is_debug_build() -> -    case catch string:str(erlang:system_info(system_version), "debug") of -	Int when is_integer(Int), Int > 0 -> -	    true; -	_ -> -	    false +    case catch string:find(erlang:system_info(system_version), "debug") of +        nomatch -> +            false; +	_Else -> +	    true      end. diff --git a/lib/common_test/test_server/ts_erl_config.erl b/lib/common_test/test_server/ts_erl_config.erl index 032593bdda..c7fe4ccf83 100644 --- a/lib/common_test/test_server/ts_erl_config.erl +++ b/lib/common_test/test_server/ts_erl_config.erl @@ -311,7 +311,7 @@ lib_dir(Vars, Lib) ->  			  end,  	    CLibDir = filename:join(CLibDirList),  	    Cmd = "ls -d " ++ CLibDir ++ "*", -	    XLibDir = lists:last(string:tokens(os:cmd(Cmd),"\n")), +	    XLibDir = lists:last(string:lexemes(os:cmd(Cmd),"\n")),  	    case file:list_dir(XLibDir) of  		{error, enoent} ->  		    []; @@ -361,15 +361,11 @@ emu_vars(Vars) ->       {erl_name, atom_to_list(lib:progname())}|Vars].  is_source_build() -> -    string:str(erlang:system_info(system_version), "[source]") > 0. +    string:find(erlang:system_info(system_version), "source") =/= nomatch.  is_debug_build() -> -    case catch string:str(erlang:system_info(system_version), "debug") of -	Int when is_integer(Int), Int > 0 -> -	    true; -	_ -> -	    false -    end. +    string:find(erlang:system_info(system_version), "debug") =/= nomatch. +  %%  %% ssl_libdir  %% diff --git a/lib/common_test/test_server/ts_install.erl b/lib/common_test/test_server/ts_install.erl index c4e0223ac7..048e5493d2 100644 --- a/lib/common_test/test_server/ts_install.erl +++ b/lib/common_test/test_server/ts_install.erl @@ -115,7 +115,7 @@ get_vars(_, _, _, _) ->  config_flags() ->      case os:getenv("CONFIG_FLAGS") of  	false -> []; -	CF -> string:tokens(CF, " \t\n") +	CF -> string:lexemes(CF, " \t\n")      end.  unix_autoconf(XConf) -> @@ -127,7 +127,7 @@ unix_autoconf(XConf) ->      Threads = [" --enable-shlib-thread-safety" ||  		  erlang:system_info(threads) /= false],      Debug = [" --enable-debug-mode" || -		string:str(erlang:system_info(system_version),"debug") > 0], +		string:find(erlang:system_info(system_version),"debug") =/= nomatch],      MXX_Build = [Y || Y <- config_flags(),  		      Y == "--enable-m64-build"  			  orelse Y == "--enable-m32-build"], @@ -159,10 +159,8 @@ assign_vars([]) ->  assign_vars([{VAR,FlagsStr} | VARs]) ->      [{VAR,assign_vars(FlagsStr)} | assign_vars(VARs)];  assign_vars(FlagsStr) -> -    Flags = [assign_all_vars(Str,[]) || Str <- string:tokens(FlagsStr, [$ ])], -    string:strip(lists:flatten(lists:map(fun(Flag) -> -						 Flag ++ " " -					 end, Flags)), right). +    Flags = [assign_all_vars(Str,[]) || Str <- string:lexemes(FlagsStr, [$\s])], +    lists:flatten(lists:join(" ", Flags)).  assign_all_vars([$$ | Rest], FlagSoFar) ->      {VarName,Rest1} = get_var_name(Rest, []), @@ -292,7 +290,7 @@ add_vars(Vars0, Opts0) ->  get_testcase_callback() ->      case os:getenv("TS_TESTCASE_CALLBACK") of  	ModFunc when is_list(ModFunc), ModFunc /= "" -> -	    case string:tokens(ModFunc, " ") of +	    case string:lexemes(ModFunc, " ") of  		[_Mod,_Func] -> ModFunc;  		_ -> ""  	    end; @@ -408,17 +406,13 @@ off_heap_msgq() ->      end.  schedulers() -> -    case catch erlang:system_info(smp_support) of -	true -> -	    case {erlang:system_info(schedulers), -		  erlang:system_info(schedulers_online)} of -		{S,S} -> -		    "/S"++integer_to_list(S); -		{S,O} -> -		    "/S"++integer_to_list(S) ++ ":" ++ -			integer_to_list(O) -	    end; -	_ -> "" +    case {erlang:system_info(schedulers), +          erlang:system_info(schedulers_online)} of +        {S,S} -> +            "/S"++integer_to_list(S); +        {S,O} -> +            "/S"++integer_to_list(S) ++ ":" ++ +                integer_to_list(O)      end.  bind_type() -> @@ -434,8 +428,8 @@ bind_type() ->  debug() -> -    case string:str(erlang:system_info(system_version), "debug") of -	0 -> ""; +    case string:find(erlang:system_info(system_version), "debug") of +	nomatch -> "";  	_ -> "/Debug"      end. diff --git a/lib/common_test/test_server/ts_lib.erl b/lib/common_test/test_server/ts_lib.erl index ea039a2c2b..da8d676b18 100644 --- a/lib/common_test/test_server/ts_lib.erl +++ b/lib/common_test/test_server/ts_lib.erl @@ -99,7 +99,7 @@ specialized_specs(Dir,PostFix) ->      sort_tests([begin  		    DirPart = filename:dirname(Name),  		    AppTest = hd(lists:reverse(filename:split(DirPart))), -		    list_to_atom(string:substr(AppTest, 1, length(AppTest)-5)) +		    list_to_atom(string:slice(AppTest, 0, string:length(AppTest)-5))  		end || Name <- Specs]).  specs(Dir) -> @@ -111,9 +111,9 @@ specs(Dir) ->  			      [Spec,TestDir|_] =  				  lists:reverse(filename:split(FullName)),  			      [_TestSuffix|TDParts] =  -				  lists:reverse(string:tokens(TestDir,[$_,$.])), +				  lists:reverse(string:lexemes(TestDir,[$_,$.])),  			      [_SpecSuffix|SParts] =  -				  lists:reverse(string:tokens(Spec,[$_,$.])), +				  lists:reverse(string:lexemes(Spec,[$_,$.])),  			      if TDParts == SParts ->  				      [filename_to_atom(FullName)];	    				 true -> @@ -273,7 +273,7 @@ do_test(Rest, Vars, Test) ->  get_arg([$(|Rest], Vars, Stop, _) ->		      get_arg(Rest, Vars, Stop, []);   get_arg([Stop|Rest], Vars, Stop, Acc) -> -    Arg = string:strip(lists:reverse(Acc)), +    Arg = string:trim(lists:reverse(Acc),both,[$\s]),      Subst = subst(Arg, Vars),      {Subst,Rest};  get_arg([C|Rest], Vars, Stop, Acc) -> diff --git a/lib/common_test/test_server/ts_run.erl b/lib/common_test/test_server/ts_run.erl index e22fa8d196..3f594236bc 100644 --- a/lib/common_test/test_server/ts_run.erl +++ b/lib/common_test/test_server/ts_run.erl @@ -207,11 +207,7 @@ make_command(Vars, Spec, State) ->  		      _ ->  			  ok  		  end, -		  "cerl -valgrind" ++ -		      case erlang:system_info(smp_support) of -			  true -> " -smp"; -			  false -> "" -		      end +		  "cerl -valgrind"  	  end,      Naming =  	case ts_lib:var(longnames, Vars) of @@ -468,4 +464,4 @@ split_one(Path) ->      filename:split(Path).  split_path(Path) -> -    string:tokens(Path,";"). +    string:lexemes(Path,";"). | 
