1# Copyright (c) 2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14ets2panda_add_gtest(ast_builder_test
15    CPP_SOURCES ast_builder_test.cpp
16)
17
18ets2panda_add_gtest(es2panda_public_test
19    CPP_SOURCES es2panda_public_test.cpp
20)
21
22ets2panda_add_gtest(ast_verifier_short_test
23    CPP_SOURCES ast_verifier_short_test.cpp
24)
25
26ets2panda_add_gtest(ast_verifier_private_protected_public_access_correct_test
27    CPP_SOURCES ast_verifier_private_protected_public_access_correct_test.cpp
28)
29
30ets2panda_add_gtest(ast_verifier_private_access_negative_test_1_4
31    CPP_SOURCES ast_verifier_private_access_negative_test_1_4.cpp
32)
33
34ets2panda_add_gtest(ast_verifier_private_access_negative_test_5_7
35    CPP_SOURCES ast_verifier_private_access_negative_test_5_7.cpp
36)
37
38ets2panda_add_gtest(ast_verifier_protected_access_correct_test
39    CPP_SOURCES ast_verifier_protected_access_correct_test.cpp
40)
41
42ets2panda_add_gtest(ast_verifier_protected_access_negative_test_1_3
43    CPP_SOURCES ast_verifier_protected_access_negative_test_1_3.cpp
44)
45
46ets2panda_add_gtest(ast_verifier_protected_access_negative_test_4_6
47    CPP_SOURCES ast_verifier_protected_access_negative_test_4_6.cpp
48)
49
50ets2panda_add_gtest(ast_verifier_reference_typeannotation_test
51    CPP_SOURCES ast_verifier_reference_typeannotation_test.cpp
52)
53
54ets2panda_add_gtest(ast_verifier_identifier_has_variable_test
55    CPP_SOURCES ast_verifier_identifier_has_variable_test.cpp
56)
57
58ets2panda_add_gtest(ast_verifier_variable_has_enclosing_scope_test
59    CPP_SOURCES ast_verifier_variable_has_enclosing_scope_test.cpp
60)
61
62ets2panda_add_gtest(ast_verifier_variable_has_scope_test
63    CPP_SOURCES ast_verifier_variable_has_scope_test.cpp
64)
65
66ets2panda_add_gtest(ast_verifier_every_child_has_valid_parent_test
67    CPP_SOURCES ast_verifier_every_child_has_valid_parent_test.cpp
68)
69
70ets2panda_add_gtest(ast_verifier_check_infinite_loop_test
71    CPP_SOURCES ast_verifier_check_infinite_loop_test.cpp
72)
73
74ets2panda_add_gtest(ast_verifier_check_normal_loop_test
75    CPP_SOURCES ast_verifier_check_normal_loop_test.cpp
76)
77
78ets2panda_add_gtest(ast_verifier_check_abstract_call_test
79    CPP_SOURCES ast_verifier_check_abstract_call_test.cpp
80)
81
82ets2panda_add_gtest(ast_verifier_getter_setter_test
83    CPP_SOURCES ast_verifier_getter_setter_test.cpp
84)
85
86ets2panda_add_gtest(ast_verifier_getter_setter_neg_test
87    CPP_SOURCES ast_verifier_getter_setter_neg_test.cpp
88)
89
90ets2panda_add_gtest(ast_verifier_check_scope_declaration_test
91    CPP_SOURCES ast_verifier_check_scope_declaration_test.cpp
92)
93
94panda_add_library(e2p_test_plugin SHARED e2p_test_plugin.c)
95panda_target_include_directories(e2p_test_plugin
96    PRIVATE "${ES2PANDA_PATH}"
97    PRIVATE ${OUTPUT_DIR}
98)
99panda_target_link_libraries(e2p_test_plugin es2panda-public)
100
101
102panda_add_library(e2p_test_plugin_dump_json SHARED e2p_test_plugin_dump_json.c)
103panda_target_include_directories(e2p_test_plugin_dump_json
104    PRIVATE "${ES2PANDA_PATH}"
105    PRIVATE ${OUTPUT_DIR}
106)
107panda_target_link_libraries(e2p_test_plugin_dump_json es2panda-public)
108
109
110panda_add_library(e2p_test_plugin_ets_src SHARED e2p_test_plugin_ets_src.c)
111panda_target_include_directories(e2p_test_plugin_ets_src
112    PRIVATE "${ES2PANDA_PATH}"
113    PRIVATE ${OUTPUT_DIR}
114)
115panda_target_link_libraries(e2p_test_plugin_ets_src es2panda-public)
116
117
118panda_add_library(e2p_test_plugin_is SHARED e2p_test_plugin_is.c)
119panda_target_include_directories(e2p_test_plugin_is
120    PRIVATE "${ES2PANDA_PATH}"
121    PRIVATE ${OUTPUT_DIR}
122)
123panda_target_link_libraries(e2p_test_plugin_is es2panda-public)
124
125
126add_custom_target(es2panda-plugin-test
127  COMMENT "Test es2panda plugin functionality"
128
129  COMMAND ${CMAKE_COMMAND} -E env
130    LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> --plugins=e2p_test_plugin
131    --extension=sts "${CMAKE_CURRENT_SOURCE_DIR}/t.sts" > "${CMAKE_CURRENT_BINARY_DIR}/plugin_test.out"
132  COMMAND ${CMAKE_COMMAND} -E compare_files
133    "${CMAKE_CURRENT_BINARY_DIR}/plugin_test.out" "${CMAKE_CURRENT_SOURCE_DIR}/plugin_test-expected.txt"
134
135  COMMAND ${CMAKE_COMMAND} -E env
136    LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> --plugins=e2p_test_plugin_dump_json
137    "${CMAKE_CURRENT_SOURCE_DIR}/t.sts" > "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_dump_json.out"
138  COMMAND ${CMAKE_COMMAND} -E compare_files
139    "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_dump_json.out" "${CMAKE_CURRENT_SOURCE_DIR}/e2p_test_plugin_dump_json-expected.txt"
140
141  COMMAND ${CMAKE_COMMAND} -E env
142    LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> --plugins=e2p_test_plugin_ets_src
143    "${CMAKE_CURRENT_SOURCE_DIR}/t.sts" > "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_ets_src.out"
144  COMMAND ${CMAKE_COMMAND} -E compare_files
145    "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_ets_src.out" "${CMAKE_CURRENT_SOURCE_DIR}/e2p_test_plugin_ets_src-expected.txt"
146
147  COMMAND ${CMAKE_COMMAND} -E env
148    LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${PANDA_RUN_PREFIX} $<TARGET_FILE:es2panda> --plugins=e2p_test_plugin_is
149    "${CMAKE_CURRENT_SOURCE_DIR}/t.sts" > "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_is.out"
150  COMMAND ${CMAKE_COMMAND} -E compare_files
151    "${CMAKE_CURRENT_BINARY_DIR}/e2p_test_plugin_is.out" "${CMAKE_CURRENT_SOURCE_DIR}/e2p_test_plugin_is-expected.txt"
152)
153
154
155add_dependencies(es2panda-plugin-test es2panda e2p_test_plugin e2p_test_plugin_dump_json e2p_test_plugin_ets_src e2p_test_plugin_is)
156add_dependencies(es2panda_tests es2panda-plugin-test)
157