rj_schema 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,640 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Copyright 2008, 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
+ """Converts compiler's errors in code using Google Mock to plain English."""
33
+
34
+ __author__ = 'wan@google.com (Zhanyong Wan)'
35
+
36
+ import re
37
+ import sys
38
+
39
+ _VERSION = '1.0.3'
40
+
41
+ _EMAIL = 'googlemock@googlegroups.com'
42
+
43
+ _COMMON_GMOCK_SYMBOLS = [
44
+ # Matchers
45
+ '_',
46
+ 'A',
47
+ 'AddressSatisfies',
48
+ 'AllOf',
49
+ 'An',
50
+ 'AnyOf',
51
+ 'ContainerEq',
52
+ 'Contains',
53
+ 'ContainsRegex',
54
+ 'DoubleEq',
55
+ 'ElementsAre',
56
+ 'ElementsAreArray',
57
+ 'EndsWith',
58
+ 'Eq',
59
+ 'Field',
60
+ 'FloatEq',
61
+ 'Ge',
62
+ 'Gt',
63
+ 'HasSubstr',
64
+ 'IsInitializedProto',
65
+ 'Le',
66
+ 'Lt',
67
+ 'MatcherCast',
68
+ 'Matches',
69
+ 'MatchesRegex',
70
+ 'NanSensitiveDoubleEq',
71
+ 'NanSensitiveFloatEq',
72
+ 'Ne',
73
+ 'Not',
74
+ 'NotNull',
75
+ 'Pointee',
76
+ 'Property',
77
+ 'Ref',
78
+ 'ResultOf',
79
+ 'SafeMatcherCast',
80
+ 'StartsWith',
81
+ 'StrCaseEq',
82
+ 'StrCaseNe',
83
+ 'StrEq',
84
+ 'StrNe',
85
+ 'Truly',
86
+ 'TypedEq',
87
+ 'Value',
88
+
89
+ # Actions
90
+ 'Assign',
91
+ 'ByRef',
92
+ 'DeleteArg',
93
+ 'DoAll',
94
+ 'DoDefault',
95
+ 'IgnoreResult',
96
+ 'Invoke',
97
+ 'InvokeArgument',
98
+ 'InvokeWithoutArgs',
99
+ 'Return',
100
+ 'ReturnNew',
101
+ 'ReturnNull',
102
+ 'ReturnRef',
103
+ 'SaveArg',
104
+ 'SetArgReferee',
105
+ 'SetArgPointee',
106
+ 'SetArgumentPointee',
107
+ 'SetArrayArgument',
108
+ 'SetErrnoAndReturn',
109
+ 'Throw',
110
+ 'WithArg',
111
+ 'WithArgs',
112
+ 'WithoutArgs',
113
+
114
+ # Cardinalities
115
+ 'AnyNumber',
116
+ 'AtLeast',
117
+ 'AtMost',
118
+ 'Between',
119
+ 'Exactly',
120
+
121
+ # Sequences
122
+ 'InSequence',
123
+ 'Sequence',
124
+
125
+ # Misc
126
+ 'DefaultValue',
127
+ 'Mock',
128
+ ]
129
+
130
+ # Regex for matching source file path and line number in the compiler's errors.
131
+ _GCC_FILE_LINE_RE = r'(?P<file>.*):(?P<line>\d+):(\d+:)?\s+'
132
+ _CLANG_FILE_LINE_RE = r'(?P<file>.*):(?P<line>\d+):(?P<column>\d+):\s+'
133
+ _CLANG_NON_GMOCK_FILE_LINE_RE = (
134
+ r'(?P<file>.*[/\\^](?!gmock-)[^/\\]+):(?P<line>\d+):(?P<column>\d+):\s+')
135
+
136
+
137
+ def _FindAllMatches(regex, s):
138
+ """Generates all matches of regex in string s."""
139
+
140
+ r = re.compile(regex)
141
+ return r.finditer(s)
142
+
143
+
144
+ def _GenericDiagnoser(short_name, long_name, diagnoses, msg):
145
+ """Diagnoses the given disease by pattern matching.
146
+
147
+ Can provide different diagnoses for different patterns.
148
+
149
+ Args:
150
+ short_name: Short name of the disease.
151
+ long_name: Long name of the disease.
152
+ diagnoses: A list of pairs (regex, pattern for formatting the diagnosis
153
+ for matching regex).
154
+ msg: Compiler's error messages.
155
+ Yields:
156
+ Tuples of the form
157
+ (short name of disease, long name of disease, diagnosis).
158
+ """
159
+ for regex, diagnosis in diagnoses:
160
+ if re.search(regex, msg):
161
+ diagnosis = '%(file)s:%(line)s:' + diagnosis
162
+ for m in _FindAllMatches(regex, msg):
163
+ yield (short_name, long_name, diagnosis % m.groupdict())
164
+
165
+
166
+ def _NeedToReturnReferenceDiagnoser(msg):
167
+ """Diagnoses the NRR disease, given the error messages by the compiler."""
168
+
169
+ gcc_regex = (r'In member function \'testing::internal::ReturnAction<R>.*\n'
170
+ + _GCC_FILE_LINE_RE + r'instantiated from here\n'
171
+ r'.*gmock-actions\.h.*error: creating array with negative size')
172
+ clang_regex = (r'error:.*array.*negative.*\r?\n'
173
+ r'(.*\n)*?' +
174
+ _CLANG_NON_GMOCK_FILE_LINE_RE +
175
+ r'note: in instantiation of function template specialization '
176
+ r'\'testing::internal::ReturnAction<(?P<type>.*)>'
177
+ r'::operator Action<.*>\' requested here')
178
+ clang11_re = (r'use_ReturnRef_instead_of_Return_to_return_a_reference.*'
179
+ r'(.*\n)*?' + _CLANG_NON_GMOCK_FILE_LINE_RE)
180
+
181
+ diagnosis = """
182
+ You are using a Return() action in a function that returns a reference to
183
+ %(type)s. Please use ReturnRef() instead."""
184
+ return _GenericDiagnoser('NRR', 'Need to Return Reference',
185
+ [(clang_regex, diagnosis),
186
+ (clang11_re, diagnosis % {'type': 'a type'}),
187
+ (gcc_regex, diagnosis % {'type': 'a type'})],
188
+ msg)
189
+
190
+
191
+ def _NeedToReturnSomethingDiagnoser(msg):
192
+ """Diagnoses the NRS disease, given the error messages by the compiler."""
193
+
194
+ gcc_regex = (_GCC_FILE_LINE_RE + r'(instantiated from here\n.'
195
+ r'*gmock.*actions\.h.*error: void value not ignored)'
196
+ r'|(error: control reaches end of non-void function)')
197
+ clang_regex1 = (_CLANG_FILE_LINE_RE +
198
+ r'error: cannot initialize return object '
199
+ r'of type \'Result\' \(aka \'(?P<return_type>.*)\'\) '
200
+ r'with an rvalue of type \'void\'')
201
+ clang_regex2 = (_CLANG_FILE_LINE_RE +
202
+ r'error: cannot initialize return object '
203
+ r'of type \'(?P<return_type>.*)\' '
204
+ r'with an rvalue of type \'void\'')
205
+ diagnosis = """
206
+ You are using an action that returns void, but it needs to return
207
+ %(return_type)s. Please tell it *what* to return. Perhaps you can use
208
+ the pattern DoAll(some_action, Return(some_value))?"""
209
+ return _GenericDiagnoser(
210
+ 'NRS',
211
+ 'Need to Return Something',
212
+ [(gcc_regex, diagnosis % {'return_type': '*something*'}),
213
+ (clang_regex1, diagnosis),
214
+ (clang_regex2, diagnosis)],
215
+ msg)
216
+
217
+
218
+ def _NeedToReturnNothingDiagnoser(msg):
219
+ """Diagnoses the NRN disease, given the error messages by the compiler."""
220
+
221
+ gcc_regex = (_GCC_FILE_LINE_RE + r'instantiated from here\n'
222
+ r'.*gmock-actions\.h.*error: instantiation of '
223
+ r'\'testing::internal::ReturnAction<R>::Impl<F>::value_\' '
224
+ r'as type \'void\'')
225
+ clang_regex1 = (r'error: field has incomplete type '
226
+ r'\'Result\' \(aka \'void\'\)(\r)?\n'
227
+ r'(.*\n)*?' +
228
+ _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
229
+ r'of function template specialization '
230
+ r'\'testing::internal::ReturnAction<(?P<return_type>.*)>'
231
+ r'::operator Action<void \(.*\)>\' requested here')
232
+ clang_regex2 = (r'error: field has incomplete type '
233
+ r'\'Result\' \(aka \'void\'\)(\r)?\n'
234
+ r'(.*\n)*?' +
235
+ _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
236
+ r'of function template specialization '
237
+ r'\'testing::internal::DoBothAction<.*>'
238
+ r'::operator Action<(?P<return_type>.*) \(.*\)>\' '
239
+ r'requested here')
240
+ diagnosis = """
241
+ You are using an action that returns %(return_type)s, but it needs to return
242
+ void. Please use a void-returning action instead.
243
+
244
+ All actions but the last in DoAll(...) must return void. Perhaps you need
245
+ to re-arrange the order of actions in a DoAll(), if you are using one?"""
246
+ return _GenericDiagnoser(
247
+ 'NRN',
248
+ 'Need to Return Nothing',
249
+ [(gcc_regex, diagnosis % {'return_type': '*something*'}),
250
+ (clang_regex1, diagnosis),
251
+ (clang_regex2, diagnosis)],
252
+ msg)
253
+
254
+
255
+ def _IncompleteByReferenceArgumentDiagnoser(msg):
256
+ """Diagnoses the IBRA disease, given the error messages by the compiler."""
257
+
258
+ gcc_regex = (_GCC_FILE_LINE_RE + r'instantiated from here\n'
259
+ r'.*gtest-printers\.h.*error: invalid application of '
260
+ r'\'sizeof\' to incomplete type \'(?P<type>.*)\'')
261
+
262
+ clang_regex = (r'.*gtest-printers\.h.*error: invalid application of '
263
+ r'\'sizeof\' to an incomplete type '
264
+ r'\'(?P<type>.*)( const)?\'\r?\n'
265
+ r'(.*\n)*?' +
266
+ _CLANG_NON_GMOCK_FILE_LINE_RE +
267
+ r'note: in instantiation of member function '
268
+ r'\'testing::internal2::TypeWithoutFormatter<.*>::'
269
+ r'PrintValue\' requested here')
270
+ diagnosis = """
271
+ In order to mock this function, Google Mock needs to see the definition
272
+ of type "%(type)s" - declaration alone is not enough. Either #include
273
+ the header that defines it, or change the argument to be passed
274
+ by pointer."""
275
+
276
+ return _GenericDiagnoser('IBRA', 'Incomplete By-Reference Argument Type',
277
+ [(gcc_regex, diagnosis),
278
+ (clang_regex, diagnosis)],
279
+ msg)
280
+
281
+
282
+ def _OverloadedFunctionMatcherDiagnoser(msg):
283
+ """Diagnoses the OFM disease, given the error messages by the compiler."""
284
+
285
+ gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for '
286
+ r'call to \'Truly\(<unresolved overloaded function type>\)')
287
+ clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching function for '
288
+ r'call to \'Truly')
289
+ diagnosis = """
290
+ The argument you gave to Truly() is an overloaded function. Please tell
291
+ your compiler which overloaded version you want to use.
292
+
293
+ For example, if you want to use the version whose signature is
294
+ bool Foo(int n);
295
+ you should write
296
+ Truly(static_cast<bool (*)(int n)>(Foo))"""
297
+ return _GenericDiagnoser('OFM', 'Overloaded Function Matcher',
298
+ [(gcc_regex, diagnosis),
299
+ (clang_regex, diagnosis)],
300
+ msg)
301
+
302
+
303
+ def _OverloadedFunctionActionDiagnoser(msg):
304
+ """Diagnoses the OFA disease, given the error messages by the compiler."""
305
+
306
+ gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for call to '
307
+ r'\'Invoke\(<unresolved overloaded function type>')
308
+ clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching '
309
+ r'function for call to \'Invoke\'\r?\n'
310
+ r'(.*\n)*?'
311
+ r'.*\bgmock-generated-actions\.h:\d+:\d+:\s+'
312
+ r'note: candidate template ignored:\s+'
313
+ r'couldn\'t infer template argument \'FunctionImpl\'')
314
+ diagnosis = """
315
+ Function you are passing to Invoke is overloaded. Please tell your compiler
316
+ which overloaded version you want to use.
317
+
318
+ For example, if you want to use the version whose signature is
319
+ bool MyFunction(int n, double x);
320
+ you should write something like
321
+ Invoke(static_cast<bool (*)(int n, double x)>(MyFunction))"""
322
+ return _GenericDiagnoser('OFA', 'Overloaded Function Action',
323
+ [(gcc_regex, diagnosis),
324
+ (clang_regex, diagnosis)],
325
+ msg)
326
+
327
+
328
+ def _OverloadedMethodActionDiagnoser(msg):
329
+ """Diagnoses the OMA disease, given the error messages by the compiler."""
330
+
331
+ gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for '
332
+ r'call to \'Invoke\(.+, <unresolved overloaded function '
333
+ r'type>\)')
334
+ clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching function '
335
+ r'for call to \'Invoke\'\r?\n'
336
+ r'(.*\n)*?'
337
+ r'.*\bgmock-generated-actions\.h:\d+:\d+: '
338
+ r'note: candidate function template not viable: '
339
+ r'requires .*, but 2 (arguments )?were provided')
340
+ diagnosis = """
341
+ The second argument you gave to Invoke() is an overloaded method. Please
342
+ tell your compiler which overloaded version you want to use.
343
+
344
+ For example, if you want to use the version whose signature is
345
+ class Foo {
346
+ ...
347
+ bool Bar(int n, double x);
348
+ };
349
+ you should write something like
350
+ Invoke(foo, static_cast<bool (Foo::*)(int n, double x)>(&Foo::Bar))"""
351
+ return _GenericDiagnoser('OMA', 'Overloaded Method Action',
352
+ [(gcc_regex, diagnosis),
353
+ (clang_regex, diagnosis)],
354
+ msg)
355
+
356
+
357
+ def _MockObjectPointerDiagnoser(msg):
358
+ """Diagnoses the MOP disease, given the error messages by the compiler."""
359
+
360
+ gcc_regex = (_GCC_FILE_LINE_RE + r'error: request for member '
361
+ r'\'gmock_(?P<method>.+)\' in \'(?P<mock_object>.+)\', '
362
+ r'which is of non-class type \'(.*::)*(?P<class_name>.+)\*\'')
363
+ clang_regex = (_CLANG_FILE_LINE_RE + r'error: member reference type '
364
+ r'\'(?P<class_name>.*?) *\' is a pointer; '
365
+ r'(did you mean|maybe you meant) to use \'->\'\?')
366
+ diagnosis = """
367
+ The first argument to ON_CALL() and EXPECT_CALL() must be a mock *object*,
368
+ not a *pointer* to it. Please write '*(%(mock_object)s)' instead of
369
+ '%(mock_object)s' as your first argument.
370
+
371
+ For example, given the mock class:
372
+
373
+ class %(class_name)s : public ... {
374
+ ...
375
+ MOCK_METHOD0(%(method)s, ...);
376
+ };
377
+
378
+ and the following mock instance:
379
+
380
+ %(class_name)s* mock_ptr = ...
381
+
382
+ you should use the EXPECT_CALL like this:
383
+
384
+ EXPECT_CALL(*mock_ptr, %(method)s(...));"""
385
+
386
+ return _GenericDiagnoser(
387
+ 'MOP',
388
+ 'Mock Object Pointer',
389
+ [(gcc_regex, diagnosis),
390
+ (clang_regex, diagnosis % {'mock_object': 'mock_object',
391
+ 'method': 'method',
392
+ 'class_name': '%(class_name)s'})],
393
+ msg)
394
+
395
+
396
+ def _NeedToUseSymbolDiagnoser(msg):
397
+ """Diagnoses the NUS disease, given the error messages by the compiler."""
398
+
399
+ gcc_regex = (_GCC_FILE_LINE_RE + r'error: \'(?P<symbol>.+)\' '
400
+ r'(was not declared in this scope|has not been declared)')
401
+ clang_regex = (_CLANG_FILE_LINE_RE +
402
+ r'error: (use of undeclared identifier|unknown type name|'
403
+ r'no template named) \'(?P<symbol>[^\']+)\'')
404
+ diagnosis = """
405
+ '%(symbol)s' is defined by Google Mock in the testing namespace.
406
+ Did you forget to write
407
+ using testing::%(symbol)s;
408
+ ?"""
409
+ for m in (list(_FindAllMatches(gcc_regex, msg)) +
410
+ list(_FindAllMatches(clang_regex, msg))):
411
+ symbol = m.groupdict()['symbol']
412
+ if symbol in _COMMON_GMOCK_SYMBOLS:
413
+ yield ('NUS', 'Need to Use Symbol', diagnosis % m.groupdict())
414
+
415
+
416
+ def _NeedToUseReturnNullDiagnoser(msg):
417
+ """Diagnoses the NRNULL disease, given the error messages by the compiler."""
418
+
419
+ gcc_regex = ('instantiated from \'testing::internal::ReturnAction<R>'
420
+ '::operator testing::Action<Func>\(\) const.*\n' +
421
+ _GCC_FILE_LINE_RE + r'instantiated from here\n'
422
+ r'.*error: no matching function for call to \'ImplicitCast_\('
423
+ r'(:?long )?int&\)')
424
+ clang_regex = (r'\bgmock-actions.h:.* error: no matching function for '
425
+ r'call to \'ImplicitCast_\'\r?\n'
426
+ r'(.*\n)*?' +
427
+ _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
428
+ r'of function template specialization '
429
+ r'\'testing::internal::ReturnAction<(int|long)>::operator '
430
+ r'Action<(?P<type>.*)\(\)>\' requested here')
431
+ diagnosis = """
432
+ You are probably calling Return(NULL) and the compiler isn't sure how to turn
433
+ NULL into %(type)s. Use ReturnNull() instead.
434
+ Note: the line number may be off; please fix all instances of Return(NULL)."""
435
+ return _GenericDiagnoser(
436
+ 'NRNULL', 'Need to use ReturnNull',
437
+ [(clang_regex, diagnosis),
438
+ (gcc_regex, diagnosis % {'type': 'the right type'})],
439
+ msg)
440
+
441
+
442
+ def _TypeInTemplatedBaseDiagnoser(msg):
443
+ """Diagnoses the TTB disease, given the error messages by the compiler."""
444
+
445
+ # This version works when the type is used as the mock function's return
446
+ # type.
447
+ gcc_4_3_1_regex_type_in_retval = (
448
+ r'In member function \'int .*\n' + _GCC_FILE_LINE_RE +
449
+ r'error: a function call cannot appear in a constant-expression')
450
+ gcc_4_4_0_regex_type_in_retval = (
451
+ r'error: a function call cannot appear in a constant-expression'
452
+ + _GCC_FILE_LINE_RE + r'error: template argument 1 is invalid\n')
453
+ # This version works when the type is used as the mock function's sole
454
+ # parameter type.
455
+ gcc_regex_type_of_sole_param = (
456
+ _GCC_FILE_LINE_RE +
457
+ r'error: \'(?P<type>.+)\' was not declared in this scope\n'
458
+ r'.*error: template argument 1 is invalid\n')
459
+ # This version works when the type is used as a parameter of a mock
460
+ # function that has multiple parameters.
461
+ gcc_regex_type_of_a_param = (
462
+ r'error: expected `;\' before \'::\' token\n'
463
+ + _GCC_FILE_LINE_RE +
464
+ r'error: \'(?P<type>.+)\' was not declared in this scope\n'
465
+ r'.*error: template argument 1 is invalid\n'
466
+ r'.*error: \'.+\' was not declared in this scope')
467
+ clang_regex_type_of_retval_or_sole_param = (
468
+ _CLANG_FILE_LINE_RE +
469
+ r'error: use of undeclared identifier \'(?P<type>.*)\'\n'
470
+ r'(.*\n)*?'
471
+ r'(?P=file):(?P=line):\d+: error: '
472
+ r'non-friend class member \'Result\' cannot have a qualified name'
473
+ )
474
+ clang_regex_type_of_a_param = (
475
+ _CLANG_FILE_LINE_RE +
476
+ r'error: C\+\+ requires a type specifier for all declarations\n'
477
+ r'(.*\n)*?'
478
+ r'(?P=file):(?P=line):(?P=column): error: '
479
+ r'C\+\+ requires a type specifier for all declarations'
480
+ )
481
+ clang_regex_unknown_type = (
482
+ _CLANG_FILE_LINE_RE +
483
+ r'error: unknown type name \'(?P<type>[^\']+)\''
484
+ )
485
+
486
+ diagnosis = """
487
+ In a mock class template, types or typedefs defined in the base class
488
+ template are *not* automatically visible. This is how C++ works. Before
489
+ you can use a type or typedef named %(type)s defined in base class Base<T>, you
490
+ need to make it visible. One way to do it is:
491
+
492
+ typedef typename Base<T>::%(type)s %(type)s;"""
493
+
494
+ for diag in _GenericDiagnoser(
495
+ 'TTB', 'Type in Template Base',
496
+ [(gcc_4_3_1_regex_type_in_retval, diagnosis % {'type': 'Foo'}),
497
+ (gcc_4_4_0_regex_type_in_retval, diagnosis % {'type': 'Foo'}),
498
+ (gcc_regex_type_of_sole_param, diagnosis),
499
+ (gcc_regex_type_of_a_param, diagnosis),
500
+ (clang_regex_type_of_retval_or_sole_param, diagnosis),
501
+ (clang_regex_type_of_a_param, diagnosis % {'type': 'Foo'})],
502
+ msg):
503
+ yield diag
504
+ # Avoid overlap with the NUS pattern.
505
+ for m in _FindAllMatches(clang_regex_unknown_type, msg):
506
+ type_ = m.groupdict()['type']
507
+ if type_ not in _COMMON_GMOCK_SYMBOLS:
508
+ yield ('TTB', 'Type in Template Base', diagnosis % m.groupdict())
509
+
510
+
511
+ def _WrongMockMethodMacroDiagnoser(msg):
512
+ """Diagnoses the WMM disease, given the error messages by the compiler."""
513
+
514
+ gcc_regex = (_GCC_FILE_LINE_RE +
515
+ r'.*this_method_does_not_take_(?P<wrong_args>\d+)_argument.*\n'
516
+ r'.*\n'
517
+ r'.*candidates are.*FunctionMocker<[^>]+A(?P<args>\d+)\)>')
518
+ clang_regex = (_CLANG_NON_GMOCK_FILE_LINE_RE +
519
+ r'error:.*array.*negative.*r?\n'
520
+ r'(.*\n)*?'
521
+ r'(?P=file):(?P=line):(?P=column): error: too few arguments '
522
+ r'to function call, expected (?P<args>\d+), '
523
+ r'have (?P<wrong_args>\d+)')
524
+ clang11_re = (_CLANG_NON_GMOCK_FILE_LINE_RE +
525
+ r'.*this_method_does_not_take_'
526
+ r'(?P<wrong_args>\d+)_argument.*')
527
+ diagnosis = """
528
+ You are using MOCK_METHOD%(wrong_args)s to define a mock method that has
529
+ %(args)s arguments. Use MOCK_METHOD%(args)s (or MOCK_CONST_METHOD%(args)s,
530
+ MOCK_METHOD%(args)s_T, MOCK_CONST_METHOD%(args)s_T as appropriate) instead."""
531
+ return _GenericDiagnoser('WMM', 'Wrong MOCK_METHODn Macro',
532
+ [(gcc_regex, diagnosis),
533
+ (clang11_re, diagnosis % {'wrong_args': 'm',
534
+ 'args': 'n'}),
535
+ (clang_regex, diagnosis)],
536
+ msg)
537
+
538
+
539
+ def _WrongParenPositionDiagnoser(msg):
540
+ """Diagnoses the WPP disease, given the error messages by the compiler."""
541
+
542
+ gcc_regex = (_GCC_FILE_LINE_RE +
543
+ r'error:.*testing::internal::MockSpec<.* has no member named \''
544
+ r'(?P<method>\w+)\'')
545
+ clang_regex = (_CLANG_NON_GMOCK_FILE_LINE_RE +
546
+ r'error: no member named \'(?P<method>\w+)\' in '
547
+ r'\'testing::internal::MockSpec<.*>\'')
548
+ diagnosis = """
549
+ The closing parenthesis of ON_CALL or EXPECT_CALL should be *before*
550
+ ".%(method)s". For example, you should write:
551
+ EXPECT_CALL(my_mock, Foo(_)).%(method)s(...);
552
+ instead of:
553
+ EXPECT_CALL(my_mock, Foo(_).%(method)s(...));"""
554
+ return _GenericDiagnoser('WPP', 'Wrong Parenthesis Position',
555
+ [(gcc_regex, diagnosis),
556
+ (clang_regex, diagnosis)],
557
+ msg)
558
+
559
+
560
+ _DIAGNOSERS = [
561
+ _IncompleteByReferenceArgumentDiagnoser,
562
+ _MockObjectPointerDiagnoser,
563
+ _NeedToReturnNothingDiagnoser,
564
+ _NeedToReturnReferenceDiagnoser,
565
+ _NeedToReturnSomethingDiagnoser,
566
+ _NeedToUseReturnNullDiagnoser,
567
+ _NeedToUseSymbolDiagnoser,
568
+ _OverloadedFunctionActionDiagnoser,
569
+ _OverloadedFunctionMatcherDiagnoser,
570
+ _OverloadedMethodActionDiagnoser,
571
+ _TypeInTemplatedBaseDiagnoser,
572
+ _WrongMockMethodMacroDiagnoser,
573
+ _WrongParenPositionDiagnoser,
574
+ ]
575
+
576
+
577
+ def Diagnose(msg):
578
+ """Generates all possible diagnoses given the compiler error message."""
579
+
580
+ msg = re.sub(r'\x1b\[[^m]*m', '', msg) # Strips all color formatting.
581
+ # Assuming the string is using the UTF-8 encoding, replaces the left and
582
+ # the right single quote characters with apostrophes.
583
+ msg = re.sub(r'(\xe2\x80\x98|\xe2\x80\x99)', "'", msg)
584
+
585
+ diagnoses = []
586
+ for diagnoser in _DIAGNOSERS:
587
+ for diag in diagnoser(msg):
588
+ diagnosis = '[%s - %s]\n%s' % diag
589
+ if not diagnosis in diagnoses:
590
+ diagnoses.append(diagnosis)
591
+ return diagnoses
592
+
593
+
594
+ def main():
595
+ print ('Google Mock Doctor v%s - '
596
+ 'diagnoses problems in code using Google Mock.' % _VERSION)
597
+
598
+ if sys.stdin.isatty():
599
+ print ('Please copy and paste the compiler errors here. Press c-D when '
600
+ 'you are done:')
601
+ else:
602
+ print ('Waiting for compiler errors on stdin . . .')
603
+
604
+ msg = sys.stdin.read().strip()
605
+ diagnoses = Diagnose(msg)
606
+ count = len(diagnoses)
607
+ if not count:
608
+ print ("""
609
+ Your compiler complained:
610
+ 8<------------------------------------------------------------
611
+ %s
612
+ ------------------------------------------------------------>8
613
+
614
+ Uh-oh, I'm not smart enough to figure out what the problem is. :-(
615
+ However...
616
+ If you send your source code and the compiler's error messages to
617
+ %s, you can be helped and I can get smarter --
618
+ win-win for us!""" % (msg, _EMAIL))
619
+ else:
620
+ print ('------------------------------------------------------------')
621
+ print ('Your code appears to have the following',)
622
+ if count > 1:
623
+ print ('%s diseases:' % (count,))
624
+ else:
625
+ print ('disease:')
626
+ i = 0
627
+ for d in diagnoses:
628
+ i += 1
629
+ if count > 1:
630
+ print ('\n#%s:' % (i,))
631
+ print (d)
632
+ print ("""
633
+ How did I do? If you think I'm wrong or unhelpful, please send your
634
+ source code and the compiler's error messages to %s.
635
+ Then you can be helped and I can get smarter -- I promise I won't be upset!""" %
636
+ _EMAIL)
637
+
638
+
639
+ if __name__ == '__main__':
640
+ main()