1# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
2# See https://llvm.org/LICENSE.txt for license information.
3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5package(
6    default_visibility = ["//visibility:public"],
7    licenses = ["notice"],
8)
9
10cc_test(
11    name = "ast_tests",
12    size = "medium",
13    srcs = glob(
14        [
15            "AST/*.cpp",
16            "AST/*.h",
17        ],
18        allow_empty = False,
19    ),
20    shard_count = 20,
21    deps = [
22        "//clang:ast",
23        "//clang:ast_matchers",
24        "//clang:basic",
25        "//clang:frontend",
26        "//clang:lex",
27        "//clang:testing",
28        "//clang:tooling",
29        "//llvm:Core",
30        "//llvm:Support",
31        "//llvm:TestingSupport",
32        "//llvm:gmock",
33        "//llvm:gtest",
34        "//llvm:gtest_main",
35    ],
36)
37
38cc_library(
39    name = "ast_matchers_tests_hdrs",
40    testonly = 1,
41    hdrs = glob(
42        ["ASTMatchers/*.h"],
43        allow_empty = False,
44    ),
45    deps = [
46        "//clang:ast_matchers",
47        "//clang:frontend",
48        "//clang:testing",
49        "//clang:tooling",
50        "//llvm:gtest",
51    ],
52)
53
54cc_test(
55    name = "ast_matchers_tests",
56    size = "medium",
57    srcs = glob(
58        ["ASTMatchers/*.cpp"],
59        allow_empty = False,
60    ),
61    shard_count = 20,
62    deps = [
63        ":ast_matchers_tests_hdrs",
64        "//clang:ast",
65        "//clang:ast_matchers",
66        "//clang:frontend",
67        "//clang:tooling",
68        "//llvm:Support",
69        "//llvm:TestingSupport",
70        "//llvm:gtest",
71        "//llvm:gtest_main",
72    ],
73)
74
75cc_test(
76    name = "ast_matchers_dynamic_tests",
77    size = "small",
78    srcs = glob(
79        ["ASTMatchers/Dynamic/*.cpp"],
80        allow_empty = False,
81    ),
82    deps = [
83        ":ast_matchers_tests_hdrs",
84        "//clang:ast_matchers",
85        "//clang:ast_matchers_dynamic",
86        "//clang:frontend",
87        "//clang:tooling",
88        "//llvm:Support",
89        "//llvm:gtest",
90        "//llvm:gtest_main",
91    ],
92)
93
94cc_test(
95    name = "analysis_tests",
96    size = "small",
97    srcs = glob(
98        [
99            "Analysis/*.cpp",
100            "Analysis/*.h",
101        ],
102        allow_empty = False,
103    ),
104    deps = [
105        "//clang:analysis",
106        "//clang:ast",
107        "//clang:ast_matchers",
108        "//clang:basic",
109        "//clang:lex",
110        "//clang:parse",
111        "//clang:tooling",
112        "//llvm:Support",
113        "//llvm:gmock",
114        "//llvm:gtest",
115        "//llvm:gtest_main",
116    ],
117)
118
119cc_test(
120    name = "basic_tests",
121    size = "small",
122    srcs = glob(
123        ["Basic/*.cpp"],
124        allow_empty = False,
125    ),
126    deps = [
127        "//clang:basic",
128        "//clang:frontend",
129        "//clang:lex",
130        "//llvm:Support",
131        "//llvm:config",
132        "//llvm:gmock",
133        "//llvm:gtest",
134        "//llvm:gtest_main",
135    ],
136)
137
138cc_test(
139    name = "codegen_tests",
140    size = "small",
141    srcs = glob(
142        [
143            "CodeGen/*.cpp",
144            "CodeGen/*.h",
145        ],
146        allow_empty = False,
147    ),
148    deps = [
149        "//clang:ast",
150        "//clang:basic",
151        "//clang:codegen",
152        "//clang:frontend",
153        "//clang:lex",
154        "//clang:parse",
155        "//clang:sema",
156        "//llvm:Core",
157        "//llvm:Support",
158        "//llvm:gtest",
159        "//llvm:gtest_main",
160    ],
161)
162
163cc_test(
164    name = "format_tests",
165    size = "medium",
166    srcs = glob(
167        [
168            "Format/*.cpp",
169            "Format/*.h",
170            "Tooling/*.h",
171        ],
172        allow_empty = False,
173    ),
174    copts = ["$(STACK_FRAME_UNLIMITED)"],
175    shard_count = 20,
176    deps = [
177        "//clang:basic",
178        "//clang:format",
179        "//clang:frontend",
180        "//clang:tooling_core",
181        "//llvm:Support",
182        "//llvm:gtest",
183        "//llvm:gtest_main",
184    ],
185)
186
187cc_test(
188    name = "frontend_tests",
189    size = "small",
190    srcs = glob(
191        ["Frontend/*.cpp"],
192        allow_empty = False,
193    ),
194    deps = [
195        "//clang:ast",
196        "//clang:basic",
197        "//clang:codegen",
198        "//clang:driver_options_inc_gen",
199        "//clang:frontend",
200        "//clang:frontend_tool",
201        "//clang:lex",
202        "//clang:sema",
203        "//clang:serialization",
204        "//llvm:Support",
205        "//llvm:gmock",
206        "//llvm:gtest",
207        "//llvm:gtest_main",
208    ],
209)
210
211cc_test(
212    name = "lex_tests",
213    size = "small",
214    srcs = glob(
215        [
216            "Lex/*.cpp",
217            "Lex/*.h",
218        ],
219        allow_empty = False,
220    ),
221    copts = ["$(STACK_FRAME_UNLIMITED)"],
222    deps = [
223        "//clang:ast",
224        "//clang:basic",
225        "//clang:lex",
226        "//clang:parse",
227        "//clang:sema",
228        "//clang:serialization",
229        "//llvm:Support",
230        "//llvm:gmock",
231        "//llvm:gtest",
232        "//llvm:gtest_main",
233    ],
234)
235
236# A library to carefully expose the tooling headers using the include prefix
237# expected by the `rename_tests`.
238cc_library(
239    name = "rename_tests_tooling_hdrs",
240    testonly = 1,
241    hdrs = glob(
242        ["Tooling/*.h"],
243        allow_empty = False,
244    ),
245    include_prefix = "unittests",
246    deps = [
247        "//clang:ast",
248        "//clang:basic",
249        "//clang:frontend",
250        "//clang:rewrite",
251        "//clang:tooling",
252        "//clang:tooling_core",
253        "//llvm:Support",
254        "//llvm:gtest",
255    ],
256)
257
258cc_test(
259    name = "rename_tests",
260    size = "small",
261    timeout = "moderate",
262    srcs = glob(
263        [
264            "Rename/*.cpp",
265            "Rename/*.h",
266        ],
267        allow_empty = False,
268    ),
269    shard_count = 20,
270    deps = [
271        ":rename_tests_tooling_hdrs",
272        "//clang:ast_matchers",
273        "//clang:basic",
274        "//clang:format",
275        "//clang:frontend",
276        "//clang:tooling",
277        "//clang:tooling_refactoring",
278        "//llvm:Support",
279        "//llvm:gtest",
280        "//llvm:gtest_main",
281    ],
282)
283
284cc_test(
285    name = "rewrite_tests",
286    size = "small",
287    srcs = glob(
288        ["Rewrite/*.cpp"],
289        allow_empty = False,
290    ),
291    deps = [
292        "//clang:rewrite",
293        "//clang:tooling",
294        "//llvm:gtest",
295        "//llvm:gtest_main",
296    ],
297)
298
299cc_test(
300    name = "sema_tests",
301    size = "small",
302    srcs = glob(
303        ["Sema/*.cpp"],
304        allow_empty = False,
305    ),
306    deps = [
307        ":ast_matchers_tests_hdrs",
308        "//clang:ast",
309        "//clang:ast_matchers",
310        "//clang:frontend",
311        "//clang:lex",
312        "//clang:parse",
313        "//clang:sema",
314        "//clang:tooling",
315        "//llvm:TestingSupport",
316        "//llvm:gmock",
317        "//llvm:gtest",
318        "//llvm:gtest_main",
319    ],
320)
321
322cc_library(
323    name = "static_analyzer_test_headers",
324    testonly = 1,
325    hdrs = glob(
326        ["StaticAnalyzer/*.h"],
327        allow_empty = False,
328    ),
329    deps = [
330        "//clang:ast_matchers",
331        "//clang:crosstu",
332        "//clang:frontend",
333        "//clang:static_analyzer_core",
334        "//clang:static_analyzer_frontend",
335        "//clang:tooling",
336        "//llvm:gtest",
337    ],
338)
339
340cc_test(
341    name = "static_analyzer_tests",
342    size = "small",
343    srcs = glob(
344        ["StaticAnalyzer/*.cpp"],
345        allow_empty = False,
346        exclude = [
347            # New test has unused-variable warnings.
348            "StaticAnalyzer/ParamRegionTest.cpp",
349        ],
350    ),
351    deps = [
352        ":static_analyzer_test_headers",
353        "//clang:basic",
354        "//clang:frontend",
355        "//clang:static_analyzer_core",
356        "//clang:static_analyzer_frontend",
357        "//clang:tooling",
358        "//llvm:Support",
359        "//llvm:config",
360        "//llvm:gtest",
361        "//llvm:gtest_main",
362    ],
363)
364
365cc_test(
366    name = "tooling_tests",
367    size = "medium",
368    srcs = glob(
369        [
370            "Tooling/*.cpp",
371            "Tooling/*.h",
372        ],
373        allow_empty = False,
374    ),
375    shard_count = 20,
376    deps = [
377        "//clang:ast",
378        "//clang:ast_matchers",
379        "//clang:basic",
380        "//clang:format",
381        "//clang:frontend",
382        "//clang:lex",
383        "//clang:rewrite",
384        "//clang:tooling",
385        "//clang:tooling_core",
386        "//clang:tooling_dependency_scanning",
387        "//clang:tooling_inclusions",
388        "//clang:tooling_refactoring",
389        "//clang:transformer",
390        "//llvm:Support",
391        "//llvm:TestingSupport",
392        "//llvm:gmock",
393        "//llvm:gtest",
394        "//llvm:gtest_main",
395    ],
396)
397
398# A library to carefully expose the tooling headers using the include prefix
399# expected by the `tooling_recursive_ast_visitor_tests`.
400cc_library(
401    name = "tooling_recursive_ast_visitor_tests_tooling_hdrs",
402    testonly = 1,
403    hdrs = glob(
404        ["Tooling/*.h"],
405        allow_empty = False,
406    ),
407    strip_include_prefix = "Tooling",
408    deps = [
409        "//clang:ast",
410        "//clang:basic",
411        "//clang:frontend",
412        "//clang:rewrite",
413        "//clang:tooling",
414        "//clang:tooling_core",
415        "//llvm:Support",
416        "//llvm:gtest",
417    ],
418)
419
420cc_test(
421    name = "tooling_recursive_ast_visitor_tests",
422    size = "medium",
423    srcs = glob(
424        ["Tooling/RecursiveASTVisitorTests/*.cpp"],
425        allow_empty = False,
426    ) + [
427        "Tooling/RecursiveASTVisitorTests/CallbacksCommon.h",
428    ],
429    deps = [
430        ":tooling_recursive_ast_visitor_tests_tooling_hdrs",
431        "//clang:ast",
432        "//clang:basic",
433        "//clang:frontend",
434        "//clang:lex",
435        "//clang:tooling",
436        "//clang:tooling_syntax",
437        "//llvm:Support",
438        "//llvm:TestingSupport",
439        "//llvm:gmock",
440        "//llvm:gtest",
441        "//llvm:gtest_main",
442    ],
443)
444
445cc_test(
446    name = "tooling_syntax_tests",
447    size = "medium",
448    srcs = glob(
449        [
450            "Tooling/Syntax/*.cpp",
451            "Tooling/Syntax/*.h",
452        ],
453        allow_empty = False,
454    ),
455    shard_count = 20,
456    deps = [
457        "//clang:ast",
458        "//clang:basic",
459        "//clang:frontend",
460        "//clang:lex",
461        "//clang:testing",
462        "//clang:tooling",
463        "//clang:tooling_core",
464        "//clang:tooling_syntax",
465        "//llvm:Support",
466        "//llvm:TestingSupport",
467        "//llvm:gmock",
468        "//llvm:gtest",
469        "//llvm:gtest_main",
470    ],
471)
472
473cc_test(
474    name = "libclang_tests",
475    size = "small",
476    srcs = glob(
477        ["libclang/*.cpp"],
478        allow_empty = False,
479    ) + [
480        "libclang/TestUtils.h",
481    ],
482    deps = [
483        "//clang:c-bindings",
484        "//llvm:Support",
485        "//llvm:gtest",
486        "//llvm:gtest_main",
487    ],
488)
489