From 2870751be3f8874378f1a383e6d264b87195580d Mon Sep 17 00:00:00 2001 From: BanceDev Date: Thu, 12 Sep 2024 09:13:01 -0400 Subject: added e2e testing to cover basic shell functionality --- test/args_test.lua | 28 ++++++++++++++++++++++++++++ test/env_test.lua | 30 ++++++++++++++++++++++++++++++ test/filecheck_test.lua | 46 ++++++++++++++++++++++++++++++++++++++++++++++ test/history_test.lua | 38 ++++++++++++++++++++++++++++++++++++++ test/pipes_test.lua | 25 +++++++++++++++++++++++++ test/run_tests.lua | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 202 insertions(+) create mode 100644 test/args_test.lua create mode 100644 test/env_test.lua create mode 100644 test/filecheck_test.lua create mode 100644 test/history_test.lua create mode 100644 test/pipes_test.lua create mode 100644 test/run_tests.lua (limited to 'test') diff --git a/test/args_test.lua b/test/args_test.lua new file mode 100644 index 0000000..d14fd73 --- /dev/null +++ b/test/args_test.lua @@ -0,0 +1,28 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +if args == nil then + print("args test failed, no args found ❌\n") + return +else + print("args:") + for i = 1, #args do + print(args[i]) + end +end + +print("args test passed ✅\n") diff --git a/test/env_test.lua b/test/env_test.lua new file mode 100644 index 0000000..972a730 --- /dev/null +++ b/test/env_test.lua @@ -0,0 +1,30 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +lush.setenv("ENVTEST", "envtest") +if lush.getenv("ENVTEST") == "envtest" then + print("setenv test passed ✅\n") +else + print("setenv test failed ❌\n") +end + +lush.unsetenv("ENVTEST") +if lush.getenv("ENVTEST") == nil then + print("unsetenv test passed ✅\n") +else + print("unsetenv test failed ❌\n") +end diff --git a/test/filecheck_test.lua b/test/filecheck_test.lua new file mode 100644 index 0000000..af0c130 --- /dev/null +++ b/test/filecheck_test.lua @@ -0,0 +1,46 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +if lush.exists("~/.lush/scripts/example.lua") then + print("exists test passed ✅\n") +else + print("exists test failed ❌\n") +end + +if lush.isFile("~/.lush/scripts/example.lua") then + print("isFile test passed ✅\n") +else + print("isFile test failed ❌\n") +end + +if not lush.isDirectory("~/.lush/scripts/example.lua") then + print("isDirectory test passed ✅\n") +else + print("isDirectory test failed ❌\n") +end + +if lush.isReadable("~/.lush/scripts/example.lua") then + print("isReadable test passed ✅\n") +else + print("isReadable test failed ❌\n") +end + +if lush.isWriteable("~/.lush/scripts/example.lua") then + print("isWriteable test passed ✅\n") +else + print("isWriteable test failed ❌\n") +end diff --git a/test/history_test.lua b/test/history_test.lua new file mode 100644 index 0000000..5cf607a --- /dev/null +++ b/test/history_test.lua @@ -0,0 +1,38 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +if lush.lastHistory() == "history_test.lua" then + print("lastHistory test passed ✅\n") +else + print("lastHistory test failed ❌\n") +end + +if lush.getHistory(1) == lush.lastHistory() then + -- ensure that piping history is stored correctly + if lush.getHistory(3) == 'cat "example.lua" | grep "hello" | sort | uniq' then + -- ensure args history is stored correctly + if lush.getHistory(5) == "args_test.lua testarg1 testarg2 testarg3" then + print("getHistory test passed ✅\n") + else + print("getHistory test failed at args history ❌\n") + end + else + print("getHistory test failed at piping history ❌\n") + end +else + print("getHistory test failed at lastHistory ❌\n") +end diff --git a/test/pipes_test.lua b/test/pipes_test.lua new file mode 100644 index 0000000..46000e3 --- /dev/null +++ b/test/pipes_test.lua @@ -0,0 +1,25 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +local cwd = lush.getcwd() +lush.cd("~/.lush/scripts") +if lush.exec('cat "example.lua" | grep "hello" | sort | uniq') then + print("piping test passed ✅\n") +else + print("piping test failed ❌\n") +end +lush.cd(cwd) diff --git a/test/run_tests.lua b/test/run_tests.lua new file mode 100644 index 0000000..e861326 --- /dev/null +++ b/test/run_tests.lua @@ -0,0 +1,35 @@ +--[[ +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +]] + +print("Starting Lunar Shell End-to-End Testing...\n") +print("Entering Debug Mode...") +lush.debug(true) + +print("Testing Args...") +lush.exec("args_test.lua testarg1 testarg2 testarg3") + +print("\nTesting Piping...") +lush.exec("pipes_test.lua") + +print("\nTesting File Checks...") +lush.exec("filecheck_test.lua") + +print("\nTesting History...") +lush.exec("history_test.lua") + +print("\nTesting Environment Variables...") +lush.exec("env_test.lua") -- cgit v1.2.3-59-g8ed1b