automerge-rb 0.1.1

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 (481) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +175 -0
  4. data/ext/automerge_ext/automerge_ext.c +1805 -0
  5. data/ext/automerge_ext/extconf.rb +132 -0
  6. data/lib/automerge/version.rb +6 -0
  7. data/lib/automerge.rb +110 -0
  8. data/rust-toolchain.toml +4 -0
  9. data/vendor/automerge-rust/Cargo.lock +1909 -0
  10. data/vendor/automerge-rust/Cargo.toml +15 -0
  11. data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
  12. data/vendor/automerge-rust/automerge/README.md +5 -0
  13. data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
  14. data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
  15. data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
  16. data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
  17. data/vendor/automerge-rust/automerge/examples/README.md +7 -0
  18. data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
  19. data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
  20. data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
  21. data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
  22. data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
  23. data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
  24. data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
  25. data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
  26. data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
  27. data/vendor/automerge-rust/automerge/src/change.rs +357 -0
  28. data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
  29. data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
  30. data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
  31. data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
  32. data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
  33. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
  34. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
  35. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
  36. data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
  37. data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
  38. data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
  39. data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
  40. data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
  41. data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
  42. data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
  43. data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
  44. data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
  45. data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
  46. data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
  47. data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
  48. data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
  49. data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
  50. data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
  51. data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
  52. data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
  53. data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
  54. data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
  55. data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
  56. data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
  57. data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
  58. data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
  59. data/vendor/automerge-rust/automerge/src/error.rs +159 -0
  60. data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
  61. data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
  62. data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
  63. data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
  64. data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
  65. data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
  66. data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
  67. data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
  68. data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
  69. data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
  70. data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
  71. data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
  72. data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
  73. data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
  74. data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
  75. data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
  76. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
  77. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
  78. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
  79. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
  80. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
  81. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
  82. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
  83. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
  84. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
  85. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
  86. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
  87. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
  88. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
  89. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
  90. data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
  91. data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
  92. data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
  93. data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
  94. data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
  95. data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
  96. data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
  97. data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
  98. data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
  99. data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
  100. data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
  101. data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
  102. data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
  103. data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
  104. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
  105. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
  106. data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
  107. data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
  108. data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
  109. data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
  110. data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
  111. data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
  112. data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
  113. data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
  114. data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
  115. data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
  116. data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
  117. data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
  118. data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
  119. data/vendor/automerge-rust/automerge/src/read.rs +326 -0
  120. data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
  121. data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
  122. data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
  123. data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
  124. data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
  125. data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
  126. data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
  127. data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
  128. data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
  129. data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
  130. data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
  131. data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
  132. data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
  133. data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
  134. data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
  135. data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
  136. data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
  137. data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
  138. data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
  139. data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
  140. data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
  141. data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
  142. data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
  143. data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
  144. data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
  145. data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
  146. data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
  147. data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
  148. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
  149. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
  150. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
  151. data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
  152. data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
  153. data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
  154. data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
  155. data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
  156. data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
  157. data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
  158. data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
  159. data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
  160. data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
  161. data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
  162. data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
  163. data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
  164. data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
  165. data/vendor/automerge-rust/automerge/src/types.rs +749 -0
  166. data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
  167. data/vendor/automerge-rust/automerge/src/value.rs +763 -0
  168. data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
  169. data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
  170. data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
  171. data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
  172. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
  173. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
  174. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
  175. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
  176. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
  177. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
  178. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
  179. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
  180. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
  181. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
  182. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
  183. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
  184. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
  185. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
  186. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
  187. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
  188. data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
  189. data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
  190. data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
  191. data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
  192. data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
  193. data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
  194. data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
  195. data/vendor/automerge-rust/automerge-c/README.md +233 -0
  196. data/vendor/automerge-rust/automerge-c/build.rs +21 -0
  197. data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
  198. data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
  199. data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
  200. data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
  201. data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
  202. data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
  203. data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
  204. data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
  205. data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
  206. data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
  207. data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
  208. data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
  209. data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
  210. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
  211. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
  212. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
  213. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
  214. data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
  215. data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
  216. data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
  217. data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
  218. data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
  219. data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
  220. data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
  221. data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
  222. data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
  223. data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
  224. data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
  225. data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
  226. data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
  227. data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
  228. data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
  229. data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
  230. data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
  231. data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
  232. data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
  233. data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
  234. data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
  235. data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
  236. data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
  237. data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
  238. data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
  239. data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
  240. data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
  241. data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
  242. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
  243. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
  244. data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
  245. data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
  246. data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
  247. data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
  248. data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
  249. data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
  250. data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
  251. data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
  252. data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
  253. data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
  254. data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
  255. data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
  256. data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
  257. data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
  258. data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
  259. data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
  260. data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
  261. data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
  262. data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
  263. data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
  264. data/vendor/automerge-rust/automerge-test/README.md +3 -0
  265. data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
  266. data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
  267. data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
  268. data/vendor/automerge-rust/hexane/README.md +292 -0
  269. data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
  270. data/vendor/automerge-rust/hexane/TODO +18 -0
  271. data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
  272. data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
  273. data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
  274. data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
  275. data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
  276. data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
  277. data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
  278. data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
  279. data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
  280. data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
  281. data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
  282. data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
  283. data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
  284. data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
  285. data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
  286. data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
  287. data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
  288. data/vendor/automerge-rust/hexane/src/test.rs +108 -0
  289. data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
  290. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
  291. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
  437. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
  438. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
  439. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  440. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
  454. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  455. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  456. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
  466. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
  467. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
  468. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
  477. data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
  478. data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
  479. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
  480. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
  481. metadata +584 -0
