diff options
| author | luau-project <luau.project@gmail.com> | 2025-03-07 22:00:35 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2025-03-09 20:20:41 -0300 |
| commit | ac2a322b59ff612a74bae144fc553b673f2345f6 (patch) | |
| tree | 63516afc0cb55392db533d035fe30fc4ac7302c4 /spec/util/test_env.lua | |
| parent | 3dd63039e1c93a258a232bcd187dbe79f4478d4e (diff) | |
| download | luarocks-ac2a322b59ff612a74bae144fc553b673f2345f6.tar.gz luarocks-ac2a322b59ff612a74bae144fc553b673f2345f6.tar.bz2 luarocks-ac2a322b59ff612a74bae144fc553b673f2345f6.zip | |
ci(windows): support MinGW-w64 UCRT64 on test_env
Diffstat (limited to 'spec/util/test_env.lua')
| -rw-r--r-- | spec/util/test_env.lua | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/spec/util/test_env.lua b/spec/util/test_env.lua index 645c182f..69874d79 100644 --- a/spec/util/test_env.lua +++ b/spec/util/test_env.lua | |||
| @@ -19,6 +19,7 @@ ARGUMENTS | |||
| 19 | noreset Don't reset environment after each test | 19 | noreset Don't reset environment after each test |
| 20 | clean Remove existing testing environment. | 20 | clean Remove existing testing environment. |
| 21 | ci Add if running on Unix CI. | 21 | ci Add if running on Unix CI. |
| 22 | ci-windows Add if running on Windows CI. | ||
| 22 | appveyor Add if running on Appveyor. | 23 | appveyor Add if running on Appveyor. |
| 23 | os=<type> Set OS ("linux", "osx", or "windows"). | 24 | os=<type> Set OS ("linux", "osx", or "windows"). |
| 24 | lua_dir=<path> Path of Lua installation (default "/usr/local") | 25 | lua_dir=<path> Path of Lua installation (default "/usr/local") |
| @@ -351,6 +352,8 @@ function test_env.set_args() | |||
| 351 | test_env.VERBOSE = true | 352 | test_env.VERBOSE = true |
| 352 | elseif argument == "ci" then | 353 | elseif argument == "ci" then |
| 353 | test_env.CI = true | 354 | test_env.CI = true |
| 355 | elseif argument == "ci-windows" then | ||
| 356 | test_env.CI_WINDOWS = true | ||
| 354 | elseif argument == "appveyor" then | 357 | elseif argument == "appveyor" then |
| 355 | test_env.APPVEYOR = true | 358 | test_env.APPVEYOR = true |
| 356 | elseif argument:find("^os=") then | 359 | elseif argument:find("^os=") then |
| @@ -379,6 +382,20 @@ function test_env.set_args() | |||
| 379 | if test_env.MINGW then | 382 | if test_env.MINGW then |
| 380 | test_env.OPENSSL_LIBDIR = "C:\\OpenSSL-v111-Win32\\bin" | 383 | test_env.OPENSSL_LIBDIR = "C:\\OpenSSL-v111-Win32\\bin" |
| 381 | end | 384 | end |
| 385 | elseif test_env.CI_WINDOWS then | ||
| 386 | if test_env.MINGW then | ||
| 387 | test_env.OPENSSL_INCDIR = "c:\\msys64\\ucrt64\\include" | ||
| 388 | test_env.OPENSSL_LIBDIR = "c:\\msys64\\ucrt64\\lib" | ||
| 389 | |||
| 390 | test_env.ZLIB_INCDIR = test_env.OPENSSL_INCDIR | ||
| 391 | test_env.ZLIB_LIBDIR = test_env.OPENSSL_LIBDIR | ||
| 392 | |||
| 393 | test_env.BZ2_INCDIR = test_env.OPENSSL_INCDIR | ||
| 394 | test_env.BZ2_LIBDIR = test_env.OPENSSL_LIBDIR | ||
| 395 | else | ||
| 396 | test_env.OPENSSL_INCDIR = "c:\\external\\include" | ||
| 397 | test_env.OPENSSL_LIBDIR = "c:\\external\\lib" | ||
| 398 | end | ||
| 382 | end | 399 | end |
| 383 | else | 400 | else |
| 384 | local system = execute_output("uname -s") | 401 | local system = execute_output("uname -s") |
| @@ -669,7 +686,11 @@ local function build_environment(rocks, env_variables) | |||
| 669 | lfs.mkdir(testing_paths.testing_deps_tree) | 686 | lfs.mkdir(testing_paths.testing_deps_tree) |
| 670 | 687 | ||
| 671 | test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_server))) | 688 | test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_server))) |
| 672 | test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_cache))) | 689 | test_env.run.luarocks_admin_nocov(C("make_manifest", Q(testing_paths.testing_cache))) |
| 690 | |||
| 691 | if test_env.MSVCRT then | ||
| 692 | test_env.run.luarocks_nocov(C("config", "variables.MSVCRT", Q(test_env.MSVCRT), Q("--tree=" .. testing_paths.testing_cache))) | ||
| 693 | end | ||
| 673 | 694 | ||
| 674 | for _, rock in ipairs(rocks) do | 695 | for _, rock in ipairs(rocks) do |
| 675 | local only_server = "--only-server=" .. testing_paths.testing_cache | 696 | local only_server = "--only-server=" .. testing_paths.testing_cache |
| @@ -782,6 +803,25 @@ function test_env.unload_luarocks() | |||
| 782 | end | 803 | end |
| 783 | end | 804 | end |
| 784 | 805 | ||
| 806 | --- Gets the C Run Time of the Lua interpreter built by mingw-w64 on ci-windows. | ||
| 807 | -- Returns the MSVCRT on success | ||
| 808 | -- Returns nil on failure | ||
| 809 | local function get_MSVCRT(variables) | ||
| 810 | if not (test_env.CI_WINDOWS and test_env.MINGW) then return nil end | ||
| 811 | local pe_parser_path = dir_path(test_env.testing_paths.src_dir, '..', 'win32', 'pe-parser.lua') | ||
| 812 | local print_arch_script = "\"" .. | ||
| 813 | "local pe = assert(loadfile([[" .. pe_parser_path .. "]]))();" .. | ||
| 814 | "local rt, _ = pe.msvcrt([[" .. test_env.testing_paths.lua .. "]]);" .. | ||
| 815 | "print(rt or 'nil');" .. | ||
| 816 | "\"" | ||
| 817 | local cmd = C(test_env.testing_paths.lua, "-e", print_arch_script) | ||
| 818 | local output = execute_output(cmd, false, variables) | ||
| 819 | if output == 'nil' then | ||
| 820 | output = nil | ||
| 821 | end | ||
| 822 | return output | ||
| 823 | end | ||
| 824 | |||
| 785 | local function get_luarocks_platform(variables) | 825 | local function get_luarocks_platform(variables) |
| 786 | local print_arch_script = "\"" .. | 826 | local print_arch_script = "\"" .. |
| 787 | "cfg = require('luarocks.core.cfg');" .. | 827 | "cfg = require('luarocks.core.cfg');" .. |
| @@ -1106,6 +1146,12 @@ function test_env.main() | |||
| 1106 | end | 1146 | end |
| 1107 | assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_INCDIR", Q(test_env.OPENSSL_INCDIR)), env_vars)) | 1147 | assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_INCDIR", Q(test_env.OPENSSL_INCDIR)), env_vars)) |
| 1108 | assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_LIBDIR", Q(test_env.OPENSSL_LIBDIR)), env_vars)) | 1148 | assert(test_env.run.luarocks_nocov(C("config", "variables.OPENSSL_LIBDIR", Q(test_env.OPENSSL_LIBDIR)), env_vars)) |
| 1149 | if test_env.CI_WINDOWS and test_env.MINGW then | ||
| 1150 | assert(test_env.run.luarocks_nocov(C("config", "variables.ZLIB_INCDIR", Q(test_env.ZLIB_INCDIR)), env_vars)) | ||
| 1151 | assert(test_env.run.luarocks_nocov(C("config", "variables.ZLIB_LIBDIR", Q(test_env.ZLIB_LIBDIR)), env_vars)) | ||
| 1152 | assert(test_env.run.luarocks_nocov(C("config", "variables.BZ2_INCDIR", Q(test_env.BZ2_INCDIR)), env_vars)) | ||
| 1153 | assert(test_env.run.luarocks_nocov(C("config", "variables.BZ2_LIBDIR", Q(test_env.BZ2_LIBDIR)), env_vars)) | ||
| 1154 | end | ||
| 1109 | end | 1155 | end |
| 1110 | 1156 | ||
| 1111 | -- luacov is needed for both minimal or full environment | 1157 | -- luacov is needed for both minimal or full environment |
| @@ -1152,6 +1198,7 @@ function test_env.setup_specs(extra_rocks, use_mock) | |||
| 1152 | package.path = variables.LUA_PATH | 1198 | package.path = variables.LUA_PATH |
| 1153 | package.cpath = variables.LUA_CPATH | 1199 | package.cpath = variables.LUA_CPATH |
| 1154 | 1200 | ||
| 1201 | test_env.MSVCRT = get_MSVCRT(test_env.env_variables) | ||
| 1155 | test_env.platform = get_luarocks_platform(test_env.env_variables) | 1202 | test_env.platform = get_luarocks_platform(test_env.env_variables) |
| 1156 | test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or "" | 1203 | test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or "" |
| 1157 | test_env.setup_done = true | 1204 | test_env.setup_done = true |
| @@ -1186,6 +1233,7 @@ test_env.exists = exists | |||
| 1186 | test_env.V = V | 1233 | test_env.V = V |
| 1187 | test_env.Q = Q | 1234 | test_env.Q = Q |
| 1188 | test_env.P = P | 1235 | test_env.P = P |
| 1236 | test_env.MSVCRT = get_MSVCRT(test_env.env_variables) | ||
| 1189 | test_env.platform = get_luarocks_platform(test_env.env_variables) | 1237 | test_env.platform = get_luarocks_platform(test_env.env_variables) |
| 1190 | 1238 | ||
| 1191 | return test_env | 1239 | return test_env |
