1# Copyright 2017 Google Inc.
2# All Rights Reserved.
3#
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met:
8#
9#     * Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11#     * Redistributions in binary form must reproduce the above
12# copyright notice, this list of conditions and the following disclaimer
13# in the documentation and/or other materials provided with the
14# distribution.
15#     * Neither the name of Google Inc. nor the names of its
16# contributors may be used to endorse or promote products derived from
17# this software without specific prior written permission.
18#
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30#
31# Bazel BUILD for The Google C++ Testing Framework (Google Test)
32
33load("@rules_python//python:defs.bzl", "py_library", "py_test")
34
35licenses(["notice"])
36
37package(default_visibility = ["//:__subpackages__"])
38
39#on windows exclude gtest-tuple.h
40cc_test(
41    name = "gtest_all_test",
42    size = "small",
43    srcs = glob(
44        include = [
45            "gtest-*.cc",
46            "googletest-*.cc",
47            "*.h",
48            "googletest/include/gtest/**/*.h",
49        ],
50        exclude = [
51            "gtest-unittest-api_test.cc",
52            "googletest/src/gtest-all.cc",
53            "gtest_all_test.cc",
54            "gtest-death-test_ex_test.cc",
55            "gtest-listener_test.cc",
56            "gtest-unittest-api_test.cc",
57            "googletest-param-test-test.cc",
58            "googletest-param-test2-test.cc",
59            "googletest-catch-exceptions-test_.cc",
60            "googletest-color-test_.cc",
61            "googletest-env-var-test_.cc",
62            "googletest-failfast-unittest_.cc",
63            "googletest-filter-unittest_.cc",
64            "googletest-global-environment-unittest_.cc",
65            "googletest-break-on-failure-unittest_.cc",
66            "googletest-listener-test.cc",
67            "googletest-output-test_.cc",
68            "googletest-list-tests-unittest_.cc",
69            "googletest-shuffle-test_.cc",
70            "googletest-setuptestsuite-test_.cc",
71            "googletest-uninitialized-test_.cc",
72            "googletest-death-test_ex_test.cc",
73            "googletest-param-test-test",
74            "googletest-throw-on-failure-test_.cc",
75            "googletest-param-test-invalid-name1-test_.cc",
76            "googletest-param-test-invalid-name2-test_.cc",
77        ],
78    ) + select({
79        "//:windows": [],
80        "//conditions:default": [],
81    }),
82    copts = select({
83        "//:windows": ["-DGTEST_USE_OWN_TR1_TUPLE=0"],
84        "//conditions:default": ["-DGTEST_USE_OWN_TR1_TUPLE=1"],
85    }) + select({
86        # Ensure MSVC treats source files as UTF-8 encoded.
87        "//:msvc_compiler": ["-utf-8"],
88        "//conditions:default": [],
89    }),
90    includes = [
91        "googletest",
92        "googletest/include",
93        "googletest/include/internal",
94        "googletest/test",
95    ],
96    linkopts = select({
97        "//:qnx": [],
98        "//:windows": [],
99        "//conditions:default": ["-pthread"],
100    }),
101    deps = ["//:gtest_main"],
102)
103
104# Tests death tests.
105cc_test(
106    name = "googletest-death-test-test",
107    size = "medium",
108    srcs = ["googletest-death-test-test.cc"],
109    deps = ["//:gtest_main"],
110)
111
112cc_test(
113    name = "gtest_test_macro_stack_footprint_test",
114    size = "small",
115    srcs = ["gtest_test_macro_stack_footprint_test.cc"],
116    deps = ["//:gtest"],
117)
118
119#These googletest tests have their own main()
120cc_test(
121    name = "googletest-listener-test",
122    size = "small",
123    srcs = ["googletest-listener-test.cc"],
124    deps = ["//:gtest_main"],
125)
126
127cc_test(
128    name = "gtest-unittest-api_test",
129    size = "small",
130    srcs = [
131        "gtest-unittest-api_test.cc",
132    ],
133    deps = [
134        "//:gtest",
135    ],
136)
137
138cc_test(
139    name = "googletest-param-test-test",
140    size = "small",
141    srcs = [
142        "googletest-param-test-test.cc",
143        "googletest-param-test-test.h",
144        "googletest-param-test2-test.cc",
145    ],
146    deps = ["//:gtest"],
147)
148
149cc_test(
150    name = "gtest_unittest",
151    size = "small",
152    srcs = ["gtest_unittest.cc"],
153    shard_count = 2,
154    deps = ["//:gtest_main"],
155)
156
157#  Py tests
158
159py_library(
160    name = "gtest_test_utils",
161    testonly = 1,
162    srcs = ["gtest_test_utils.py"],
163    imports = ["."],
164)
165
166cc_binary(
167    name = "gtest_help_test_",
168    testonly = 1,
169    srcs = ["gtest_help_test_.cc"],
170    deps = ["//:gtest_main"],
171)
172
173py_test(
174    name = "gtest_help_test",
175    size = "small",
176    srcs = ["gtest_help_test.py"],
177    data = [":gtest_help_test_"],
178    deps = [":gtest_test_utils"],
179)
180
181cc_binary(
182    name = "googletest-output-test_",
183    testonly = 1,
184    srcs = ["googletest-output-test_.cc"],
185    deps = ["//:gtest"],
186)
187
188py_test(
189    name = "googletest-output-test",
190    size = "small",
191    srcs = ["googletest-output-test.py"],
192    args = select({
193        "//:has_absl": [],
194        "//conditions:default": ["--no_stacktrace_support"],
195    }),
196    data = [
197        "googletest-output-test-golden-lin.txt",
198        ":googletest-output-test_",
199    ],
200    deps = [":gtest_test_utils"],
201)
202
203cc_binary(
204    name = "googletest-color-test_",
205    testonly = 1,
206    srcs = ["googletest-color-test_.cc"],
207    deps = ["//:gtest"],
208)
209
210py_test(
211    name = "googletest-color-test",
212    size = "small",
213    srcs = ["googletest-color-test.py"],
214    data = [":googletest-color-test_"],
215    deps = [":gtest_test_utils"],
216)
217
218cc_binary(
219    name = "googletest-env-var-test_",
220    testonly = 1,
221    srcs = ["googletest-env-var-test_.cc"],
222    deps = ["//:gtest"],
223)
224
225py_test(
226    name = "googletest-env-var-test",
227    size = "medium",
228    srcs = ["googletest-env-var-test.py"],
229    data = [":googletest-env-var-test_"],
230    deps = [":gtest_test_utils"],
231)
232
233cc_binary(
234    name = "googletest-failfast-unittest_",
235    testonly = 1,
236    srcs = ["googletest-failfast-unittest_.cc"],
237    deps = ["//:gtest"],
238)
239
240py_test(
241    name = "googletest-failfast-unittest",
242    size = "medium",
243    srcs = ["googletest-failfast-unittest.py"],
244    data = [":googletest-failfast-unittest_"],
245    deps = [":gtest_test_utils"],
246)
247
248cc_binary(
249    name = "googletest-filter-unittest_",
250    testonly = 1,
251    srcs = ["googletest-filter-unittest_.cc"],
252    deps = ["//:gtest"],
253)
254
255py_test(
256    name = "googletest-filter-unittest",
257    size = "medium",
258    srcs = ["googletest-filter-unittest.py"],
259    data = [":googletest-filter-unittest_"],
260    deps = [":gtest_test_utils"],
261)
262
263cc_binary(
264    name = "googletest-global-environment-unittest_",
265    testonly = 1,
266    srcs = ["googletest-global-environment-unittest_.cc"],
267    deps = ["//:gtest"],
268)
269
270py_test(
271    name = "googletest-global-environment-unittest",
272    size = "medium",
273    srcs = ["googletest-global-environment-unittest.py"],
274    data = [":googletest-global-environment-unittest_"],
275    deps = [":gtest_test_utils"],
276)
277
278cc_binary(
279    name = "googletest-break-on-failure-unittest_",
280    testonly = 1,
281    srcs = ["googletest-break-on-failure-unittest_.cc"],
282    deps = ["//:gtest"],
283)
284
285py_test(
286    name = "googletest-break-on-failure-unittest",
287    size = "small",
288    srcs = ["googletest-break-on-failure-unittest.py"],
289    data = [":googletest-break-on-failure-unittest_"],
290    deps = [":gtest_test_utils"],
291)
292
293cc_test(
294    name = "gtest_assert_by_exception_test",
295    size = "small",
296    srcs = ["gtest_assert_by_exception_test.cc"],
297    deps = ["//:gtest"],
298)
299
300cc_binary(
301    name = "googletest-throw-on-failure-test_",
302    testonly = 1,
303    srcs = ["googletest-throw-on-failure-test_.cc"],
304    deps = ["//:gtest"],
305)
306
307py_test(
308    name = "googletest-throw-on-failure-test",
309    size = "small",
310    srcs = ["googletest-throw-on-failure-test.py"],
311    data = [":googletest-throw-on-failure-test_"],
312    deps = [":gtest_test_utils"],
313)
314
315cc_binary(
316    name = "googletest-list-tests-unittest_",
317    testonly = 1,
318    srcs = ["googletest-list-tests-unittest_.cc"],
319    deps = ["//:gtest"],
320)
321
322cc_test(
323    name = "gtest_skip_test",
324    size = "small",
325    srcs = ["gtest_skip_test.cc"],
326    deps = ["//:gtest_main"],
327)
328
329cc_test(
330    name = "gtest_skip_in_environment_setup_test",
331    size = "small",
332    srcs = ["gtest_skip_in_environment_setup_test.cc"],
333    deps = ["//:gtest_main"],
334)
335
336py_test(
337    name = "gtest_skip_check_output_test",
338    size = "small",
339    srcs = ["gtest_skip_check_output_test.py"],
340    data = [":gtest_skip_test"],
341    deps = [":gtest_test_utils"],
342)
343
344py_test(
345    name = "gtest_skip_environment_check_output_test",
346    size = "small",
347    srcs = ["gtest_skip_environment_check_output_test.py"],
348    data = [
349        ":gtest_skip_in_environment_setup_test",
350    ],
351    deps = [":gtest_test_utils"],
352)
353
354py_test(
355    name = "googletest-list-tests-unittest",
356    size = "small",
357    srcs = ["googletest-list-tests-unittest.py"],
358    data = [":googletest-list-tests-unittest_"],
359    deps = [":gtest_test_utils"],
360)
361
362cc_binary(
363    name = "googletest-shuffle-test_",
364    srcs = ["googletest-shuffle-test_.cc"],
365    deps = ["//:gtest"],
366)
367
368py_test(
369    name = "googletest-shuffle-test",
370    size = "small",
371    srcs = ["googletest-shuffle-test.py"],
372    data = [":googletest-shuffle-test_"],
373    deps = [":gtest_test_utils"],
374)
375
376cc_binary(
377    name = "googletest-catch-exceptions-no-ex-test_",
378    testonly = 1,
379    srcs = ["googletest-catch-exceptions-test_.cc"],
380    deps = ["//:gtest_main"],
381)
382
383cc_binary(
384    name = "googletest-catch-exceptions-ex-test_",
385    testonly = 1,
386    srcs = ["googletest-catch-exceptions-test_.cc"],
387    copts = ["-fexceptions"],
388    deps = ["//:gtest_main"],
389)
390
391py_test(
392    name = "googletest-catch-exceptions-test",
393    size = "small",
394    srcs = ["googletest-catch-exceptions-test.py"],
395    data = [
396        ":googletest-catch-exceptions-ex-test_",
397        ":googletest-catch-exceptions-no-ex-test_",
398    ],
399    deps = [":gtest_test_utils"],
400)
401
402cc_binary(
403    name = "gtest_xml_output_unittest_",
404    testonly = 1,
405    srcs = ["gtest_xml_output_unittest_.cc"],
406    deps = ["//:gtest"],
407)
408
409cc_test(
410    name = "gtest_no_test_unittest",
411    size = "small",
412    srcs = ["gtest_no_test_unittest.cc"],
413    deps = ["//:gtest"],
414)
415
416py_test(
417    name = "gtest_xml_output_unittest",
418    size = "small",
419    srcs = [
420        "gtest_xml_output_unittest.py",
421        "gtest_xml_test_utils.py",
422    ],
423    args = select({
424        "//:has_absl": [],
425        "//conditions:default": ["--no_stacktrace_support"],
426    }),
427    data = [
428        # We invoke gtest_no_test_unittest to verify the XML output
429        # when the test program contains no test definition.
430        ":gtest_no_test_unittest",
431        ":gtest_xml_output_unittest_",
432    ],
433    deps = [":gtest_test_utils"],
434)
435
436cc_binary(
437    name = "gtest_xml_outfile1_test_",
438    testonly = 1,
439    srcs = ["gtest_xml_outfile1_test_.cc"],
440    deps = ["//:gtest_main"],
441)
442
443cc_binary(
444    name = "gtest_xml_outfile2_test_",
445    testonly = 1,
446    srcs = ["gtest_xml_outfile2_test_.cc"],
447    deps = ["//:gtest_main"],
448)
449
450py_test(
451    name = "gtest_xml_outfiles_test",
452    size = "small",
453    srcs = [
454        "gtest_xml_outfiles_test.py",
455        "gtest_xml_test_utils.py",
456    ],
457    data = [
458        ":gtest_xml_outfile1_test_",
459        ":gtest_xml_outfile2_test_",
460    ],
461    deps = [":gtest_test_utils"],
462)
463
464cc_binary(
465    name = "googletest-setuptestsuite-test_",
466    testonly = 1,
467    srcs = ["googletest-setuptestsuite-test_.cc"],
468    deps = ["//:gtest_main"],
469)
470
471py_test(
472    name = "googletest-setuptestsuite-test",
473    size = "medium",
474    srcs = ["googletest-setuptestsuite-test.py"],
475    data = [":googletest-setuptestsuite-test_"],
476    deps = [":gtest_test_utils"],
477)
478
479cc_binary(
480    name = "googletest-uninitialized-test_",
481    testonly = 1,
482    srcs = ["googletest-uninitialized-test_.cc"],
483    deps = ["//:gtest"],
484)
485
486py_test(
487    name = "googletest-uninitialized-test",
488    size = "medium",
489    srcs = ["googletest-uninitialized-test.py"],
490    data = ["googletest-uninitialized-test_"],
491    deps = [":gtest_test_utils"],
492)
493
494cc_binary(
495    name = "gtest_testbridge_test_",
496    testonly = 1,
497    srcs = ["gtest_testbridge_test_.cc"],
498    deps = ["//:gtest_main"],
499)
500
501# Tests that filtering via testbridge works
502py_test(
503    name = "gtest_testbridge_test",
504    size = "small",
505    srcs = ["gtest_testbridge_test.py"],
506    data = [":gtest_testbridge_test_"],
507    deps = [":gtest_test_utils"],
508)
509
510py_test(
511    name = "googletest-json-outfiles-test",
512    size = "small",
513    srcs = [
514        "googletest-json-outfiles-test.py",
515        "gtest_json_test_utils.py",
516    ],
517    data = [
518        ":gtest_xml_outfile1_test_",
519        ":gtest_xml_outfile2_test_",
520    ],
521    deps = [":gtest_test_utils"],
522)
523
524py_test(
525    name = "googletest-json-output-unittest",
526    size = "medium",
527    srcs = [
528        "googletest-json-output-unittest.py",
529        "gtest_json_test_utils.py",
530    ],
531    args = select({
532        "//:has_absl": [],
533        "//conditions:default": ["--no_stacktrace_support"],
534    }),
535    data = [
536        # We invoke gtest_no_test_unittest to verify the JSON output
537        # when the test program contains no test definition.
538        ":gtest_no_test_unittest",
539        ":gtest_xml_output_unittest_",
540    ],
541    deps = [":gtest_test_utils"],
542)
543
544# Verifies interaction of death tests and exceptions.
545cc_test(
546    name = "googletest-death-test_ex_catch_test",
547    size = "medium",
548    srcs = ["googletest-death-test_ex_test.cc"],
549    copts = ["-fexceptions"],
550    defines = ["GTEST_ENABLE_CATCH_EXCEPTIONS_=1"],
551    deps = ["//:gtest"],
552)
553
554cc_binary(
555    name = "googletest-param-test-invalid-name1-test_",
556    testonly = 1,
557    srcs = ["googletest-param-test-invalid-name1-test_.cc"],
558    deps = ["//:gtest"],
559)
560
561cc_binary(
562    name = "googletest-param-test-invalid-name2-test_",
563    testonly = 1,
564    srcs = ["googletest-param-test-invalid-name2-test_.cc"],
565    deps = ["//:gtest"],
566)
567
568py_test(
569    name = "googletest-param-test-invalid-name1-test",
570    size = "small",
571    srcs = ["googletest-param-test-invalid-name1-test.py"],
572    data = [":googletest-param-test-invalid-name1-test_"],
573    tags = [
574        "no_test_msvc2015",
575        "no_test_msvc2017",
576    ],
577    deps = [":gtest_test_utils"],
578)
579
580py_test(
581    name = "googletest-param-test-invalid-name2-test",
582    size = "small",
583    srcs = ["googletest-param-test-invalid-name2-test.py"],
584    data = [":googletest-param-test-invalid-name2-test_"],
585    tags = [
586        "no_test_msvc2015",
587        "no_test_msvc2017",
588    ],
589    deps = [":gtest_test_utils"],
590)
591