diff options
Diffstat (limited to 'tests/core/spawn_spec.lua')
| -rw-r--r-- | tests/core/spawn_spec.lua | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/core/spawn_spec.lua b/tests/core/spawn_spec.lua new file mode 100644 index 00000000..3bfafbc3 --- /dev/null +++ b/tests/core/spawn_spec.lua @@ -0,0 +1,79 @@ +local spawn = require "nvim-lsp-installer.core.spawn" +local process = require "nvim-lsp-installer.process" + +describe("async spawn", function() + it( + "should spawn commands and return stdout & stderr", + async_test(function() + local result = spawn.env { + env = { "FOO=bar" }, + } + assert.is_true(result:is_success()) + assert.equals("FOO=bar\n", result:get_or_nil().stdout) + assert.equals("", result:get_or_nil().stderr) + end) + ) + + it( + "should use provided stdio_sink", + async_test(function() + local stdio = process.in_memory_sink() + local result = spawn.env { + env = { "FOO=bar" }, + stdio_sink = stdio.sink, + } + assert.is_true(result:is_success()) + assert.equals(nil, result:get_or_nil().stdout) + assert.equals(nil, result:get_or_nil().stderr) + assert.equals("FOO=bar\n", table.concat(stdio.buffers.stdout, "")) + assert.equals("", table.concat(stdio.buffers.stderr, "")) + end) + ) + + it( + "should pass command arguments", + async_test(function() + local result = spawn.bash { + "-c", + 'echo "Hello $VAR"', + env = { "VAR=world" }, + } + + assert.is_true(result:is_success()) + assert.equals("Hello world\n", result:get_or_nil().stdout) + assert.equals("", result:get_or_nil().stderr) + end) + ) + + it( + "should ignore vim.NIL args", + async_test(function() + local result = spawn.bash { + vim.NIL, + spawn._when(true, "-c"), + spawn._when(false, "shouldnotbeincluded"), + vim.NIL, + 'echo "Hello $VAR"', + env = { "VAR=world" }, + } + + assert.is_true(result:is_success()) + assert.equals("Hello world\n", result:get_or_nil().stdout) + assert.equals("", result:get_or_nil().stderr) + end) + ) + + it( + "should flatten table args", + async_test(function() + local result = spawn.bash { + { "-c", 'echo "Hello $VAR"' }, + env = { "VAR=world" }, + } + + assert.is_true(result:is_success()) + assert.equals("Hello world\n", result:get_or_nil().stdout) + assert.equals("", result:get_or_nil().stderr) + end) + ) +end) |
