From b1ee221555cc5c3794d844bb56dad2e0b9e62e7a Mon Sep 17 00:00:00 2001 From: Filip Tibell Date: Mon, 25 Sep 2023 14:20:01 -0500 Subject: [PATCH] Stylua formatting in process spawn test file --- tests/process/spawn.luau | 63 +++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/tests/process/spawn.luau b/tests/process/spawn.luau index 7715439..68691ae 100644 --- a/tests/process/spawn.luau +++ b/tests/process/spawn.luau @@ -10,16 +10,11 @@ local thread = task.delay(1, function() process.exit(1) end) -local isWindows = process.os == "windows"; +local IS_WINDOWS = process.os == "windows" --- To run windows command, we need to launch cmd.exe and pass the command as an argument. local result = process.spawn( - if isWindows then "cmd" else "ls", - if isWindows then { - "/c", "dir" - } else { - "-a" - } + if IS_WINDOWS then "cmd" else "ls", + if IS_WINDOWS then { "/c", "dir" } else { "-a" } ) task.cancel(thread) @@ -33,9 +28,10 @@ assert(string.find(result.stdout, "Cargo.toml") ~= nil, "Missing Cargo.toml in o assert(string.find(result.stdout, ".gitignore") ~= nil, "Missing .gitignore in output") -- It should also work the same when spawned using a shell +-- Note that the default on Windows is Powershell which has different flags / behavior local shellResult = process.spawn("ls", { - if isWindows then "-Force" else "-a" + if IS_WINDOWS then "-Force" else "-a", }, { shell = true, }) @@ -48,22 +44,25 @@ assert(shellResult.stdout ~= "", "Stdout was empty (shell)") assert(string.find(shellResult.stdout, "Cargo.toml") ~= nil, "Missing Cargo.toml in output (shell)") assert(string.find(shellResult.stdout, ".gitignore") ~= nil, "Missing .gitignore in output (shell)") -local pwdCommand = if isWindows then "cmd" else "pwd" -local pwdArgs = if isWindows then { "/c", "cd" } else {} +local pwdCommand = if IS_WINDOWS then "cmd" else "pwd" +local pwdArgs = if IS_WINDOWS then { "/c", "cd" } else {} + -- Make sure the cwd option actually uses the directory we want local rootPwd = process.spawn(pwdCommand, pwdArgs, { cwd = "/", }).stdout rootPwd = string.gsub(rootPwd, "^%s+", "") rootPwd = string.gsub(rootPwd, "%s+$", "") + -- Windows: :\, Unix: / -local expectedRootPwd = if isWindows then string.sub(rootPwd, 1, 1) .. ":\\" else "/" +local expectedRootPwd = if IS_WINDOWS then string.sub(rootPwd, 1, 1) .. ":\\" else "/" if rootPwd ~= expectedRootPwd then error( string.format( "Current working directory for child process was not set correctly!" .. "\nExpected '%s', got '%s'", - expectedRootPwd, rootPwd + expectedRootPwd, + rootPwd ) ) end @@ -89,7 +88,7 @@ local homeDir1 = process.spawn("echo $HOME", nil, { -- Powershell for windows uses `$pwd.Path` instead of `pwd` as pwd would return a PathInfo object, -- using $pwd.Path gets the Path property of the PathInfo object. -local homeDir2 = process.spawn(if isWindows then "$pwd.Path" else "pwd", nil, { +local homeDir2 = process.spawn(if IS_WINDOWS then "$pwd.Path" else "pwd", nil, { shell = true, cwd = "~", }).stdout @@ -109,10 +108,8 @@ assert(homeDir1 == homeDir2, "Home dirs did not match when performing tilde subs local SLEEP_DURATION = 1 / 4 local SLEEP_SAMPLES = 2 --- Windows tend to have a higher execution time -local yieldTolarance = if isWindows then 25 else SLEEP_DURATION * 1.5; - -local thread2 = task.delay(yieldTolarance, function() +-- Unfortunately we +local thread2 = task.delay(30, function() stdio.ewrite("Spawning a sleep process should take a reasonable amount of time\n") task.wait(1) process.exit(1) @@ -123,15 +120,15 @@ local sleepCounter = 0 for i = 1, SLEEP_SAMPLES, 1 do task.spawn(function() local args = { - -- Sleep command on Windows in Seconds has some weird behavior with decimals... - tostring(SLEEP_DURATION * (isWindows and 1000 or 1)) - }; - if isWindows then + -- Sleep command on Windows in Seconds has some weird behavior with decimals ... + tostring(SLEEP_DURATION * (IS_WINDOWS and 1000 or 1)), + } + if IS_WINDOWS then -- ... so we use milliseconds instead. - table.insert(args, 1, "-Milliseconds"); + table.insert(args, 1, "-Milliseconds") end -- Windows does not have `sleep` as a process, so we use powershell instead. - process.spawn("sleep", args, if isWindows then { shell = true } else nil) + process.spawn("sleep", args, if IS_WINDOWS then { shell = true } else nil) sleepCounter += 1 end) end @@ -141,31 +138,25 @@ end task.cancel(thread2) -local sleepElapsed = os.clock() - sleepStart - assert( - sleepElapsed >= SLEEP_DURATION, + (os.clock() - sleepStart) >= SLEEP_DURATION, "Spawning a process that does blocking sleep did not sleep enough" ) -assert( - sleepElapsed < yieldTolarance, - "Coroutine yielded the main lua thread during process yield" -) -- Inheriting stdio & environment variables should work local echoMessage = "Hello from child process!" local echoResult = process.spawn("echo", { - if isWindows then '"$Env:TEST_VAR"' else '"$TEST_VAR"', + if IS_WINDOWS then '"$Env:TEST_VAR"' else '"$TEST_VAR"', }, { env = { TEST_VAR = echoMessage }, - shell = if isWindows then "powershell" else "bash", -- "bash" does not exist on Windows, using "powershell" instead. + shell = if IS_WINDOWS then "powershell" else "bash", stdio = "inherit", }) --- Windows echo adds a \r before the newline -local trailingAddition = if isWindows then "\r\n" else "\n" +-- Windows echo adds \r\n (CRLF) and unix adds \n (LF) +local trailingAddition = if IS_WINDOWS then "\r\n" else "\n" assert( - echoResult.stdout == (echoMessage .. trailingAddition), -- Note that echo adds a newline + echoResult.stdout == (echoMessage .. trailingAddition), "Inheriting stdio did not return proper output" )