diff options
Diffstat (limited to 'lib/stdlib/test/escript_SUITE.erl')
| -rw-r--r-- | lib/stdlib/test/escript_SUITE.erl | 702 | 
1 files changed, 357 insertions, 345 deletions
| diff --git a/lib/stdlib/test/escript_SUITE.erl b/lib/stdlib/test/escript_SUITE.erl index 87ff6a68ff..0b9106a99c 100644 --- a/lib/stdlib/test/escript_SUITE.erl +++ b/lib/stdlib/test/escript_SUITE.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2007-2013. All Rights Reserved. +%% Copyright Ericsson AB 2007-2016. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@  -module(escript_SUITE).  -export([ -	all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,  +	 all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,  	 init_per_group/2,end_per_group/2,  	 init_per_testcase/2,  	 end_per_testcase/2, @@ -28,6 +28,7 @@  	 strange_name/1,  	 emulator_flags/1,  	 emulator_flags_no_shebang/1, +	 two_lines/1,  	 module_script/1,  	 beam_script/1,  	 archive_script/1, @@ -40,14 +41,16 @@           unicode/1  	]). --include_lib("test_server/include/test_server.hrl"). +-include_lib("common_test/include/ct.hrl").  -include_lib("kernel/include/file.hrl"). -suite() -> [{ct_hooks,[ts_install_cth]}]. +suite() -> +    [{ct_hooks,[ts_install_cth]}, +     {timetrap,{minutes,5}}].  all() ->       [basic, errors, strange_name, emulator_flags, -     emulator_flags_no_shebang, +     emulator_flags_no_shebang, two_lines,       module_script, beam_script, archive_script, epp,       create_and_extract, foldl, overflow,       archive_script_file_access, unicode]. @@ -68,103 +71,112 @@ end_per_group(_GroupName, Config) ->      Config.  init_per_testcase(_Case, Config) -> -    ?line Dog = ?t:timetrap(?t:minutes(5)), -    [{watchdog,Dog}|Config]. +    Config. -end_per_testcase(_Case, Config) -> -    Dog = ?config(watchdog, Config), -    test_server:timetrap_cancel(Dog), +end_per_testcase(_Case, _Config) ->      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  basic(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "factorial 5", -	      <<"factorial 5 = 120\nExitCode:0">>), -    ?line run(Dir, "factorial_compile 10", -	      <<"factorial 10 = 3628800\nExitCode:0">>), -    ?line run(Dir, "factorial_compile_main 7", -	      <<"factorial 7 = 5040\nExitCode:0">>), -    ?line run(Dir, "factorial_warning 20", -	      [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\n" -			 "factorial 20 = 2432902008176640000\nExitCode:0">>]), -    ?line run_with_opts(Dir, "-s", "factorial_warning", -	      [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), -    ?line run_with_opts(Dir, "-s -i", "factorial_warning", -	      [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), -    ?line run_with_opts(Dir, "-c -s", "factorial_warning", -	      [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), -    ?line run(Dir, "filesize "++filename:join(?config(data_dir, Config),"filesize"), -	      [data_dir,<<"filesize:11: Warning: function id/1 is unused\n324\nExitCode:0">>]), -    ?line run(Dir, "test_script_name", -	      [data_dir,<<"test_script_name\nExitCode:0">>]), -    ?line run(Dir, "tail_rec 1000", -	      [<<"ok\nExitCode:0">>]), +    run(Dir, "factorial 5", +	<<"factorial 5 = 120\nExitCode:0">>), +    run(Dir, "factorial_compile 10", +	<<"factorial 10 = 3628800\nExitCode:0">>), +    run(Dir, "factorial_compile_main 7", +	<<"factorial 7 = 5040\nExitCode:0">>), +    run(Dir, "factorial_warning 20", +	[data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\n" +		    "factorial 20 = 2432902008176640000\nExitCode:0">>]), +    run_with_opts(Dir, "-s", "factorial_warning", +		  [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), +    run_with_opts(Dir, "-s -i", "factorial_warning", +		  [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), +    run_with_opts(Dir, "-c -s", "factorial_warning", +		  [data_dir,<<"factorial_warning:12: Warning: function bar/0 is unused\nExitCode:0">>]), +    run(Dir, "filesize "++filename:join(proplists:get_value(data_dir, Config),"filesize"), +	[data_dir,<<"filesize:11: Warning: function id/1 is unused\n324\nExitCode:0">>]), +    run(Dir, "test_script_name", +	[data_dir,<<"test_script_name\nExitCode:0">>]), +    run(Dir, "tail_rec 1000", +	[<<"ok\nExitCode:0">>]),      %% We expect the trap_exit flag for the process to be false,      %% since that is the default state for newly spawned processes. -    ?line run(Dir, "trap_exit", -	      <<"false\nExitCode:0">>), +    run(Dir, "trap_exit", +	<<"false\nExitCode:0">>),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  errors(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "compile_error", -	      [data_dir,<<"compile_error:5: syntax error before: '*'\n">>, -	       data_dir,<<"compile_error:8: syntax error before: blarf\n">>, -	       <<"escript: There were compilation errors.\nExitCode:127">>]), -    ?line run(Dir, "lint_error", -	      [data_dir,<<"lint_error:6: function main/1 already defined\n">>, -	       data_dir,"lint_error:8: variable 'ExitCode' is unbound\n", -	       <<"escript: There were compilation errors.\nExitCode:127">>]), -    ?line run_with_opts(Dir, "-s", "lint_error", -	      [data_dir,<<"lint_error:6: function main/1 already defined\n">>, -	       data_dir,"lint_error:8: variable 'ExitCode' is unbound\n", -	       <<"escript: There were compilation errors.\nExitCode:127">>]), +    run(Dir, "compile_error", +	[data_dir,<<"compile_error:5: syntax error before: '*'\n">>, +	 data_dir,<<"compile_error:8: syntax error before: blarf\n">>, +	 <<"escript: There were compilation errors.\nExitCode:127">>]), +    run(Dir, "lint_error", +	[data_dir,<<"lint_error:6: function main/1 already defined\n">>, +	 data_dir,"lint_error:8: variable 'ExitCode' is unbound\n", +	 <<"escript: There were compilation errors.\nExitCode:127">>]), +    run_with_opts(Dir, "-s", "lint_error", +		  [data_dir,<<"lint_error:6: function main/1 already defined\n">>, +		   data_dir,"lint_error:8: variable 'ExitCode' is unbound\n", +		   <<"escript: There were compilation errors.\nExitCode:127">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  strange_name(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "strange.name -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"ExitCode:0">>]), +    run(Dir, "strange.name -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "ExitCode:0">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  emulator_flags(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "emulator_flags -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[{nostick,[]}]\n" -		"mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    run(Dir, "emulator_flags -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "nostick:[{nostick,[]}]\n" +	   "mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]), +    ok. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +two_lines(Config) when is_list(Config) -> +    Data = proplists:get_value(data_dir, Config), +    Dir = filename:absname(Data),		%Get rid of trailing slash. +    run(Dir, "two_lines -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  emulator_flags_no_shebang(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash.      %% Need run_with_opts, to always use "escript" explicitly -    ?line run_with_opts(Dir, "", "emulator_flags_no_shebang -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[{nostick,[]}]\n" -		"mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    run_with_opts(Dir, "", "emulator_flags_no_shebang -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[{nostick,[]}]\n" +		     "mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -173,14 +185,14 @@ emulator_flags_no_shebang(Config) when is_list(Config) ->  module_script(Config) when is_list(Config) ->      %% Read orig file -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      OrigFile = filename:join([Data,"emulator_flags"]),      {ok, OrigBin} = file:read_file(OrigFile), -    ?line [Shebang, Mode, Flags | Source] = string:tokens(binary_to_list(OrigBin), "\n"), -    ?line {ok, OrigFI} = file:read_file_info(OrigFile), +    [Shebang, Mode, Flags | Source] = string:tokens(binary_to_list(OrigBin), "\n"), +    {ok, OrigFI} = file:read_file_info(OrigFile),      %% Write source file -    Priv = ?config(priv_dir, Config), +    Priv = proplists:get_value(priv_dir, Config),      Dir = filename:absname(Priv), % Get rid of trailing slash.      Base = "module_script",      ErlFile = filename:join([Priv, Base ++ ".erl"]), @@ -188,85 +200,85 @@ module_script(Config) when is_list(Config) ->  	       "-export([main/1]).\n\n",  	       string:join(Source, "\n"),  	       "\n"], -    ?line ok = file:write_file(ErlFile, ErlCode), +    ok = file:write_file(ErlFile, ErlCode), -    %%%%%%% +%%%%%%%      %% Create and run scripts without emulator flags      %% With shebang      NoArgsBase = Base ++ "_no_args_with_shebang",      NoArgsFile = filename:join([Priv, NoArgsBase]), -    ?line ok = file:write_file(NoArgsFile, -			       [Shebang, "\n", -				ErlCode]), -    ?line ok = file:write_file_info(NoArgsFile, OrigFI), - -    ?line run(Dir, NoArgsBase ++ " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), - -    ?line run_with_opts(Dir, "", NoArgsBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(NoArgsFile, +			 [Shebang, "\n", +			  ErlCode]), +    ok = file:write_file_info(NoArgsFile, OrigFI), + +    run(Dir, NoArgsBase ++ " -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "nostick:[]\n" +	   "mnesia:[]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]), + +    run_with_opts(Dir, "", NoArgsBase ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]),      %% Without shebang      NoArgsBase2 = Base ++ "_no_args_without_shebang",      NoArgsFile2 = filename:join([Priv, NoArgsBase2]), -    ?line ok = file:write_file(NoArgsFile2, -			       ["Something else than shebang!!!", "\n", -				ErlCode]), -    ?line ok = file:write_file_info(NoArgsFile2, OrigFI), - -    ?line run_with_opts(Dir, "", NoArgsBase2 ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(NoArgsFile2, +			 ["Something else than shebang!!!", "\n", +			  ErlCode]), +    ok = file:write_file_info(NoArgsFile2, OrigFI), + +    run_with_opts(Dir, "", NoArgsBase2 ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]),      %% Plain module without header      NoArgsBase3 = Base ++ "_no_args_without_header",      NoArgsFile3 = filename:join([Priv, NoArgsBase3]), -    ?line ok = file:write_file(NoArgsFile3, [ErlCode]), -    ?line ok = file:write_file_info(NoArgsFile3, OrigFI), - -    ?line run_with_opts(Dir, "", NoArgsBase3 ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), - -    %%%%%%% +    ok = file:write_file(NoArgsFile3, [ErlCode]), +    ok = file:write_file_info(NoArgsFile3, OrigFI), + +    run_with_opts(Dir, "", NoArgsBase3 ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]), + +%%%%%%%      %% Create and run scripts with emulator flags      %% With shebang      ArgsBase = Base ++ "_args_with_shebang",      ArgsFile = filename:join([Priv, ArgsBase]), -    ?line ok = file:write_file(ArgsFile, -			       [Shebang, "\n", -				Mode, "\n", -				Flags, "\n", -				ErlCode]), -    ?line ok = file:write_file_info(ArgsFile, OrigFI), - -    ?line run(Dir, ArgsBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[{nostick,[]}]\n" -		"mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(ArgsFile, +			 [Shebang, "\n", +			  Mode, "\n", +			  Flags, "\n", +			  ErlCode]), +    ok = file:write_file_info(ArgsFile, OrigFI), + +    run(Dir, ArgsBase ++  " -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "nostick:[{nostick,[]}]\n" +	   "mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]),      ok. @@ -275,103 +287,103 @@ module_script(Config) when is_list(Config) ->  %% Generate a new escript containing the beam code and the escript header  beam_script(Config) when is_list(Config) ->      %% Read orig file -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      OrigFile = filename:join([Data,"emulator_flags"]),      {ok, OrigBin} = file:read_file(OrigFile), -    ?line [Shebang, Mode, Flags | Source] = string:tokens(binary_to_list(OrigBin), "\n"), -    ?line {ok, OrigFI} = file:read_file_info(OrigFile), +    [Shebang, Mode, Flags | Source] = string:tokens(binary_to_list(OrigBin), "\n"), +    {ok, OrigFI} = file:read_file_info(OrigFile),      %% Write source file -    Priv = ?config(priv_dir, Config), +    Priv = proplists:get_value(priv_dir, Config),      Dir = filename:absname(Priv), % Get rid of trailing slash.      Base = "beam_script",      ErlFile = filename:join([Priv, Base ++ ".erl"]), -    ?line ok = file:write_file(ErlFile, -			       ["\n-module(", Base, ").\n", -				"-export([main/1]).\n\n", -				string:join(Source, "\n"), -				"\n"]), +    ok = file:write_file(ErlFile, +			 ["\n-module(", Base, ").\n", +			  "-export([main/1]).\n\n", +			  string:join(Source, "\n"), +			  "\n"]),      %% Compile the code -    ?line {ok, _Mod, BeamCode} = compile:file(ErlFile, [binary]), +    {ok, _Mod, BeamCode} = compile:file(ErlFile, [binary]), -    %%%%%%% +%%%%%%%      %% Create and run scripts without emulator flags      %% With shebang      NoArgsBase = Base ++ "_no_args_with_shebang",      NoArgsFile = filename:join([Priv, NoArgsBase]), -    ?line ok = file:write_file(NoArgsFile, -			       [Shebang, "\n", -				BeamCode]), -    ?line ok = file:write_file_info(NoArgsFile, OrigFI), - -    ?line run(Dir, NoArgsBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), - -    ?line run_with_opts(Dir, "", NoArgsBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(NoArgsFile, +			 [Shebang, "\n", +			  BeamCode]), +    ok = file:write_file_info(NoArgsFile, OrigFI), + +    run(Dir, NoArgsBase ++  " -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "nostick:[]\n" +	   "mnesia:[]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]), + +    run_with_opts(Dir, "", NoArgsBase ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]),      %% Without shebang      NoArgsBase2 = Base ++ "_no_args_without_shebang",      NoArgsFile2 = filename:join([Priv, NoArgsBase2]), -    ?line ok = file:write_file(NoArgsFile2, -			       ["Something else than shebang!!!", "\n", -				BeamCode]), -    ?line ok = file:write_file_info(NoArgsFile2, OrigFI), - -    ?line run_with_opts(Dir, "", NoArgsBase2 ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(NoArgsFile2, +			 ["Something else than shebang!!!", "\n", +			  BeamCode]), +    ok = file:write_file_info(NoArgsFile2, OrigFI), + +    run_with_opts(Dir, "", NoArgsBase2 ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]),      %% Plain beam file without header      NoArgsBase3 = Base ++ "_no_args_without_header",      NoArgsFile3 = filename:join([Priv, NoArgsBase3]), -    ?line ok = file:write_file(NoArgsFile3, [BeamCode]), -    ?line ok = file:write_file_info(NoArgsFile3, OrigFI), - -    ?line run_with_opts(Dir, "", NoArgsBase3 ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[]\n" -		"mnesia:[]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), - -    %%%%%%% +    ok = file:write_file(NoArgsFile3, [BeamCode]), +    ok = file:write_file_info(NoArgsFile3, OrigFI), + +    run_with_opts(Dir, "", NoArgsBase3 ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "nostick:[]\n" +		     "mnesia:[]\n" +		     "ERL_FLAGS=false\n" +		     "unknown:[]\n" +		     "ExitCode:0">>]), + +%%%%%%%      %% Create and run scripts with emulator flags      %% With shebang      ArgsBase = Base ++ "_args",      ArgsFile = filename:join([Priv, ArgsBase]), -    ?line ok = file:write_file(ArgsFile, -			       [Shebang, "\n", -				Mode, "\n", -				Flags, "\n", -				BeamCode]), -    ?line ok = file:write_file_info(ArgsFile, OrigFI), - -    ?line run(Dir, ArgsBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"nostick:[{nostick,[]}]\n" -		"mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" -		"ERL_FLAGS=false\n" -		"unknown:[]\n" -		"ExitCode:0">>]), +    ok = file:write_file(ArgsFile, +			 [Shebang, "\n", +			  Mode, "\n", +			  Flags, "\n", +			  BeamCode]), +    ok = file:write_file_info(ArgsFile, OrigFI), + +    run(Dir, ArgsBase ++  " -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "nostick:[{nostick,[]}]\n" +	   "mnesia:[{mnesia,[\"dir\",\"a/directory\"]},{mnesia,[\"debug\",\"verbose\"]}]\n" +	   "ERL_FLAGS=false\n" +	   "unknown:[]\n" +	   "ExitCode:0">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -381,107 +393,107 @@ beam_script(Config) when is_list(Config) ->  archive_script(Config) when is_list(Config) ->      %% Copy the orig files to priv_dir -    DataDir = ?config(data_dir, Config), -    PrivDir = ?config(priv_dir, Config), +    DataDir = proplists:get_value(data_dir, Config), +    PrivDir = proplists:get_value(priv_dir, Config),      Archive = filename:join([PrivDir, "archive_script.zip"]), -    ?line {ok, _} = zip:create(Archive, ["archive_script"], -			       [{compress, []}, {cwd, DataDir}]), -    ?line {ok, _} = zip:extract(Archive, [{cwd, PrivDir}]), +    {ok, _} = zip:create(Archive, ["archive_script"], +			 [{compress, []}, {cwd, DataDir}]), +    {ok, _} = zip:extract(Archive, [{cwd, PrivDir}]),      TopDir = filename:join([PrivDir, "archive_script"]),      %% Compile the code -    ?line ok = compile_app(TopDir, "archive_script_dict"), -    ?line ok = compile_app(TopDir, "archive_script_dummy"), -    ?line {ok, MainFiles} = file:list_dir(TopDir), -    ?line ok = compile_files(MainFiles, TopDir, TopDir), +    ok = compile_app(TopDir, "archive_script_dict"), +    ok = compile_app(TopDir, "archive_script_dummy"), +    {ok, MainFiles} = file:list_dir(TopDir), +    ok = compile_files(MainFiles, TopDir, TopDir),      %% Create the archive      {ok, TopFiles} = file:list_dir(TopDir), -    ?line {ok, {_, ArchiveBin}} = zip:create(Archive, TopFiles, -					     [memory, {compress, []}, {cwd, TopDir}]), +    {ok, {_, ArchiveBin}} = zip:create(Archive, TopFiles, +				       [memory, {compress, []}, {cwd, TopDir}]),      %% Read the source script      OrigFile = filename:join([DataDir, "emulator_flags"]),      {ok, OrigBin} = file:read_file(OrigFile), -    ?line [Shebang, Mode, _Flags | _Source] = +    [Shebang, Mode, _Flags | _Source] =  	string:tokens(binary_to_list(OrigBin), "\n"),      Flags = "%%! -archive_script_dict foo bar"  	" -archive_script_dict foo"  	" -archive_script_dummy bar", -    ?line {ok, OrigFI} = file:read_file_info(OrigFile), +    {ok, OrigFI} = file:read_file_info(OrigFile), -    %%%%%%% +%%%%%%%      %% Create and run scripts without emulator flags      MainBase = "archive_script_main",      MainScript = filename:join([PrivDir, MainBase]),      %% With shebang -    ?line ok = file:write_file(MainScript, -			       [Shebang, "\n", -				Flags, "\n", -				ArchiveBin]), -    ?line ok = file:write_file_info(MainScript, OrigFI), - -    ?line run(PrivDir, MainBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" -		"dummy:[{archive_script_dummy,[\"bar\"]}]\n" -		"priv:{ok,<<\"Some private data...\\n\">>}\n" -		"ExitCode:0">>]), - -    ?line run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" -		"dummy:[{archive_script_dummy,[\"bar\"]}]\n" -		"priv:{ok,<<\"Some private data...\\n\">>}\n" -		"ExitCode:0">>]), - -    ?line ok = file:rename(MainScript, MainScript ++ "_with_shebang"), +    ok = file:write_file(MainScript, +			 [Shebang, "\n", +			  Flags, "\n", +			  ArchiveBin]), +    ok = file:write_file_info(MainScript, OrigFI), + +    run(PrivDir, MainBase ++  " -arg1 arg2 arg3", +	[<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" +	   "dummy:[{archive_script_dummy,[\"bar\"]}]\n" +	   "priv:{ok,<<\"Some private data...\\n\">>}\n" +	   "ExitCode:0">>]), + +    run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" +		     "dummy:[{archive_script_dummy,[\"bar\"]}]\n" +		     "priv:{ok,<<\"Some private data...\\n\">>}\n" +		     "ExitCode:0">>]), + +    ok = file:rename(MainScript, MainScript ++ "_with_shebang"),      %% Without shebang (no flags) -    ?line ok = file:write_file(MainScript, -			       ["Something else than shebang!!!", "\n", -				ArchiveBin]), -    ?line ok = file:write_file_info(MainScript, OrigFI), - -    ?line run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"dict:[]\n" -		"dummy:[]\n" -		"priv:{ok,<<\"Some private data...\\n\">>}\n" -		"ExitCode:0">>]), -    ?line ok = file:rename(MainScript, MainScript ++ "_without_shebang"), +    ok = file:write_file(MainScript, +			 ["Something else than shebang!!!", "\n", +			  ArchiveBin]), +    ok = file:write_file_info(MainScript, OrigFI), + +    run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "dict:[]\n" +		     "dummy:[]\n" +		     "priv:{ok,<<\"Some private data...\\n\">>}\n" +		     "ExitCode:0">>]), +    ok = file:rename(MainScript, MainScript ++ "_without_shebang"),      %% Plain archive without header (no flags) -    ?line ok = file:write_file(MainScript, [ArchiveBin]), -    ?line ok = file:write_file_info(MainScript, OrigFI), +    ok = file:write_file(MainScript, [ArchiveBin]), +    ok = file:write_file_info(MainScript, OrigFI), -    ?line run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", -	      [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"dict:[]\n" -		"dummy:[]\n" -		"priv:{ok,<<\"Some private data...\\n\">>}\n" -		"ExitCode:0">>]), -    ?line ok = file:rename(MainScript, MainScript ++ "_without_header"), +    run_with_opts(PrivDir, "", MainBase ++  " -arg1 arg2 arg3", +		  [<<"main:[\"-arg1\",\"arg2\",\"arg3\"]\n" +		     "dict:[]\n" +		     "dummy:[]\n" +		     "priv:{ok,<<\"Some private data...\\n\">>}\n" +		     "ExitCode:0">>]), +    ok = file:rename(MainScript, MainScript ++ "_without_header"), -    %%%%%%% +%%%%%%%      %% Create and run scripts with emulator flags      AltBase = "archive_script_alternate_main",      AltScript = filename:join([PrivDir, AltBase]), -    ?line ok = file:write_file(AltScript, -			       [Shebang, "\n", -				Mode, "\n", -				Flags, " -escript main archive_script_main2\n", -				ArchiveBin]), -    ?line ok = file:write_file_info(AltScript, OrigFI), - -    ?line run(PrivDir, AltBase ++  " -arg1 arg2 arg3", -	      [<<"main2:[\"-arg1\",\"arg2\",\"arg3\"]\n" -		"dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" -		"dummy:[{archive_script_dummy,[\"bar\"]}]\n" -		"priv:{ok,<<\"Some private data...\\n\">>}\n" -		"ExitCode:0">>]), +    ok = file:write_file(AltScript, +			 [Shebang, "\n", +			  Mode, "\n", +			  Flags, " -escript main archive_script_main2\n", +			  ArchiveBin]), +    ok = file:write_file_info(AltScript, OrigFI), + +    run(PrivDir, AltBase ++  " -arg1 arg2 arg3", +	[<<"main2:[\"-arg1\",\"arg2\",\"arg3\"]\n" +	   "dict:[{archive_script_dict,[\"foo\",\"bar\"]},{archive_script_dict,[\"foo\"]}]\n" +	   "dummy:[{archive_script_dummy,[\"bar\"]}]\n" +	   "priv:{ok,<<\"Some private data...\\n\">>}\n" +	   "ExitCode:0">>]),      ok. @@ -508,21 +520,21 @@ archive_script(Config) when is_list(Config) ->  %%  archive_script_file_access(Config) when is_list(Config) ->      %% Copy the orig files to priv_dir -    DataDir = ?config(data_dir, Config), -    PrivDir = ?config(priv_dir, Config), +    DataDir = proplists:get_value(data_dir, Config), +    PrivDir = proplists:get_value(priv_dir, Config),      MainMod = "archive_script_file_access",      MainSrc = MainMod ++ ".erl",      MainBeam = MainMod ++ ".beam",      Archive = filename:join([PrivDir, "archive_script_file_access.zip"]), -    ?line {ok, _} = zip:create(Archive, ["archive_script_file_access"], -			       [{compress, []}, {cwd, DataDir}]), -    ?line {ok, _} = zip:extract(Archive, [{cwd, PrivDir}]), +    {ok, _} = zip:create(Archive, ["archive_script_file_access"], +			 [{compress, []}, {cwd, DataDir}]), +    {ok, _} = zip:extract(Archive, [{cwd, PrivDir}]),      TopDir = filename:join([PrivDir, "archive_script_file_access"]),      %% Compile the code -    ?line ok = compile_files([MainSrc], TopDir, TopDir), +    ok = compile_files([MainSrc], TopDir, TopDir),      %% First, create a file structure which will be included in the archive:      %% @@ -630,7 +642,7 @@ compile_app(TopDir, AppName) ->      AppDir = filename:join([TopDir, AppName]),      SrcDir = filename:join([AppDir, "src"]),      OutDir = filename:join([AppDir, "ebin"]), -    ?line {ok, Files} = file:list_dir(SrcDir), +    {ok, Files} = file:list_dir(SrcDir),      compile_files(Files, SrcDir, OutDir).  compile_files([File | Files], SrcDir, OutDir) -> @@ -652,10 +664,10 @@ compile_files([], _, _) ->  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  epp(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "factorial_epp 5", -	      <<"factorial 5 = 120\nExitCode:0">>), +    run(Dir, "factorial_epp 5", +	<<"factorial 5 = 120\nExitCode:0">>),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -695,9 +707,9 @@ create_and_extract(Config) when is_list(Config) ->      %% Verify the compile_source option      file:delete(NewFile), -    ?line ok = escript:create(NewFile, [{source, Source}]), -    ?line {ok, [_, _, _, {source, Source}]} = escript:extract(NewFile, []), -    ?line {ok, [_, _, _, {source, BeamCode2}]} = +    ok = escript:create(NewFile, [{source, Source}]), +    {ok, [_, _, _, {source, Source}]} = escript:extract(NewFile, []), +    {ok, [_, _, _, {source, BeamCode2}]} =  	escript:extract(NewFile, [compile_source]),      verify_sections(NewFile, FileInfo,  		    [{shebang, default}, @@ -709,15 +721,15 @@ create_and_extract(Config) when is_list(Config) ->  prepare_creation(Base, Config) ->      %% Read the source -    PrivDir = ?config(priv_dir, Config), -    DataDir = ?config(data_dir, Config), +    PrivDir = proplists:get_value(priv_dir, Config), +    DataDir = proplists:get_value(data_dir, Config),      OrigFile = filename:join([DataDir,"emulator_flags"]), -    ?line {ok, FileInfo} = file:read_file_info(OrigFile), +    {ok, FileInfo} = file:read_file_info(OrigFile),      NewFile = filename:join([PrivDir, Base]), -    ?line {ok, [{shebang, default}, -		{comment, _}, -		{emu_args, EmuArg}, -		{source, Source}]} = +    {ok, [{shebang, default}, +	  {comment, _}, +	  {emu_args, EmuArg}, +	  {source, Source}]} =  	escript:extract(OrigFile, []),      %% Compile the code @@ -725,14 +737,14 @@ prepare_creation(Base, Config) ->      ErlCode = list_to_binary(["\n-module(", Base, ").\n",  			      "-export([main/1]).\n\n",  			      Source, "\n\n"]), -    ?line ok = file:write_file(ErlFile, ErlCode), +    ok = file:write_file(ErlFile, ErlCode),      %% Compile the code -    ?line {ok, _Mod, BeamCode} = +    {ok, _Mod, BeamCode} =  	compile:file(ErlFile, [binary, debug_info]),      %% Create an archive -    ?line {ok, {_, ArchiveBin}} = +    {ok, {_, ArchiveBin}} =  	zip:create("dummy_archive_name",  		   [{Base ++ ".erl", ErlCode},  		    {Base ++ ".beam", BeamCode}], @@ -749,8 +761,8 @@ verify_sections(File, FileInfo, Sections) ->      %% Create      file:delete(File), -    ?line ok = escript:create(File, Sections), -    ?line ok = file:write_file_info(File, FileInfo), +    ok = escript:create(File, Sections), +    ok = file:write_file_info(File, FileInfo),      %% Run      Dir = filename:absname(filename:dirname(File)), @@ -780,21 +792,21 @@ verify_sections(File, FileInfo, Sections) ->      Expected = <<ExpectedMain/binary, ExpectedOutput/binary>>,      case HasArg(shebang) of  	true -> -	    ?line run(Dir, InputArgs, [Expected]); +	    run(Dir, InputArgs, [Expected]);  	false -> -	    ?line run_with_opts(Dir, [], InputArgs, [Expected]) +	    run_with_opts(Dir, [], InputArgs, [Expected])      end,      %% Verify -    ?line {ok, Bin} = escript:create(binary, Sections), -    ?line {ok, Read} = file:read_file(File), -    ?line Bin = Read, % Assert +    {ok, Bin} = escript:create(binary, Sections), +    {ok, Read} = file:read_file(File), +    Bin = Read, % Assert      Normalized = normalize_sections(Sections), -    ?line {ok, Extracted} = escript:extract(File, []), +    {ok, Extracted} = escript:extract(File, []),      io:format("Normalized; ~p\n", [Normalized]),      io:format("Extracted ; ~p\n", [Extracted]), -    ?line Normalized = Extracted, % Assert +    Normalized = Extracted, % Assert      ok.  normalize_sections(Sections) -> @@ -806,27 +818,27 @@ normalize_sections(Sections) ->  		end  	end,      case lists:map(AtomToTuple, [{K, V} || {K, V} <- Sections, V =/= undefined]) of -	    [{shebang, Shebang} | Rest] -> -		[{shebang, Shebang} | -		 case Rest of -		     [{comment, Comment} | Rest2] -> -			 [{comment, Comment} | -			  case Rest2 of -			      [{emu_args, EmuArgs}, Body] -> -				  [{emu_args, EmuArgs}, Body]; -			      [Body] -> -				  [{emu_args, undefined}, Body] -			  end -			 ]; -		     [{emu_args, EmuArgs}, Body] -> -			 [{comment, undefined}, {emu_args, EmuArgs}, Body]; -		     [Body] -> -			 [{comment, undefined}, {emu_args, undefined}, Body] -		 end -		]; -	    [Body] -> -		[{shebang, undefined}, {comment, undefined}, {emu_args, undefined}, Body] -	end. +	[{shebang, Shebang} | Rest] -> +	    [{shebang, Shebang} | +	     case Rest of +		 [{comment, Comment} | Rest2] -> +		     [{comment, Comment} | +		      case Rest2 of +			  [{emu_args, EmuArgs}, Body] -> +			      [{emu_args, EmuArgs}, Body]; +			  [Body] -> +			      [{emu_args, undefined}, Body] +		      end +		     ]; +		 [{emu_args, EmuArgs}, Body] -> +		     [{comment, undefined}, {emu_args, EmuArgs}, Body]; +		 [Body] -> +		     [{comment, undefined}, {emu_args, undefined}, Body] +	     end +	    ]; +	[Body] -> +	    [{shebang, undefined}, {comment, undefined}, {emu_args, undefined}, Body] +    end.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -846,36 +858,36 @@ foldl(Config) when is_list(Config) ->      %% Get line numbers and the file attribute right      SourceFile = NewFile ++ ".erl",      <<_:1/binary, ErlCode2/binary>> = ErlCode, -    ?line ok = file:write_file(SourceFile, ErlCode2), -    ?line {ok, _Mod, BeamCode} = +    ok = file:write_file(SourceFile, ErlCode2), +    {ok, _Mod, BeamCode} =  	compile:file(SourceFile, [binary, debug_info]),      %% Verify source script -    ?line ok = escript:create(SourceFile, [{source, ErlCode}]), -    ?line {ok, [{".", _, BeamCode2}]} +    ok = escript:create(SourceFile, [{source, ErlCode}]), +    {ok, [{".", _, BeamCode2}]}  	= escript_foldl(Collect, [], SourceFile), -    ?line {ok, Abstr} = beam_lib:chunks(BeamCode, [abstract_code]), -    ?line {ok, Abstr2} = beam_lib:chunks(BeamCode2, [abstract_code]), +    {ok, Abstr} = beam_lib:chunks(BeamCode, [abstract_code]), +    {ok, Abstr2} = beam_lib:chunks(BeamCode2, [abstract_code]),      %% io:format("abstr1=~p\n", [Abstr]),      %% io:format("abstr2=~p\n", [Abstr2]), -    ?line Abstr = Abstr2, % Assert +    Abstr = Abstr2, % Assert      %% Verify beam script -    ?line ok = escript:create(NewFile, [{beam, BeamCode}]), -    ?line {ok, [{".", _, BeamCode}]} +    ok = escript:create(NewFile, [{beam, BeamCode}]), +    {ok, [{".", _, BeamCode}]}  	= escript_foldl(Collect, [], NewFile),      %% Verify archive scripts -    ?line ok = escript:create(NewFile, [{archive, ArchiveBin}]), -    ?line {ok, [{BeamBase, #file_info{}, _}, -		{ErlBase, #file_info{}, _}]} +    ok = escript:create(NewFile, [{archive, ArchiveBin}]), +    {ok, [{BeamBase, #file_info{}, _}, +	  {ErlBase, #file_info{}, _}]}  	= escript_foldl(Collect, [], NewFile),      ArchiveFiles = [{ErlBase, ErlCode}, {BeamBase, BeamCode}], -    ?line ok = escript:create(NewFile, [{archive, ArchiveFiles, []}]), -    ?line {ok, [{BeamBase, _, _}, -	      {ErlBase, _, _}]} +    ok = escript:create(NewFile, [{archive, ArchiveFiles, []}]), +    {ok, [{BeamBase, _, _}, +	  {ErlBase, _, _}]}  	= escript_foldl(Collect, [], NewFile),      ok. @@ -909,7 +921,7 @@ emulate_escript_foldl(Fun, Acc, File) ->      end.  unicode(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash.      run(Dir, "unicode1",          [<<"escript: exception error: an error occurred when evaluating" @@ -928,12 +940,12 @@ unicode(Config) when is_list(Config) ->  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  overflow(Config) when is_list(Config) -> -    Data = ?config(data_dir, Config), +    Data = proplists:get_value(data_dir, Config),      Dir = filename:absname(Data),		%Get rid of trailing slash. -    ?line run(Dir, "arg_overflow", -	      [<<"ExitCode:0">>]), -    ?line run(Dir, "linebuf_overflow", -	      [<<"ExitCode:0">>]), +    run(Dir, "arg_overflow", +	[<<"ExitCode:0">>]), +    run(Dir, "linebuf_overflow", +	[<<"ExitCode:0">>]),      ok.  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -968,7 +980,7 @@ do_run(Dir, Cmd, Expected0) ->  		Actual ->  		    io:format("Expected: ~p\n", [Expected]),  		    io:format("Actual:   ~p\n", [Actual]), -		    ?t:fail() +		    ct:fail(failed)  	    end      end. | 
