1ca0551cfSopenharmony_ci#!/usr/bin/env python3
2ca0551cfSopenharmony_ci# -*- coding: utf-8 -*-
3ca0551cfSopenharmony_ci
4ca0551cfSopenharmony_ci#
5ca0551cfSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd.
6ca0551cfSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
7ca0551cfSopenharmony_ci# you may not use this file except in compliance with the License.
8ca0551cfSopenharmony_ci# You may obtain a copy of the License at
9ca0551cfSopenharmony_ci#
10ca0551cfSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
11ca0551cfSopenharmony_ci#
12ca0551cfSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
13ca0551cfSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
14ca0551cfSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15ca0551cfSopenharmony_ci# See the License for the specific language governing permissions and
16ca0551cfSopenharmony_ci# limitations under the License.
17ca0551cfSopenharmony_ci#
18ca0551cfSopenharmony_ci
19ca0551cfSopenharmony_ciimport os
20ca0551cfSopenharmony_ciimport subprocess
21ca0551cfSopenharmony_ciimport time
22ca0551cfSopenharmony_cifrom enum import Enum
23ca0551cfSopenharmony_ciimport inspect
24ca0551cfSopenharmony_ci
25ca0551cfSopenharmony_ci
26ca0551cfSopenharmony_ciclass RetStatus(Enum):
27ca0551cfSopenharmony_ci    OK = 0
28ca0551cfSopenharmony_ci    ERR = 255
29ca0551cfSopenharmony_ci
30ca0551cfSopenharmony_ci
31ca0551cfSopenharmony_cidef get_idl():
32ca0551cfSopenharmony_ci    current_path = os.path.dirname(os.path.abspath(__file__))
33ca0551cfSopenharmony_ci    relative_path = os.path.join(current_path, "..", "..", "idl_tool_2", "idl-gen")
34ca0551cfSopenharmony_ci    return os.path.realpath(relative_path)
35ca0551cfSopenharmony_ci
36ca0551cfSopenharmony_ci
37ca0551cfSopenharmony_cidef get_caller_info():
38ca0551cfSopenharmony_ci    frame = inspect.currentframe().f_back.f_back
39ca0551cfSopenharmony_ci    caller_function = frame.f_code.co_name
40ca0551cfSopenharmony_ci    caller_lineno = frame.f_lineno
41ca0551cfSopenharmony_ci    caller_class = None
42ca0551cfSopenharmony_ci    if 'self' in frame.f_locals:
43ca0551cfSopenharmony_ci        caller_class = frame.f_locals['self'].__class__.__name__
44ca0551cfSopenharmony_ci    return caller_class, caller_function, caller_lineno
45ca0551cfSopenharmony_ci
46ca0551cfSopenharmony_ci
47ca0551cfSopenharmony_cidef get_time_stamp():
48ca0551cfSopenharmony_ci    return int(round(time.time() * 1000))
49ca0551cfSopenharmony_ci
50ca0551cfSopenharmony_ci
51ca0551cfSopenharmony_cidef print_success(info):
52ca0551cfSopenharmony_ci    print("\033[32m{}\033[0m".format(info))
53ca0551cfSopenharmony_ci
54ca0551cfSopenharmony_ci
55ca0551cfSopenharmony_cidef print_failure(info):
56ca0551cfSopenharmony_ci    print("\033[31m{}\033[0m".format(info))
57ca0551cfSopenharmony_ci
58ca0551cfSopenharmony_ci
59ca0551cfSopenharmony_cidef compare_file(first_file, second_file):
60ca0551cfSopenharmony_ci    with open(first_file, 'r') as first_hash_file:
61ca0551cfSopenharmony_ci        with open(second_file, 'r') as second_hash_file:
62ca0551cfSopenharmony_ci            first_hash_info = first_hash_file.read()
63ca0551cfSopenharmony_ci            second_hash_info = second_hash_file.read()
64ca0551cfSopenharmony_ci            return first_hash_info == second_hash_info
65ca0551cfSopenharmony_ci
66ca0551cfSopenharmony_cidef file_exists(file_path):
67ca0551cfSopenharmony_ci    return os.path.isfile(file_path)
68ca0551cfSopenharmony_ci
69ca0551cfSopenharmony_cidef exec_command_check(command, expect_result, exp_status):
70ca0551cfSopenharmony_ci    status, exec_result = subprocess.getstatusoutput(command)
71ca0551cfSopenharmony_ci    caller_class, caller_function, caller_lineno = get_caller_info()
72ca0551cfSopenharmony_ci    if status != exp_status.value:
73ca0551cfSopenharmony_ci        print_failure(f"[{caller_class}:{caller_function}:{caller_lineno}][{command}][{status}:{exp_status}]"
74ca0551cfSopenharmony_ci                      f"{exec_result}")
75ca0551cfSopenharmony_ci        return False
76ca0551cfSopenharmony_ci
77ca0551cfSopenharmony_ci    if exec_result != expect_result:
78ca0551cfSopenharmony_ci        print_success("=====expect=====\n"
79ca0551cfSopenharmony_ci                      f"[{caller_class}:{caller_function}:{caller_lineno}][{command}]{expect_result}")
80ca0551cfSopenharmony_ci        print_failure("=====actual=====\n"
81ca0551cfSopenharmony_ci                      f"[{caller_class}:{caller_function}:{caller_lineno}][{command}]{exec_result}")
82ca0551cfSopenharmony_ci        return False
83ca0551cfSopenharmony_ci
84ca0551cfSopenharmony_ci    return True
85ca0551cfSopenharmony_ci
86ca0551cfSopenharmony_ciclass Test:
87ca0551cfSopenharmony_ci    def __init__(self):
88ca0551cfSopenharmony_ci        self.name = self.__class__.__name__
89ca0551cfSopenharmony_ci        self.cmd = get_idl()
90ca0551cfSopenharmony_ci
91ca0551cfSopenharmony_ci    def run(self):
92ca0551cfSopenharmony_ci        # please add test code here
93ca0551cfSopenharmony_ci        return False
94ca0551cfSopenharmony_ci
95ca0551cfSopenharmony_ci    def test(self):
96ca0551cfSopenharmony_ci        print_success("[ RUN       ] {}".format(self.name))
97ca0551cfSopenharmony_ci        start_time = get_time_stamp()
98ca0551cfSopenharmony_ci        result = self.run()
99ca0551cfSopenharmony_ci        end_time = get_time_stamp()
100ca0551cfSopenharmony_ci
101ca0551cfSopenharmony_ci        if result:
102ca0551cfSopenharmony_ci            print_success("[        OK ] {} ({}ms)".format(self.name, end_time - start_time))
103ca0551cfSopenharmony_ci        else:
104ca0551cfSopenharmony_ci            print_failure("[    FAILED ] {} ({}ms)".format(self.name, end_time - start_time))
105ca0551cfSopenharmony_ci        return result
106ca0551cfSopenharmony_ci
107ca0551cfSopenharmony_ci# print help info
108ca0551cfSopenharmony_ciclass TestCmdPrintHelp(Test):
109ca0551cfSopenharmony_ci    def run(self):
110ca0551cfSopenharmony_ci        expect_result = "Compile a .idl file and generate C/C++/Ts/Rust and Java codes.\n"
111ca0551cfSopenharmony_ci        expect_result += "Usage: idl [options] file\n"
112ca0551cfSopenharmony_ci        expect_result += "Options:\n"
113ca0551cfSopenharmony_ci        expect_result += "  -h, --help                      Display command line options\n"
114ca0551cfSopenharmony_ci        expect_result += "  -v, --version                   Display toolchain version information\n"
115ca0551cfSopenharmony_ci        expect_result += \
116ca0551cfSopenharmony_ci            "      --system <value>            "\
117ca0551cfSopenharmony_ci            "Set system level 'mini','lite' or 'full', the default value is 'full', only support 'intf-type hdi'\n"
118ca0551cfSopenharmony_ci        expect_result += \
119ca0551cfSopenharmony_ci            "  -m, --mode <value>              "\
120ca0551cfSopenharmony_ci            "Set generate code mode 'low', 'passthrough', 'ipc' or 'kernel', the default value is 'ipc', "\
121ca0551cfSopenharmony_ci            "only support 'intf-type hdi'\n"
122ca0551cfSopenharmony_ci        expect_result += "  -p, --package <package name>    Set package of idl files, only support 'intf-type hdi'\n"
123ca0551cfSopenharmony_ci        expect_result += "      --dump-ast                  Display the AST of the compiled file\n"
124ca0551cfSopenharmony_ci        expect_result += \
125ca0551cfSopenharmony_ci            "      --dump-metadata             "\
126ca0551cfSopenharmony_ci            "Display the metadata generated from the compiled file, only support 'intf-type sa'\n"
127ca0551cfSopenharmony_ci        expect_result += \
128ca0551cfSopenharmony_ci            "      --hash                      Generate hash info of idl files, only support 'intf-type hdi'\n"
129ca0551cfSopenharmony_ci        expect_result += \
130ca0551cfSopenharmony_ci            "  -r <rootPackage>:<rootPath>     Set root path of root package, only support 'intf-type hdi'\n"
131ca0551cfSopenharmony_ci        expect_result += "  -c                              Compile the .idl file\n"
132ca0551cfSopenharmony_ci        expect_result += "  -D <directory>                  Directory of the idl file, only support 'intf-type hdi'\n"
133ca0551cfSopenharmony_ci        expect_result += "  -d <directory>                  Place generated codes into <directory>\n"
134ca0551cfSopenharmony_ci        expect_result += \
135ca0551cfSopenharmony_ci            "  -o <file>                       Place the output into <file>, only support 'intf-type hdi'\n"
136ca0551cfSopenharmony_ci        expect_result += \
137ca0551cfSopenharmony_ci            "  -s <file>                       Place the metadata into <file>, only support 'intf-type sa'\n"
138ca0551cfSopenharmony_ci        expect_result += "      --gen-c                     Generate C codes, only support 'intf-type hdi'\n"
139ca0551cfSopenharmony_ci        expect_result += "      --gen-cpp                   Generate C++ codes\n"
140ca0551cfSopenharmony_ci        expect_result += "      --gen-java                  Generate Java codes, only support 'intf-type hdi'\n"
141ca0551cfSopenharmony_ci        expect_result += "      --gen-rust                  Generate Rust codes, only support 'intf-type sa'\n"
142ca0551cfSopenharmony_ci        expect_result += "      --gen-ts                    Generate Ts codes, only support 'intf-type sa'\n"
143ca0551cfSopenharmony_ci        expect_result += \
144ca0551cfSopenharmony_ci            "      --log-domainid <domainid>   "\
145ca0551cfSopenharmony_ci            "Place the service domain in <domainid>, Enable log(Pair with -log-tag), only support 'intf-type sa'\n"
146ca0551cfSopenharmony_ci        expect_result += \
147ca0551cfSopenharmony_ci            "      --log-tag <tag>             "\
148ca0551cfSopenharmony_ci            "Place the subsystem name in <tag>, Enable log(Pair with -log-domainid), only support 'intf-type sa'\n"
149ca0551cfSopenharmony_ci        expect_result += \
150ca0551cfSopenharmony_ci            "  -t <hitrace tag>                "\
151ca0551cfSopenharmony_ci            "Place the constant name from hitrace_meter.h file in <hitrace tag>, only support 'intf-type sa'\n"
152ca0551cfSopenharmony_ci        expect_result += \
153ca0551cfSopenharmony_ci            "      --intf-type <tag>           Set type of generated codes 'sa' or 'hdi', default type is 'sa'"
154ca0551cfSopenharmony_ci        command = f"{self.cmd} -h"
155ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.OK)
156ca0551cfSopenharmony_ci        command = f"{self.cmd} --help"
157ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
158ca0551cfSopenharmony_ci        return ret
159ca0551cfSopenharmony_ci
160ca0551cfSopenharmony_ci
161ca0551cfSopenharmony_ci# print version info
162ca0551cfSopenharmony_ciclass TestCmdPrintVersion(Test):
163ca0551cfSopenharmony_ci    def run(self):
164ca0551cfSopenharmony_ci        expect_result = "idl 1.0\n"
165ca0551cfSopenharmony_ci        expect_result += "Copyright (c) Hua"\
166ca0551cfSopenharmony_ci            "wei Technologies Co., Ltd. 2024. All rights reserved.\n"
167ca0551cfSopenharmony_ci        command = f"{self.cmd} -v"
168ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.OK)
169ca0551cfSopenharmony_ci        command = f"{self.cmd} --version"
170ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
171ca0551cfSopenharmony_ci        return ret
172ca0551cfSopenharmony_ci
173ca0551cfSopenharmony_ci
174ca0551cfSopenharmony_ci# exec not support cmd
175ca0551cfSopenharmony_ciclass TestCmdNotSupport(Test):
176ca0551cfSopenharmony_ci    def run_sa(self):
177ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-abc" is illegal.\n"""
178ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
179ca0551cfSopenharmony_ci        command = f"{self.cmd} -abc"
180ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
181ca0551cfSopenharmony_ci
182ca0551cfSopenharmony_ci        # sa not support cmd
183ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'system'.\n"
184ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
185ca0551cfSopenharmony_ci        command = f"{self.cmd} --system full"
186ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
187ca0551cfSopenharmony_ci
188ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'm' or 'mode'.\n"
189ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
190ca0551cfSopenharmony_ci        command = f"{self.cmd} --mode ipc"
191ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
192ca0551cfSopenharmony_ci        command = f"{self.cmd} -m ipc"
193ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
194ca0551cfSopenharmony_ci
195ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'p' or 'package'.\n"
196ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
197ca0551cfSopenharmony_ci        command = f"{self.cmd} -p abc.test"
198ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
199ca0551cfSopenharmony_ci        command = f"{self.cmd} --package abc.test"
200ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
201ca0551cfSopenharmony_ci
202ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'hash'.\n"
203ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
204ca0551cfSopenharmony_ci        command = f"{self.cmd} --hash"
205ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
206ca0551cfSopenharmony_ci
207ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'r'.\n"
208ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
209ca0551cfSopenharmony_ci        command = f"{self.cmd} -r abc:./"
210ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
211ca0551cfSopenharmony_ci
212ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'o'.\n"
213ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
214ca0551cfSopenharmony_ci        command = f"{self.cmd} -o test.file"
215ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
216ca0551cfSopenharmony_ci
217ca0551cfSopenharmony_ci        expect_result = \
218ca0551cfSopenharmony_ci            "[IDL-GEN]: Option 'intf-type sa' only support language option 'gen-cpp', 'gen-rust' or 'gen-ts'.\n"
219ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
220ca0551cfSopenharmony_ci        command = f"{self.cmd} --gen-c"
221ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
222ca0551cfSopenharmony_ci        return ret
223ca0551cfSopenharmony_ci
224ca0551cfSopenharmony_ci    def run_hdi(self):
225ca0551cfSopenharmony_ci        # hdi not support cmd
226ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type hdi' not support option 'dump-metadata'.\n"
227ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
228ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --dump-metadata"
229ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
230ca0551cfSopenharmony_ci
231ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-s" is illegal.\n"""
232ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
233ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -s"
234ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
235ca0551cfSopenharmony_ci
236ca0551cfSopenharmony_ci        expect_result = \
237ca0551cfSopenharmony_ci            "[IDL-GEN]: Option 'intf-type hdi' only support language option 'gen-c', 'gen-cpp' or 'gen-java'.\n"
238ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
239ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-ts"
240ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
241ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-rust"
242ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
243ca0551cfSopenharmony_ci        return ret
244ca0551cfSopenharmony_ci
245ca0551cfSopenharmony_ci    def run(self):
246ca0551cfSopenharmony_ci        ret = self.run_sa()
247ca0551cfSopenharmony_ci        ret &= self.run_hdi()
248ca0551cfSopenharmony_ci        return ret
249ca0551cfSopenharmony_ci
250ca0551cfSopenharmony_ci
251ca0551cfSopenharmony_ci# set not support value
252ca0551cfSopenharmony_ciclass TestCmdNotSupportValue(Test):
253ca0551cfSopenharmony_ci    def run(self):
254ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: The Option \"-abc\" is illegal.\n"
255ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
256ca0551cfSopenharmony_ci        command = f"{self.cmd} -abc"
257ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
258ca0551cfSopenharmony_ci        return ret
259ca0551cfSopenharmony_ci
260ca0551cfSopenharmony_ciclass TestCmdModeTypeTest(Test):
261ca0551cfSopenharmony_ci    def run(self):
262ca0551cfSopenharmony_ci        expect_result = ""
263ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --mode low"
264ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.OK)
265ca0551cfSopenharmony_ci
266ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -m passthrough"
267ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
268ca0551cfSopenharmony_ci
269ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --mode ipc"
270ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
271ca0551cfSopenharmony_ci
272ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -m kernel"
273ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
274ca0551cfSopenharmony_ci
275ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid generate mode set: 'abc', please input low/passthrough/ipc/kernel/sa."
276ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --mode abc"
277ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
278ca0551cfSopenharmony_ci        return ret
279ca0551cfSopenharmony_ci
280ca0551cfSopenharmony_ci
281ca0551cfSopenharmony_ciclass TestCmdPackageTypeTest(Test):
282ca0551cfSopenharmony_ci    def run(self):
283ca0551cfSopenharmony_ci        expect_result = ""
284ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -p abc"
285ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.OK)
286ca0551cfSopenharmony_ci
287ca0551cfSopenharmony_ci        return ret
288ca0551cfSopenharmony_ci
289ca0551cfSopenharmony_ci
290ca0551cfSopenharmony_ciclass TestCmdDumpAstTypeTest(Test):
291ca0551cfSopenharmony_ci    def run(self):
292ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: no idl files."""
293ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --dump-ast"
294ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
295ca0551cfSopenharmony_ci
296ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
297ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --dump-ast"
298ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
299ca0551cfSopenharmony_ci
300ca0551cfSopenharmony_ci        command = f"{self.cmd} --dump-ast"
301ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
302ca0551cfSopenharmony_ci
303ca0551cfSopenharmony_ci        return ret
304ca0551cfSopenharmony_ci
305ca0551cfSopenharmony_ci
306ca0551cfSopenharmony_ciclass TestCmdDumpMetaDataTest(Test):
307ca0551cfSopenharmony_ci    def run(self):
308ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type hdi' not support option 'dump-metadata'.\n"
309ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
310ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --dump-metadata"
311ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
312ca0551cfSopenharmony_ci
313ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
314ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --dump-metadata"
315ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
316ca0551cfSopenharmony_ci
317ca0551cfSopenharmony_ci        return ret
318ca0551cfSopenharmony_ci
319ca0551cfSopenharmony_ci
320ca0551cfSopenharmony_ciclass TestCmdHashTest(Test):
321ca0551cfSopenharmony_ci    def run(self):
322ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
323ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --hash"
324ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
325ca0551cfSopenharmony_ci
326ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'hash'.\n"
327ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
328ca0551cfSopenharmony_ci        command = f"{self.cmd} --hash"
329ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
330ca0551cfSopenharmony_ci
331ca0551cfSopenharmony_ci        return ret
332ca0551cfSopenharmony_ci
333ca0551cfSopenharmony_ci
334ca0551cfSopenharmony_ciclass TestCmdRootPackageTest(Test):
335ca0551cfSopenharmony_ci    def run(self):
336ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-r" is illegal.\n"""
337ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
338ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -r"
339ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
340ca0551cfSopenharmony_ci
341ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid path 'xx'."
342ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -r x:xx"
343ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
344ca0551cfSopenharmony_ci
345ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' not support option 'r'.\n"""
346ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
347ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -r x:./"
348ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
349ca0551cfSopenharmony_ci
350ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-r" is illegal.\n"""
351ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
352ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -r"
353ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
354ca0551cfSopenharmony_ci
355ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid path 'xx'."
356ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -r x:xx"
357ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
358ca0551cfSopenharmony_ci
359ca0551cfSopenharmony_ci        expect_result = ""
360ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -r x:./"
361ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
362ca0551cfSopenharmony_ci
363ca0551cfSopenharmony_ci        return ret
364ca0551cfSopenharmony_ci
365ca0551cfSopenharmony_ci
366ca0551cfSopenharmony_ciclass TestCmdDirectoryTest(Test):
367ca0551cfSopenharmony_ci    def run(self):
368ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-D" is illegal.\n"""
369ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
370ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -D"
371ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
372ca0551cfSopenharmony_ci
373ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'D'.\n"
374ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
375ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -D ./"
376ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
377ca0551cfSopenharmony_ci
378ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: failed to open './x/', errno:2\n"
379ca0551cfSopenharmony_ci        expect_result += """[IDL-GEN]: Option 'intf-type sa' not support option 'D'.\n"""
380ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
381ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -D ./x"
382ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
383ca0551cfSopenharmony_ci
384ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-D" is illegal.\n"""
385ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
386ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -D"
387ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
388ca0551cfSopenharmony_ci
389ca0551cfSopenharmony_ci        expect_result = ""
390ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -D {os.path.dirname(os.path.abspath(__file__))}"
391ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
392ca0551cfSopenharmony_ci
393ca0551cfSopenharmony_ci        expect_result = f"[IDL-GEN]: failed to open '{os.path.dirname(os.path.abspath(__file__))}/x/', errno:2"
394ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -D {os.path.dirname(os.path.abspath(__file__))}/x"
395ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
396ca0551cfSopenharmony_ci
397ca0551cfSopenharmony_ci        return ret
398ca0551cfSopenharmony_ci
399ca0551cfSopenharmony_ci
400ca0551cfSopenharmony_ciclass TestCmdPlaceGenerateDirectoryTest(Test):
401ca0551cfSopenharmony_ci    def run(self):
402ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-d" is illegal.\n"""
403ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
404ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -d"
405ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
406ca0551cfSopenharmony_ci
407ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
408ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -d ./"
409ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
410ca0551cfSopenharmony_ci
411ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
412ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -d x"
413ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
414ca0551cfSopenharmony_ci
415ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-d" is illegal.\n"""
416ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
417ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -d"
418ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
419ca0551cfSopenharmony_ci
420ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
421ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -d ./"
422ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
423ca0551cfSopenharmony_ci
424ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
425ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -d x"
426ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
427ca0551cfSopenharmony_ci
428ca0551cfSopenharmony_ci        return ret
429ca0551cfSopenharmony_ci
430ca0551cfSopenharmony_ci
431ca0551cfSopenharmony_ciclass TestCmdPlaceOutputFileTest(Test):
432ca0551cfSopenharmony_ci    def run(self):
433ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-o" is illegal.\n"""
434ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
435ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -o"
436ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
437ca0551cfSopenharmony_ci
438ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'o'.\n"
439ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
440ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -o xx"
441ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
442ca0551cfSopenharmony_ci
443ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-o" is illegal.\n"""
444ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
445ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -o"
446ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
447ca0551cfSopenharmony_ci
448ca0551cfSopenharmony_ci        expect_result = ""
449ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -o xx"
450ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
451ca0551cfSopenharmony_ci
452ca0551cfSopenharmony_ci        return ret
453ca0551cfSopenharmony_ci
454ca0551cfSopenharmony_ci
455ca0551cfSopenharmony_ciclass TestCmdPlaceMetadataInfoTest(Test):
456ca0551cfSopenharmony_ci    def run(self):
457ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-s" is illegal.\n"""
458ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
459ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -s"
460ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
461ca0551cfSopenharmony_ci
462ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type hdi' not support option '-s'.\n"
463ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
464ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -s aaa"
465ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
466ca0551cfSopenharmony_ci
467ca0551cfSopenharmony_ci        return ret
468ca0551cfSopenharmony_ci
469ca0551cfSopenharmony_ci
470ca0551cfSopenharmony_ciclass TestCmdGenCTest(Test):
471ca0551cfSopenharmony_ci    def run(self):
472ca0551cfSopenharmony_ci        expect_result = \
473ca0551cfSopenharmony_ci            "[IDL-GEN]: Option 'intf-type sa' only support language option 'gen-cpp', 'gen-rust' or 'gen-ts'.\n"
474ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
475ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --gen-c"
476ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
477ca0551cfSopenharmony_ci
478ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
479ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-c"
480ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
481ca0551cfSopenharmony_ci
482ca0551cfSopenharmony_ci        return ret
483ca0551cfSopenharmony_ci
484ca0551cfSopenharmony_ci
485ca0551cfSopenharmony_ciclass TestCmdGenCppTest(Test):
486ca0551cfSopenharmony_ci    def run(self):
487ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
488ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --gen-cpp"
489ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
490ca0551cfSopenharmony_ci
491ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
492ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-cpp"
493ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
494ca0551cfSopenharmony_ci
495ca0551cfSopenharmony_ci        return ret
496ca0551cfSopenharmony_ci
497ca0551cfSopenharmony_ci
498ca0551cfSopenharmony_ciclass TestCmdGenJavaTest(Test):
499ca0551cfSopenharmony_ci    def run(self):
500ca0551cfSopenharmony_ci        expect_result = \
501ca0551cfSopenharmony_ci            "[IDL-GEN]: Option 'intf-type sa' only support language option 'gen-cpp', 'gen-rust' or 'gen-ts'.\n"
502ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
503ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --gen-java"
504ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
505ca0551cfSopenharmony_ci
506ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: no idl files."
507ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-java"
508ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
509ca0551cfSopenharmony_ci
510ca0551cfSopenharmony_ci        return ret
511ca0551cfSopenharmony_ci
512ca0551cfSopenharmony_ciclass TestCmdGenRustTest(Test):
513ca0551cfSopenharmony_ci    def run(self):
514ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
515ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --gen-rust"
516ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
517ca0551cfSopenharmony_ci
518ca0551cfSopenharmony_ci        expect_result = \
519ca0551cfSopenharmony_ci            """[IDL-GEN]: Option 'intf-type hdi' only support language option 'gen-c', 'gen-cpp' or 'gen-java'.\n"""
520ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
521ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-rust"
522ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
523ca0551cfSopenharmony_ci
524ca0551cfSopenharmony_ci        return ret
525ca0551cfSopenharmony_ci
526ca0551cfSopenharmony_ci
527ca0551cfSopenharmony_ciclass TestCmdGenTsTest(Test):
528ca0551cfSopenharmony_ci    def run(self):
529ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
530ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --gen-ts"
531ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
532ca0551cfSopenharmony_ci
533ca0551cfSopenharmony_ci        expect_result = \
534ca0551cfSopenharmony_ci            "[IDL-GEN]: Option 'intf-type hdi' only support language option 'gen-c', 'gen-cpp' or 'gen-java'.\n"
535ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
536ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --gen-ts"
537ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
538ca0551cfSopenharmony_ci
539ca0551cfSopenharmony_ci        return ret
540ca0551cfSopenharmony_ci
541ca0551cfSopenharmony_ci
542ca0551cfSopenharmony_ciclass TestCmdGenLogDomainIdTest(Test):
543ca0551cfSopenharmony_ci    def run(self):
544ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
545ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --log-domainid xx"
546ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
547ca0551cfSopenharmony_ci
548ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type hdi' not support option '-t', '-log-domainid' or '-log-tag'.\n"
549ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
550ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --log-domainid xx"
551ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
552ca0551cfSopenharmony_ci
553ca0551cfSopenharmony_ci        return ret
554ca0551cfSopenharmony_ci
555ca0551cfSopenharmony_ci
556ca0551cfSopenharmony_ciclass TestCmdGenLogDomainTagTest(Test):
557ca0551cfSopenharmony_ci    def run(self):
558ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "--log-tag" is illegal.\n"""
559ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
560ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --log-tag"
561ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
562ca0551cfSopenharmony_ci
563ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
564ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --log-tag xx"
565ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
566ca0551cfSopenharmony_ci
567ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
568ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --log-domainid xx --log-tag xx"
569ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
570ca0551cfSopenharmony_ci
571ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "---log-tag" is illegal.\n"""
572ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
573ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi ---log-tag xx"
574ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
575ca0551cfSopenharmony_ci
576ca0551cfSopenharmony_ci        return ret
577ca0551cfSopenharmony_ci
578ca0551cfSopenharmony_ci
579ca0551cfSopenharmony_ciclass TestCmdHiTraceTest(Test):
580ca0551cfSopenharmony_ci    def run(self):
581ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-t" is illegal.\n"""
582ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
583ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -t"
584ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
585ca0551cfSopenharmony_ci
586ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
587ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa -t xx"
588ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
589ca0551cfSopenharmony_ci
590ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "-t" is illegal.\n"""
591ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
592ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -t"
593ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
594ca0551cfSopenharmony_ci
595ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type hdi' not support option '-t', '-log-domainid' or '-log-tag'.\n"
596ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
597ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi -t xx"
598ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
599ca0551cfSopenharmony_ci
600ca0551cfSopenharmony_ci        return ret
601ca0551cfSopenharmony_ci
602ca0551cfSopenharmony_ciclass TestCmdSystemTest(Test):
603ca0551cfSopenharmony_ci    def run(self):
604ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "--system" is illegal.\n"""
605ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
606ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --system"
607ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
608ca0551cfSopenharmony_ci
609ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid system level set: 'xx', please input mini/lite/full"
610ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --system xx"
611ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
612ca0551cfSopenharmony_ci
613ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: Option 'intf-type sa' not support option 'system'.\n"
614ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
615ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa --system mini"
616ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
617ca0551cfSopenharmony_ci
618ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "--system" is illegal.\n"""
619ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
620ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --system"
621ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
622ca0551cfSopenharmony_ci
623ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid system level set: 'xx', please input mini/lite/full"
624ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --system xx"
625ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
626ca0551cfSopenharmony_ci
627ca0551cfSopenharmony_ci        expect_result = ""
628ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --system mini"
629ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
630ca0551cfSopenharmony_ci
631ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --system lite"
632ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
633ca0551cfSopenharmony_ci
634ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi --system full"
635ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
636ca0551cfSopenharmony_ci        return ret
637ca0551cfSopenharmony_ci
638ca0551cfSopenharmony_ciclass TestCmdIntfTypeTest(Test):
639ca0551cfSopenharmony_ci    def run(self):
640ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: Option 'intf-type sa' must set idl file."""
641ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type sa"
642ca0551cfSopenharmony_ci        ret = exec_command_check(command, expect_result, RetStatus.ERR)
643ca0551cfSopenharmony_ci
644ca0551cfSopenharmony_ci        expect_result = ""
645ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type hdi"
646ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.OK)
647ca0551cfSopenharmony_ci
648ca0551cfSopenharmony_ci        expect_result = "[IDL-GEN]: invalid interface type set: 'xxx', please input hdi/sa."
649ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type xxx"
650ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
651ca0551cfSopenharmony_ci
652ca0551cfSopenharmony_ci        expect_result = """[IDL-GEN]: The Option "--intf-type" is illegal.\n"""
653ca0551cfSopenharmony_ci        expect_result += """Use "-h, --help" to show usage."""
654ca0551cfSopenharmony_ci        command = f"{self.cmd} --intf-type"
655ca0551cfSopenharmony_ci        ret &= exec_command_check(command, expect_result, RetStatus.ERR)
656ca0551cfSopenharmony_ci
657ca0551cfSopenharmony_ci        return ret
658ca0551cfSopenharmony_ci
659ca0551cfSopenharmony_cidef get_subclasses(cls):
660ca0551cfSopenharmony_ci    return cls.__subclasses__()
661ca0551cfSopenharmony_ci
662ca0551cfSopenharmony_ci
663ca0551cfSopenharmony_ciclass Tests:
664ca0551cfSopenharmony_ci    test_cases = get_subclasses(Test)
665ca0551cfSopenharmony_ci    pass
666ca0551cfSopenharmony_ci
667ca0551cfSopenharmony_ci    @staticmethod
668ca0551cfSopenharmony_ci    def set_up_test_case():
669ca0551cfSopenharmony_ci        hdi_gen_file = get_idl()
670ca0551cfSopenharmony_ci        ret = file_exists(hdi_gen_file)
671ca0551cfSopenharmony_ci        if not ret:
672ca0551cfSopenharmony_ci            print_failure("[===========] no such file:{}".format(hdi_gen_file))
673ca0551cfSopenharmony_ci        return ret
674ca0551cfSopenharmony_ci
675ca0551cfSopenharmony_ci    @staticmethod
676ca0551cfSopenharmony_ci    def set_down_test_case():
677ca0551cfSopenharmony_ci        pass
678ca0551cfSopenharmony_ci
679ca0551cfSopenharmony_ci    @staticmethod
680ca0551cfSopenharmony_ci    def test():
681ca0551cfSopenharmony_ci        test_case_num = len(Tests.test_cases)
682ca0551cfSopenharmony_ci        success_case_num = 0
683ca0551cfSopenharmony_ci        print_success("[===========] start {} test".format(test_case_num))
684ca0551cfSopenharmony_ci        for test_case in Tests.test_cases:
685ca0551cfSopenharmony_ci            obj = test_case()
686ca0551cfSopenharmony_ci            if obj.test():
687ca0551cfSopenharmony_ci                success_case_num += 1
688ca0551cfSopenharmony_ci        print_success("[    PASSED ] {} test".format(success_case_num))
689ca0551cfSopenharmony_ci        failure_case_num = test_case_num - success_case_num
690ca0551cfSopenharmony_ci        if failure_case_num > 0:
691ca0551cfSopenharmony_ci            print_failure("[    FAILED ] {} test".format(failure_case_num))
692ca0551cfSopenharmony_ci
693ca0551cfSopenharmony_ci
694ca0551cfSopenharmony_ciif __name__ == "__main__":
695ca0551cfSopenharmony_ci    if not Tests.set_up_test_case():
696ca0551cfSopenharmony_ci        exit(-1)
697ca0551cfSopenharmony_ci    Tests.test()
698ca0551cfSopenharmony_ci    Tests.set_down_test_case()
699