@@ -0,0 +1,1677 @@
1
+ require "minitest/autorun"
2
+ require_relative "metametameta"
3
+
4
+ e = Encoding.default_external
5
+ if e != Encoding::UTF_8 then
6
+ warn ""
7
+ warn ""
8
+ warn "NOTE: External encoding #{e} is not UTF-8. Tests WILL fail."
9
+ warn " Run tests with `RUBYOPT=-Eutf-8 rake` to avoid errors."
10
+ warn ""
11
+ warn ""
12
+ end
13
+
14
+ SomeError = Class.new Exception
15
+
16
+ unless defined? MyModule then
17
+ module MyModule; end
18
+ class AnError < StandardError; include MyModule; end
19
+ end
20
+
21
+ class TestMinitestAssertions < Minitest::Test
22
+ # do not call parallelize_me! - teardown accesses @tc._assertions
23
+ # which is not threadsafe. Nearly every method in here is an
24
+ # assertion test so it isn't worth splitting it out further.
25
+
26
+ # not included in JRuby
27
+ RE_LEVELS = /\(\d+ levels\) /
28
+
29
+ class DummyTest
30
+ include Minitest::Assertions
31
+
32
+ attr_accessor :assertions, :failure
33
+
34
+ def initialize
35
+ self.assertions = 0
36
+ self.failure = nil
37
+ end
38
+ end
39
+
40
+ def setup
41
+ super
42
+
43
+ Minitest::Test.reset
44
+
45
+ @tc = DummyTest.new
46
+ @zomg = "zomg ponies!" # TODO: const
47
+ @assertion_count = 1
48
+ end
49
+
50
+ def teardown
51
+ assert_equal(@assertion_count, @tc.assertions,
52
+ "expected #{@assertion_count} assertions to be fired during the test, not #{@tc.assertions}")
53
+ end
54
+
55
+ def assert_triggered expected, klass = Minitest::Assertion
56
+ e = assert_raises klass do
57
+ yield
58
+ end
59
+
60
+ msg = e.message.sub(/(---Backtrace---).*/m, '\1')
61
+ msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
62
+ msg.gsub!(/(\d\.\d{6})\d+/, '\1xxx') # normalize: ruby version, impl, platform
63
+
64
+ assert_msg = Regexp === expected ? :assert_match : :assert_equal
65
+ self.send assert_msg, expected, msg
66
+ end
67
+
68
+ def assert_unexpected expected
69
+ expected = Regexp.new expected if String === expected
70
+
71
+ assert_triggered expected, Minitest::UnexpectedError do
72
+ yield
73
+ end
74
+ end
75
+
76
+ def non_verbose
77
+ orig_verbose = $VERBOSE
78
+ $VERBOSE = false
79
+
80
+ yield
81
+ ensure
82
+ $VERBOSE = orig_verbose
83
+ end
84
+
85
+ def test_assert
86
+ @assertion_count = 2
87
+
88
+ @tc.assert_equal true, @tc.assert(true), "returns true on success"
89
+ end
90
+
91
+ def test_assert__triggered
92
+ assert_triggered "Expected false to be truthy." do
93
+ @tc.assert false
94
+ end
95
+ end
96
+
97
+ def test_assert__triggered_message
98
+ assert_triggered @zomg do
99
+ @tc.assert false, @zomg
100
+ end
101
+ end
102
+
103
+ def test_assert__triggered_lambda
104
+ assert_triggered "whoops" do
105
+ @tc.assert false, lambda { "whoops" }
106
+ end
107
+ end
108
+
109
+ def test_assert_empty
110
+ @assertion_count = 2
111
+
112
+ @tc.assert_empty []
113
+ end
114
+
115
+ def test_assert_empty_triggered
116
+ @assertion_count = 2
117
+
118
+ assert_triggered "Expected [1] to be empty." do
119
+ @tc.assert_empty [1]
120
+ end
121
+ end
122
+
123
+ def test_assert_equal
124
+ @tc.assert_equal 1, 1
125
+ end
126
+
127
+ def test_assert_equal_different_collection_array_hex_invisible
128
+ exp = Object.new
129
+ act = Object.new
130
+ msg = <<~EOM.chomp
131
+ No visible difference in the Array#inspect output.
132
+ You should look at the implementation of #== on Array or its members.
133
+ [#<Object:0xXXXXXX>]
134
+ EOM
135
+ assert_triggered msg do
136
+ @tc.assert_equal [exp], [act]
137
+ end
138
+ end
139
+
140
+ def test_assert_equal_different_collection_hash_hex_invisible
141
+ exp, act = {}, {}
142
+ exp[1] = Object.new
143
+ act[1] = Object.new
144
+ act_obj = act[1]
145
+ def act_obj.inspect = "#<Object:0xXXXXXX>"
146
+ msg = <<~EOM.chomp % [act]
147
+ No visible difference in the Hash#inspect output.
148
+ You should look at the implementation of #== on Hash or its members.
149
+ %p
150
+ EOM
151
+
152
+ assert_triggered msg do
153
+ @tc.assert_equal exp, act
154
+ end
155
+ end
156
+
157
+ def test_assert_equal_different_diff_deactivated
158
+ without_diff do
159
+ assert_triggered util_msg("haha" * 10, "blah" * 10) do
160
+ exp = "haha" * 10
161
+ act = "blah" * 10
162
+
163
+ @tc.assert_equal exp, act
164
+ end
165
+ end
166
+ end
167
+
168
+ def test_assert_equal_different_message
169
+ assert_triggered "whoops.\nExpected: 1\n Actual: 2" do
170
+ @tc.assert_equal 1, 2, message { "whoops" }
171
+ end
172
+ end
173
+
174
+ def test_assert_equal_different_lambda
175
+ assert_triggered "whoops.\nExpected: 1\n Actual: 2" do
176
+ @tc.assert_equal 1, 2, lambda { "whoops" }
177
+ end
178
+ end
179
+
180
+ def test_assert_equal_different_hex
181
+ c = Class.new do
182
+ def initialize s; @name = s; end
183
+ end
184
+
185
+ exp = c.new "a"
186
+ act = c.new "b"
187
+ msg = <<~EOS
188
+ --- expected
189
+ +++ actual
190
+ @@ -1 +1 @@
191
+ -#<#<Class:0xXXXXXX>:0xXXXXXX @name="a">
192
+ +#<#<Class:0xXXXXXX>:0xXXXXXX @name="b">
193
+ EOS
194
+
195
+ assert_triggered msg do
196
+ @tc.assert_equal exp, act
197
+ end
198
+ end
199
+
200
+ def test_assert_equal_different_hex_invisible
201
+ exp = Object.new
202
+ act = Object.new
203
+
204
+ msg = <<~EOM.chomp
205
+ No visible difference in the Object#inspect output.
206
+ You should look at the implementation of #== on Object or its members.
207
+ #<Object:0xXXXXXX>
208
+ EOM
209
+
210
+ assert_triggered msg do
211
+ @tc.assert_equal exp, act
212
+ end
213
+ end
214
+
215
+ def test_assert_equal_different_long
216
+ msg = <<~EOM
217
+ --- expected
218
+ +++ actual
219
+ @@ -1 +1 @@
220
+ -"hahahahahahahahahahahahahahahahahahahaha"
221
+ +"blahblahblahblahblahblahblahblahblahblah"
222
+ EOM
223
+
224
+ assert_triggered msg do
225
+ exp = "haha" * 10
226
+ act = "blah" * 10
227
+
228
+ @tc.assert_equal exp, act
229
+ end
230
+ end
231
+
232
+ def test_assert_equal_different_long_invisible
233
+ msg = <<~EOM.chomp
234
+ No visible difference in the String#inspect output.
235
+ You should look at the implementation of #== on String or its members.
236
+ "blahblahblahblahblahblahblahblahblahblah"
237
+ EOM
238
+
239
+ assert_triggered msg do
240
+ exp = "blah" * 10
241
+ act = "blah" * 10
242
+ def exp.== _
243
+ false
244
+ end
245
+ @tc.assert_equal exp, act
246
+ end
247
+ end
248
+
249
+ def test_assert_equal_different_long_msg
250
+ msg = <<~EOM
251
+ message.
252
+ --- expected
253
+ +++ actual
254
+ @@ -1 +1 @@
255
+ -"hahahahahahahahahahahahahahahahahahahaha"
256
+ +"blahblahblahblahblahblahblahblahblahblah"
257
+ EOM
258
+
259
+ assert_triggered msg do
260
+ exp = "haha" * 10
261
+ act = "blah" * 10
262
+ @tc.assert_equal exp, act, "message"
263
+ end
264
+ end
265
+
266
+ def test_assert_equal_different_short
267
+ assert_triggered util_msg(1, 2) do
268
+ @tc.assert_equal 1, 2
269
+ end
270
+ end
271
+
272
+ def test_assert_equal_different_short_msg
273
+ assert_triggered util_msg(1, 2, "message") do
274
+ @tc.assert_equal 1, 2, "message"
275
+ end
276
+ end
277
+
278
+ def test_assert_equal_different_short_multiline
279
+ msg = "--- expected\n+++ actual\n@@ -1,2 +1,2 @@\n \"a\n-b\"\n+c\"\n"
280
+ assert_triggered msg do
281
+ @tc.assert_equal "a\nb", "a\nc"
282
+ end
283
+ end
284
+
285
+ def test_assert_equal_does_not_allow_lhs_nil
286
+ if Minitest::VERSION >= "6" then
287
+ warn "Time to strip the MT5 test"
288
+
289
+ @assertion_count += 1
290
+ assert_triggered(/Use assert_nil if expecting nil/) do
291
+ @tc.assert_equal nil, nil
292
+ end
293
+ else
294
+ err_re = /.*?test_minitest_\w+.rb:\d+: warning: DEPRECATED: Use assert_nil if expecting nil. This will fail in Minitest 6./
295
+ err_re = "" if $-w.nil?
296
+
297
+ assert_deprecation err_re do
298
+ @tc.assert_equal nil, nil
299
+ end
300
+ end
301
+ end
302
+
303
+ def test_assert_equal_does_not_allow_lhs_nil_triggered
304
+ assert_triggered "Expected: nil\n Actual: false" do
305
+ @tc.assert_equal nil, false
306
+ end
307
+ end
308
+
309
+ def test_assert_equal_string_bug791
310
+ exp = <<~EOM.chomp
311
+ Expected: "\\\\n"
312
+ Actual: "\\\\"
313
+ EOM
314
+ assert_triggered exp do
315
+ @tc.assert_equal "\\n", "\\"
316
+ end
317
+ end
318
+
319
+ def test_assert_equal_string_both_escaped_unescaped_newlines
320
+ msg = <<~'EOM' # NOTE: single quotes on heredoc
321
+ --- expected
322
+ +++ actual
323
+ @@ -1,2 +1 @@
324
+ -"A\n
325
+ -B"
326
+ +"A\n\\nB"
327
+ EOM
328
+
329
+ assert_triggered msg do
330
+ exp = "A\\nB"
331
+ act = "A\n\\nB"
332
+
333
+ @tc.assert_equal exp, act
334
+ end
335
+ end
336
+
337
+ def test_assert_equal_string_encodings
338
+ msg = <<~EOM
339
+ --- expected
340
+ +++ actual
341
+ @@ -1,3 +1,3 @@
342
+ -# encoding: UTF-8
343
+ -# valid: false
344
+ +# encoding: #{Encoding::BINARY.name}
345
+ +# valid: true
346
+ "bad-utf8-\\xF1.txt"
347
+ EOM
348
+
349
+ assert_triggered msg do
350
+ exp = "bad-utf8-\xF1.txt"
351
+ act = exp.dup.b
352
+ @tc.assert_equal exp, act
353
+ end
354
+ end
355
+
356
+ def test_assert_equal_string_encodings_both_different
357
+ msg = <<~EOM
358
+ --- expected
359
+ +++ actual
360
+ @@ -1,3 +1,3 @@
361
+ -# encoding: US-ASCII
362
+ -# valid: false
363
+ +# encoding: #{Encoding::BINARY.name}
364
+ +# valid: true
365
+ "bad-utf8-\\xF1.txt"
366
+ EOM
367
+
368
+ assert_triggered msg do
369
+ exp = "bad-utf8-\xF1.txt".dup.force_encoding Encoding::ASCII
370
+ act = exp.dup.b
371
+ @tc.assert_equal exp, act
372
+ end
373
+ end
374
+
375
+ def test_assert_equal_unescape_newlines
376
+ msg = <<~'EOM' # NOTE single quotes on heredoc
377
+ --- expected
378
+ +++ actual
379
+ @@ -1,2 +1,2 @@
380
+ -"hello
381
+ +"hello\n
382
+ world"
383
+ EOM
384
+
385
+ assert_triggered msg do
386
+ exp = "hello\nworld"
387
+ act = 'hello\nworld' # notice single quotes
388
+
389
+ @tc.assert_equal exp, act
390
+ end
391
+ end
392
+
393
+ def test_assert_in_delta
394
+ @tc.assert_in_delta 0.0, 1.0 / 1000, 0.1
395
+ end
396
+
397
+ def test_assert_in_delta_triggered
398
+ x = "1.0e-06"
399
+ assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
400
+ @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
401
+ end
402
+ end
403
+
404
+ def test_assert_in_epsilon
405
+ @assertion_count = 10
406
+
407
+ @tc.assert_in_epsilon 10_000, 9991
408
+ @tc.assert_in_epsilon 9991, 10_000
409
+ @tc.assert_in_epsilon 1.0, 1.001
410
+ @tc.assert_in_epsilon 1.001, 1.0
411
+
412
+ @tc.assert_in_epsilon 10_000, 9999.1, 0.0001
413
+ @tc.assert_in_epsilon 9999.1, 10_000, 0.0001
414
+ @tc.assert_in_epsilon 1.0, 1.0001, 0.0001
415
+ @tc.assert_in_epsilon 1.0001, 1.0, 0.0001
416
+
417
+ @tc.assert_in_epsilon(-1, -1)
418
+ @tc.assert_in_epsilon(-10_000, -9991)
419
+ end
420
+
421
+ def test_assert_in_epsilon_triggered
422
+ assert_triggered "Expected |10000 - 9990| (10) to be <= 9.99." do
423
+ @tc.assert_in_epsilon 10_000, 9990
424
+ end
425
+ end
426
+
427
+ def test_assert_in_epsilon_triggered_negative_case
428
+ x = "0.100000xxx"
429
+ y = "0.1"
430
+ assert_triggered "Expected |-1.1 - -1| (#{x}) to be <= #{y}." do
431
+ @tc.assert_in_epsilon(-1.1, -1, 0.1)
432
+ end
433
+ end
434
+
435
+ def test_assert_includes
436
+ @assertion_count = 2
437
+
438
+ @tc.assert_includes [true], true
439
+ end
440
+
441
+ def test_assert_includes_triggered
442
+ @assertion_count = 3
443
+
444
+ e = @tc.assert_raises Minitest::Assertion do
445
+ @tc.assert_includes [true], false
446
+ end
447
+
448
+ expected = "Expected [true] to include false."
449
+ assert_equal expected, e.message
450
+ end
451
+
452
+ def test_assert_instance_of
453
+ @tc.assert_instance_of String, "blah"
454
+ end
455
+
456
+ def test_assert_instance_of_triggered
457
+ assert_triggered 'Expected "blah" to be an instance of Array, not String.' do
458
+ @tc.assert_instance_of Array, "blah"
459
+ end
460
+ end
461
+
462
+ def test_assert_kind_of
463
+ @tc.assert_kind_of String, "blah"
464
+ end
465
+
466
+ def test_assert_kind_of_triggered
467
+ assert_triggered 'Expected "blah" to be a kind of Array, not String.' do
468
+ @tc.assert_kind_of Array, "blah"
469
+ end
470
+ end
471
+
472
+ def test_assert_match
473
+ @assertion_count = 2
474
+ m = @tc.assert_match(/\w+/, "blah blah blah")
475
+
476
+ assert_kind_of MatchData, m
477
+ assert_equal "blah", m[0]
478
+ end
479
+
480
+ def test_assert_match_matchee_to_str
481
+ @assertion_count = 2
482
+
483
+ obj = Object.new
484
+ def obj.to_str; "blah" end
485
+
486
+ @tc.assert_match "blah", obj
487
+ end
488
+
489
+ def test_assert_match_matcher_object
490
+ @assertion_count = 2
491
+
492
+ pattern = Object.new
493
+ def pattern.=~ _; true end
494
+
495
+ @tc.assert_match pattern, 5
496
+ end
497
+
498
+ def test_assert_match_object_triggered
499
+ @assertion_count = 2
500
+
501
+ pattern = Object.new
502
+ def pattern.=~ _; false end
503
+ def pattern.inspect; "[Object]" end
504
+
505
+ assert_triggered "Expected [Object] to match 5." do
506
+ @tc.assert_match pattern, 5
507
+ end
508
+ end
509
+
510
+ def test_assert_match_triggered
511
+ @assertion_count = 2
512
+ assert_triggered 'Expected /\d+/ to match "blah blah blah".' do
513
+ @tc.assert_match(/\d+/, "blah blah blah")
514
+ end
515
+ end
516
+
517
+ def test_assert_nil
518
+ @tc.assert_nil nil
519
+ end
520
+
521
+ def test_assert_nil_triggered
522
+ assert_triggered "Expected 42 to be nil." do
523
+ @tc.assert_nil 42
524
+ end
525
+ end
526
+
527
+ def test_assert_operator
528
+ @tc.assert_operator 2, :>, 1
529
+ end
530
+
531
+ def test_assert_operator_bad_object
532
+ bad = Object.new
533
+ def bad.== _; true end
534
+
535
+ @tc.assert_operator bad, :equal?, bad
536
+ end
537
+
538
+ def test_assert_operator_triggered
539
+ assert_triggered "Expected 2 to be < 1." do
540
+ @tc.assert_operator 2, :<, 1
541
+ end
542
+ end
543
+
544
+ def test_assert_output_both
545
+ @assertion_count = 2
546
+
547
+ @tc.assert_output "yay", "blah" do
548
+ print "yay"
549
+ $stderr.print "blah"
550
+ end
551
+ end
552
+
553
+ def test_assert_output_both_regexps
554
+ @assertion_count = 4
555
+
556
+ @tc.assert_output(/y.y/, /bl.h/) do
557
+ print "yay"
558
+ $stderr.print "blah"
559
+ end
560
+ end
561
+
562
+ def test_assert_output_err
563
+ @tc.assert_output nil, "blah" do
564
+ $stderr.print "blah"
565
+ end
566
+ end
567
+
568
+ def test_assert_output_neither
569
+ @assertion_count = 0
570
+
571
+ @tc.assert_output do
572
+ # do nothing
573
+ end
574
+ end
575
+
576
+ def test_assert_output_out
577
+ @tc.assert_output "blah" do
578
+ print "blah"
579
+ end
580
+ end
581
+
582
+ def test_assert_output_triggered_both
583
+ assert_triggered util_msg("blah", "blah blah", "In stderr") do
584
+ @tc.assert_output "yay", "blah" do
585
+ print "boo"
586
+ $stderr.print "blah blah"
587
+ end
588
+ end
589
+ end
590
+
591
+ def test_assert_output_triggered_err
592
+ assert_triggered util_msg("blah", "blah blah", "In stderr") do
593
+ @tc.assert_output nil, "blah" do
594
+ $stderr.print "blah blah"
595
+ end
596
+ end
597
+ end
598
+
599
+ def test_assert_output_triggered_out
600
+ assert_triggered util_msg("blah", "blah blah", "In stdout") do
601
+ @tc.assert_output "blah" do
602
+ print "blah blah"
603
+ end
604
+ end
605
+ end
606
+
607
+ def test_assert_output_no_block
608
+ assert_triggered "assert_output requires a block to capture output." do
609
+ @tc.assert_output "blah"
610
+ end
611
+ end
612
+
613
+ def test_assert_output_nested_assert_uncaught
614
+ @assertion_count = 1
615
+
616
+ assert_triggered "Epic Fail!" do
617
+ @tc.assert_output "blah\n" do
618
+ puts "blah"
619
+ @tc.flunk
620
+ end
621
+ end
622
+ end
623
+
624
+ def test_assert_output_nested_raise
625
+ @assertion_count = 2
626
+
627
+ @tc.assert_output "blah\n" do
628
+ @tc.assert_raises RuntimeError do
629
+ puts "blah"
630
+ raise "boom!"
631
+ end
632
+ end
633
+ end
634
+
635
+ def test_assert_output_nested_raise_bad
636
+ @assertion_count = 0
637
+
638
+ assert_unexpected "boom!" do
639
+ @tc.assert_raises do # 2) bypassed via UnexpectedError
640
+ @tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
641
+ puts "not_blah"
642
+ raise "boom!"
643
+ end
644
+ end
645
+ end
646
+ end
647
+
648
+ def test_assert_output_nested_raise_mismatch
649
+ # this test is redundant, but illustrative
650
+ @assertion_count = 0
651
+
652
+ assert_unexpected "boom!" do
653
+ @tc.assert_raises RuntimeError do # 2) bypassed via UnexpectedError
654
+ @tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
655
+ puts "not_blah"
656
+ raise ArgumentError, "boom!"
657
+ end
658
+ end
659
+ end
660
+ end
661
+
662
+ def test_assert_output_nested_throw_caught
663
+ @assertion_count = 2
664
+
665
+ @tc.assert_output "blah\n" do
666
+ @tc.assert_throws :boom! do
667
+ puts "blah"
668
+ throw :boom!
669
+ end
670
+ end
671
+ end
672
+
673
+ def test_assert_output_nested_throw_caught_bad
674
+ @assertion_count = 1 # want 0; can't prevent throw from escaping :(
675
+
676
+ @tc.assert_throws :boom! do # 2) captured via catch
677
+ @tc.assert_output "blah\n" do # 1) bypassed via throw
678
+ puts "not_blah"
679
+ throw :boom!
680
+ end
681
+ end
682
+ end
683
+
684
+ def test_assert_output_nested_throw_mismatch
685
+ @assertion_count = 0
686
+
687
+ assert_unexpected "uncaught throw :boom!" do
688
+ @tc.assert_throws :not_boom! do # 2) captured via assert_throws+rescue
689
+ @tc.assert_output "blah\n" do # 1) bypassed via throw
690
+ puts "not_blah"
691
+ throw :boom!
692
+ end
693
+ end
694
+ end
695
+ end
696
+
697
+ def test_assert_output_uncaught_raise
698
+ @assertion_count = 0
699
+
700
+ assert_unexpected "RuntimeError: boom!" do
701
+ @tc.assert_output "blah\n" do
702
+ puts "not_blah"
703
+ raise "boom!"
704
+ end
705
+ end
706
+ end
707
+
708
+ def test_assert_output_uncaught_throw
709
+ @assertion_count = 0
710
+
711
+ assert_unexpected "uncaught throw :boom!" do
712
+ @tc.assert_output "blah\n" do
713
+ puts "not_blah"
714
+ throw :boom!
715
+ end
716
+ end
717
+ end
718
+
719
+ def test_assert_predicate
720
+ @tc.assert_predicate "", :empty?
721
+ end
722
+
723
+ def test_assert_predicate_triggered
724
+ assert_triggered 'Expected "blah" to be empty?.' do
725
+ @tc.assert_predicate "blah", :empty?
726
+ end
727
+ end
728
+
729
+ def test_assert_raises
730
+ @tc.assert_raises RuntimeError do
731
+ raise "blah"
732
+ end
733
+ end
734
+
735
+ def test_assert_raises_default
736
+ @tc.assert_raises do
737
+ raise StandardError, "blah"
738
+ end
739
+ end
740
+
741
+ def test_assert_raises_default_triggered
742
+ e = assert_raises Minitest::Assertion do
743
+ @tc.assert_raises do
744
+ raise SomeError, "blah"
745
+ end
746
+ end
747
+
748
+ expected = <<~EOM.chomp
749
+ [StandardError] exception expected, not
750
+ Class: <SomeError>
751
+ Message: <"blah">
752
+ ---Backtrace---
753
+ FILE:LINE:in 'block in test_assert_raises_default_triggered'
754
+ ---------------
755
+ EOM
756
+
757
+ actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
758
+ actual.gsub! RE_LEVELS, "" unless jruby?
759
+ actual.gsub!(/[`']block in (?:TestMinitestAssertions#)?/, "'block in ")
760
+
761
+ assert_equal expected, actual
762
+ end
763
+
764
+ def test_assert_raises_exit
765
+ @tc.assert_raises SystemExit do
766
+ exit 1
767
+ end
768
+ end
769
+
770
+ def test_assert_raises_module
771
+ @tc.assert_raises MyModule do
772
+ raise AnError
773
+ end
774
+ end
775
+
776
+ def test_assert_raises_signals
777
+ @tc.assert_raises SignalException do
778
+ raise SignalException, :INT
779
+ end
780
+ end
781
+
782
+ def test_assert_raises_throw_nested_bad
783
+ @assertion_count = 0
784
+
785
+ assert_unexpected "RuntimeError: boom!" do
786
+ @tc.assert_raises do
787
+ @tc.assert_throws :blah do
788
+ raise "boom!"
789
+ throw :not_blah
790
+ end
791
+ end
792
+ end
793
+ end
794
+
795
+ ##
796
+ # *sigh* This is quite an odd scenario, but it is from real (albeit
797
+ # ugly) test code in ruby-core:
798
+
799
+ # https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29259
800
+
801
+ def test_assert_raises_skip
802
+ @assertion_count = 0
803
+
804
+ assert_triggered "skipped", Minitest::Skip do
805
+ @tc.assert_raises ArgumentError do
806
+ begin
807
+ raise "blah"
808
+ rescue
809
+ skip "skipped"
810
+ end
811
+ end
812
+ end
813
+ end
814
+
815
+ def test_assert_raises_subclass
816
+ @tc.assert_raises StandardError do
817
+ raise AnError
818
+ end
819
+ end
820
+
821
+ def test_assert_raises_subclass_triggered
822
+ e = assert_raises Minitest::Assertion do
823
+ @tc.assert_raises SomeError do
824
+ raise AnError, "some message"
825
+ end
826
+ end
827
+
828
+ expected = <<~EOM
829
+ [SomeError] exception expected, not
830
+ Class: <AnError>
831
+ Message: <"some message">
832
+ ---Backtrace---
833
+ FILE:LINE:in 'block in test_assert_raises_subclass_triggered'
834
+ ---------------
835
+ EOM
836
+
837
+ actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
838
+ actual.gsub! RE_LEVELS, "" unless jruby?
839
+ actual.gsub!(/[`']block in (?:TestMinitestAssertions#)?/, "'block in ")
840
+
841
+ assert_equal expected.chomp, actual
842
+ end
843
+
844
+ def test_assert_raises_triggered_different
845
+ e = assert_raises Minitest::Assertion do
846
+ @tc.assert_raises RuntimeError do
847
+ raise SyntaxError, "icky"
848
+ end
849
+ end
850
+
851
+ expected = <<~EOM.chomp
852
+ [RuntimeError] exception expected, not
853
+ Class: <SyntaxError>
854
+ Message: <"icky">
855
+ ---Backtrace---
856
+ FILE:LINE:in 'block in test_assert_raises_triggered_different'
857
+ ---------------
858
+ EOM
859
+
860
+ actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
861
+ actual.gsub! RE_LEVELS, "" unless jruby?
862
+ actual.gsub!(/[`']block in (?:TestMinitestAssertions#)?/, "'block in ")
863
+
864
+ assert_equal expected, actual
865
+ end
866
+
867
+ def test_assert_raises_triggered_different_msg
868
+ e = assert_raises Minitest::Assertion do
869
+ @tc.assert_raises RuntimeError, "XXX" do
870
+ raise SyntaxError, "icky"
871
+ end
872
+ end
873
+
874
+ expected = <<~EOM
875
+ XXX.
876
+ [RuntimeError] exception expected, not
877
+ Class: <SyntaxError>
878
+ Message: <"icky">
879
+ ---Backtrace---
880
+ FILE:LINE:in 'block in test_assert_raises_triggered_different_msg'
881
+ ---------------
882
+ EOM
883
+
884
+ actual = e.message.gsub(/^.+:\d+/, "FILE:LINE")
885
+ actual.gsub! RE_LEVELS, "" unless jruby?
886
+ actual.gsub!(/[`']block in (?:TestMinitestAssertions#)?/, "'block in ")
887
+
888
+ assert_equal expected.chomp, actual
889
+ end
890
+
891
+ def test_assert_raises_triggered_none
892
+ e = assert_raises Minitest::Assertion do
893
+ @tc.assert_raises Minitest::Assertion do
894
+ # do nothing
895
+ end
896
+ end
897
+
898
+ expected = "Minitest::Assertion expected but nothing was raised."
899
+
900
+ assert_equal expected, e.message
901
+ end
902
+
903
+ def test_assert_raises_triggered_none_msg
904
+ e = assert_raises Minitest::Assertion do
905
+ @tc.assert_raises Minitest::Assertion, "XXX" do
906
+ # do nothing
907
+ end
908
+ end
909
+
910
+ expected = "XXX.\nMinitest::Assertion expected but nothing was raised."
911
+
912
+ assert_equal expected, e.message
913
+ end
914
+
915
+ def test_assert_raises_without_block
916
+ assert_triggered "assert_raises requires a block to capture errors." do
917
+ @tc.assert_raises StandardError
918
+ end
919
+ end
920
+
921
+ def test_assert_respond_to
922
+ @tc.assert_respond_to "blah", :empty?
923
+ end
924
+
925
+ def test_assert_respond_to_triggered
926
+ assert_triggered 'Expected "blah" (String) to respond to #rawr!.' do
927
+ @tc.assert_respond_to "blah", :rawr!
928
+ end
929
+ end
930
+
931
+ def test_assert_respond_to__include_all
932
+ @tc.assert_respond_to @tc, :exit, include_all: true
933
+ end
934
+
935
+ def test_assert_respond_to__include_all_triggered
936
+ assert_triggered(/Expected .+::DummyTest. to respond to #exit\?/) do
937
+ @tc.assert_respond_to @tc, :exit?, include_all: true
938
+ end
939
+ end
940
+
941
+ def test_assert_same
942
+ @assertion_count = 3
943
+
944
+ o = "blah"
945
+ @tc.assert_same 1, 1
946
+ @tc.assert_same :blah, :blah
947
+ @tc.assert_same o, o
948
+ end
949
+
950
+ def test_assert_same_triggered
951
+ @assertion_count = 2
952
+
953
+ assert_triggered "Expected 2 (oid=N) to be the same as 1 (oid=N)." do
954
+ @tc.assert_same 1, 2
955
+ end
956
+
957
+ s1 = +"blah"
958
+ s2 = +"blah"
959
+
960
+ assert_triggered 'Expected "blah" (oid=N) to be the same as "blah" (oid=N).' do
961
+ @tc.assert_same s1, s2
962
+ end
963
+ end
964
+
965
+ def test_assert_send
966
+ @assertion_count = 0 if error_on_warn?
967
+ assert_deprecation(/DEPRECATED: assert_send/) do
968
+ @tc.assert_send [1, :<, 2]
969
+ end
970
+ end
971
+
972
+ def test_assert_send_bad
973
+ if error_on_warn? then
974
+ @assertion_count = 0
975
+ assert_deprecation(/DEPRECATED: assert_send/) do
976
+ @tc.assert_send [1, :>, 2]
977
+ end
978
+ else
979
+ assert_triggered "Expected 1.>(*[2]) to return true." do
980
+ assert_deprecation(/DEPRECATED: assert_send/) do
981
+ @tc.assert_send [1, :>, 2]
982
+ end
983
+ end
984
+ end
985
+ end
986
+
987
+ def test_assert_silent
988
+ @assertion_count = 2
989
+
990
+ @tc.assert_silent do
991
+ # do nothing
992
+ end
993
+ end
994
+
995
+ def test_assert_silent_triggered_err
996
+ assert_triggered util_msg("", "blah blah", "In stderr") do
997
+ @tc.assert_silent do
998
+ $stderr.print "blah blah"
999
+ end
1000
+ end
1001
+ end
1002
+
1003
+ def test_assert_silent_triggered_out
1004
+ @assertion_count = 2
1005
+
1006
+ assert_triggered util_msg("", "blah blah", "In stdout") do
1007
+ @tc.assert_silent do
1008
+ print "blah blah"
1009
+ end
1010
+ end
1011
+ end
1012
+
1013
+ def test_assert_throws
1014
+ v = @tc.assert_throws :blah do
1015
+ throw :blah
1016
+ end
1017
+
1018
+ assert_nil v
1019
+ end
1020
+
1021
+ def test_assert_throws_value
1022
+ v = @tc.assert_throws :blah do
1023
+ throw :blah, 42
1024
+ end
1025
+
1026
+ assert_equal 42, v
1027
+ end
1028
+
1029
+ def test_assert_throws_argument_exception
1030
+ @assertion_count = 0
1031
+
1032
+ assert_unexpected "ArgumentError" do
1033
+ @tc.assert_throws :blah do
1034
+ raise ArgumentError
1035
+ end
1036
+ end
1037
+ end
1038
+
1039
+ def test_assert_throws_different
1040
+ assert_triggered "Expected :blah to have been thrown, not :not_blah." do
1041
+ @tc.assert_throws :blah do
1042
+ throw :not_blah
1043
+ end
1044
+ end
1045
+ end
1046
+
1047
+ def test_assert_throws_name_error
1048
+ @assertion_count = 0
1049
+
1050
+ assert_unexpected "NameError" do
1051
+ @tc.assert_throws :blah do
1052
+ raise NameError
1053
+ end
1054
+ end
1055
+ end
1056
+
1057
+ def test_assert_throws_unthrown
1058
+ assert_triggered "Expected :blah to have been thrown." do
1059
+ @tc.assert_throws :blah do
1060
+ # do nothing
1061
+ end
1062
+ end
1063
+ end
1064
+
1065
+ def test_assert_path_exists
1066
+ @tc.assert_path_exists __FILE__
1067
+ end
1068
+
1069
+ def test_assert_path_exists_triggered
1070
+ assert_triggered "Expected path 'blah' to exist." do
1071
+ @tc.assert_path_exists "blah"
1072
+ end
1073
+ end
1074
+
1075
+ def test_assert_pattern
1076
+ @tc.assert_pattern do
1077
+ assert_output nil, "" do
1078
+ [1,2,3] => [Integer, Integer, Integer]
1079
+ end
1080
+ end
1081
+ end
1082
+
1083
+ def test_assert_pattern_traps_nomatchingpatternerror
1084
+ exp = /length mismatch/
1085
+
1086
+ assert_triggered exp do
1087
+ @tc.assert_pattern do
1088
+ [1,2,3] => [Integer, Integer]
1089
+ end
1090
+ end
1091
+ end
1092
+
1093
+ def test_assert_pattern_raises_other_exceptions
1094
+ @assertion_count = 0
1095
+
1096
+ assert_raises RuntimeError do
1097
+ @tc.assert_pattern do
1098
+ raise "boom"
1099
+ end
1100
+ end
1101
+ end
1102
+
1103
+ def test_assert_pattern_with_no_block
1104
+ assert_triggered "assert_pattern requires a block to capture errors." do
1105
+ @tc.assert_pattern
1106
+ end
1107
+ end
1108
+
1109
+ def test_capture_io
1110
+ @assertion_count = 0
1111
+
1112
+ non_verbose do
1113
+ out, err = capture_io do
1114
+ puts "hi"
1115
+ $stderr.puts "bye!"
1116
+ end
1117
+
1118
+ assert_equal "hi\n", out
1119
+ assert_equal "bye!\n", err
1120
+ end
1121
+ end
1122
+
1123
+ def test_capture_subprocess_io
1124
+ @assertion_count = 0
1125
+
1126
+ non_verbose do
1127
+ out, err = capture_subprocess_io do
1128
+ system "echo hi"
1129
+ system "echo bye! 1>&2"
1130
+ end
1131
+
1132
+ assert_equal "hi\n", out
1133
+ assert_equal "bye!", err.strip
1134
+ end
1135
+ end
1136
+
1137
+ def test_class_asserts_match_refutes
1138
+ @assertion_count = 0
1139
+
1140
+ methods = Minitest::Assertions.public_instance_methods.map(&:to_s)
1141
+
1142
+ # These don't have corresponding refutes _on purpose_. They're
1143
+ # useless and will never be added, so don't bother.
1144
+ ignores = %w[assert_output assert_raises assert_send
1145
+ assert_silent assert_throws assert_mock]
1146
+
1147
+ ignores += %w[assert_allocations] # for minitest-gcstats
1148
+
1149
+ asserts = methods.grep(/^assert/).sort - ignores
1150
+ refutes = methods.grep(/^refute/).sort - ignores
1151
+
1152
+ assert_empty refutes.map { |n| n.sub(/^refute/, "assert") } - asserts
1153
+ assert_empty asserts.map { |n| n.sub(/^assert/, "refute") } - refutes
1154
+ end
1155
+
1156
+ def test_delta_consistency
1157
+ @assertion_count = 2
1158
+
1159
+ @tc.assert_in_delta 0, 1, 1
1160
+
1161
+ assert_triggered "Expected |0 - 1| (1) to not be <= 1." do
1162
+ @tc.refute_in_delta 0, 1, 1
1163
+ end
1164
+ end
1165
+
1166
+ def test_epsilon_consistency
1167
+ @assertion_count = 2
1168
+
1169
+ @tc.assert_in_epsilon 1.0, 1.001
1170
+
1171
+ msg = "Expected |1.0 - 1.001| (0.000999xxx) to not be <= 0.001."
1172
+ assert_triggered msg do
1173
+ @tc.refute_in_epsilon 1.0, 1.001
1174
+ end
1175
+ end
1176
+
1177
+ def assert_fail_after t
1178
+ @tc.fail_after t.year, t.month, t.day, "remove the deprecations"
1179
+ end
1180
+
1181
+ def test_fail_after
1182
+ d0 = Time.now
1183
+ d1 = d0 + 86_400 # I am an idiot
1184
+
1185
+ assert_silent do
1186
+ assert_fail_after d1
1187
+ end
1188
+
1189
+ assert_triggered "remove the deprecations" do
1190
+ assert_fail_after d0
1191
+ end
1192
+ end
1193
+
1194
+ def test_flunk
1195
+ assert_triggered "Epic Fail!" do
1196
+ @tc.flunk
1197
+ end
1198
+ end
1199
+
1200
+ def test_flunk_message
1201
+ assert_triggered @zomg do
1202
+ @tc.flunk @zomg
1203
+ end
1204
+ end
1205
+
1206
+ def test_pass
1207
+ @tc.pass
1208
+ end
1209
+
1210
+ def test_refute
1211
+ @assertion_count = 2
1212
+
1213
+ @tc.assert_equal true, @tc.refute(false), "returns true on success"
1214
+ end
1215
+
1216
+ def test_refute_empty
1217
+ @assertion_count = 2
1218
+
1219
+ @tc.refute_empty [1]
1220
+ end
1221
+
1222
+ def test_refute_empty_triggered
1223
+ @assertion_count = 2
1224
+
1225
+ assert_triggered "Expected [] to not be empty." do
1226
+ @tc.refute_empty []
1227
+ end
1228
+ end
1229
+
1230
+ def test_refute_equal
1231
+ @tc.refute_equal "blah", "yay"
1232
+ end
1233
+
1234
+ def test_refute_equal_triggered
1235
+ assert_triggered 'Expected "blah" to not be equal to "blah".' do
1236
+ @tc.refute_equal "blah", "blah"
1237
+ end
1238
+ end
1239
+
1240
+ def test_refute_in_delta
1241
+ @tc.refute_in_delta 0.0, 1.0 / 1000, 0.000001
1242
+ end
1243
+
1244
+ def test_refute_in_delta_triggered
1245
+ x = "0.1"
1246
+ assert_triggered "Expected |0.0 - 0.001| (0.001) to not be <= #{x}." do
1247
+ @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
1248
+ end
1249
+ end
1250
+
1251
+ def test_refute_in_epsilon
1252
+ @tc.refute_in_epsilon 10_000, 9990-1
1253
+ end
1254
+
1255
+ def test_refute_in_epsilon_triggered
1256
+ assert_triggered "Expected |10000 - 9991| (9) to not be <= 9.991." do
1257
+ @tc.refute_in_epsilon 10_000, 9991
1258
+ flunk
1259
+ end
1260
+ end
1261
+
1262
+ def test_refute_in_epsilon_minimum
1263
+ @tc.refute_in_epsilon 10_000, 9990
1264
+ end
1265
+
1266
+ def test_refute_includes
1267
+ @assertion_count = 2
1268
+
1269
+ @tc.refute_includes [true], false
1270
+ end
1271
+
1272
+ def test_refute_includes_triggered
1273
+ @assertion_count = 3
1274
+
1275
+ e = @tc.assert_raises Minitest::Assertion do
1276
+ @tc.refute_includes [true], true
1277
+ end
1278
+
1279
+ expected = "Expected [true] to not include true."
1280
+ assert_equal expected, e.message
1281
+ end
1282
+
1283
+ def test_refute_instance_of
1284
+ @tc.refute_instance_of Array, "blah"
1285
+ end
1286
+
1287
+ def test_refute_instance_of_triggered
1288
+ assert_triggered 'Expected "blah" to not be an instance of String.' do
1289
+ @tc.refute_instance_of String, "blah"
1290
+ end
1291
+ end
1292
+
1293
+ def test_refute_kind_of
1294
+ @tc.refute_kind_of Array, "blah"
1295
+ end
1296
+
1297
+ def test_refute_kind_of_triggered
1298
+ assert_triggered 'Expected "blah" to not be a kind of String.' do
1299
+ @tc.refute_kind_of String, "blah"
1300
+ end
1301
+ end
1302
+
1303
+ def test_refute_match
1304
+ @assertion_count = 2
1305
+ @tc.refute_match(/\d+/, "blah blah blah")
1306
+ end
1307
+
1308
+ def test_refute_match_matcher_object
1309
+ @assertion_count = 2
1310
+ pattern = Object.new
1311
+ def pattern.=~ _; false end
1312
+ @tc.refute_match pattern, 5
1313
+ end
1314
+
1315
+ def test_refute_match_object_triggered
1316
+ @assertion_count = 2
1317
+
1318
+ pattern = Object.new
1319
+ def pattern.=~ _; true end
1320
+ def pattern.inspect; "[Object]" end
1321
+
1322
+ assert_triggered "Expected [Object] to not match 5." do
1323
+ @tc.refute_match pattern, 5
1324
+ end
1325
+ end
1326
+
1327
+ def test_refute_match_triggered
1328
+ @assertion_count = 2
1329
+ assert_triggered 'Expected /\w+/ to not match "blah blah blah".' do
1330
+ @tc.refute_match(/\w+/, "blah blah blah")
1331
+ end
1332
+ end
1333
+
1334
+ def test_refute_nil
1335
+ @tc.refute_nil 42
1336
+ end
1337
+
1338
+ def test_refute_nil_triggered
1339
+ assert_triggered "Expected nil to not be nil." do
1340
+ @tc.refute_nil nil
1341
+ end
1342
+ end
1343
+
1344
+ def test_refute_operator
1345
+ @tc.refute_operator 2, :<, 1
1346
+ end
1347
+
1348
+ def test_refute_operator_bad_object
1349
+ bad = Object.new
1350
+ def bad.== _; true end
1351
+
1352
+ @tc.refute_operator true, :equal?, bad
1353
+ end
1354
+
1355
+ def test_refute_operator_triggered
1356
+ assert_triggered "Expected 2 to not be > 1." do
1357
+ @tc.refute_operator 2, :>, 1
1358
+ end
1359
+ end
1360
+
1361
+ def test_refute_pattern
1362
+ @tc.refute_pattern do
1363
+ [1,2,3] => [Integer, Integer, String]
1364
+ end
1365
+ end
1366
+
1367
+ def test_refute_pattern_expects_nomatchingpatternerror
1368
+ assert_triggered(/NoMatchingPatternError expected, but nothing was raised./) do
1369
+ @tc.refute_pattern do
1370
+ [1,2,3] => [Integer, Integer, Integer]
1371
+ end
1372
+ end
1373
+ end
1374
+
1375
+ def test_refute_pattern_raises_other_exceptions
1376
+ @assertion_count = 0
1377
+
1378
+ assert_raises RuntimeError do
1379
+ @tc.refute_pattern do
1380
+ raise "boom"
1381
+ end
1382
+ end
1383
+ end
1384
+
1385
+ def test_refute_pattern_with_no_block
1386
+ assert_triggered "refute_pattern requires a block to capture errors." do
1387
+ @tc.refute_pattern
1388
+ end
1389
+ end
1390
+
1391
+ def test_refute_predicate
1392
+ @tc.refute_predicate "42", :empty?
1393
+ end
1394
+
1395
+ def test_refute_predicate_triggered
1396
+ assert_triggered 'Expected "" to not be empty?.' do
1397
+ @tc.refute_predicate "", :empty?
1398
+ end
1399
+ end
1400
+
1401
+ def test_refute_respond_to
1402
+ @tc.refute_respond_to "blah", :rawr!
1403
+ end
1404
+
1405
+ def test_refute_respond_to_triggered
1406
+ assert_triggered 'Expected "blah" to not respond to empty?.' do
1407
+ @tc.refute_respond_to "blah", :empty?
1408
+ end
1409
+ end
1410
+
1411
+ def test_refute_respond_to__include_all
1412
+ @tc.refute_respond_to "blah", :missing, include_all: true
1413
+ end
1414
+
1415
+ def test_refute_respond_to__include_all_triggered
1416
+ assert_triggered(/Expected .*DummyTest.* to not respond to exit./) do
1417
+ @tc.refute_respond_to @tc, :exit, include_all: true
1418
+ end
1419
+ end
1420
+
1421
+ def test_refute_same
1422
+ @tc.refute_same 1, 2
1423
+ end
1424
+
1425
+ def test_refute_same_triggered
1426
+ assert_triggered "Expected 1 (oid=N) to not be the same as 1 (oid=N)." do
1427
+ @tc.refute_same 1, 1
1428
+ end
1429
+ end
1430
+
1431
+ def test_refute_path_exists
1432
+ @tc.refute_path_exists "blah"
1433
+ end
1434
+
1435
+ def test_refute_path_exists_triggered
1436
+ assert_triggered "Expected path '#{__FILE__}' to not exist." do
1437
+ @tc.refute_path_exists __FILE__
1438
+ end
1439
+ end
1440
+
1441
+ def test_skip
1442
+ @assertion_count = 0
1443
+
1444
+ assert_triggered "haha!", Minitest::Skip do
1445
+ @tc.skip "haha!"
1446
+ end
1447
+ end
1448
+
1449
+ def assert_skip_until t, msg
1450
+ @tc.skip_until t.year, t.month, t.day, msg
1451
+ end
1452
+
1453
+ def test_skip_until
1454
+ @assertion_count = 0
1455
+
1456
+ d0 = Time.now
1457
+ d1 = d0 + 86_400 # I am an idiot
1458
+
1459
+ assert_deprecation(/Stale skip_until \"not yet\" at .*?:\d+$/) do
1460
+ assert_skip_until d0, "not yet"
1461
+ end
1462
+
1463
+ assert_triggered "not ready yet", Minitest::Skip do
1464
+ assert_skip_until d1, "not ready yet"
1465
+ end
1466
+ end
1467
+
1468
+ def util_msg exp, act, msg = nil
1469
+ s = "Expected: #{exp.inspect}\n Actual: #{act.inspect}"
1470
+ s = "#{msg}.\n#{s}" if msg
1471
+ s
1472
+ end
1473
+
1474
+ def without_diff
1475
+ old_diff = Minitest::Assertions.diff
1476
+ Minitest::Assertions.diff = nil
1477
+
1478
+ yield
1479
+ ensure
1480
+ Minitest::Assertions.diff = old_diff
1481
+ end
1482
+ end
1483
+
1484
+ class TestMinitestAssertionHelpers < Minitest::Test
1485
+ def assert_mu_pp exp, input, raw = false
1486
+ act = mu_pp input
1487
+
1488
+ if String === input && !raw then
1489
+ assert_equal "\"#{exp}\"", act
1490
+ else
1491
+ assert_equal exp, act
1492
+ end
1493
+ end
1494
+
1495
+ def assert_mu_pp_for_diff exp, input, raw = false
1496
+ act = mu_pp_for_diff input
1497
+
1498
+ if String === input && !raw then
1499
+ assert_equal "\"#{exp}\"", act
1500
+ else
1501
+ assert_equal exp, act
1502
+ end
1503
+ end
1504
+
1505
+ def test_diff_equal
1506
+ msg = <<~EOM.chomp
1507
+ No visible difference in the String#inspect output.
1508
+ You should look at the implementation of #== on String or its members.
1509
+ "blahblahblahblahblahblahblahblahblahblah"
1510
+ EOM
1511
+
1512
+ o1 = "blah" * 10
1513
+ o2 = "blah" * 10
1514
+ def o1.== _
1515
+ false
1516
+ end
1517
+
1518
+ assert_equal msg, diff(o1, o2)
1519
+ end
1520
+
1521
+ def test_diff_str_mixed
1522
+ msg = <<~'EOM' # NOTE single quotes on heredoc
1523
+ --- expected
1524
+ +++ actual
1525
+ @@ -1 +1 @@
1526
+ -"A\\n\nB"
1527
+ +"A\n\\nB"
1528
+ EOM
1529
+
1530
+ exp = "A\\n\nB"
1531
+ act = "A\n\\nB"
1532
+
1533
+ assert_equal msg, diff(exp, act)
1534
+ end
1535
+
1536
+ def test_diff_str_multiline
1537
+ msg = <<~EOM
1538
+ --- expected
1539
+ +++ actual
1540
+ @@ -1,2 +1,2 @@
1541
+ "A
1542
+ -B"
1543
+ +C"
1544
+ EOM
1545
+
1546
+ exp = "A\nB"
1547
+ act = "A\nC"
1548
+
1549
+ assert_equal msg, diff(exp, act)
1550
+ end
1551
+
1552
+ def test_diff_str_simple
1553
+ msg = <<~EOM.chomp
1554
+ Expected: "A"
1555
+ Actual: "B"
1556
+ EOM
1557
+
1558
+ exp = "A"
1559
+ act = "B"
1560
+
1561
+ assert_equal msg, diff(exp, act)
1562
+ end
1563
+
1564
+ def test_message
1565
+ assert_equal "blah2.", message { "blah2" }.call
1566
+ assert_equal "blah2.", message("") { "blah2" }.call
1567
+ assert_equal "blah1.\nblah2.", message(:blah1) { "blah2" }.call
1568
+ assert_equal "blah1.\nblah2.", message("blah1") { "blah2" }.call
1569
+
1570
+ message = proc { "blah1" }
1571
+ assert_equal "blah1.\nblah2.", message(message) { "blah2" }.call
1572
+
1573
+ message = message { "blah1" }
1574
+ assert_equal "blah1.\nblah2.", message(message) { "blah2" }.call
1575
+ end
1576
+
1577
+ def test_message_deferred
1578
+ var = nil
1579
+
1580
+ msg = message { var = "blah" }
1581
+
1582
+ assert_nil var
1583
+
1584
+ msg.call
1585
+
1586
+ assert_equal "blah", var
1587
+ end
1588
+
1589
+ def test_mu_pp
1590
+ assert_mu_pp 42.inspect, 42
1591
+ assert_mu_pp %w[a b c].inspect, %w[a b c]
1592
+ assert_mu_pp "A B", "A B"
1593
+ assert_mu_pp "A\\nB", "A\nB"
1594
+ assert_mu_pp "A\\\\nB", 'A\nB' # notice single quotes
1595
+ end
1596
+
1597
+ def test_mu_pp_for_diff
1598
+ assert_mu_pp_for_diff "#<Object:0xXXXXXX>", Object.new
1599
+ assert_mu_pp_for_diff "A B", "A B"
1600
+ assert_mu_pp_for_diff [1, 2, 3].inspect, [1, 2, 3]
1601
+ assert_mu_pp_for_diff "A\nB", "A\nB"
1602
+ end
1603
+
1604
+ def test_mu_pp_for_diff_str_bad_encoding
1605
+ str = "\666".dup.force_encoding Encoding::UTF_8
1606
+ exp = "# encoding: UTF-8\n# valid: false\n\"\\xB6\""
1607
+
1608
+ assert_mu_pp_for_diff exp, str, :raw
1609
+ end
1610
+
1611
+ def test_mu_pp_for_diff_str_bad_encoding_both
1612
+ str = "\666A\\n\nB".dup.force_encoding Encoding::UTF_8
1613
+ exp = "# encoding: UTF-8\n# valid: false\n\"\\xB6A\\\\n\\nB\""
1614
+
1615
+ assert_mu_pp_for_diff exp, str, :raw
1616
+ end
1617
+
1618
+ def test_mu_pp_for_diff_str_encoding
1619
+ str = "A\nB".b
1620
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\nB\""
1621
+
1622
+ assert_mu_pp_for_diff exp, str, :raw
1623
+ end
1624
+
1625
+ def test_mu_pp_for_diff_str_encoding_both
1626
+ str = "A\\n\nB".b
1627
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\\\\n\\nB\""
1628
+
1629
+ assert_mu_pp_for_diff exp, str, :raw
1630
+ end
1631
+
1632
+ def test_mu_pp_for_diff_str_nerd
1633
+ assert_mu_pp_for_diff "A\\nB\\\\nC", "A\nB\\nC"
1634
+ assert_mu_pp_for_diff "\\nB\\\\nC", "\nB\\nC"
1635
+ assert_mu_pp_for_diff "\\nB\\\\n", "\nB\\n"
1636
+ assert_mu_pp_for_diff "\\n\\\\n", "\n\\n"
1637
+ assert_mu_pp_for_diff "\\\\n\\n", "\\n\n"
1638
+ assert_mu_pp_for_diff "\\\\nB\\n", "\\nB\n"
1639
+ assert_mu_pp_for_diff "\\\\nB\\nC", "\\nB\nC"
1640
+ assert_mu_pp_for_diff "A\\\\n\\nB", "A\\n\nB"
1641
+ assert_mu_pp_for_diff "A\\n\\\\nB", "A\n\\nB"
1642
+ assert_mu_pp_for_diff "\\\\n\\n", "\\n\n"
1643
+ assert_mu_pp_for_diff "\\n\\\\n", "\n\\n"
1644
+ end
1645
+
1646
+ def test_mu_pp_for_diff_str_normal
1647
+ assert_mu_pp_for_diff "", ""
1648
+ assert_mu_pp_for_diff "A\\n\n", "A\\n"
1649
+ assert_mu_pp_for_diff "A\\n\nB", "A\\nB"
1650
+ assert_mu_pp_for_diff "A\n", "A\n"
1651
+ assert_mu_pp_for_diff "A\nB", "A\nB"
1652
+ assert_mu_pp_for_diff "\\n\n", "\\n"
1653
+ assert_mu_pp_for_diff "\n", "\n"
1654
+ assert_mu_pp_for_diff "\\n\nA", "\\nA"
1655
+ assert_mu_pp_for_diff "\nA", "\nA"
1656
+ end
1657
+
1658
+ def test_mu_pp_str_bad_encoding
1659
+ str = "\666".dup.force_encoding Encoding::UTF_8
1660
+ exp = "# encoding: UTF-8\n# valid: false\n\"\\xB6\""
1661
+
1662
+ assert_mu_pp exp, str, :raw
1663
+ end
1664
+
1665
+ def test_mu_pp_str_encoding
1666
+ str = "A\nB".b
1667
+ exp = "# encoding: #{Encoding::BINARY.name}\n# valid: true\n\"A\\nB\""
1668
+
1669
+ assert_mu_pp exp, str, :raw
1670
+ end
1671
+
1672
+ def test_mu_pp_str_immutable
1673
+ printer = Class.new { extend Minitest::Assertions }
1674
+ str = "test".freeze
1675
+ assert_equal '"test"', printer.mu_pp(str)
1676
+ end
1677
+ end