rj_schema 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +4 -0
  3. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +16 -0
  4. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +141 -0
  5. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +126 -0
  6. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +202 -0
  7. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +40 -0
  8. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +28 -0
  9. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +224 -0
  10. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +333 -0
  11. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +146 -0
  12. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +562 -0
  13. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +3675 -0
  14. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +280 -0
  15. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +132 -0
  16. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +12 -0
  17. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +439 -0
  18. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +628 -0
  19. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +19 -0
  20. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +525 -0
  21. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +3250 -0
  22. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +11 -0
  23. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +439 -0
  24. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +624 -0
  25. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +534 -0
  26. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +3342 -0
  27. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +12 -0
  28. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +439 -0
  29. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +628 -0
  30. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +556 -0
  31. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +3432 -0
  32. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +12 -0
  33. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +439 -0
  34. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +628 -0
  35. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +1205 -0
  36. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +147 -0
  37. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +2377 -0
  38. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +794 -0
  39. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +1095 -0
  40. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +291 -0
  41. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +2179 -0
  42. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +672 -0
  43. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +397 -0
  44. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +161 -0
  45. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +4399 -0
  46. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +246 -0
  47. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +58 -0
  48. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +1847 -0
  49. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +94 -0
  50. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +8 -0
  51. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +10 -0
  52. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +39 -0
  53. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +46 -0
  54. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +279 -0
  55. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +136 -0
  56. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +511 -0
  57. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +91 -0
  58. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +101 -0
  59. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +32 -0
  60. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +191 -0
  61. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +15 -0
  62. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +187 -0
  63. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +201 -0
  64. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +32 -0
  65. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +82 -0
  66. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +19 -0
  67. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +88 -0
  68. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +101 -0
  69. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +32 -0
  70. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +84 -0
  71. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +19 -0
  72. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +90 -0
  73. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +103 -0
  74. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +240 -0
  75. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +203 -0
  76. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +35 -0
  77. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +115 -0
  78. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  79. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +1733 -0
  80. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +227 -0
  81. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +448 -0
  82. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +59 -0
  83. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +287 -0
  84. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +41 -0
  85. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +31 -0
  86. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +303 -0
  87. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +640 -0
  88. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +1387 -0
  89. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +78 -0
  90. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +47 -0
  91. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +156 -0
  92. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +174 -0
  93. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +498 -0
  94. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +823 -0
  95. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +183 -0
  96. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +54 -0
  97. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +1411 -0
  98. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +428 -0
  99. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +1228 -0
  100. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +622 -0
  101. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +127 -0
  102. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +1286 -0
  103. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +699 -0
  104. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +5648 -0
  105. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +708 -0
  106. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +424 -0
  107. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +43 -0
  108. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +2644 -0
  109. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +51 -0
  110. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +81 -0
  111. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +108 -0
  112. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +100 -0
  113. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +40 -0
  114. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +40 -0
  115. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +669 -0
  116. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +180 -0
  117. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +291 -0
  118. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +310 -0
  119. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +322 -0
  120. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +220 -0
  121. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +112 -0
  122. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +157 -0
  123. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +286 -0
  124. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +37 -0
  125. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +28 -0
  126. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +310 -0
  127. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +280 -0
  128. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +242 -0
  129. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +138 -0
  130. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +54 -0
  131. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +38 -0
  132. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +40 -0
  133. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +82 -0
  134. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +88 -0
  135. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +68 -0
  136. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/AdvancedGuide.md +2182 -0
  137. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +126 -0
  138. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +14 -0
  139. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/FAQ.md +1087 -0
  140. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Primer.md +502 -0
  141. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +177 -0
  142. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Samples.md +14 -0
  143. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +2096 -0
  144. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +12 -0
  145. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +886 -0
  146. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +497 -0
  147. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +177 -0
  148. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +93 -0
  149. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +2178 -0
  150. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +14 -0
  151. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +1038 -0
  152. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +501 -0
  153. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +177 -0
  154. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +14 -0
  155. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +93 -0
  156. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +2181 -0
  157. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +14 -0
  158. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +1082 -0
  159. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +501 -0
  160. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +177 -0
  161. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +14 -0
  162. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +93 -0
  163. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +93 -0
  164. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +294 -0
  165. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +250 -0
  166. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +1444 -0
  167. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  168. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +993 -0
  169. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +232 -0
  170. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +179 -0
  171. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +263 -0
  172. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +2236 -0
  173. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +358 -0
  174. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +58 -0
  175. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  176. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  177. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +41 -0
  178. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  179. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  180. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  181. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  182. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  183. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  184. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  185. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  186. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +2554 -0
  187. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +167 -0
  188. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  189. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  190. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  191. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  192. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +363 -0
  193. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +74 -0
  194. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +82 -0
  195. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +45 -0
  196. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +126 -0
  197. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +45 -0
  198. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +126 -0
  199. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +129 -0
  200. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +129 -0
  201. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +164 -0
  202. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +164 -0
  203. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +147 -0
  204. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +147 -0
  205. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +123 -0
  206. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +68 -0
  207. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +43 -0
  208. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +144 -0
  209. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +153 -0
  210. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +56 -0
  211. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +85 -0
  212. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +109 -0
  213. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +172 -0
  214. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +151 -0
  215. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +46 -0
  216. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +53 -0
  217. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +45 -0
  218. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +199 -0
  219. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +224 -0
  220. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +130 -0
  221. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +173 -0
  222. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +160 -0
  223. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +83 -0
  224. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +253 -0
  225. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +730 -0
  226. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +274 -0
  227. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +855 -0
  228. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +158 -0
  229. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +59 -0
  230. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1387 -0
  231. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +78 -0
  232. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +48 -0
  233. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +1342 -0
  234. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +387 -0
  235. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +1183 -0
  236. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +1259 -0
  237. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +373 -0
  238. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +110 -0
  239. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +118 -0
  240. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +5388 -0
  241. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +38 -0
  242. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +93 -0
  243. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +1427 -0
  244. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +662 -0
  245. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +154 -0
  246. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +311 -0
  247. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +159 -0
  248. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +215 -0
  249. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +65 -0
  250. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +1055 -0
  251. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +57 -0
  252. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +1304 -0
  253. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +1635 -0
  254. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +208 -0
  255. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +320 -0
  256. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +45 -0
  257. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +380 -0
  258. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +66 -0
  259. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +341 -0
  260. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +47 -0
  261. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +212 -0
  262. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +88 -0
  263. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +237 -0
  264. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +311 -0
  265. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +130 -0
  266. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +71 -0
  267. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +117 -0
  268. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +126 -0
  269. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +192 -0
  270. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +636 -0
  271. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +140 -0
  272. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +172 -0
  273. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +46 -0
  274. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +207 -0
  275. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +157 -0
  276. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +45 -0
  277. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +56 -0
  278. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +340 -0
  279. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +1062 -0
  280. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +743 -0
  281. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  282. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +127 -0
  283. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +57 -0
  284. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +253 -0
  285. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +325 -0
  286. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +103 -0
  287. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +57 -0
  288. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +256 -0
  289. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +320 -0
  290. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +92 -0
  291. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +171 -0
  292. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +72 -0
  293. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +70 -0
  294. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +43 -0
  295. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +7706 -0
  296. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +49 -0
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +49 -0
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +132 -0
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +308 -0
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +181 -0
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +194 -0
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +36 -0
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +55 -0
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +30 -0
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +17 -0
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +41 -0
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +32 -0
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +18 -0
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +8 -0
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +30 -0
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +28 -0
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +457 -0
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +62 -0
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +63 -0
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +59 -0
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +68 -0
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +65 -0
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +100 -0
  319. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +1135 -0
  320. data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +15 -0
  321. data/ext/rj_schema/rj_schema.cpp +64 -41
  322. data/lib/rj_schema.rb +1 -1
  323. metadata +378 -5
