aboutsummaryrefslogtreecommitdiff
path: root/spec/util/test_env.lua
diff options
context:
space:
mode:
Diffstat (limited to 'spec/util/test_env.lua')
-rw-r--r--spec/util/test_env.lua398
1 files changed, 224 insertions, 174 deletions
diff --git a/spec/util/test_env.lua b/spec/util/test_env.lua
index dcda6311..41787cb7 100644
--- a/spec/util/test_env.lua
+++ b/spec/util/test_env.lua
@@ -37,6 +37,19 @@ local function title(str)
37 print(("-"):rep(#str)) 37 print(("-"):rep(#str))
38end 38end
39 39
40local dir_sep = package.config:sub(1, 1)
41local function P(p)
42 return (p:gsub("/", dir_sep))
43end
44
45local function dir_path(...)
46 return P((table.concat({ ... }, "/"):gsub("\\", "/"):gsub("/+", "/")))
47end
48
49local function C(...)
50 return table.concat({...}, " ")
51end
52
40--- Quote argument for shell processing. Fixes paths on Windows. 53--- Quote argument for shell processing. Fixes paths on Windows.
41-- Adds double quotes and escapes. Based on function in fs/win32.lua. 54-- Adds double quotes and escapes. Based on function in fs/win32.lua.
42-- @param arg string: Unquoted argument. 55-- @param arg string: Unquoted argument.
@@ -46,7 +59,7 @@ local function Q(arg)
46 local drive_letter = "[%.a-zA-Z]?:?[\\/]" 59 local drive_letter = "[%.a-zA-Z]?:?[\\/]"
47 -- Quote DIR for Windows 60 -- Quote DIR for Windows
48 if arg:match("^"..drive_letter) then 61 if arg:match("^"..drive_letter) then
49 arg = arg:gsub("/", "\\") 62 arg = P(arg)
50 end 63 end
51 64
52 if arg == "\\" then 65 if arg == "\\" then
@@ -72,7 +85,7 @@ local function V(str)
72 elseif suffix == "v" then 85 elseif suffix == "v" then
73 return v 86 return v
74 elseif suffix == "r" then 87 elseif suffix == "r" then
75 return v 88 return r
76 else 89 else
77 print("Test error: invalid suffix " .. suffix .. " in variable " .. name) 90 print("Test error: invalid suffix " .. suffix .. " in variable " .. name)
78 os.exit(1) 91 os.exit(1)
@@ -87,6 +100,14 @@ local function V(str)
87 end)) 100 end))
88end 101end
89 102
103local function tool(name)
104 if test_env.TEST_TARGET_OS == "windows" then
105 return Q(dir_path(test_env.testing_paths.win_tools, name .. ".exe"))
106 else
107 return name
108 end
109end
110
90local os_remove = os.remove 111local os_remove = os.remove
91os.remove = function(f) -- luacheck: ignore 112os.remove = function(f) -- luacheck: ignore
92 return os_remove(V(f)) 113 return os_remove(V(f))
@@ -131,8 +152,18 @@ function test_env.copy(source, destination)
131 source = V(source) 152 source = V(source)
132 destination = V(destination) 153 destination = V(destination)
133 154
134 local r_source, err = io.open(source, "r") 155 local r_source, r_destination, err
135 local r_destination, err = io.open(destination, "w") 156 r_source, err = io.open(source, "r")
157 if err then
158 print(debug.traceback())
159 os.exit(1)
160 end
161
162 r_destination, err = io.open(destination, "w")
163 if err then
164 print(debug.traceback())
165 os.exit(1)
166 end
136 167
137 while true do 168 while true do
138 local block = r_source:read(8192) 169 local block = r_source:read(8192)
@@ -147,7 +178,7 @@ end
147function test_env.get_tmp_path() 178function test_env.get_tmp_path()
148 local path = os.tmpname() 179 local path = os.tmpname()
149 if test_env.TEST_TARGET_OS == "windows" and not path:find(":") then 180 if test_env.TEST_TARGET_OS == "windows" and not path:find(":") then
150 path = os.getenv("TEMP") .. path 181 path = dir_path(os.getenv("TEMP"), path)
151 end 182 end
152 os.remove(path) 183 os.remove(path)
153 return path 184 return path
@@ -234,8 +265,8 @@ local function execute_bool(command, print_command, env_variables)
234 local redirect_filename 265 local redirect_filename
235 local redirect = "" 266 local redirect = ""
236 if print_command ~= nil then 267 if print_command ~= nil then
237 redirect_filename = test_env.testing_paths.luarocks_tmp.."/output.txt" 268 redirect_filename = dir_path(test_env.testing_paths.luarocks_tmp, "output.txt")
238 redirect = " > "..redirect_filename 269 redirect = " > " .. redirect_filename
239 os.remove(redirect_filename) 270 os.remove(redirect_filename)
240 end 271 end
241 local ok = test_env.execute(command .. redirect) 272 local ok = test_env.execute(command .. redirect)
@@ -312,7 +343,7 @@ function test_env.set_args()
312 if not test_env.TEST_TARGET_OS then 343 if not test_env.TEST_TARGET_OS then
313 title("OS CHECK") 344 title("OS CHECK")
314 345
315 if package.config:sub(1,1) == "\\" then 346 if dir_sep == "\\" then
316 test_env.TEST_TARGET_OS = "windows" 347 test_env.TEST_TARGET_OS = "windows"
317 if test_env.APPVEYOR then 348 if test_env.APPVEYOR then
318 test_env.OPENSSL_INCDIR = "C:\\OpenSSL-v111-Win32\\include" 349 test_env.OPENSSL_INCDIR = "C:\\OpenSSL-v111-Win32\\include"
@@ -348,7 +379,8 @@ function test_env.set_args()
348 379
349 test_env.openssl_dirs = "" 380 test_env.openssl_dirs = ""
350 if test_env.OPENSSL_INCDIR then 381 if test_env.OPENSSL_INCDIR then
351 test_env.openssl_dirs = "OPENSSL_INCDIR=" .. test_env.OPENSSL_INCDIR .. " OPENSSL_LIBDIR=" .. test_env.OPENSSL_LIBDIR 382 test_env.openssl_dirs = C("OPENSSL_INCDIR=" .. test_env.OPENSSL_INCDIR,
383 "OPENSSL_LIBDIR=" .. test_env.OPENSSL_LIBDIR)
352 end 384 end
353 385
354 return true 386 return true
@@ -358,12 +390,8 @@ function test_env.copy_dir(source_path, target_path)
358 source_path = V(source_path) 390 source_path = V(source_path)
359 target_path = V(target_path) 391 target_path = V(target_path)
360 392
361 local testing_paths = test_env.testing_paths 393 local flag = test_env.TEST_TARGET_OS == "windows" and "-R" or "-a"
362 if test_env.TEST_TARGET_OS == "windows" then 394 os.execute(C(tool("cp"), flag, dir_path(source_path, "."), target_path))
363 execute_bool(testing_paths.win_tools .. "/cp -R ".. source_path .. "/. " .. target_path)
364 else
365 execute_bool("cp -a ".. source_path .. "/. " .. target_path)
366 end
367end 395end
368 396
369--- Remove directory recursively 397--- Remove directory recursively
@@ -374,7 +402,7 @@ function test_env.remove_dir(path)
374 if exists(path) then 402 if exists(path) then
375 for file in lfs.dir(path) do 403 for file in lfs.dir(path) do
376 if file ~= "." and file ~= ".." then 404 if file ~= "." and file ~= ".." then
377 local full_path = path..'/'..file 405 local full_path = dir_path(path, file)
378 406
379 if lfs.attributes(full_path, "mode") == "directory" then 407 if lfs.attributes(full_path, "mode") == "directory" then
380 test_env.remove_dir(full_path) 408 test_env.remove_dir(full_path)
@@ -396,7 +424,7 @@ function test_env.remove_subdirs(path, pattern)
396 if exists(path) then 424 if exists(path) then
397 for file in lfs.dir(path) do 425 for file in lfs.dir(path) do
398 if file ~= "." and file ~= ".." then 426 if file ~= "." and file ~= ".." then
399 local full_path = path..'/'..file 427 local full_path = dir_path(path, file)
400 428
401 if lfs.attributes(full_path, "mode") == "directory" and file:find(pattern) then 429 if lfs.attributes(full_path, "mode") == "directory" and file:find(pattern) then
402 test_env.remove_dir(full_path) 430 test_env.remove_dir(full_path)
@@ -418,7 +446,7 @@ function test_env.remove_files(path, pattern)
418 for file in lfs.dir(path) do 446 for file in lfs.dir(path) do
419 if file ~= "." and file ~= ".." then 447 if file ~= "." and file ~= ".." then
420 if file:find(pattern) then 448 if file:find(pattern) then
421 if os.remove(path .. "/" .. file) then 449 if os.remove(dir_path(path, file)) then
422 result_check = true 450 result_check = true
423 end 451 end
424 end 452 end
@@ -442,27 +470,21 @@ local function download_rocks(urls, save_path)
442 url = V(url) 470 url = V(url)
443 471
444 if url:match("^spec/fixtures") then 472 if url:match("^spec/fixtures") then
445 table.insert(fixtures, (url:gsub("^spec/fixtures", test_env.testing_paths.fixtures_dir))) 473 table.insert(fixtures, P(url:gsub("^spec/fixtures", test_env.testing_paths.fixtures_dir)))
446 else 474 else
447 -- check if already downloaded 475 -- check if already downloaded
448 if not exists(save_path .. "/" .. url) then 476 if not exists(dir_path(save_path, url)) then
449 table.insert(to_download, ((luarocks_repo .. url):gsub("org//", "org/"))) 477 table.insert(to_download, ((luarocks_repo .. url):gsub("org//", "org/")))
450 end 478 end
451 end 479 end
452 end 480 end
453 481
454 if #fixtures > 0 then 482 if #fixtures > 0 then
455 os.execute("cp " .. table.concat(fixtures, " ") .. " " .. save_path) 483 os.execute(C(tool("cp"), table.concat(fixtures, " "), save_path))
456 end 484 end
457 485
458 if #to_download > 0 then 486 if #to_download > 0 then
459 local cmd 487 local ok = execute_bool(C(tool("wget"), "--no-check-certificate -cP", save_path, table.concat(to_download, " ")))
460 if test_env.TEST_TARGET_OS == "windows" then
461 cmd = test_env.testing_paths.win_tools .. "/wget --no-check-certificate -cP " .. save_path
462 else
463 cmd = "wget -cP " .. save_path
464 end
465 local ok = execute_bool(cmd.." "..table.concat(to_download, " "))
466 if not ok then 488 if not ok then
467 os.exit(1) 489 os.exit(1)
468 end 490 end
@@ -492,12 +514,13 @@ end
492-- @return md5sum string: md5sum of directory 514-- @return md5sum string: md5sum of directory
493local function hash_environment(path) 515local function hash_environment(path)
494 if test_env.TEST_TARGET_OS == "linux" then 516 if test_env.TEST_TARGET_OS == "linux" then
495 return execute_output("cd " .. path .. " && find . -printf \"%s %p\n\"") 517 return execute_output(C("cd", path, "&& find . -printf \"%s %p\n\" | md5sum"))
496 elseif test_env.TEST_TARGET_OS == "osx" then 518 elseif test_env.TEST_TARGET_OS == "osx" then
497 return execute_output("find " .. path .. " -type f -exec stat -f \"%z %N\" {} \\; | md5") 519 return execute_output(C("find", path, "-type f -exec stat -f \"%z %N\" {} \\; | md5"))
498 elseif test_env.TEST_TARGET_OS == "windows" then 520 elseif test_env.TEST_TARGET_OS == "windows" then
499 return execute_output("\"" .. Q(test_env.testing_paths.win_tools .. "/find") .. " " .. Q(path) 521 return execute_output(
500 .. " -printf \"%s %p\"\" > temp_sum.txt && certUtil -hashfile temp_sum.txt && del temp_sum.txt") 522 "\"" .. C(tool("find"), Q(path), "-printf", "\"%s %p\"") .. "\"" ..
523 " > temp_sum.txt && certUtil -hashfile temp_sum.txt && del temp_sum.txt")
501 end 524 end
502end 525end
503 526
@@ -505,29 +528,44 @@ end
505-- @param testing_paths table: table with paths to testing directory 528-- @param testing_paths table: table with paths to testing directory
506-- @return env_variables table: table with created environment variables 529-- @return env_variables table: table with created environment variables
507local function create_env(testing_paths) 530local function create_env(testing_paths)
508 local luaversion_short = _VERSION:gsub("Lua ", "") 531 local lua_v = _VERSION:gsub("Lua ", "")
532 local testrun_dir = test_env.testing_paths.testrun_dir
533 local lrprefix = testing_paths.testing_lrprefix
534 local tree = testing_paths.testing_tree
535 local sys_tree = testing_paths.testing_sys_tree
509 536
510 if test_env.LUAJIT_V then 537 if test_env.LUAJIT_V then
511 luaversion_short="5.1" 538 lua_v="5.1"
512 end 539 end
513 540
514 local env_variables = {} 541 local env_variables = {}
515 env_variables.GNUPGHOME = testing_paths.gpg_dir 542 env_variables.GNUPGHOME = testing_paths.gpg_dir
516 env_variables.LUA_VERSION = luaversion_short 543 env_variables.LUA_VERSION = lua_v
517 env_variables.LUAROCKS_CONFIG = testing_paths.testrun_dir .. "/testing_config.lua" 544 env_variables.LUAROCKS_CONFIG = dir_path(testrun_dir, "testing_config.lua")
545
546 local lua_path = {}
518 if test_env.TEST_TARGET_OS == "windows" then 547 if test_env.TEST_TARGET_OS == "windows" then
519 env_variables.LUA_PATH = testing_paths.testing_lrprefix .. "\\lua\\?.lua;" 548 table.insert(lua_path, dir_path(lrprefix, "lua", "?.lua"))
520 else 549 else
521 env_variables.LUA_PATH = testing_paths.testing_lrprefix .. "/share/lua/" .. luaversion_short .. "/?.lua;" 550 table.insert(lua_path, dir_path(lrprefix, "share", "lua", lua_v, "?.lua"))
522 end 551 end
523 env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_tree .. "/share/lua/" .. luaversion_short .. "/?.lua;" 552 table.insert(lua_path, dir_path(tree, "share", "lua", lua_v, "?.lua"))
524 env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_tree .. "/share/lua/".. luaversion_short .. "/?/init.lua;" 553 table.insert(lua_path, dir_path(tree, "share", "lua", lua_v, "?", "init.lua"))
525 env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/" .. luaversion_short .. "/?.lua;" 554 table.insert(lua_path, dir_path(sys_tree, "share", "lua", lua_v, "?.lua"))
526 env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/".. luaversion_short .. "/?/init.lua;" 555 table.insert(lua_path, dir_path(sys_tree, "share", "lua", lua_v, "?", "init.lua"))
527 env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.src_dir .. "/?.lua;" 556 table.insert(lua_path, dir_path(testing_paths.src_dir, "?.lua"))
528 env_variables.LUA_CPATH = testing_paths.testing_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. test_env.lib_extension .. ";" 557 env_variables.LUA_PATH = table.concat(lua_path, ";") .. ";"
529 .. testing_paths.testing_sys_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. test_env.lib_extension .. ";" 558
530 env_variables.PATH = os.getenv("PATH") .. ";" .. testing_paths.testing_tree .. "/bin;" .. testing_paths.testing_sys_tree .. "/bin;" 559 local lua_cpath = {}
560 local lib_pattern = "?." .. test_env.lib_extension
561 table.insert(lua_cpath, dir_path(tree, "lib", "lua", lua_v, lib_pattern))
562 table.insert(lua_cpath, dir_path(sys_tree, "lib", "lua", lua_v, lib_pattern))
563 env_variables.LUA_CPATH = table.concat(lua_cpath, ";") .. ";"
564
565 local path = { os.getenv("PATH") }
566 table.insert(path, dir_path(tree, "bin"))
567 table.insert(path, dir_path(sys_tree, "bin"))
568 env_variables.PATH = table.concat(path, test_env.TARGET_OS == "windows" and ";" or ":")
531 569
532 return env_variables 570 return env_variables
533end 571end
@@ -544,16 +582,19 @@ local function create_md5sums(testing_paths)
544end 582end
545 583
546local function make_run_function(cmd_name, exec_function, with_coverage, do_print) 584local function make_run_function(cmd_name, exec_function, with_coverage, do_print)
547 local cmd_prefix = Q(test_env.testing_paths.lua) .. " " 585 local cmd_prefix = Q(test_env.testing_paths.lua)
586 local testrun_dir = test_env.testing_paths.testrun_dir
548 587
549 if with_coverage then 588 if with_coverage then
550 cmd_prefix = cmd_prefix .. "-e \"require('luacov.runner')('" .. test_env.testing_paths.testrun_dir .. "/luacov.config')\" " 589 cmd_prefix = C(cmd_prefix, "-e", "\"require('luacov.runner')([[" .. testrun_dir .. "/luacov.config]])\"")
551 end 590 end
552 591
553 if cmd_name then 592 if cmd_name then
554 cmd_prefix = cmd_prefix .. test_env.testing_paths.src_dir .. "/bin/" .. cmd_name .. " " 593 cmd_prefix = C(cmd_prefix, dir_path(test_env.testing_paths.src_dir, "bin", cmd_name))
555 end 594 end
556 595
596 cmd_prefix = P(cmd_prefix)
597
557 return function(cmd, new_vars) 598 return function(cmd, new_vars)
558 cmd = V(cmd) 599 cmd = V(cmd)
559 local temp_vars = {} 600 local temp_vars = {}
@@ -565,34 +606,34 @@ local function make_run_function(cmd_name, exec_function, with_coverage, do_prin
565 temp_vars[k] = v 606 temp_vars[k] = v
566 end 607 end
567 end 608 end
568 return exec_function(cmd_prefix .. cmd, do_print, temp_vars) 609 return exec_function(C(cmd_prefix, cmd), do_print, temp_vars)
569 end 610 end
570end 611end
571 612
572local function make_run_functions() 613local function make_run_functions()
573 return { 614 local fns = {}
574 lua = make_run_function(nil, execute_output, true, true), 615
575 lua_bool = make_run_function(nil, execute_bool, true, true), 616 local cmds = {
576 luarocks = make_run_function("luarocks", execute_output, true, true), 617 ["lua"] = nil,
577 luarocks_bool = make_run_function("luarocks", execute_bool, true, true), 618 ["luarocks"] = "luarocks",
578 luarocks_noprint = make_run_function("luarocks", execute_bool, true, false), 619 ["luarocks_admin"] = "luarocks-admin",
579 luarocks_nocov = make_run_function("luarocks", execute_bool, false, true),
580 luarocks_noprint_nocov = make_run_function("luarocks", execute_bool, false, false),
581 luarocks_admin = make_run_function("luarocks-admin", execute_output, true, true),
582 luarocks_admin_bool = make_run_function("luarocks-admin", execute_bool, true, true),
583 luarocks_admin_nocov = make_run_function("luarocks-admin", execute_bool, false, false)
584 } 620 }
621
622 for _, name in ipairs({"lua", "luarocks", "luarocks_admin"}) do
623 fns[name] = make_run_function(cmds[name], execute_output, true, true)
624 fns[name .. "_bool"] = make_run_function(cmds[name], execute_bool, true, true)
625 fns[name .. "_nocov"] = make_run_function(cmds[name], execute_bool, false, true)
626 fns[name .. "_noprint_nocov"] = make_run_function(cmds[name], execute_bool, false, false)
627 end
628
629 return fns
585end 630end
586 631
587local function move_file(src, dst) 632local function move_file(src, dst)
588 if test_env.TEST_TARGET_OS == "windows" then 633 local ok = execute_bool(C(tool("mv"), P(src), P(dst)))
589 execute_bool(test_env.testing_paths.win_tools .. "/mv " .. src .. " " .. dst) 634 if not ok then
590 else 635 print(debug.traceback())
591 local ok = execute_bool("mv " .. src .. " " .. dst) 636 os.exit(1)
592 if not ok then
593 print(debug.traceback())
594 os.exit(1)
595 end
596 end 637 end
597end 638end
598 639
@@ -610,13 +651,15 @@ local function build_environment(rocks, env_variables)
610 lfs.mkdir(testing_paths.testing_tree) 651 lfs.mkdir(testing_paths.testing_tree)
611 lfs.mkdir(testing_paths.testing_sys_tree) 652 lfs.mkdir(testing_paths.testing_sys_tree)
612 653
613 test_env.run.luarocks_admin_nocov("make_manifest " .. Q(testing_paths.testing_server)) 654 test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_server)))
614 test_env.run.luarocks_admin_nocov("make_manifest " .. Q(testing_paths.testing_cache)) 655 test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_cache)))
615 656
616 for _, rock in ipairs(rocks) do 657 for _, rock in ipairs(rocks) do
617 if not test_env.run.luarocks_nocov(test_env.quiet("install --only-server=" .. testing_paths.testing_cache .. " --tree=" .. testing_paths.testing_sys_tree .. " " .. Q(rock), env_variables)) then 658 local only_server = "--only-server=" .. testing_paths.testing_cache
618 assert(test_env.run.luarocks_nocov("build --tree=" .. Q(testing_paths.testing_sys_tree) .. " " .. Q(rock), env_variables)) 659 local tree = "--tree=" .. testing_paths.testing_sys_tree
619 assert(test_env.run.luarocks_nocov("pack --tree=" .. Q(testing_paths.testing_sys_tree) .. " " .. Q(rock), env_variables)) 660 if not test_env.run.luarocks_nocov(test_env.quiet(C("install", only_server, tree, Q(rock)), env_variables)) then
661 assert(test_env.run.luarocks_nocov(C("build", tree, Q(rock)), env_variables))
662 assert(test_env.run.luarocks_nocov(C("pack", tree, Q(rock)), env_variables))
620 move_file(rock .. "-*.rock", testing_paths.testing_cache) 663 move_file(rock .. "-*.rock", testing_paths.testing_cache)
621 end 664 end
622 end 665 end
@@ -641,16 +684,6 @@ local function reset_environment(testing_paths, md5sums)
641 end 684 end
642end 685end
643 686
644local function found_interpreter(testing_paths, luadir, lua_bindir)
645 local location = lua_bindir .. "/" .. testing_paths.lua_exe
646 if exists(location) then
647 testing_paths.lua_bindir = lua_bindir
648 testing_paths.luadir = luadir
649 testing_paths.lua = location
650 return true
651 end
652end
653
654local function find_lua() 687local function find_lua()
655 -- (1) LUA is a full path 688 -- (1) LUA is a full path
656 if test_env.LUA and test_env.LUA:match("[/\\]") then 689 if test_env.LUA and test_env.LUA:match("[/\\]") then
@@ -671,22 +704,22 @@ local function find_lua()
671 if test_env.LUA_DIR then 704 if test_env.LUA_DIR then
672 705
673 local luadir = test_env.LUA_DIR 706 local luadir = test_env.LUA_DIR
674 local lua_bindir = exists(luadir .. "/bin") 707 local lua_bindir = exists(dir_path(luadir, "bin"))
675 and luadir .. "/bin" 708 and dir_path(luadir, "bin")
676 or luadir 709 or luadir
677 local lua = lua_bindir .. "/" .. lua_exe 710 local lua = dir_path(lua_bindir, lua_exe)
678 711
679 return lua_bindir, luadir, lua 712 return lua_bindir, luadir, lua
680 end 713 end
681 714
682 -- (2.2) LUA_DIR was not given, try some default paths 715 -- (2.2) LUA_DIR was not given, try some default paths
683 local try_dirs = (test_env.TEST_TARGET_OS == "windows") 716 local try_dirs = (test_env.TEST_TARGET_OS == "windows")
684 and { os.getenv("ProgramFiles(x86)").."/LuaRocks" } 717 and { os.getenv("ProgramFiles(x86)").."\\LuaRocks" }
685 or { "/usr/local", "/usr" } 718 or { "/usr/local", "/usr" }
686 719
687 for _, luadir in ipairs(try_dirs) do 720 for _, luadir in ipairs(try_dirs) do
688 for _, lua_bindir in ipairs({ luadir, luadir .. "/bin" }) do 721 for _, lua_bindir in ipairs({ luadir, dir_path(luadir, "bin") }) do
689 local lua = lua_bindir .. "/" .. lua_exe 722 local lua = dir_path(lua_bindir, lua_exe)
690 if exists(lua) then 723 if exists(lua) then
691 return lua_bindir, luadir, lua 724 return lua_bindir, luadir, lua
692 end 725 end
@@ -694,50 +727,47 @@ local function find_lua()
694 end 727 end
695end 728end
696 729
697local function create_paths(luaversion_full) 730local function create_testing_paths(suffix)
698 731 local paths = {}
699 local testing_paths = {}
700 732
701 testing_paths.lua_bindir, testing_paths.luadir, testing_paths.lua = find_lua() 733 paths.lua_bindir, paths.luadir, paths.lua = find_lua()
702 if (not testing_paths.lua) or (not exists(testing_paths.lua)) then 734 if (not paths.lua) or (not exists(paths.lua)) then
703 error("Lua interpreter not found! Run `busted -Xhelper help` for options") 735 error("Lua interpreter not found! Run `busted -Xhelper help` for options")
704 end 736 end
705 737
706 local base_dir = lfs.currentdir() 738 local base_dir = lfs.currentdir()
739 paths.src_dir = dir_path(base_dir, "src")
740 paths.spec_dir = dir_path(base_dir, "spec")
741 paths.util_dir = dir_path(base_dir, "spec", "util")
742 paths.fixtures_dir = dir_path(base_dir, "spec", "fixtures")
743 paths.fixtures_repo_dir = dir_path(base_dir, "spec", "fixtures", "a_repo")
744 paths.gpg_dir = dir_path(base_dir, "spec", "fixtures", "gpg")
745
746 local testrun_dir = dir_path(base_dir, "testrun")
747 paths.testrun_dir = testrun_dir
748 paths.testing_lrprefix = dir_path(testrun_dir, "testing_lrprefix-" .. suffix)
749 paths.testing_tree = dir_path(testrun_dir, "testing-" .. suffix)
750 paths.testing_tree_copy = dir_path(testrun_dir, "testing_copy-" .. suffix)
751 paths.testing_sys_tree = dir_path(testrun_dir, "testing_sys-" .. suffix)
752 paths.testing_sys_tree_copy = dir_path(testrun_dir, "testing_sys_copy-" .. suffix)
753 paths.testing_cache = dir_path(testrun_dir, "testing_cache-" .. suffix)
754 paths.testing_server = dir_path(testrun_dir, "testing_server-" .. suffix)
755
756 local rocks_v = "rocks-" .. test_env.lua_version
757 paths.testing_rocks = dir_path(paths.testing_tree, "lib", "luarocks", rocks_v)
758 paths.testing_sys_rocks = dir_path(paths.testing_sys_tree, "lib", "luarocks", rocks_v)
707 759
708 if test_env.TEST_TARGET_OS == "windows" then 760 if test_env.TEST_TARGET_OS == "windows" then
709 base_dir = base_dir:gsub("\\","/") 761 paths.luarocks_tmp = os.getenv("TEMP")
710 end
711
712 testing_paths.fixtures_dir = base_dir .. "/spec/fixtures"
713 testing_paths.gpg_dir = testing_paths.fixtures_dir .. "/gpg"
714 testing_paths.fixtures_repo_dir = base_dir .. "/spec/fixtures/a_repo"
715 testing_paths.util_dir = base_dir .. "/spec/util"
716 testing_paths.testrun_dir = base_dir .. "/testrun"
717 testing_paths.src_dir = base_dir .. "/src"
718 testing_paths.spec_dir = base_dir .. "/spec"
719 testing_paths.testing_lrprefix = testing_paths.testrun_dir .. "/testing_lrprefix-" .. luaversion_full
720 testing_paths.testing_tree = testing_paths.testrun_dir .. "/testing-" .. luaversion_full
721 testing_paths.testing_tree_copy = testing_paths.testrun_dir .. "/testing_copy-" .. luaversion_full
722 testing_paths.testing_sys_tree = testing_paths.testrun_dir .. "/testing_sys-" .. luaversion_full
723 testing_paths.testing_sys_tree_copy = testing_paths.testrun_dir .. "/testing_sys_copy-" .. luaversion_full
724 testing_paths.testing_cache = testing_paths.testrun_dir .. "/testing_cache-" .. luaversion_full
725 testing_paths.testing_server = testing_paths.testrun_dir .. "/testing_server-" .. luaversion_full
726
727 testing_paths.testing_rocks = testing_paths.testing_tree .. "/lib/luarocks/rocks-" .. test_env.lua_version
728 testing_paths.testing_sys_rocks = testing_paths.testing_sys_tree .. "/lib/luarocks/rocks-" .. test_env.lua_version
729
730 if test_env.TEST_TARGET_OS == "windows" then
731 testing_paths.luarocks_tmp = os.getenv("TEMP")
732 else 762 else
733 testing_paths.luarocks_tmp = "/tmp/luarocks_testing" 763 paths.luarocks_tmp = "/tmp/luarocks_testing"
734 end 764 end
735 765
736 if test_env.TEST_TARGET_OS == "windows" then 766 if test_env.TEST_TARGET_OS == "windows" then
737 testing_paths.win_tools = base_dir .. "/win32/tools" 767 paths.win_tools = dir_path(base_dir, "win32", "tools")
738 end 768 end
739 769
740 return testing_paths 770 return paths
741end 771end
742 772
743--- Helper function to unload luarocks modules from global table package.loaded 773--- Helper function to unload luarocks modules from global table package.loaded
@@ -748,7 +778,7 @@ function test_env.unload_luarocks()
748 package.loaded[modname] = nil 778 package.loaded[modname] = nil
749 end 779 end
750 end 780 end
751 local src_pattern = test_env.testing_paths.src_dir .. "/?.lua" 781 local src_pattern = dir_path(test_env.testing_paths.src_dir, "?.lua")
752 if not package.path:find(src_pattern, 1, true) then 782 if not package.path:find(src_pattern, 1, true) then
753 package.path = src_pattern .. ";" .. package.path 783 package.path = src_pattern .. ";" .. package.path
754 end 784 end
@@ -760,16 +790,19 @@ local function get_luarocks_platform(variables)
760 "cfg.init();" .. 790 "cfg.init();" ..
761 "print(cfg.arch)" .. 791 "print(cfg.arch)" ..
762 "\"" 792 "\""
763 local cmd = test_env.testing_paths.lua .. " -e " .. print_arch_script 793 local cmd = C(test_env.testing_paths.lua, "-e", print_arch_script)
764 return execute_output(cmd, false, variables) 794 return execute_output(cmd, false, variables)
765end 795end
766 796
767--- Function for initial setup of environment, variables, md5sums for spec files 797--- Function for initial setup of environment, variables, md5sums for spec files
768function test_env.setup_specs(extra_rocks) 798function test_env.setup_specs(extra_rocks)
799 local testrun_dir = test_env.testing_paths.testrun_dir
800 local variables = test_env.env_variables
801
769 -- if global variable about successful creation of testing environment doesn't exist, build environment 802 -- if global variable about successful creation of testing environment doesn't exist, build environment
770 if not test_env.setup_done then 803 if not test_env.setup_done then
771 if test_env.CI then 804 if test_env.CI then
772 if not exists(os.getenv("HOME") .. "/.ssh/id_rsa.pub") then 805 if not exists(os.getenv("HOME"), ".ssh/id_rsa.pub") then
773 execute_bool("ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa") 806 execute_bool("ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa")
774 execute_bool("cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys") 807 execute_bool("cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys")
775 execute_bool("chmod og-wx ~/.ssh/authorized_keys") 808 execute_bool("chmod og-wx ~/.ssh/authorized_keys")
@@ -783,8 +816,8 @@ function test_env.setup_specs(extra_rocks)
783 require("spec.util.git_repo") 816 require("spec.util.git_repo")
784 require("spec.util.quick") 817 require("spec.util.quick")
785 818
786 package.path = test_env.env_variables.LUA_PATH 819 package.path = variables.LUA_PATH
787 package.cpath = test_env.env_variables.LUA_CPATH 820 package.cpath = variables.LUA_CPATH
788 821
789 test_env.platform = get_luarocks_platform(test_env.env_variables) 822 test_env.platform = get_luarocks_platform(test_env.env_variables)
790 test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or "" 823 test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or ""
@@ -801,10 +834,10 @@ function test_env.setup_specs(extra_rocks)
801 end 834 end
802 835
803 if test_env.RESET_ENV then 836 if test_env.RESET_ENV then
804 reset_environment(test_env.testing_paths, test_env.md5sums, test_env.env_variables) 837 reset_environment(test_env.testing_paths, test_env.md5sums, variables)
805 end 838 end
806 839
807 lfs.chdir(test_env.testing_paths.testrun_dir) 840 lfs.chdir(testrun_dir)
808end 841end
809 842
810--- Test if required rock is installed and if not, install it. 843--- Test if required rock is installed and if not, install it.
@@ -829,7 +862,11 @@ end
829-- replace %{key} in given string with value. 862-- replace %{key} in given string with value.
830local function substitute(str, replacements) 863local function substitute(str, replacements)
831 return (str:gsub("%%%b{}", function(marker) 864 return (str:gsub("%%%b{}", function(marker)
832 return replacements[marker:sub(3, -2)] 865 local r = replacements[marker:sub(3, -2)]
866 if r then
867 r = r:gsub("\\", "\\\\")
868 end
869 return r
833 end)) 870 end))
834end 871end
835 872
@@ -837,6 +874,8 @@ end
837--- Create configs for luacov and several versions of Luarocks 874--- Create configs for luacov and several versions of Luarocks
838-- configs needed for some tests. 875-- configs needed for some tests.
839local function create_configs() 876local function create_configs()
877 local testrun_dir = test_env.testing_paths.testrun_dir
878
840 -- testing_config.lua 879 -- testing_config.lua
841 -- testing_config_show_downloads.lua 880 -- testing_config_show_downloads.lua
842 -- testing_config_no_downloader.lua 881 -- testing_config_no_downloader.lua
@@ -857,17 +896,17 @@ local function create_configs()
857 }, 896 },
858 } 897 }
859 ]], { 898 ]], {
860 user = os.getenv("USER"), 899 user = "testuser",
861 testing_sys_tree = test_env.testing_paths.testing_sys_tree, 900 testing_sys_tree = test_env.testing_paths.testing_sys_tree,
862 testing_tree = test_env.testing_paths.testing_tree, 901 testing_tree = test_env.testing_paths.testing_tree,
863 testing_server = test_env.testing_paths.testing_server, 902 testing_server = test_env.testing_paths.testing_server,
864 testing_cache = test_env.testing_paths.testing_cache 903 testing_cache = test_env.testing_paths.testing_cache
865 }) 904 })
866 905
867 test_env.write_file(test_env.testing_paths.testrun_dir .. "/testing_config.lua", config_content .. " \nweb_browser = \"true\"") 906 test_env.write_file(dir_path(testrun_dir, "testing_config.lua"), config_content .. " \nweb_browser = \"true\"")
868 test_env.write_file(test_env.testing_paths.testrun_dir .. "/testing_config_show_downloads.lua", config_content 907 test_env.write_file(dir_path(testrun_dir, "testing_config_show_downloads.lua"), config_content
869 .. "show_downloads = true \n rocks_servers={\"http://luarocks.org/repositories/rocks\"}") 908 .. "show_downloads = true \n rocks_servers={\"http://luarocks.org/repositories/rocks\"}")
870 test_env.write_file(test_env.testing_paths.testrun_dir .. "/testing_config_no_downloader.lua", config_content 909 test_env.write_file(dir_path(testrun_dir, "testing_config_no_downloader.lua"), config_content
871 .. "variables = { WGET = 'invalid', CURL = 'invalid' }") 910 .. "variables = { WGET = 'invalid', CURL = 'invalid' }")
872 911
873 -- testing_config_sftp.lua 912 -- testing_config_sftp.lua
@@ -885,32 +924,35 @@ local function create_configs()
885 }, 924 },
886 } 925 }
887 ]], { 926 ]], {
888 user = os.getenv("USER"), 927 user = "testuser",
889 testing_sys_tree = test_env.testing_paths.testing_sys_tree, 928 testing_sys_tree = test_env.testing_paths.testing_sys_tree,
890 testing_tree = test_env.testing_paths.testing_tree, 929 testing_tree = test_env.testing_paths.testing_tree,
891 testing_cache = test_env.testing_paths.testing_cache 930 testing_cache = test_env.testing_paths.testing_cache
892 }) 931 })
893 932
894 test_env.write_file(test_env.testing_paths.testrun_dir .. "/testing_config_sftp.lua", config_content) 933 test_env.write_file(dir_path(testrun_dir, "testing_config_sftp.lua"), config_content)
895 934
896 -- luacov.config 935 -- luacov.config
897 config_content = substitute([[ 936 config_content = substitute([[
898 return { 937 return {
899 statsfile = "%{testrun_dir}/luacov.stats.out", 938 statsfile = "%{statsfile}",
900 reportfile = "%{testrun_dir}/luacov.report.out", 939 reportfile = "%{reportfile}",
901 modules = { 940 modules = {
902 ["luarocks"] = "src/bin/luarocks", 941 ["luarocks"] = "%{luarocks_path}",
903 ["luarocks-admin"] = "src/bin/luarocks-admin", 942 ["luarocks-admin"] = "%{luarocks_admin_path}",
904 ["luarocks.*"] = "src", 943 ["luarocks.*"] = "src",
905 ["luarocks.*.*"] = "src", 944 ["luarocks.*.*"] = "src",
906 ["luarocks.*.*.*"] = "src" 945 ["luarocks.*.*.*"] = "src"
907 } 946 }
908 } 947 }
909 ]], { 948 ]], {
910 testrun_dir = test_env.testing_paths.testrun_dir 949 statsfile = dir_path(testrun_dir, "luacov.stats.out"),
950 reportfile = dir_path(testrun_dir, "luacov.report.out"),
951 luarocks_path = dir_path("src", "bin", "luarocks"),
952 luarocks_admin_path = dir_path("src", "bin", "luarocks-admin"),
911 }) 953 })
912 954
913 test_env.write_file(test_env.testing_paths.testrun_dir .. "/luacov.config", config_content) 955 test_env.write_file(dir_path(testrun_dir, "luacov.config"), config_content)
914 956
915 config_content = [[ 957 config_content = [[
916 -- Config file of mock LuaRocks.org site for tests 958 -- Config file of mock LuaRocks.org site for tests
@@ -920,18 +962,20 @@ local function create_configs()
920 api_version = "1", 962 api_version = "1",
921 } 963 }
922 ]] 964 ]]
923 test_env.write_file(test_env.testing_paths.testrun_dir .. "/luarocks_site.lua", config_content) 965 test_env.write_file(dir_path(testrun_dir, "luarocks_site.lua"), config_content)
924end 966end
925 967
926--- Remove testing directories. 968--- Remove testing directories.
927local function clean() 969local function clean()
970 local testrun_dir = test_env.testing_paths.testrun_dir
971
928 print("Cleaning testing directory...") 972 print("Cleaning testing directory...")
929 test_env.remove_dir(test_env.testing_paths.luarocks_tmp) 973 test_env.remove_dir(test_env.testing_paths.luarocks_tmp)
930 test_env.remove_subdirs(test_env.testing_paths.testrun_dir, "testing[_%-]") 974 test_env.remove_subdirs(testrun_dir, "testing[_%-]")
931 test_env.remove_files(test_env.testing_paths.testrun_dir, "testing_") 975 test_env.remove_files(testrun_dir, "testing_")
932 test_env.remove_files(test_env.testing_paths.testrun_dir, "luacov") 976 test_env.remove_files(testrun_dir, "luacov")
933 test_env.remove_files(test_env.testing_paths.testrun_dir, "upload_config") 977 test_env.remove_files(testrun_dir, "upload_config")
934 test_env.remove_files(test_env.testing_paths.testrun_dir, "luarocks_site") 978 test_env.remove_files(testrun_dir, "luarocks_site")
935 print("Cleaning done!") 979 print("Cleaning done!")
936end 980end
937 981
@@ -942,7 +986,7 @@ local function setup_luarocks()
942 986
943 local lines = { 987 local lines = {
944 "return {", 988 "return {",
945 ("SYSCONFDIR = %q,"):format(testing_paths.testing_lrprefix .. "/etc/luarocks"), 989 ("SYSCONFDIR = %q,"):format(dir_path(testing_paths.testing_lrprefix, "etc/luarocks")),
946 ("LUA_DIR = %q,"):format(testing_paths.luadir), 990 ("LUA_DIR = %q,"):format(testing_paths.luadir),
947 ("LUA_BINDIR = %q,"):format(testing_paths.lua_bindir), 991 ("LUA_BINDIR = %q,"):format(testing_paths.lua_bindir),
948 ("LUA = %q,"):format(testing_paths.lua), 992 ("LUA = %q,"):format(testing_paths.lua),
@@ -965,33 +1009,33 @@ local function setup_luarocks()
965end 1009end
966 1010
967local function mock_api_call(path) 1011local function mock_api_call(path)
968 if test_env.TEST_TARGET_OS == "windows" then 1012 test_env.execute(C(tool("wget"), "--quiet --timeout=5 --tries=1 localhost:8080" .. path))
969 return test_env.execute(Q(test_env.testing_paths.win_tools .. "/wget") .. " --quiet --timeout=5 --tries=1 localhost:8080" .. path)
970 else
971 return test_env.execute("curl -s localhost:8080" .. path)
972 end
973end 1013end
974 1014
975function test_env.mock_server_init() 1015function test_env.mock_server_init()
976 local testing_paths = test_env.testing_paths 1016 local testing_paths = test_env.testing_paths
977 assert(test_env.need_rock("restserver-xavante")) 1017 assert(test_env.need_rock("restserver-xavante"))
978 1018
979 if test_env.TEST_TARGET_OS == "windows" then 1019 local lua = Q(testing_paths.lua)
980 os.execute(test_env.execute_helper("start /b \"\" " .. Q(testing_paths.lua) .. " " .. Q(testing_paths.util_dir .. "/mock-server.lua") .. " " .. Q(testing_paths.fixtures_dir), true, test_env.env_variables)) 1020 local mock_server = Q(dir_path(testing_paths.util_dir, "mock-server.lua"))
981 else 1021 local fixtures_dir = Q(testing_paths.fixtures_dir)
982 os.execute(test_env.execute_helper(testing_paths.lua .. " " .. testing_paths.util_dir .. "/mock-server.lua " .. testing_paths.fixtures_dir .. " &", true, test_env.env_variables)) 1022
983 end 1023 local cmd = C(lua, mock_server, fixtures_dir)
1024
1025 local bg_cmd = test_env.TEST_TARGET_OS == "windows"
1026 and C("start", "/b", "\"\"", cmd)
1027 or C(cmd, "&")
1028
1029 os.execute(test_env.execute_helper(bg_cmd, true, test_env.env_variables))
984 1030
985 for _ = 1, 10 do 1031 for _ = 1, 10 do
986 if mock_api_call("/api/tool_version") then 1032 if mock_api_call("/api/tool_version") then
987 break 1033 break
988 end 1034 end
989 1035
990 if test_env.TEST_TARGET_OS == "windows" then 1036 os.execute(test_env.TEST_TARGET_OS == "windows"
991 os.execute("timeout 1 > NUL") 1037 and "timeout 1 > NUL"
992 else 1038 or "sleep 1")
993 os.execute("sleep 1")
994 end
995 end 1039 end
996 1040
997end 1041end
@@ -1000,9 +1044,9 @@ function test_env.mock_server_done()
1000 mock_api_call("/shutdown") 1044 mock_api_call("/shutdown")
1001end 1045end
1002 1046
1003local function find_binary_rock(src_rock, dir) 1047local function find_binary_rock(src_rock, dirname)
1004 local patt = src_rock:gsub("([.-])", "%%%1"):gsub("src", ".*[^s][^r][^c]") 1048 local patt = src_rock:gsub("([.-])", "%%%1"):gsub("src", ".*[^s][^r][^c]")
1005 for name in lfs.dir(dir) do 1049 for name in lfs.dir(dirname) do
1006 if name:match(patt) then 1050 if name:match(patt) then
1007 return true 1051 return true
1008 end 1052 end
@@ -1034,14 +1078,18 @@ local function prepare_mock_server_binary_rocks()
1034 rock = V(rock) 1078 rock = V(rock)
1035 local rockname = rock:gsub("%-[^-]+%-%d+%.[%a.]+$", "") 1079 local rockname = rock:gsub("%-[^-]+%-%d+%.[%a.]+$", "")
1036 if not find_binary_rock(rock, testing_paths.testing_server) then 1080 if not find_binary_rock(rock, testing_paths.testing_server) then
1037 test_env.run.luarocks_nocov("build " .. Q(testing_paths.testing_server .. "/" .. rock) .. " --tree=" .. testing_paths.testing_cache) 1081 local rockpath = dir_path(testing_paths.testing_server, rock)
1038 test_env.run.luarocks_nocov("pack " .. rockname .. " --tree=" .. testing_paths.testing_cache) 1082 local tree = "--tree=" .. testing_paths.testing_cache
1083
1084 test_env.run.luarocks_nocov(C("build", Q(rockpath), tree))
1085 test_env.run.luarocks_nocov(C("pack", rockname, tree))
1086
1039 move_file(rockname .. "-*.rock", testing_paths.testing_server) 1087 move_file(rockname .. "-*.rock", testing_paths.testing_server)
1040 make_manifest = true 1088 make_manifest = true
1041 end 1089 end
1042 end 1090 end
1043 if make_manifest then 1091 if make_manifest then
1044 test_env.run.luarocks_admin_nocov("make_manifest " .. Q(testing_paths.testing_server)) 1092 test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_server)))
1045 end 1093 end
1046end 1094end
1047 1095
@@ -1049,13 +1097,14 @@ end
1049-- Main function to create config files and testing environment 1097-- Main function to create config files and testing environment
1050function test_env.main() 1098function test_env.main()
1051 local testing_paths = test_env.testing_paths 1099 local testing_paths = test_env.testing_paths
1100 local testrun_dir = test_env.testing_paths.testrun_dir
1052 1101
1053 if test_env.TEST_ENV_CLEAN then 1102 if test_env.TEST_ENV_CLEAN then
1054 clean() 1103 clean()
1055 end 1104 end
1056 1105
1057 lfs.mkdir(testing_paths.testrun_dir) 1106 lfs.mkdir(testrun_dir)
1058 test_env.write_file(testing_paths.testrun_dir .. "/.luarocks-no-project", "") 1107 test_env.write_file(dir_path(testrun_dir, ".luarocks-no-project"), "")
1059 lfs.mkdir(testing_paths.testing_cache) 1108 lfs.mkdir(testing_paths.testing_cache)
1060 lfs.mkdir(testing_paths.luarocks_tmp) 1109 lfs.mkdir(testing_paths.luarocks_tmp)
1061 1110
@@ -1068,7 +1117,7 @@ function test_env.main()
1068 local urls = {} -- names of rock and rockspec files to be downloaded 1117 local urls = {} -- names of rock and rockspec files to be downloaded
1069 1118
1070 local env_vars = { 1119 local env_vars = {
1071 LUAROCKS_CONFIG = test_env.testing_paths.testrun_dir .. "/testing_config.lua" 1120 LUAROCKS_CONFIG = dir_path(testrun_dir, "testing_config.lua")
1072 } 1121 }
1073 1122
1074 if test_env.TYPE_TEST_ENV == "full" then 1123 if test_env.TYPE_TEST_ENV == "full" then
@@ -1088,8 +1137,8 @@ function test_env.main()
1088 table.insert(urls, "/luaposix-${LUAPOSIX}.src.rock") 1137 table.insert(urls, "/luaposix-${LUAPOSIX}.src.rock")
1089 table.insert(rocks, "luaposix") 1138 table.insert(rocks, "luaposix")
1090 end 1139 end
1091 assert(test_env.run.luarocks_nocov("config variables.OPENSSL_INCDIR " .. Q(test_env.OPENSSL_INCDIR), env_vars)) 1140 assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_INCDIR", Q(test_env.OPENSSL_INCDIR)), env_vars))
1092 assert(test_env.run.luarocks_nocov("config variables.OPENSSL_LIBDIR " .. Q(test_env.OPENSSL_LIBDIR), env_vars)) 1141 assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_LIBDIR", Q(test_env.OPENSSL_LIBDIR)), env_vars))
1093 end 1142 end
1094 1143
1095 -- luacov is needed for both minimal or full environment 1144 -- luacov is needed for both minimal or full environment
@@ -1111,12 +1160,13 @@ end
1111 1160
1112test_env.set_lua_version() 1161test_env.set_lua_version()
1113test_env.set_args() 1162test_env.set_args()
1114test_env.testing_paths = create_paths(test_env.LUA_V or test_env.LUAJIT_V) 1163test_env.testing_paths = create_testing_paths(test_env.LUA_V or test_env.LUAJIT_V)
1115test_env.env_variables = create_env(test_env.testing_paths) 1164test_env.env_variables = create_env(test_env.testing_paths)
1116test_env.run = make_run_functions() 1165test_env.run = make_run_functions()
1117test_env.exists = exists 1166test_env.exists = exists
1118test_env.V = V 1167test_env.V = V
1119test_env.Q = Q 1168test_env.Q = Q
1169test_env.P = P
1120test_env.platform = get_luarocks_platform(test_env.env_variables) 1170test_env.platform = get_luarocks_platform(test_env.env_variables)
1121 1171
1122return test_env 1172return test_env