mirror of
https://github.com/CCLeonOS/LeonOS.git
synced 2026-03-03 15:17:01 +00:00
feat: 添加历史记录和配置管理命令及相关测试
fix(project_rules): 修正文档中的中文支持说明 chore: 更新版本号至0.3.8 feat: 新增history命令用于查看和管理命令历史记录 feat: 新增config命令用于管理系统配置 feat: 新增find命令用于文件搜索 docs: 添加新命令建议文档 test: 添加history、config和find命令的测试脚本
This commit is contained in:
158
data/computercraft/lua/rom/programs/test_find.lua
Normal file
158
data/computercraft/lua/rom/programs/test_find.lua
Normal file
@@ -0,0 +1,158 @@
|
||||
-- test_find.lua: Test the find command
|
||||
|
||||
local term = require("term")
|
||||
local colors = require("colors")
|
||||
local shell = require("shell")
|
||||
local fs = require("fs")
|
||||
|
||||
-- 保存当前颜色设置
|
||||
local old_fg = term.getTextColor()
|
||||
local old_bg = term.getBackgroundColor()
|
||||
|
||||
-- 设置名称栏颜色并显示
|
||||
term.setTextColor(colors.white)
|
||||
term.setBackgroundColor(colors.cyan)
|
||||
term.at(1, 1).clearLine()
|
||||
term.at(1, 1).write("=== Testing Find Command ===")
|
||||
|
||||
-- 恢复颜色设置
|
||||
term.setTextColor(old_fg)
|
||||
term.setBackgroundColor(old_bg)
|
||||
term.at(1, 2)
|
||||
|
||||
-- 创建测试目录结构
|
||||
local function create_test_files()
|
||||
print("Creating test files and directories...")
|
||||
|
||||
-- 创建测试根目录
|
||||
local test_root = "/test_find"
|
||||
if fs.exists(test_root) then
|
||||
fs.delete(test_root)
|
||||
end
|
||||
fs.makeDir(test_root)
|
||||
|
||||
-- 创建测试文件和目录
|
||||
fs.makeDir(fs.combine(test_root, "dir1"))
|
||||
fs.makeDir(fs.combine(test_root, "dir2"))
|
||||
fs.makeDir(fs.combine(test_root, ".hidden_dir"))
|
||||
|
||||
-- 创建文件
|
||||
local function create_file(path, content)
|
||||
local file = io.open(path, "w")
|
||||
if file then
|
||||
file:write(content)
|
||||
file:close()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
create_file(fs.combine(test_root, "file1.txt"), "Test file 1")
|
||||
create_file(fs.combine(test_root, "file2.lua"), "-- Test Lua file")
|
||||
create_file(fs.combine(test_root, ".hidden_file"), "Hidden file content")
|
||||
create_file(fs.combine(test_root, "dir1", "subfile1.txt"), "Subdirectory file 1")
|
||||
create_file(fs.combine(test_root, "dir1", "subfile2.lua"), "-- Subdirectory Lua file")
|
||||
create_file(fs.combine(test_root, "dir2", "subfile3.txt"), "Subdirectory file 3")
|
||||
create_file(fs.combine(test_root, ".hidden_dir", "hidden_content.txt"), "Content in hidden directory")
|
||||
|
||||
print("Test files created successfully.")
|
||||
return test_root
|
||||
end
|
||||
|
||||
-- 测试函数
|
||||
local function run_test(test_name, command, expected_count)
|
||||
term.setTextColor(colors.yellow)
|
||||
print("\n=== Test: " .. test_name .. " ===")
|
||||
term.setTextColor(colors.white)
|
||||
print("Command: " .. command)
|
||||
print("----------------------------------------")
|
||||
|
||||
-- 捕获命令输出
|
||||
local old_output = io.output()
|
||||
local output = {}
|
||||
io.output{write = function(s) output[#output+1] = s end}
|
||||
|
||||
local ok, err = shell.run(command)
|
||||
|
||||
-- 恢复输出
|
||||
io.output(old_output)
|
||||
|
||||
-- 计算匹配的结果数量
|
||||
local result_count = 0
|
||||
for line in table.concat(output, ""):gmatch("[^
|
||||
]+") do
|
||||
if line:match("^ /test_find/") then
|
||||
result_count = result_count + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- 检查结果
|
||||
if not ok and err then
|
||||
io.stderr:write("Test failed: " .. err .. "\n")
|
||||
else
|
||||
if expected_count and result_count ~= expected_count then
|
||||
io.stderr:write("Test failed: Expected " .. expected_count .. " results, got " .. result_count .. "\n")
|
||||
else
|
||||
term.setTextColor(colors.green)
|
||||
print("Test completed successfully. Found " .. result_count .. " results.")
|
||||
term.setTextColor(colors.white)
|
||||
end
|
||||
end
|
||||
print("----------------------------------------")
|
||||
os.sleep(1) -- 短暂暂停,让用户有时间查看结果
|
||||
end
|
||||
|
||||
-- 主测试函数
|
||||
local function main()
|
||||
-- 清除屏幕,但保留顶部标题
|
||||
local w, h = term.getSize()
|
||||
for y=2, h do
|
||||
term.at(1, y).clearLine()
|
||||
end
|
||||
term.at(1, 2)
|
||||
|
||||
-- 创建测试文件
|
||||
local test_root = create_test_files()
|
||||
os.sleep(1)
|
||||
|
||||
print("Starting find command tests...")
|
||||
os.sleep(1)
|
||||
|
||||
-- 测试1: 显示帮助信息
|
||||
run_test("Show Help", "find --help")
|
||||
|
||||
-- 测试2: 搜索所有文件和目录
|
||||
run_test("Search All Items", "find " .. test_root, 8)
|
||||
|
||||
-- 测试3: 搜索Lua文件
|
||||
run_test("Search Lua Files", "find " .. test_root .. " *.lua", 2)
|
||||
|
||||
-- 测试4: 搜索目录
|
||||
run_test("Search Directories", "find " .. test_root .. " --type d", 3)
|
||||
|
||||
-- 测试5: 搜索特定名称的文件
|
||||
run_test("Search by Exact Name", "find " .. test_root .. " --name file1.txt", 1)
|
||||
|
||||
-- 测试6: 搜索隐藏文件和目录
|
||||
run_test("Search Hidden Items", "find " .. test_root .. " --hidden", 10)
|
||||
|
||||
-- 测试7: 不区分大小写搜索
|
||||
run_test("Case Insensitive Search", "find " .. test_root .. " FILE*.TXT -i", 1)
|
||||
|
||||
-- 测试8: 组合条件搜索 (Lua文件且不区分大小写)
|
||||
run_test("Combined Conditions", "find " .. test_root .. " *.LUA -i", 2)
|
||||
|
||||
-- 测试9: 搜索不存在的路径
|
||||
run_test("Search Non-existent Path", "find /non_existent_path", 0)
|
||||
|
||||
-- 清理测试文件
|
||||
print("\nCleaning up test files...")
|
||||
fs.delete(test_root)
|
||||
|
||||
term.setTextColor(colors.green)
|
||||
print("\nAll tests completed!")
|
||||
term.setTextColor(colors.white)
|
||||
print("You can run 'find' command directly to search files and directories.")
|
||||
end
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user