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# Author: misterg@google.com (Gennadiy Civil)
32#
33# Bazel BUILD for The Google C++ Testing Framework (Google Test)
34
35licenses(["notice"])
36
37config_setting(
38    name = "windows",
39    values = {"cpu": "x64_windows"},
40)
41
42config_setting(
43    name = "windows_msvc",
44    values = {"cpu": "x64_windows_msvc"},
45)
46
47config_setting(
48    name = "has_absl",
49    values = {"define": "absl=1"},
50)
51
52#on windows exclude gtest-tuple.h and googletest-tuple-test.cc
53cc_test(
54    name = "gtest_all_test",
55    size = "small",
56    srcs = glob(
57        include = [
58            "gtest-*.cc",
59            "googletest-*.cc",
60            "*.h",
61            "googletest/include/gtest/**/*.h",
62        ],
63        exclude = [
64            "gtest-unittest-api_test.cc",
65            "googletest-tuple-test.cc",
66            "googletest/src/gtest-all.cc",
67            "gtest_all_test.cc",
68            "gtest-death-test_ex_test.cc",
69            "gtest-listener_test.cc",
70            "gtest-unittest-api_test.cc",
71            "googletest-param-test-test.cc",
72            "googletest-catch-exceptions-test_.cc",
73            "googletest-color-test_.cc",
74            "googletest-env-var-test_.cc",
75            "googletest-filter-unittest_.cc",
76            "googletest-break-on-failure-unittest_.cc",
77             "googletest-listener-test.cc",
78             "googletest-output-test_.cc",
79             "googletest-list-tests-unittest_.cc",
80             "googletest-shuffle-test_.cc",
81             "googletest-uninitialized-test_.cc",
82             "googletest-death-test_ex_test.cc",
83             "googletest-param-test-test",
84             "googletest-throw-on-failure-test_.cc",
85             "googletest-param-test-invalid-name1-test_.cc",
86             "googletest-param-test-invalid-name2-test_.cc",
87
88        ],
89    ) + select({
90        "//:windows": [],
91        "//:windows_msvc": [],
92        "//conditions:default": [
93            "googletest-tuple-test.cc",
94        ],
95    }),
96    copts = select({
97        "//:windows": ["-DGTEST_USE_OWN_TR1_TUPLE=0"],
98        "//:windows_msvc": ["-DGTEST_USE_OWN_TR1_TUPLE=0"],
99        "//conditions:default": ["-DGTEST_USE_OWN_TR1_TUPLE=1"],
100    }),
101    includes = [
102        "googletest",
103        "googletest/include",
104        "googletest/include/internal",
105        "googletest/test",
106    ],
107    linkopts = select({
108        "//:windows": [],
109        "//:windows_msvc": [],
110        "//conditions:default": [
111            "-pthread",
112        ],
113    }),
114    deps = ["//:gtest_main"],
115)
116
117
118# Tests death tests.
119cc_test(
120    name = "googletest-death-test-test",
121    size = "medium",
122    srcs = ["googletest-death-test-test.cc"],
123    deps = ["//:gtest_main"],
124)
125
126cc_test(
127    name = "gtest_test_macro_stack_footprint_test",
128    size = "small",
129    srcs = ["gtest_test_macro_stack_footprint_test.cc"],
130    deps = ["//:gtest"],
131)
132
133#These googletest tests have their own main()
134cc_test(
135    name = "googletest-listener-test",
136    size = "small",
137    srcs = ["googletest-listener-test.cc"],
138    deps = ["//:gtest_main"],
139)
140
141cc_test(
142    name = "gtest-unittest-api_test",
143    size = "small",
144    srcs = [
145        "gtest-unittest-api_test.cc",
146    ],
147    deps = [
148        "//:gtest",
149    ],
150)
151
152cc_test(
153    name = "googletest-param-test-test",
154    size = "small",
155    srcs = [
156        "googletest-param-test-test.cc",
157        "googletest-param-test-test.h",
158        "googletest-param-test2-test.cc",
159    ],
160    deps = ["//:gtest"],
161)
162
163cc_test(
164    name = "gtest_unittest",
165    size = "small",
166    srcs = ["gtest_unittest.cc"],
167    args = ["--heap_check=strict"],
168    shard_count = 2,
169    deps = ["//:gtest_main"],
170)
171
172#  Py tests
173
174py_library(
175    name = "gtest_test_utils",
176    testonly = 1,
177    srcs = ["gtest_test_utils.py"],
178)
179
180cc_binary(
181    name = "gtest_help_test_",
182    testonly = 1,
183    srcs = ["gtest_help_test_.cc"],
184    deps = ["//:gtest_main"],
185)
186
187py_test(
188    name = "gtest_help_test",
189    size = "small",
190    srcs = ["gtest_help_test.py"],
191    data = [":gtest_help_test_"],
192    deps = [":gtest_test_utils"],
193)
194
195cc_binary(
196    name = "googletest-output-test_",
197    testonly = 1,
198    srcs = ["googletest-output-test_.cc"],
199    deps = ["//:gtest"],
200)
201
202
203py_test(
204    name = "googletest-output-test",
205    size = "small",
206    srcs = ["googletest-output-test.py"],
207    args = select({
208        ":has_absl": [],
209        "//conditions:default": ["--no_stacktrace_support"],
210    }),
211    data = [
212        "googletest-output-test-golden-lin.txt",
213        ":googletest-output-test_",
214    ],
215    deps = [":gtest_test_utils"],
216)
217
218cc_binary(
219    name = "googletest-color-test_",
220    testonly = 1,
221    srcs = ["googletest-color-test_.cc"],
222    deps = ["//:gtest"],
223)
224
225py_test(
226    name = "googletest-color-test",
227    size = "small",
228    srcs = ["googletest-color-test.py"],
229    data = [":googletest-color-test_"],
230    deps = [":gtest_test_utils"],
231)
232
233cc_binary(
234    name = "googletest-env-var-test_",
235    testonly = 1,
236    srcs = ["googletest-env-var-test_.cc"],
237    deps = ["//:gtest"],
238)
239
240py_test(
241    name = "googletest-env-var-test",
242    size = "medium",
243    srcs = ["googletest-env-var-test.py"],
244    data = [":googletest-env-var-test_"],
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
263
264cc_binary(
265    name = "googletest-break-on-failure-unittest_",
266    testonly = 1,
267    srcs = ["googletest-break-on-failure-unittest_.cc"],
268    deps = ["//:gtest"],
269)
270
271
272
273py_test(
274    name = "googletest-break-on-failure-unittest",
275    size = "small",
276    srcs = ["googletest-break-on-failure-unittest.py"],
277    data = [":googletest-break-on-failure-unittest_"],
278    deps = [":gtest_test_utils"],
279)
280
281
282cc_test(
283    name = "gtest_assert_by_exception_test",
284    size = "small",
285    srcs = ["gtest_assert_by_exception_test.cc"],
286    deps = ["//:gtest"],
287)
288
289
290
291cc_binary(
292    name = "googletest-throw-on-failure-test_",
293    testonly = 1,
294    srcs = ["googletest-throw-on-failure-test_.cc"],
295    deps = ["//:gtest"],
296)
297
298py_test(
299    name = "googletest-throw-on-failure-test",
300    size = "small",
301    srcs = ["googletest-throw-on-failure-test.py"],
302    data = [":googletest-throw-on-failure-test_"],
303    deps = [":gtest_test_utils"],
304)
305
306
307cc_binary(
308    name = "googletest-list-tests-unittest_",
309    testonly = 1,
310    srcs = ["googletest-list-tests-unittest_.cc"],
311    deps = ["//:gtest"],
312)
313
314cc_test(
315    name = "gtest_skip_in_environment_setup_test",
316    size = "small",
317    srcs = ["gtest_skip_in_environment_setup_test.cc"],
318    deps = ["//:gtest_main"],
319)
320
321py_test(
322    name = "googletest-list-tests-unittest",
323    size = "small",
324    srcs = ["googletest-list-tests-unittest.py"],
325    data = [":googletest-list-tests-unittest_"],
326    deps = [":gtest_test_utils"],
327)
328
329cc_binary(
330    name = "googletest-shuffle-test_",
331    srcs = ["googletest-shuffle-test_.cc"],
332    deps = ["//:gtest"],
333)
334
335py_test(
336    name = "googletest-shuffle-test",
337    size = "small",
338    srcs = ["googletest-shuffle-test.py"],
339    data = [":googletest-shuffle-test_"],
340    deps = [":gtest_test_utils"],
341)
342
343cc_binary(
344    name = "googletest-catch-exceptions-no-ex-test_",
345    testonly = 1,
346    srcs = ["googletest-catch-exceptions-test_.cc"],
347    deps = ["//:gtest_main"],
348)
349
350cc_binary(
351    name = "googletest-catch-exceptions-ex-test_",
352    testonly = 1,
353    srcs = ["googletest-catch-exceptions-test_.cc"],
354    copts = ["-fexceptions"],
355    deps = ["//:gtest_main"],
356)
357
358py_test(
359    name = "googletest-catch-exceptions-test",
360    size = "small",
361    srcs = ["googletest-catch-exceptions-test.py"],
362    data = [
363        ":googletest-catch-exceptions-ex-test_",
364        ":googletest-catch-exceptions-no-ex-test_",
365    ],
366    deps = [":gtest_test_utils"],
367)
368
369cc_binary(
370    name = "gtest_xml_output_unittest_",
371    testonly = 1,
372    srcs = ["gtest_xml_output_unittest_.cc"],
373    deps = ["//:gtest"],
374)
375
376cc_test(
377    name = "gtest_no_test_unittest",
378    size = "small",
379    srcs = ["gtest_no_test_unittest.cc"],
380    deps = ["//:gtest"],
381)
382
383py_test(
384    name = "gtest_xml_output_unittest",
385    size = "small",
386    srcs = [
387        "gtest_xml_output_unittest.py",
388        "gtest_xml_test_utils.py",
389    ],
390    args = select({
391        ":has_absl": [],
392        "//conditions:default": ["--no_stacktrace_support"],
393    }),
394    data = [
395        # We invoke gtest_no_test_unittest to verify the XML output
396        # when the test program contains no test definition.
397        ":gtest_no_test_unittest",
398        ":gtest_xml_output_unittest_",
399    ],
400    deps = [":gtest_test_utils"],
401)
402
403cc_binary(
404    name = "gtest_xml_outfile1_test_",
405    testonly = 1,
406    srcs = ["gtest_xml_outfile1_test_.cc"],
407    deps = ["//:gtest_main"],
408)
409
410cc_binary(
411    name = "gtest_xml_outfile2_test_",
412    testonly = 1,
413    srcs = ["gtest_xml_outfile2_test_.cc"],
414    deps = ["//:gtest_main"],
415)
416
417py_test(
418    name = "gtest_xml_outfiles_test",
419    size = "small",
420    srcs = [
421        "gtest_xml_outfiles_test.py",
422        "gtest_xml_test_utils.py",
423    ],
424    data = [
425        ":gtest_xml_outfile1_test_",
426        ":gtest_xml_outfile2_test_",
427    ],
428    deps = [":gtest_test_utils"],
429)
430
431cc_binary(
432    name = "googletest-uninitialized-test_",
433    testonly = 1,
434    srcs = ["googletest-uninitialized-test_.cc"],
435    deps = ["//:gtest"],
436)
437
438py_test(
439    name = "googletest-uninitialized-test",
440    size = "medium",
441    srcs = ["googletest-uninitialized-test.py"],
442    data = ["googletest-uninitialized-test_"],
443    deps = [":gtest_test_utils"],
444)
445
446cc_binary(
447    name = "gtest_testbridge_test_",
448    testonly = 1,
449    srcs = ["gtest_testbridge_test_.cc"],
450    deps = ["//:gtest_main"],
451)
452
453# Tests that filtering via testbridge works
454py_test(
455    name = "gtest_testbridge_test",
456    size = "small",
457    srcs = ["gtest_testbridge_test.py"],
458    data = [":gtest_testbridge_test_"],
459    deps = [":gtest_test_utils"],
460)
461
462
463py_test(
464    name = "googletest-json-outfiles-test",
465    size = "small",
466    srcs = [
467        "googletest-json-outfiles-test.py",
468        "gtest_json_test_utils.py",
469    ],
470    data = [
471        ":gtest_xml_outfile1_test_",
472        ":gtest_xml_outfile2_test_",
473    ],
474    deps = [":gtest_test_utils"],
475)
476
477py_test(
478    name = "googletest-json-output-unittest",
479    size = "medium",
480    srcs = [
481        "googletest-json-output-unittest.py",
482        "gtest_json_test_utils.py",
483    ],
484    data = [
485        # We invoke gtest_no_test_unittest to verify the JSON output
486        # when the test program contains no test definition.
487        ":gtest_no_test_unittest",
488        ":gtest_xml_output_unittest_",
489    ],
490    args = select({
491        ":has_absl": [],
492        "//conditions:default": ["--no_stacktrace_support"],
493    }),
494    deps = [":gtest_test_utils"],
495)
496# Verifies interaction of death tests and exceptions.
497cc_test(
498    name = "googletest-death-test_ex_catch_test",
499    size = "medium",
500    srcs = ["googletest-death-test_ex_test.cc"],
501    copts = ["-fexceptions"],
502    defines = ["GTEST_ENABLE_CATCH_EXCEPTIONS_=1"],
503    deps = ["//:gtest"],
504)
505
506cc_binary(
507    name = "googletest-param-test-invalid-name1-test_",
508    testonly = 1,
509    srcs = ["googletest-param-test-invalid-name1-test_.cc"],
510    deps = ["//:gtest"],
511)
512
513cc_binary(
514    name = "googletest-param-test-invalid-name2-test_",
515    testonly = 1,
516    srcs = ["googletest-param-test-invalid-name2-test_.cc"],
517    deps = ["//:gtest"],
518)
519
520py_test(
521    name = "googletest-param-test-invalid-name1-test",
522    size = "small",
523    srcs = ["googletest-param-test-invalid-name1-test.py"],
524    data = [":googletest-param-test-invalid-name1-test_"],
525    deps = [":gtest_test_utils"],
526)
527
528py_test(
529    name = "googletest-param-test-invalid-name2-test",
530    size = "small",
531    srcs = ["googletest-param-test-invalid-name2-test.py"],
532    data = [":googletest-param-test-invalid-name2-test_"],
533    deps = [":gtest_test_utils"],
534)
535