From 8483395d57d2077acd812c5f7cd83f7ded3ff7ea Mon Sep 17 00:00:00 2001 From: DouZhichong Date: Fri, 12 Dec 2025 15:55:15 +0800 Subject: [PATCH] add a dejagnu test case --- .../enchant/tc_enchant_test_fun001.yaml | 23 +++++++ .../enchant/tc_enchant_test_fun002.yaml | 24 +++++++ .../enchant/tc_enchant_test_fun003.yaml | 24 +++++++ .../enchant/tc_enchant_test_fun004.yaml | 24 +++++++ .../enchant/tc_enchant_test_fun005.yaml | 23 +++++++ .../enchant/tc_enchant_test_fun006.yaml | 27 ++++++++ .../enchant/tc_enchant_test_fun007.yaml | 29 +++++++++ .../enchant/tc_enchant_test_fun001.py | 43 ++++++++++++ .../enchant/tc_enchant_test_fun002.py | 50 ++++++++++++++ .../enchant/tc_enchant_test_fun003.py | 60 +++++++++++++++++ .../enchant/tc_enchant_test_fun004.py | 49 ++++++++++++++ .../enchant/tc_enchant_test_fun005.py | 53 +++++++++++++++ .../enchant/tc_enchant_test_fun006.py | 65 +++++++++++++++++++ .../enchant/tc_enchant_test_fun007.py | 55 ++++++++++++++++ 14 files changed, 549 insertions(+) create mode 100644 docs/system_base/enchant/tc_enchant_test_fun001.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun002.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun003.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun004.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun005.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun006.yaml create mode 100644 docs/system_base/enchant/tc_enchant_test_fun007.yaml create mode 100644 tests/system_base/enchant/tc_enchant_test_fun001.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun002.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun003.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun004.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun005.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun006.py create mode 100644 tests/system_base/enchant/tc_enchant_test_fun007.py diff --git a/docs/system_base/enchant/tc_enchant_test_fun001.yaml b/docs/system_base/enchant/tc_enchant_test_fun001.yaml new file mode 100644 index 0000000000..c45dcb7d26 --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun001.yaml @@ -0,0 +1,23 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 拼写检查工具基础功能及版本信息 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试基础命令功能 + - 查看 enchant 帮助信息 [命令: enchant -h] + - 查看 enchant 版本信息 [命令: enchant -v] + - 查看 enchant 详细版本信息 [命令: enchant -vv] + - 验证帮助信息格式正确 [命令: enchant -h | grep -q "Usage: enchant"] + +期望结果: +- enchant 命令成功执行(返回码为0) +- 帮助信息包含 "Usage: enchant" 标识 +- 版本信息正确显示 \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun002.yaml b/docs/system_base/enchant/tc_enchant_test_fun002.yaml new file mode 100644 index 0000000000..c9d9fa452d --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun002.yaml @@ -0,0 +1,24 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 拼写检查基础功能选项 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试拼写检查基础功能 + - 创建测试文本文件 [内容: hello world\nthis is a test\nspeling error\nanothr mistake] + - 使用 -l 选项列出拼写错误 [命令: enchant -l test_spell.txt] + - 使用 -L 选项显示行号 [命令: enchant -L test_spell.txt] + - 组合使用 -l 和 -L 选项 [命令: enchant -l -L test_spell.txt] + +期望结果: +- 所有命令成功执行(返回码为0) +- 拼写检查功能正常工作 +- 行号显示功能正常工作 +- 选项组合功能正常工作 \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun003.yaml b/docs/system_base/enchant/tc_enchant_test_fun003.yaml new file mode 100644 index 0000000000..6ea0fadfa4 --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun003.yaml @@ -0,0 +1,24 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 拼写正确性检测及多文件处理 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试拼写正确性检测 + - 创建正确拼写测试文件 [内容: hello world\nthis is a test\ncorrect spelling\nanother word] + - 创建错误拼写测试文件 [内容: speling mistake\nanothr error\nwierd word\nrecieve wrong] + - 检查正确拼写文件 [命令: enchant -l test_correct.txt] + - 检查错误拼写文件 [命令: enchant -l test_error.txt] + - 同时检查多个文件 [命令: enchant -l test_correct.txt test_error.txt] + +期望结果: +- 所有命令成功执行(返回码为0) +- 拼写检测功能能区分正确和错误拼写 +- 多文件处理功能正常工作 \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun004.yaml b/docs/system_base/enchant/tc_enchant_test_fun004.yaml new file mode 100644 index 0000000000..cd70607b14 --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun004.yaml @@ -0,0 +1,24 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 拼写建议功能及其他选项 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试拼写建议功能 + - 创建测试文件 [内容: speling\nrecieve\nwierd] + - 使用 -a 选项显示拼写建议 [命令: enchant -a test_suggest.txt] + - 使用 -m 选项(被忽略选项)[命令: enchant -m test_suggest.txt] + - 组合使用 -a 和 -l 选项 [命令: enchant -a -l test_suggest.txt] + +期望结果: +- 所有命令成功执行(返回码为0) +- 拼写建议功能正常工作 +- 被忽略选项能正常处理 +- 选项组合功能正常工作 \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun005.yaml b/docs/system_base/enchant/tc_enchant_test_fun005.yaml new file mode 100644 index 0000000000..11bedc94fb --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun005.yaml @@ -0,0 +1,23 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 字典功能及不同字典支持 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试字典功能 + - 创建测试文件 [内容: colour\ncentre\nrealise] + - 使用默认字典检查拼写 [命令: enchant -l test_dict.txt] + - 验证帮助信息包含字典选项 [命令: enchant -h | grep -q "-d dict"] + - 尝试使用常见字典(en_US, en_GB, en)[命令: enchant -d en_US -l test_dict.txt] + +期望结果: +- 默认字典检查命令成功执行(返回码为0) +- 帮助信息包含字典选项说明 +- 字典切换功能正常工作(如字典存在) \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun006.yaml b/docs/system_base/enchant/tc_enchant_test_fun006.yaml new file mode 100644 index 0000000000..8213e624c0 --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun006.yaml @@ -0,0 +1,27 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 特殊字符处理及边界情况 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试特殊字符处理 + - 创建特殊字符测试文件 [内容: email@example.com\nhttps://example.com\n123 numbers\nUPPERCASE\nCamelCase\nmultiple spaces] + - 检查特殊字符文件拼写 [命令: enchant -l test_special.txt] + +- ## 测试边界情况 + - 创建空文件 [命令: touch test_empty.txt] + - 检查空文件拼写 [命令: enchant -l test_empty.txt] + - 尝试检查不存在文件 [命令: enchant -l nonexistent_file.txt] + - 验证不存在的文件处理 [应返回错误信息] + +期望结果: +- 特殊字符检查命令成功执行(返回码为0) +- 空文件检查命令成功执行(返回码为0) +- 不存在的文件应返回错误信息 \ No newline at end of file diff --git a/docs/system_base/enchant/tc_enchant_test_fun007.yaml b/docs/system_base/enchant/tc_enchant_test_fun007.yaml new file mode 100644 index 0000000000..6e4ad346e6 --- /dev/null +++ b/docs/system_base/enchant/tc_enchant_test_fun007.yaml @@ -0,0 +1,29 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, enchant +用例描述: 测试 enchant 输入方式及选项完整性 +修改人: douzhichong + +前置条件: +- 安装 enchant 软件包 + +测试步骤: +- ## 测试不同输入方式 + - 创建测试文件 [内容: hello world\ntest content\nspeling error] + - 通过管道输入检查拼写 [命令: cat test_pipe.txt | enchant -l] + - 通过重定向输入检查拼写 [命令: enchant -l < test_pipe.txt] + +- ## 测试选项组合 + - 组合使用所有主要选项 [命令: enchant -a -l -L test_pipe.txt] + +- ## 验证帮助信息完整性 + - 查看帮助信息 [命令: enchant -h] + - 验证包含所有必需选项:-a, -d, -h, -l, -L, -m, -v + +期望结果: +- 所有输入方式命令成功执行(返回码为0) +- 选项组合命令成功执行(返回码为0) +- 帮助信息包含所有必需选项说明 \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun001.py b/tests/system_base/enchant/tc_enchant_test_fun001.py new file mode 100644 index 0000000000..e301875a6c --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun001.py @@ -0,0 +1,43 @@ +""" +@File: tc_enchant_test_fun001.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun001.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + code, result = self.cmd('enchant -h') + self.assertEqual(code, 0, "Show enchant help failed") + + code, result = self.cmd('enchant -v') + self.assertEqual(code, 0, "Show enchant version failed") + + code, result = self.cmd('enchant -vv') + self.assertEqual(code, 0, "Show detailed version failed") + + code, result = self.cmd('enchant -h') + self.assertIn('Usage: enchant', result, "Help information format incorrect") + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun002.py b/tests/system_base/enchant/tc_enchant_test_fun002.py new file mode 100644 index 0000000000..09520aa8cf --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun002.py @@ -0,0 +1,50 @@ +""" +@File: tc_enchant_test_fun002.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun002.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + test_file = "test_spell.txt" + test_content = """hello world +this is a test +speling error +anothr mistake""" + + with open(test_file, 'w') as f: + f.write(test_content) + self.files_to_clean.append(test_file) + + code, result = self.cmd(f'enchant -l {test_file}') + self.assertEqual(code, 0, "List spelling errors failed") + + code, result = self.cmd(f'enchant -L {test_file}') + self.assertEqual(code, 0, "Show line numbers failed") + + code, result = self.cmd(f'enchant -l -L {test_file}') + self.assertEqual(code, 0, "Combine -l and -L options failed") + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun003.py b/tests/system_base/enchant/tc_enchant_test_fun003.py new file mode 100644 index 0000000000..17d973b4f7 --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun003.py @@ -0,0 +1,60 @@ +""" +@File: tc_enchant_test_fun003.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun003.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + correct_file = "test_correct.txt" + correct_content = """hello world +this is a test +correct spelling +another word""" + + with open(correct_file, 'w') as f: + f.write(correct_content) + self.files_to_clean.append(correct_file) + + error_file = "test_error.txt" + error_content = """speling mistake +anothr error +wierd word +recieve wrong""" + + with open(error_file, 'w') as f: + f.write(error_content) + self.files_to_clean.append(error_file) + + code, result = self.cmd(f'enchant -l {correct_file}') + self.assertEqual(code, 0, "Check correct spelling file failed") + + code, result = self.cmd(f'enchant -l {error_file}') + self.assertEqual(code, 0, "Check error spelling file failed") + + code, result = self.cmd(f'enchant -l {correct_file} {error_file}') + self.assertEqual(code, 0, "Check multiple files failed") + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun004.py b/tests/system_base/enchant/tc_enchant_test_fun004.py new file mode 100644 index 0000000000..20f4f26087 --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun004.py @@ -0,0 +1,49 @@ +""" +@File: tc_enchant_test_fun004.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun004.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + test_file = "test_suggest.txt" + test_content = """speling +recieve +wierd""" + + with open(test_file, 'w') as f: + f.write(test_content) + self.files_to_clean.append(test_file) + + code, result = self.cmd(f'enchant -a {test_file}') + self.assertEqual(code, 0, "Show suggestions failed") + + code, result = self.cmd(f'enchant -m {test_file}') + self.assertEqual(code, 0, "Use -m option failed") + + code, result = self.cmd(f'enchant -a -l {test_file}') + self.assertEqual(code, 0, "Combine -a and -l options failed") + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun005.py b/tests/system_base/enchant/tc_enchant_test_fun005.py new file mode 100644 index 0000000000..cf21f2e3da --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun005.py @@ -0,0 +1,53 @@ +""" +@File: tc_enchant_test_fun005.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun005.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + test_file = "test_dict.txt" + test_content = """colour +centre +realise""" + + with open(test_file, 'w') as f: + f.write(test_content) + self.files_to_clean.append(test_file) + + code, result = self.cmd(f'enchant -l {test_file}') + self.assertEqual(code, 0, "Use default dictionary failed") + + code, result = self.cmd('enchant -h') + self.assertIn('-d dict', result, "Help missing dictionary option") + + common_dicts = ['en_US', 'en_GB', 'en'] + for dict_name in common_dicts: + code, result = self.cmd(f'enchant -d {dict_name} -h') + if code == 0: + code, result = self.cmd(f'enchant -d {dict_name} -l {test_file}') + break + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun006.py b/tests/system_base/enchant/tc_enchant_test_fun006.py new file mode 100644 index 0000000000..1dfd432fae --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun006.py @@ -0,0 +1,65 @@ +""" +@File: tc_enchant_test_fun006.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun006.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + special_file = "test_special.txt" + special_content = """email@example.com +https://example.com +123 numbers +UPPERCASE +CamelCase +multiple spaces""" + + with open(special_file, 'w') as f: + f.write(special_content) + self.files_to_clean.append(special_file) + + code, result = self.cmd(f'enchant -l {special_file}') + self.assertEqual(code, 0, "Check special characters failed") + + empty_file = "test_empty.txt" + with open(empty_file, 'w') as f: + f.write("") + self.files_to_clean.append(empty_file) + + code, result = self.cmd(f'enchant -l {empty_file}') + self.assertEqual(code, 0, "Check empty file failed") + + try: + code, result = self.cmd('enchant -l nonexistent_file.txt') + + self.fail("Command should have failed for non-existent file") + except Exception as e: + + error_msg = str(e) + self.assertIn('nonexistent_file.txt', error_msg, "Error message should mention the file") + + code, result = self.cmd('enchant --invalid-option 2>/dev/null || true') + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/enchant/tc_enchant_test_fun007.py b/tests/system_base/enchant/tc_enchant_test_fun007.py new file mode 100644 index 0000000000..3d0248a725 --- /dev/null +++ b/tests/system_base/enchant/tc_enchant_test_fun007.py @@ -0,0 +1,55 @@ +""" +@File: tc_enchant_test_fun007.py +@Time: 2025/12/12 15:40:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_enchant_test_fun007.yaml for details + + :avocado: tags=P1,noarch,local,enchant + """ + PARAM_DIC = {"pkg_name": "enchant"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.files_to_clean = [] + + def test(self): + + test_file = "test_pipe.txt" + test_content = """hello world +test content +speling error""" + + with open(test_file, 'w') as f: + f.write(test_content) + self.files_to_clean.append(test_file) + + code, result = self.cmd(f'cat {test_file} | enchant -l') + self.assertEqual(code, 0, "Pipe input failed") + + code, result = self.cmd(f'enchant -l < {test_file}') + self.assertEqual(code, 0, "Redirect input failed") + + code, result = self.cmd(f'enchant -a -l -L {test_file}') + self.assertEqual(code, 0, "All options combined failed") + + code, result = self.cmd('enchant -h') + help_text = result + required_options = ['-a', '-d', '-h', '-l', '-L', '-m', '-v'] + for option in required_options: + self.assertIn(option, help_text, f"Help missing {option} option") + + def tearDown(self): + for file in self.files_to_clean: + self.cmd(f'rm -f {file}') + super().tearDown(self.PARAM_DIC) \ No newline at end of file -- Gitee