3131 init_per_testcase /2 , end_per_testcase /2 ]).
3232
3333-export ([args_file /1 , evil_args_file /1 , missing_args_file /1 , env /1 , args_file_env /1 ,
34+ unicode_args_file /1 ,
3435 otp_7461 /1 , otp_7461_remote /1 , argument_separation /1 , argument_with_option /1 ,
3536 zdbbl_dist_buf_busy_limit /1 ]).
3637
@@ -41,7 +42,8 @@ suite() ->
4142 {timetrap , {minutes , 1 }}].
4243
4344all () ->
44- [args_file , evil_args_file , missing_args_file , env , args_file_env ,
45+ [args_file , evil_args_file , missing_args_file , unicode_args_file ,
46+ env , args_file_env ,
4547 otp_7461 , argument_separation , argument_with_option , zdbbl_dist_buf_busy_limit ].
4648
4749init_per_suite (Config ) ->
@@ -318,6 +320,22 @@ missing_args_file(Config) when is_list(Config) ->
318320 exit ({unexpected_args_output , Output , Error })
319321 end .
320322
323+ unicode_args_file (Config ) when is_list (Config ) ->
324+ % % Test that -args_file works with Unicode paths (e.g. Cyrillic).
325+ % % This is a regression test for a bug where fopen() on Windows
326+ % % could not open files with non-ASCII paths.
327+ PrivDir = proplists :get_value (priv_dir , Config ),
328+ UnicodeDir = filename :join (PrivDir , " Артем" ),
329+ ok = file :make_dir (UnicodeDir ),
330+ AFN = filename :join (UnicodeDir , " args.txt" ),
331+ write_file (AFN , " -MiscArg1 +\\ #100 -extra +XtraArg1" ),
332+ CmdLine = " -args_file " ++ AFN ,
333+ {Emu , Misc , Extra } = emu_args (CmdLine ),
334+ verify_args ([" -#100" ], Emu ),
335+ verify_args ([" -MiscArg1" ], Misc ),
336+ verify_args ([" +XtraArg1" ], Extra ),
337+ ok .
338+
321339env (Config ) when is_list (Config ) ->
322340 os :putenv (" ERL_AFLAGS" , " -MiscArg1 +#100 -extra +XtraArg1 +XtraArg2" ),
323341 CmdLine = " +#200 -MiscArg2 -extra +XtraArg3 +XtraArg4" ,
0 commit comments