@@ -0,0 +1,103 @@
1
+ // Copyright 2009, Google Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // * Redistributions of source code must retain the above copyright
9
+ // notice, this list of conditions and the following disclaimer.
10
+ // * Redistributions in binary form must reproduce the above
11
+ // copyright notice, this list of conditions and the following disclaimer
12
+ // in the documentation and/or other materials provided with the
13
+ // distribution.
14
+ // * Neither the name of Google Inc. nor the names of its
15
+ // contributors may be used to endorse or promote products derived from
16
+ // this software without specific prior written permission.
17
+ //
18
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ //
30
+ // Author: wan@google.com (Zhanyong Wan)
31
+
32
+ // Verifies that test shuffling works.
33
+
34
+ #include "gtest/gtest.h"
35
+
36
+ namespace {
37
+
38
+ using ::testing::EmptyTestEventListener;
39
+ using ::testing::InitGoogleTest;
40
+ using ::testing::Message;
41
+ using ::testing::Test;
42
+ using ::testing::TestEventListeners;
43
+ using ::testing::TestInfo;
44
+ using ::testing::UnitTest;
45
+ using ::testing::internal::scoped_ptr;
46
+
47
+ // The test methods are empty, as the sole purpose of this program is
48
+ // to print the test names before/after shuffling.
49
+
50
+ class A : public Test {};
51
+ TEST_F(A, A) {}
52
+ TEST_F(A, B) {}
53
+
54
+ TEST(ADeathTest, A) {}
55
+ TEST(ADeathTest, B) {}
56
+ TEST(ADeathTest, C) {}
57
+
58
+ TEST(B, A) {}
59
+ TEST(B, B) {}
60
+ TEST(B, C) {}
61
+ TEST(B, DISABLED_D) {}
62
+ TEST(B, DISABLED_E) {}
63
+
64
+ TEST(BDeathTest, A) {}
65
+ TEST(BDeathTest, B) {}
66
+
67
+ TEST(C, A) {}
68
+ TEST(C, B) {}
69
+ TEST(C, C) {}
70
+ TEST(C, DISABLED_D) {}
71
+
72
+ TEST(CDeathTest, A) {}
73
+
74
+ TEST(DISABLED_D, A) {}
75
+ TEST(DISABLED_D, DISABLED_B) {}
76
+
77
+ // This printer prints the full test names only, starting each test
78
+ // iteration with a "----" marker.
79
+ class TestNamePrinter : public EmptyTestEventListener {
80
+ public:
81
+ virtual void OnTestIterationStart(const UnitTest& /* unit_test */,
82
+ int /* iteration */) {
83
+ printf("----\n");
84
+ }
85
+
86
+ virtual void OnTestStart(const TestInfo& test_info) {
87
+ printf("%s.%s\n", test_info.test_case_name(), test_info.name());
88
+ }
89
+ };
90
+
91
+ } // namespace
92
+
93
+ int main(int argc, char **argv) {
94
+ InitGoogleTest(&argc, argv);
95
+
96
+ // Replaces the default printer with TestNamePrinter, which prints
97
+ // the test name only.
98
+ TestEventListeners& listeners = UnitTest::GetInstance()->listeners();
99
+ delete listeners.Release(listeners.default_result_printer());
100
+ listeners.Append(new TestNamePrinter);
101
+
102
+ return RUN_ALL_TESTS();
103
+ }
@@ -0,0 +1,57 @@
1
+ // Copyright 2008, Google Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // * Redistributions of source code must retain the above copyright
9
+ // notice, this list of conditions and the following disclaimer.
10
+ // * Redistributions in binary form must reproduce the above
11
+ // copyright notice, this list of conditions and the following disclaimer
12
+ // in the documentation and/or other materials provided with the
13
+ // distribution.
14
+ // * Neither the name of Google Inc. nor the names of its
15
+ // contributors may be used to endorse or promote products derived from
16
+ // this software without specific prior written permission.
17
+ //
18
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ //
30
+ // Author: mheule@google.com (Markus Heule)
31
+ //
32
+ // This test verifies that it's possible to use Google Test by including
33
+ // the gtest.h header file alone.
34
+
35
+ #include "gtest/gtest.h"
36
+
37
+ namespace {
38
+
39
+ void Subroutine() {
40
+ EXPECT_EQ(42, 42);
41
+ }
42
+
43
+ TEST(NoFatalFailureTest, ExpectNoFatalFailure) {
44
+ EXPECT_NO_FATAL_FAILURE(;);
45
+ EXPECT_NO_FATAL_FAILURE(SUCCEED());
46
+ EXPECT_NO_FATAL_FAILURE(Subroutine());
47
+ EXPECT_NO_FATAL_FAILURE({ SUCCEED(); });
48
+ }
49
+
50
+ TEST(NoFatalFailureTest, AssertNoFatalFailure) {
51
+ ASSERT_NO_FATAL_FAILURE(;);
52
+ ASSERT_NO_FATAL_FAILURE(SUCCEED());
53
+ ASSERT_NO_FATAL_FAILURE(Subroutine());
54
+ ASSERT_NO_FATAL_FAILURE({ SUCCEED(); });
55
+ }
56
+
57
+ } // namespace
@@ -0,0 +1,256 @@
1
+ // Copyright 2007, Google Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // * Redistributions of source code must retain the above copyright
9
+ // notice, this list of conditions and the following disclaimer.
10
+ // * Redistributions in binary form must reproduce the above
11
+ // copyright notice, this list of conditions and the following disclaimer
12
+ // in the documentation and/or other materials provided with the
13
+ // distribution.
14
+ // * Neither the name of Google Inc. nor the names of its
15
+ // contributors may be used to endorse or promote products derived from
16
+ // this software without specific prior written permission.
17
+ //
18
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ //
30
+ // Author: wan@google.com (Zhanyong Wan)
31
+
32
+ // Tests that SCOPED_TRACE() and various Google Test assertions can be
33
+ // used in a large number of threads concurrently.
34
+
35
+ #include "gtest/gtest.h"
36
+
37
+ #include <iostream>
38
+ #include <vector>
39
+
40
+ // We must define this macro in order to #include
41
+ // gtest-internal-inl.h. This is how Google Test prevents a user from
42
+ // accidentally depending on its internal implementation.
43
+ #define GTEST_IMPLEMENTATION_ 1
44
+ #include "src/gtest-internal-inl.h"
45
+ #undef GTEST_IMPLEMENTATION_
46
+
47
+ #if GTEST_IS_THREADSAFE
48
+
49
+ namespace testing {
50
+ namespace {
51
+
52
+ using internal::Notification;
53
+ using internal::TestPropertyKeyIs;
54
+ using internal::ThreadWithParam;
55
+ using internal::scoped_ptr;
56
+
57
+ // In order to run tests in this file, for platforms where Google Test is
58
+ // thread safe, implement ThreadWithParam. See the description of its API
59
+ // in gtest-port.h, where it is defined for already supported platforms.
60
+
61
+ // How many threads to create?
62
+ const int kThreadCount = 50;
63
+
64
+ std::string IdToKey(int id, const char* suffix) {
65
+ Message key;
66
+ key << "key_" << id << "_" << suffix;
67
+ return key.GetString();
68
+ }
69
+
70
+ std::string IdToString(int id) {
71
+ Message id_message;
72
+ id_message << id;
73
+ return id_message.GetString();
74
+ }
75
+
76
+ void ExpectKeyAndValueWereRecordedForId(
77
+ const std::vector<TestProperty>& properties,
78
+ int id, const char* suffix) {
79
+ TestPropertyKeyIs matches_key(IdToKey(id, suffix).c_str());
80
+ const std::vector<TestProperty>::const_iterator property =
81
+ std::find_if(properties.begin(), properties.end(), matches_key);
82
+ ASSERT_TRUE(property != properties.end())
83
+ << "expecting " << suffix << " value for id " << id;
84
+ EXPECT_STREQ(IdToString(id).c_str(), property->value());
85
+ }
86
+
87
+ // Calls a large number of Google Test assertions, where exactly one of them
88
+ // will fail.
89
+ void ManyAsserts(int id) {
90
+ GTEST_LOG_(INFO) << "Thread #" << id << " running...";
91
+
92
+ SCOPED_TRACE(Message() << "Thread #" << id);
93
+
94
+ for (int i = 0; i < kThreadCount; i++) {
95
+ SCOPED_TRACE(Message() << "Iteration #" << i);
96
+
97
+ // A bunch of assertions that should succeed.
98
+ EXPECT_TRUE(true);
99
+ ASSERT_FALSE(false) << "This shouldn't fail.";
100
+ EXPECT_STREQ("a", "a");
101
+ ASSERT_LE(5, 6);
102
+ EXPECT_EQ(i, i) << "This shouldn't fail.";
103
+
104
+ // RecordProperty() should interact safely with other threads as well.
105
+ // The shared_key forces property updates.
106
+ Test::RecordProperty(IdToKey(id, "string").c_str(), IdToString(id).c_str());
107
+ Test::RecordProperty(IdToKey(id, "int").c_str(), id);
108
+ Test::RecordProperty("shared_key", IdToString(id).c_str());
109
+
110
+ // This assertion should fail kThreadCount times per thread. It
111
+ // is for testing whether Google Test can handle failed assertions in a
112
+ // multi-threaded context.
113
+ EXPECT_LT(i, 0) << "This should always fail.";
114
+ }
115
+ }
116
+
117
+ void CheckTestFailureCount(int expected_failures) {
118
+ const TestInfo* const info = UnitTest::GetInstance()->current_test_info();
119
+ const TestResult* const result = info->result();
120
+ GTEST_CHECK_(expected_failures == result->total_part_count())
121
+ << "Logged " << result->total_part_count() << " failures "
122
+ << " vs. " << expected_failures << " expected";
123
+ }
124
+
125
+ // Tests using SCOPED_TRACE() and Google Test assertions in many threads
126
+ // concurrently.
127
+ TEST(StressTest, CanUseScopedTraceAndAssertionsInManyThreads) {
128
+ {
129
+ scoped_ptr<ThreadWithParam<int> > threads[kThreadCount];
130
+ Notification threads_can_start;
131
+ for (int i = 0; i != kThreadCount; i++)
132
+ threads[i].reset(new ThreadWithParam<int>(&ManyAsserts,
133
+ i,
134
+ &threads_can_start));
135
+
136
+ threads_can_start.Notify();
137
+
138
+ // Blocks until all the threads are done.
139
+ for (int i = 0; i != kThreadCount; i++)
140
+ threads[i]->Join();
141
+ }
142
+
143
+ // Ensures that kThreadCount*kThreadCount failures have been reported.
144
+ const TestInfo* const info = UnitTest::GetInstance()->current_test_info();
145
+ const TestResult* const result = info->result();
146
+
147
+ std::vector<TestProperty> properties;
148
+ // We have no access to the TestResult's list of properties but we can
149
+ // copy them one by one.
150
+ for (int i = 0; i < result->test_property_count(); ++i)
151
+ properties.push_back(result->GetTestProperty(i));
152
+
153
+ EXPECT_EQ(kThreadCount * 2 + 1, result->test_property_count())
154
+ << "String and int values recorded on each thread, "
155
+ << "as well as one shared_key";
156
+ for (int i = 0; i < kThreadCount; ++i) {
157
+ ExpectKeyAndValueWereRecordedForId(properties, i, "string");
158
+ ExpectKeyAndValueWereRecordedForId(properties, i, "int");
159
+ }
160
+ CheckTestFailureCount(kThreadCount*kThreadCount);
161
+ }
162
+
163
+ void FailingThread(bool is_fatal) {
164
+ if (is_fatal)
165
+ FAIL() << "Fatal failure in some other thread. "
166
+ << "(This failure is expected.)";
167
+ else
168
+ ADD_FAILURE() << "Non-fatal failure in some other thread. "
169
+ << "(This failure is expected.)";
170
+ }
171
+
172
+ void GenerateFatalFailureInAnotherThread(bool is_fatal) {
173
+ ThreadWithParam<bool> thread(&FailingThread, is_fatal, NULL);
174
+ thread.Join();
175
+ }
176
+
177
+ TEST(NoFatalFailureTest, ExpectNoFatalFailureIgnoresFailuresInOtherThreads) {
178
+ EXPECT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true));
179
+ // We should only have one failure (the one from
180
+ // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE
181
+ // should succeed.
182
+ CheckTestFailureCount(1);
183
+ }
184
+
185
+ void AssertNoFatalFailureIgnoresFailuresInOtherThreads() {
186
+ ASSERT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true));
187
+ }
188
+ TEST(NoFatalFailureTest, AssertNoFatalFailureIgnoresFailuresInOtherThreads) {
189
+ // Using a subroutine, to make sure, that the test continues.
190
+ AssertNoFatalFailureIgnoresFailuresInOtherThreads();
191
+ // We should only have one failure (the one from
192
+ // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE
193
+ // should succeed.
194
+ CheckTestFailureCount(1);
195
+ }
196
+
197
+ TEST(FatalFailureTest, ExpectFatalFailureIgnoresFailuresInOtherThreads) {
198
+ // This statement should fail, since the current thread doesn't generate a
199
+ // fatal failure, only another one does.
200
+ EXPECT_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true), "expected");
201
+ CheckTestFailureCount(2);
202
+ }
203
+
204
+ TEST(FatalFailureOnAllThreadsTest, ExpectFatalFailureOnAllThreads) {
205
+ // This statement should succeed, because failures in all threads are
206
+ // considered.
207
+ EXPECT_FATAL_FAILURE_ON_ALL_THREADS(
208
+ GenerateFatalFailureInAnotherThread(true), "expected");
209
+ CheckTestFailureCount(0);
210
+ // We need to add a failure, because main() checks that there are failures.
211
+ // But when only this test is run, we shouldn't have any failures.
212
+ ADD_FAILURE() << "This is an expected non-fatal failure.";
213
+ }
214
+
215
+ TEST(NonFatalFailureTest, ExpectNonFatalFailureIgnoresFailuresInOtherThreads) {
216
+ // This statement should fail, since the current thread doesn't generate a
217
+ // fatal failure, only another one does.
218
+ EXPECT_NONFATAL_FAILURE(GenerateFatalFailureInAnotherThread(false),
219
+ "expected");
220
+ CheckTestFailureCount(2);
221
+ }
222
+
223
+ TEST(NonFatalFailureOnAllThreadsTest, ExpectNonFatalFailureOnAllThreads) {
224
+ // This statement should succeed, because failures in all threads are
225
+ // considered.
226
+ EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(
227
+ GenerateFatalFailureInAnotherThread(false), "expected");
228
+ CheckTestFailureCount(0);
229
+ // We need to add a failure, because main() checks that there are failures,
230
+ // But when only this test is run, we shouldn't have any failures.
231
+ ADD_FAILURE() << "This is an expected non-fatal failure.";
232
+ }
233
+
234
+ } // namespace
235
+ } // namespace testing
236
+
237
+ int main(int argc, char **argv) {
238
+ testing::InitGoogleTest(&argc, argv);
239
+
240
+ const int result = RUN_ALL_TESTS(); // Expected to fail.
241
+ GTEST_CHECK_(result == 1) << "RUN_ALL_TESTS() did not fail as expected";
242
+
243
+ printf("\nPASS\n");
244
+ return 0;
245
+ }
246
+
247
+ #else
248
+ TEST(StressTest,
249
+ DISABLED_ThreadSafetyTestsAreSkippedWhenGoogleTestIsNotThreadSafe) {
250
+ }
251
+
252
+ int main(int argc, char **argv) {
253
+ testing::InitGoogleTest(&argc, argv);
254
+ return RUN_ALL_TESTS();
255
+ }
256
+ #endif // GTEST_IS_THREADSAFE
@@ -0,0 +1,320 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright 2006, Google Inc.
4
+ # All rights reserved.
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions are
8
+ # met:
9
+ #
10
+ # * Redistributions of source code must retain the above copyright
11
+ # notice, this list of conditions and the following disclaimer.
12
+ # * Redistributions in binary form must reproduce the above
13
+ # copyright notice, this list of conditions and the following disclaimer
14
+ # in the documentation and/or other materials provided with the
15
+ # distribution.
16
+ # * Neither the name of Google Inc. nor the names of its
17
+ # contributors may be used to endorse or promote products derived from
18
+ # this software without specific prior written permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ """Unit test utilities for Google C++ Testing Framework."""
33
+
34
+ __author__ = 'wan@google.com (Zhanyong Wan)'
35
+
36
+ import atexit
37
+ import os
38
+ import shutil
39
+ import sys
40
+ import tempfile
41
+ import unittest
42
+ _test_module = unittest
43
+
44
+ # Suppresses the 'Import not at the top of the file' lint complaint.
45
+ # pylint: disable-msg=C6204
46
+ try:
47
+ import subprocess
48
+ _SUBPROCESS_MODULE_AVAILABLE = True
49
+ except:
50
+ import popen2
51
+ _SUBPROCESS_MODULE_AVAILABLE = False
52
+ # pylint: enable-msg=C6204
53
+
54
+ GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT'
55
+
56
+ IS_WINDOWS = os.name == 'nt'
57
+ IS_CYGWIN = os.name == 'posix' and 'CYGWIN' in os.uname()[0]
58
+
59
+ # The environment variable for specifying the path to the premature-exit file.
60
+ PREMATURE_EXIT_FILE_ENV_VAR = 'TEST_PREMATURE_EXIT_FILE'
61
+
62
+ environ = os.environ.copy()
63
+
64
+
65
+ def SetEnvVar(env_var, value):
66
+ """Sets/unsets an environment variable to a given value."""
67
+
68
+ if value is not None:
69
+ environ[env_var] = value
70
+ elif env_var in environ:
71
+ del environ[env_var]
72
+
73
+
74
+ # Here we expose a class from a particular module, depending on the
75
+ # environment. The comment suppresses the 'Invalid variable name' lint
76
+ # complaint.
77
+ TestCase = _test_module.TestCase # pylint: disable-msg=C6409
78
+
79
+ # Initially maps a flag to its default value. After
80
+ # _ParseAndStripGTestFlags() is called, maps a flag to its actual value.
81
+ _flag_map = {'source_dir': os.path.dirname(sys.argv[0]),
82
+ 'build_dir': os.path.dirname(sys.argv[0])}
83
+ _gtest_flags_are_parsed = False
84
+
85
+
86
+ def _ParseAndStripGTestFlags(argv):
87
+ """Parses and strips Google Test flags from argv. This is idempotent."""
88
+
89
+ # Suppresses the lint complaint about a global variable since we need it
90
+ # here to maintain module-wide state.
91
+ global _gtest_flags_are_parsed # pylint: disable-msg=W0603
92
+ if _gtest_flags_are_parsed:
93
+ return
94
+
95
+ _gtest_flags_are_parsed = True
96
+ for flag in _flag_map:
97
+ # The environment variable overrides the default value.
98
+ if flag.upper() in os.environ:
99
+ _flag_map[flag] = os.environ[flag.upper()]
100
+
101
+ # The command line flag overrides the environment variable.
102
+ i = 1 # Skips the program name.
103
+ while i < len(argv):
104
+ prefix = '--' + flag + '='
105
+ if argv[i].startswith(prefix):
106
+ _flag_map[flag] = argv[i][len(prefix):]
107
+ del argv[i]
108
+ break
109
+ else:
110
+ # We don't increment i in case we just found a --gtest_* flag
111
+ # and removed it from argv.
112
+ i += 1
113
+
114
+
115
+ def GetFlag(flag):
116
+ """Returns the value of the given flag."""
117
+
118
+ # In case GetFlag() is called before Main(), we always call
119
+ # _ParseAndStripGTestFlags() here to make sure the --gtest_* flags
120
+ # are parsed.
121
+ _ParseAndStripGTestFlags(sys.argv)
122
+
123
+ return _flag_map[flag]
124
+
125
+
126
+ def GetSourceDir():
127
+ """Returns the absolute path of the directory where the .py files are."""
128
+
129
+ return os.path.abspath(GetFlag('source_dir'))
130
+
131
+
132
+ def GetBuildDir():
133
+ """Returns the absolute path of the directory where the test binaries are."""
134
+
135
+ return os.path.abspath(GetFlag('build_dir'))
136
+
137
+
138
+ _temp_dir = None
139
+
140
+ def _RemoveTempDir():
141
+ if _temp_dir:
142
+ shutil.rmtree(_temp_dir, ignore_errors=True)
143
+
144
+ atexit.register(_RemoveTempDir)
145
+
146
+
147
+ def GetTempDir():
148
+ """Returns a directory for temporary files."""
149
+
150
+ global _temp_dir
151
+ if not _temp_dir:
152
+ _temp_dir = tempfile.mkdtemp()
153
+ return _temp_dir
154
+
155
+
156
+ def GetTestExecutablePath(executable_name, build_dir=None):
157
+ """Returns the absolute path of the test binary given its name.
158
+
159
+ The function will print a message and abort the program if the resulting file
160
+ doesn't exist.
161
+
162
+ Args:
163
+ executable_name: name of the test binary that the test script runs.
164
+ build_dir: directory where to look for executables, by default
165
+ the result of GetBuildDir().
166
+
167
+ Returns:
168
+ The absolute path of the test binary.
169
+ """
170
+
171
+ path = os.path.abspath(os.path.join(build_dir or GetBuildDir(),
172
+ executable_name))
173
+ if (IS_WINDOWS or IS_CYGWIN) and not path.endswith('.exe'):
174
+ path += '.exe'
175
+
176
+ if not os.path.exists(path):
177
+ message = (
178
+ 'Unable to find the test binary "%s". Please make sure to provide\n'
179
+ 'a path to the binary via the --build_dir flag or the BUILD_DIR\n'
180
+ 'environment variable.' % path)
181
+ sys.stdout.write(message)
182
+ sys.exit(1)
183
+
184
+ return path
185
+
186
+
187
+ def GetExitStatus(exit_code):
188
+ """Returns the argument to exit(), or -1 if exit() wasn't called.
189
+
190
+ Args:
191
+ exit_code: the result value of os.system(command).
192
+ """
193
+
194
+ if os.name == 'nt':
195
+ # On Windows, os.WEXITSTATUS() doesn't work and os.system() returns
196
+ # the argument to exit() directly.
197
+ return exit_code
198
+ else:
199
+ # On Unix, os.WEXITSTATUS() must be used to extract the exit status
200
+ # from the result of os.system().
201
+ if os.WIFEXITED(exit_code):
202
+ return os.WEXITSTATUS(exit_code)
203
+ else:
204
+ return -1
205
+
206
+
207
+ class Subprocess:
208
+ def __init__(self, command, working_dir=None, capture_stderr=True, env=None):
209
+ """Changes into a specified directory, if provided, and executes a command.
210
+
211
+ Restores the old directory afterwards.
212
+
213
+ Args:
214
+ command: The command to run, in the form of sys.argv.
215
+ working_dir: The directory to change into.
216
+ capture_stderr: Determines whether to capture stderr in the output member
217
+ or to discard it.
218
+ env: Dictionary with environment to pass to the subprocess.
219
+
220
+ Returns:
221
+ An object that represents outcome of the executed process. It has the
222
+ following attributes:
223
+ terminated_by_signal True iff the child process has been terminated
224
+ by a signal.
225
+ signal Sygnal that terminated the child process.
226
+ exited True iff the child process exited normally.
227
+ exit_code The code with which the child process exited.
228
+ output Child process's stdout and stderr output
229
+ combined in a string.
230
+ """
231
+
232
+ # The subprocess module is the preferrable way of running programs
233
+ # since it is available and behaves consistently on all platforms,
234
+ # including Windows. But it is only available starting in python 2.4.
235
+ # In earlier python versions, we revert to the popen2 module, which is
236
+ # available in python 2.0 and later but doesn't provide required
237
+ # functionality (Popen4) under Windows. This allows us to support Mac
238
+ # OS X 10.4 Tiger, which has python 2.3 installed.
239
+ if _SUBPROCESS_MODULE_AVAILABLE:
240
+ if capture_stderr:
241
+ stderr = subprocess.STDOUT
242
+ else:
243
+ stderr = subprocess.PIPE
244
+
245
+ p = subprocess.Popen(command,
246
+ stdout=subprocess.PIPE, stderr=stderr,
247
+ cwd=working_dir, universal_newlines=True, env=env)
248
+ # communicate returns a tuple with the file obect for the child's
249
+ # output.
250
+ self.output = p.communicate()[0]
251
+ self._return_code = p.returncode
252
+ else:
253
+ old_dir = os.getcwd()
254
+
255
+ def _ReplaceEnvDict(dest, src):
256
+ # Changes made by os.environ.clear are not inheritable by child
257
+ # processes until Python 2.6. To produce inheritable changes we have
258
+ # to delete environment items with the del statement.
259
+ for key in dest.keys():
260
+ del dest[key]
261
+ dest.update(src)
262
+
263
+ # When 'env' is not None, backup the environment variables and replace
264
+ # them with the passed 'env'. When 'env' is None, we simply use the
265
+ # current 'os.environ' for compatibility with the subprocess.Popen
266
+ # semantics used above.
267
+ if env is not None:
268
+ old_environ = os.environ.copy()
269
+ _ReplaceEnvDict(os.environ, env)
270
+
271
+ try:
272
+ if working_dir is not None:
273
+ os.chdir(working_dir)
274
+ if capture_stderr:
275
+ p = popen2.Popen4(command)
276
+ else:
277
+ p = popen2.Popen3(command)
278
+ p.tochild.close()
279
+ self.output = p.fromchild.read()
280
+ ret_code = p.wait()
281
+ finally:
282
+ os.chdir(old_dir)
283
+
284
+ # Restore the old environment variables
285
+ # if they were replaced.
286
+ if env is not None:
287
+ _ReplaceEnvDict(os.environ, old_environ)
288
+
289
+ # Converts ret_code to match the semantics of
290
+ # subprocess.Popen.returncode.
291
+ if os.WIFSIGNALED(ret_code):
292
+ self._return_code = -os.WTERMSIG(ret_code)
293
+ else: # os.WIFEXITED(ret_code) should return True here.
294
+ self._return_code = os.WEXITSTATUS(ret_code)
295
+
296
+ if self._return_code < 0:
297
+ self.terminated_by_signal = True
298
+ self.exited = False
299
+ self.signal = -self._return_code
300
+ else:
301
+ self.terminated_by_signal = False
302
+ self.exited = True
303
+ self.exit_code = self._return_code
304
+
305
+
306
+ def Main():
307
+ """Runs the unit test."""
308
+
309
+ # We must call _ParseAndStripGTestFlags() before calling
310
+ # unittest.main(). Otherwise the latter will be confused by the
311
+ # --gtest_* flags.
312
+ _ParseAndStripGTestFlags(sys.argv)
313
+ # The tested binaries should not be writing XML output files unless the
314
+ # script explicitly instructs them to.
315
+ # TODO(vladl@google.com): Move this into Subprocess when we implement
316
+ # passing environment into it as a parameter.
317
+ if GTEST_OUTPUT_VAR_NAME in os.environ:
318
+ del os.environ[GTEST_OUTPUT_VAR_NAME]
319
+
320
+ _test_module.main()