BUILD.bazel 16 KB

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