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,850 @@
1
+ require "rbconfig"
2
+ require "tempfile"
3
+ require "stringio"
4
+
5
+ module Minitest
6
+ ##
7
+ # Minitest Assertions. All assertion methods accept a +msg+ which is
8
+ # printed if the assertion fails.
9
+ #
10
+ # Protocol: Nearly everything here boils up to +assert+, which
11
+ # expects to be able to increment an instance accessor named
12
+ # +assertions+. This is not provided by Assertions and must be
13
+ # provided by the thing including Assertions. See Minitest::Runnable
14
+ # for an example.
15
+
16
+ module Assertions
17
+ UNDEFINED = Object.new # :nodoc:
18
+
19
+ def UNDEFINED.inspect # :nodoc:
20
+ "UNDEFINED" # again with the rdoc bugs... :(
21
+ end
22
+
23
+ ##
24
+ # Returns the diff command to use in #diff. Tries to intelligently
25
+ # figure out what diff to use.
26
+
27
+ def self.diff
28
+ return @diff if defined? @diff
29
+
30
+ @diff = if (RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ and
31
+ system "diff.exe", __FILE__, __FILE__) then
32
+ "diff.exe -u"
33
+ elsif system "gdiff", __FILE__, __FILE__ then
34
+ "gdiff -u" # solaris and kin suck
35
+ elsif system "diff", __FILE__, __FILE__ then
36
+ "diff -u"
37
+ else
38
+ nil
39
+ end
40
+ end
41
+
42
+ ##
43
+ # Set the diff command to use in #diff.
44
+
45
+ def self.diff= o
46
+ @diff = o
47
+ end
48
+
49
+ ##
50
+ # Returns a diff between +exp+ and +act+. If there is no known
51
+ # diff command or if it doesn't make sense to diff the output
52
+ # (single line, short output), then it simply returns a basic
53
+ # comparison between the two.
54
+ #
55
+ # See +things_to_diff+ for more info.
56
+
57
+ def diff exp, act
58
+ result = nil
59
+
60
+ expect, butwas = things_to_diff exp, act
61
+
62
+ return "Expected: #{mu_pp exp}\n Actual: #{mu_pp act}" unless
63
+ expect
64
+
65
+ Tempfile.create "expect" do |a|
66
+ a.puts expect
67
+ a.flush
68
+
69
+ Tempfile.create "butwas" do |b|
70
+ b.puts butwas
71
+ b.flush
72
+
73
+ result = `#{Minitest::Assertions.diff} #{a.path} #{b.path}`
74
+ result.sub!(/^\-\-\- .+/, "--- expected")
75
+ result.sub!(/^\+\+\+ .+/, "+++ actual")
76
+
77
+ if result.empty? then
78
+ klass = exp.class
79
+ result = [
80
+ "No visible difference in the #{klass}#inspect output.\n",
81
+ "You should look at the implementation of #== on ",
82
+ "#{klass} or its members.\n",
83
+ expect,
84
+ ].join
85
+ end
86
+ end
87
+ end
88
+
89
+ result
90
+ end
91
+
92
+ ##
93
+ # Returns things to diff [expect, butwas], or [nil, nil] if nothing to diff.
94
+ #
95
+ # Criterion:
96
+ #
97
+ # 1. Strings include newlines or escaped newlines, but not both.
98
+ # 2. or: String lengths are > 30 characters.
99
+ # 3. or: Strings are equal to each other (but maybe different encodings?).
100
+ # 4. and: we found a diff executable.
101
+
102
+ def things_to_diff exp, act
103
+ expect = mu_pp_for_diff exp
104
+ butwas = mu_pp_for_diff act
105
+
106
+ e1, e2 = expect.include?("\n"), expect.include?("\\n")
107
+ b1, b2 = butwas.include?("\n"), butwas.include?("\\n")
108
+
109
+ need_to_diff =
110
+ (e1 ^ e2 ||
111
+ b1 ^ b2 ||
112
+ expect.size > 30 ||
113
+ butwas.size > 30 ||
114
+ expect == butwas) &&
115
+ Minitest::Assertions.diff
116
+
117
+ need_to_diff && [expect, butwas]
118
+ end
119
+
120
+ ##
121
+ # This returns a human-readable version of +obj+. By default
122
+ # #inspect is called. You can override this to use #pretty_inspect
123
+ # if you want.
124
+ #
125
+ # See Minitest::Test.make_my_diffs_pretty!
126
+
127
+ def mu_pp obj
128
+ s = obj.inspect.encode Encoding.default_external
129
+
130
+ return s unless String === obj &&
131
+ (obj.encoding != Encoding.default_external || !obj.valid_encoding?)
132
+
133
+ enc = "# encoding: #{obj.encoding}"
134
+ val = "# valid: #{obj.valid_encoding?}"
135
+
136
+ [enc, val, s].join "\n"
137
+ end
138
+
139
+ ##
140
+ # This returns a diff-able more human-readable version of +obj+.
141
+ # This differs from the regular mu_pp because it expands escaped
142
+ # newlines and makes hex-values (like object_ids) generic. This
143
+ # uses mu_pp to do the first pass and then cleans it up.
144
+
145
+ def mu_pp_for_diff obj
146
+ str = mu_pp obj
147
+
148
+ # both '\n' & '\\n' (_after_ mu_pp (aka inspect))
149
+ single = str.match?(/(?<!\\|^)\\n/)
150
+ double = str.match?(/(?<=\\|^)\\n/)
151
+
152
+ process =
153
+ if single ^ double then
154
+ if single then
155
+ lambda { |s| s == "\\n" ? "\n" : s } # unescape
156
+ else
157
+ lambda { |s| s == "\\\\n" ? "\\n\n" : s } # unescape a bit, add nls
158
+ end
159
+ else
160
+ :itself # leave it alone
161
+ end
162
+
163
+ str
164
+ .gsub(/\\?\\n/, &process)
165
+ .gsub(/:0x[a-fA-F0-9]{4,}/m, ":0xXXXXXX") # anonymize hex values
166
+ end
167
+
168
+ ##
169
+ # Fails unless +test+ is truthy.
170
+
171
+ def assert test, msg = nil
172
+ self.assertions += 1
173
+ unless test then
174
+ msg ||= "Expected #{mu_pp test} to be truthy."
175
+ msg = msg.call if Proc === msg
176
+ raise Minitest::Assertion, msg
177
+ end
178
+ true
179
+ end
180
+
181
+ def _synchronize # :nodoc:
182
+ yield
183
+ end
184
+
185
+ ##
186
+ # Fails unless +obj+ is empty.
187
+
188
+ def assert_empty obj, msg = nil
189
+ msg = message(msg) { "Expected #{mu_pp obj} to be empty" }
190
+ assert_respond_to obj, :empty?
191
+ assert obj.empty?, msg
192
+ end
193
+
194
+ def _where # :nodoc:
195
+ Minitest.filter_backtrace(caller).first
196
+ .split(":in ", 2).first # clean up noise
197
+ end
198
+
199
+ def _caller_uplevel # :nodoc:
200
+ backtrace = caller
201
+ real_caller = Minitest.filter_backtrace(caller).first
202
+ backtrace.index(real_caller)
203
+ end
204
+
205
+ E = "" # :nodoc:
206
+
207
+ ##
208
+ # Fails unless <tt>exp == act</tt> printing the difference between
209
+ # the two, if possible.
210
+ #
211
+ # If there is no visible difference but the assertion fails, you
212
+ # should suspect that your #== is buggy, or your inspect output is
213
+ # missing crucial details. For nicer structural diffing, set
214
+ # Minitest::Test.make_my_diffs_pretty!
215
+ #
216
+ # For floats use assert_in_delta.
217
+ #
218
+ # See also: Minitest::Assertions.diff
219
+
220
+ def assert_equal exp, act, msg = nil
221
+ msg = message(msg, E) { diff exp, act }
222
+ result = assert exp == act, msg
223
+
224
+ if nil == exp then
225
+ if Minitest::VERSION >= "6" then
226
+ refute_nil exp, "Use assert_nil if expecting nil."
227
+ else
228
+ warn "DEPRECATED: Use assert_nil if expecting nil. This will fail in Minitest 6.", uplevel: _caller_uplevel
229
+ end
230
+ end
231
+
232
+ result
233
+ end
234
+
235
+ ##
236
+ # For comparing Floats. Fails unless +exp+ and +act+ are within +delta+
237
+ # of each other.
238
+ #
239
+ # assert_in_delta Math::PI, (22.0 / 7.0), 0.01
240
+
241
+ def assert_in_delta exp, act, delta = 0.001, msg = nil
242
+ n = (exp - act).abs
243
+ msg = message(msg) {
244
+ "Expected |#{exp} - #{act}| (#{n}) to be <= #{delta}"
245
+ }
246
+ assert delta >= n, msg
247
+ end
248
+
249
+ ##
250
+ # For comparing Floats. Fails unless +exp+ and +act+ have a relative
251
+ # error less than +epsilon+.
252
+
253
+ def assert_in_epsilon exp, act, epsilon = 0.001, msg = nil
254
+ assert_in_delta exp, act, [exp.abs, act.abs].min * epsilon, msg
255
+ end
256
+
257
+ ##
258
+ # Fails unless +collection+ includes +obj+.
259
+
260
+ def assert_includes collection, obj, msg = nil
261
+ msg = message(msg) {
262
+ "Expected #{mu_pp collection} to include #{mu_pp obj}"
263
+ }
264
+ assert_respond_to collection, :include?
265
+ assert collection.include?(obj), msg
266
+ end
267
+
268
+ ##
269
+ # Fails unless +obj+ is an instance of +cls+.
270
+
271
+ def assert_instance_of cls, obj, msg = nil
272
+ msg = message(msg) {
273
+ "Expected #{mu_pp obj} to be an instance of #{cls}, not #{obj.class}"
274
+ }
275
+
276
+ assert obj.instance_of?(cls), msg
277
+ end
278
+
279
+ ##
280
+ # Fails unless +obj+ is a kind of +cls+.
281
+
282
+ def assert_kind_of cls, obj, msg = nil
283
+ msg = message(msg) {
284
+ "Expected #{mu_pp obj} to be a kind of #{cls}, not #{obj.class}"
285
+ }
286
+
287
+ assert obj.kind_of?(cls), msg
288
+ end
289
+
290
+ ##
291
+ # Fails unless +matcher+ <tt>=~</tt> +obj+.
292
+
293
+ def assert_match matcher, obj, msg = nil
294
+ msg = message(msg) { "Expected #{mu_pp matcher} to match #{mu_pp obj}" }
295
+ assert_respond_to matcher, :=~
296
+ matcher = Regexp.new Regexp.escape matcher if String === matcher
297
+ assert matcher =~ obj, msg
298
+
299
+ Regexp.last_match
300
+ end
301
+
302
+ ##
303
+ # Fails unless +obj+ is nil
304
+
305
+ def assert_nil obj, msg = nil
306
+ msg = message(msg) { "Expected #{mu_pp obj} to be nil" }
307
+ assert obj.nil?, msg
308
+ end
309
+
310
+ ##
311
+ # For testing with binary operators. Eg:
312
+ #
313
+ # assert_operator 5, :<=, 4
314
+
315
+ def assert_operator o1, op, o2 = UNDEFINED, msg = nil
316
+ return assert_predicate o1, op, msg if UNDEFINED == o2
317
+ msg = message(msg) { "Expected #{mu_pp o1} to be #{op} #{mu_pp o2}" }
318
+ assert o1.__send__(op, o2), msg
319
+ end
320
+
321
+ ##
322
+ # Fails if stdout or stderr do not output the expected results.
323
+ # Pass in nil if you don't care about that streams output. Pass in
324
+ # "" if you require it to be silent. Pass in a regexp if you want
325
+ # to pattern match.
326
+ #
327
+ # assert_output(/hey/) { method_with_output }
328
+ #
329
+ # NOTE: this uses #capture_io, not #capture_subprocess_io.
330
+ #
331
+ # See also: #assert_silent
332
+
333
+ def assert_output stdout = nil, stderr = nil
334
+ flunk "assert_output requires a block to capture output." unless
335
+ block_given?
336
+
337
+ out, err = capture_io do
338
+ yield
339
+ end
340
+
341
+ err_msg = Regexp === stderr ? :assert_match : :assert_equal if stderr
342
+ out_msg = Regexp === stdout ? :assert_match : :assert_equal if stdout
343
+
344
+ y = send err_msg, stderr, err, "In stderr" if err_msg
345
+ x = send out_msg, stdout, out, "In stdout" if out_msg
346
+
347
+ (!stdout || x) && (!stderr || y)
348
+ rescue Assertion
349
+ raise
350
+ rescue => e
351
+ raise UnexpectedError, e
352
+ end
353
+
354
+ ##
355
+ # Fails unless +path+ exists.
356
+
357
+ def assert_path_exists path, msg = nil
358
+ msg = message(msg) { "Expected path '#{path}' to exist" }
359
+ assert File.exist?(path), msg
360
+ end
361
+
362
+ ##
363
+ # For testing with pattern matching (only supported with Ruby 3.0 and later)
364
+ #
365
+ # # pass
366
+ # assert_pattern { [1,2,3] => [Integer, Integer, Integer] }
367
+ #
368
+ # # fail "length mismatch (given 3, expected 1)"
369
+ # assert_pattern { [1,2,3] => [Integer] }
370
+ #
371
+ # The bare <tt>=></tt> pattern will raise a NoMatchingPatternError on failure, which would
372
+ # normally be counted as a test error. This assertion rescues NoMatchingPatternError and
373
+ # generates a test failure. Any other exception will be raised as normal and generate a test
374
+ # error.
375
+
376
+ def assert_pattern
377
+ flunk "assert_pattern requires a block to capture errors." unless block_given?
378
+
379
+ yield
380
+ pass
381
+ rescue NoMatchingPatternError => e
382
+ flunk e.message
383
+ end
384
+
385
+ ##
386
+ # For testing with predicates. Eg:
387
+ #
388
+ # assert_predicate str, :empty?
389
+ #
390
+ # This is really meant for specs and is front-ended by assert_operator:
391
+ #
392
+ # str.must_be :empty?
393
+
394
+ def assert_predicate o1, op, msg = nil
395
+ msg = message(msg) { "Expected #{mu_pp o1} to be #{op}" }
396
+ assert o1.__send__(op), msg
397
+ end
398
+
399
+ ##
400
+ # Fails unless the block raises one of +exp+. Returns the
401
+ # exception matched so you can check the message, attributes, etc.
402
+ #
403
+ # +exp+ takes an optional message on the end to help explain
404
+ # failures and defaults to StandardError if no exception class is
405
+ # passed. Eg:
406
+ #
407
+ # assert_raises(CustomError) { method_with_custom_error }
408
+ #
409
+ # With custom error message:
410
+ #
411
+ # assert_raises(CustomError, 'This should have raised CustomError') { method_with_custom_error }
412
+ #
413
+ # Using the returned object:
414
+ #
415
+ # error = assert_raises(CustomError) do
416
+ # raise CustomError, 'This is really bad'
417
+ # end
418
+ #
419
+ # assert_equal 'This is really bad', error.message
420
+
421
+ def assert_raises *exp
422
+ flunk "assert_raises requires a block to capture errors." unless
423
+ block_given?
424
+
425
+ msg = "#{exp.pop}.\n" if String === exp.last
426
+ exp << StandardError if exp.empty?
427
+
428
+ begin
429
+ yield
430
+ rescue *exp => e
431
+ pass # count assertion
432
+ return e
433
+ rescue Minitest::Assertion # incl Skip & UnexpectedError
434
+ # don't count assertion
435
+ raise
436
+ rescue SignalException, SystemExit
437
+ raise
438
+ rescue Exception => e
439
+ flunk proc {
440
+ exception_details(e, "#{msg}#{mu_pp exp} exception expected, not")
441
+ }
442
+ end
443
+
444
+ exp = exp.first if exp.size == 1
445
+
446
+ flunk "#{msg}#{mu_pp exp} expected but nothing was raised."
447
+ end
448
+
449
+ ##
450
+ # Fails unless +obj+ responds to +meth+.
451
+ # include_all defaults to false to match Object#respond_to?
452
+
453
+ def assert_respond_to obj, meth, msg = nil, include_all: false
454
+ msg = message(msg) {
455
+ "Expected #{mu_pp obj} (#{obj.class}) to respond to ##{meth}"
456
+ }
457
+ assert obj.respond_to?(meth, include_all), msg
458
+ end
459
+
460
+ ##
461
+ # Fails unless +exp+ and +act+ are #equal?
462
+
463
+ def assert_same exp, act, msg = nil
464
+ msg = message(msg) {
465
+ data = [mu_pp(act), act.object_id, mu_pp(exp), exp.object_id]
466
+ "Expected %s (oid=%d) to be the same as %s (oid=%d)" % data
467
+ }
468
+ assert exp.equal?(act), msg
469
+ end
470
+
471
+ ##
472
+ # +send_ary+ is a receiver, message and arguments.
473
+ #
474
+ # Fails unless the call returns a true value
475
+
476
+ def assert_send send_ary, m = nil
477
+ warn "DEPRECATED: assert_send.", uplevel: _caller_uplevel
478
+
479
+ recv, msg, *args = send_ary
480
+ m = message(m) {
481
+ "Expected #{mu_pp recv}.#{msg}(*#{mu_pp args}) to return true"
482
+ }
483
+ assert recv.__send__(msg, *args), m
484
+ end
485
+
486
+ ##
487
+ # Fails if the block outputs anything to stderr or stdout.
488
+ #
489
+ # See also: #assert_output
490
+
491
+ def assert_silent
492
+ assert_output "", "" do
493
+ yield
494
+ end
495
+ end
496
+
497
+ ##
498
+ # Fails unless the block throws +sym+
499
+
500
+ def assert_throws sym, msg = nil
501
+ default = "Expected #{mu_pp sym} to have been thrown"
502
+ caught = true
503
+ value = catch sym do
504
+ begin
505
+ yield
506
+ rescue ArgumentError => e # 1.9+ exception
507
+ raise e unless e.message.include? "uncaught throw"
508
+ default += ", not #{e.message.split(/ /).last}"
509
+ end
510
+ caught = false
511
+ end
512
+
513
+ assert caught, message(msg) { default }
514
+ value
515
+ rescue Assertion
516
+ raise
517
+ rescue => e
518
+ raise UnexpectedError, e
519
+ end
520
+
521
+ ##
522
+ # Captures $stdout and $stderr into strings:
523
+ #
524
+ # out, err = capture_io do
525
+ # puts "Some info"
526
+ # warn "You did a bad thing"
527
+ # end
528
+ #
529
+ # assert_match %r%info%, out
530
+ # assert_match %r%bad%, err
531
+ #
532
+ # NOTE: For efficiency, this method uses StringIO and does not
533
+ # capture IO for subprocesses. Use #capture_subprocess_io for
534
+ # that.
535
+
536
+ def capture_io
537
+ _synchronize do
538
+ begin
539
+ captured_stdout, captured_stderr = StringIO.new, StringIO.new
540
+
541
+ orig_stdout, orig_stderr = $stdout, $stderr
542
+ $stdout, $stderr = captured_stdout, captured_stderr
543
+
544
+ yield
545
+
546
+ return captured_stdout.string, captured_stderr.string
547
+ ensure
548
+ $stdout = orig_stdout
549
+ $stderr = orig_stderr
550
+ end
551
+ end
552
+ end
553
+
554
+ ##
555
+ # Captures $stdout and $stderr into strings, using Tempfile to
556
+ # ensure that subprocess IO is captured as well.
557
+ #
558
+ # out, err = capture_subprocess_io do
559
+ # system "echo Some info"
560
+ # system "echo You did a bad thing 1>&2"
561
+ # end
562
+ #
563
+ # assert_match %r%info%, out
564
+ # assert_match %r%bad%, err
565
+ #
566
+ # NOTE: This method is approximately 10x slower than #capture_io so
567
+ # only use it when you need to test the output of a subprocess.
568
+
569
+ def capture_subprocess_io
570
+ _synchronize do
571
+ begin
572
+ require "tempfile"
573
+
574
+ captured_stdout, captured_stderr = Tempfile.new("out"), Tempfile.new("err")
575
+
576
+ orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
577
+ $stdout.reopen captured_stdout
578
+ $stderr.reopen captured_stderr
579
+
580
+ yield
581
+
582
+ $stdout.rewind
583
+ $stderr.rewind
584
+
585
+ return captured_stdout.read, captured_stderr.read
586
+ ensure
587
+ $stdout.reopen orig_stdout
588
+ $stderr.reopen orig_stderr
589
+
590
+ orig_stdout.close
591
+ orig_stderr.close
592
+ captured_stdout.close!
593
+ captured_stderr.close!
594
+ end
595
+ end
596
+ end
597
+
598
+ ##
599
+ # Returns details for exception +e+
600
+
601
+ def exception_details e, msg
602
+ [
603
+ msg,
604
+ "Class: <#{e.class}>",
605
+ "Message: <#{e.message.inspect}>",
606
+ "---Backtrace---",
607
+ Minitest.filter_backtrace(e.backtrace),
608
+ "---------------",
609
+ ].join "\n"
610
+ end
611
+
612
+ ##
613
+ # Fails after a given date (in the local time zone). This allows
614
+ # you to put time-bombs in your tests if you need to keep
615
+ # something around until a later date lest you forget about it.
616
+
617
+ def fail_after y, m, d, msg
618
+ flunk msg if Time.now > Time.local(y, m, d)
619
+ end
620
+
621
+ ##
622
+ # Fails with +msg+.
623
+
624
+ def flunk msg = nil
625
+ msg ||= "Epic Fail!"
626
+ assert false, msg
627
+ end
628
+
629
+ ##
630
+ # Returns a proc that will output +msg+ along with the default message.
631
+
632
+ def message msg = nil, ending = nil, &default
633
+ proc {
634
+ msg = msg.call.chomp(".") if Proc === msg
635
+ custom_message = "#{msg}.\n" unless msg.nil? or msg.to_s.empty?
636
+ "#{custom_message}#{default.call}#{ending || "."}"
637
+ }
638
+ end
639
+
640
+ ##
641
+ # used for counting assertions
642
+
643
+ def pass _msg = nil
644
+ assert true
645
+ end
646
+
647
+ ##
648
+ # Fails if +test+ is truthy.
649
+
650
+ def refute test, msg = nil
651
+ msg ||= message { "Expected #{mu_pp test} to not be truthy" }
652
+ assert !test, msg
653
+ end
654
+
655
+ ##
656
+ # Fails if +obj+ is empty.
657
+
658
+ def refute_empty obj, msg = nil
659
+ msg = message(msg) { "Expected #{mu_pp obj} to not be empty" }
660
+ assert_respond_to obj, :empty?
661
+ refute obj.empty?, msg
662
+ end
663
+
664
+ ##
665
+ # Fails if <tt>exp == act</tt>.
666
+ #
667
+ # For floats use refute_in_delta.
668
+
669
+ def refute_equal exp, act, msg = nil
670
+ msg = message(msg) {
671
+ "Expected #{mu_pp act} to not be equal to #{mu_pp exp}"
672
+ }
673
+ refute exp == act, msg
674
+ end
675
+
676
+ ##
677
+ # For comparing Floats. Fails if +exp+ is within +delta+ of +act+.
678
+ #
679
+ # refute_in_delta Math::PI, (22.0 / 7.0)
680
+
681
+ def refute_in_delta exp, act, delta = 0.001, msg = nil
682
+ n = (exp - act).abs
683
+ msg = message(msg) {
684
+ "Expected |#{exp} - #{act}| (#{n}) to not be <= #{delta}"
685
+ }
686
+ refute delta >= n, msg
687
+ end
688
+
689
+ ##
690
+ # For comparing Floats. Fails if +exp+ and +act+ have a relative error
691
+ # less than +epsilon+.
692
+
693
+ def refute_in_epsilon exp, act, epsilon = 0.001, msg = nil
694
+ refute_in_delta exp, act, [exp.abs, act.abs].min * epsilon, msg
695
+ end
696
+
697
+ ##
698
+ # Fails if +collection+ includes +obj+.
699
+
700
+ def refute_includes collection, obj, msg = nil
701
+ msg = message(msg) {
702
+ "Expected #{mu_pp collection} to not include #{mu_pp obj}"
703
+ }
704
+ assert_respond_to collection, :include?
705
+ refute collection.include?(obj), msg
706
+ end
707
+
708
+ ##
709
+ # Fails if +obj+ is an instance of +cls+.
710
+
711
+ def refute_instance_of cls, obj, msg = nil
712
+ msg = message(msg) {
713
+ "Expected #{mu_pp obj} to not be an instance of #{cls}"
714
+ }
715
+ refute obj.instance_of?(cls), msg
716
+ end
717
+
718
+ ##
719
+ # Fails if +obj+ is a kind of +cls+.
720
+
721
+ def refute_kind_of cls, obj, msg = nil
722
+ msg = message(msg) { "Expected #{mu_pp obj} to not be a kind of #{cls}" }
723
+ refute obj.kind_of?(cls), msg
724
+ end
725
+
726
+ ##
727
+ # Fails if +matcher+ <tt>=~</tt> +obj+.
728
+
729
+ def refute_match matcher, obj, msg = nil
730
+ msg = message(msg) { "Expected #{mu_pp matcher} to not match #{mu_pp obj}" }
731
+ assert_respond_to matcher, :=~
732
+ matcher = Regexp.new Regexp.escape matcher if String === matcher
733
+ refute matcher =~ obj, msg
734
+ end
735
+
736
+ ##
737
+ # Fails if +obj+ is nil.
738
+
739
+ def refute_nil obj, msg = nil
740
+ msg = message(msg) { "Expected #{mu_pp obj} to not be nil" }
741
+ refute obj.nil?, msg
742
+ end
743
+
744
+ ##
745
+ # For testing with pattern matching (only supported with Ruby 3.0 and later)
746
+ #
747
+ # # pass
748
+ # refute_pattern { [1,2,3] => [String] }
749
+ #
750
+ # # fail "NoMatchingPatternError expected, but nothing was raised."
751
+ # refute_pattern { [1,2,3] => [Integer, Integer, Integer] }
752
+ #
753
+ # This assertion expects a NoMatchingPatternError exception, and will fail if none is raised. Any
754
+ # other exceptions will be raised as normal and generate a test error.
755
+
756
+ def refute_pattern
757
+ flunk "refute_pattern requires a block to capture errors." unless block_given?
758
+
759
+ yield
760
+ flunk "NoMatchingPatternError expected, but nothing was raised."
761
+ rescue NoMatchingPatternError
762
+ pass
763
+ end
764
+
765
+ ##
766
+ # Fails if +o1+ is not +op+ +o2+. Eg:
767
+ #
768
+ # refute_operator 1, :>, 2 #=> pass
769
+ # refute_operator 1, :<, 2 #=> fail
770
+
771
+ def refute_operator o1, op, o2 = UNDEFINED, msg = nil
772
+ return refute_predicate o1, op, msg if UNDEFINED == o2
773
+ msg = message(msg) { "Expected #{mu_pp o1} to not be #{op} #{mu_pp o2}" }
774
+ refute o1.__send__(op, o2), msg
775
+ end
776
+
777
+ ##
778
+ # Fails if +path+ exists.
779
+
780
+ def refute_path_exists path, msg = nil
781
+ msg = message(msg) { "Expected path '#{path}' to not exist" }
782
+ refute File.exist?(path), msg
783
+ end
784
+
785
+ ##
786
+ # For testing with predicates.
787
+ #
788
+ # refute_predicate str, :empty?
789
+ #
790
+ # This is really meant for specs and is front-ended by refute_operator:
791
+ #
792
+ # str.wont_be :empty?
793
+
794
+ def refute_predicate o1, op, msg = nil
795
+ msg = message(msg) { "Expected #{mu_pp o1} to not be #{op}" }
796
+ refute o1.__send__(op), msg
797
+ end
798
+
799
+ ##
800
+ # Fails if +obj+ responds to the message +meth+.
801
+ # include_all defaults to false to match Object#respond_to?
802
+
803
+ def refute_respond_to obj, meth, msg = nil, include_all: false
804
+ msg = message(msg) { "Expected #{mu_pp obj} to not respond to #{meth}" }
805
+
806
+ refute obj.respond_to?(meth, include_all), msg
807
+ end
808
+
809
+ ##
810
+ # Fails if +exp+ is the same (by object identity) as +act+.
811
+
812
+ def refute_same exp, act, msg = nil
813
+ msg = message(msg) {
814
+ data = [mu_pp(act), act.object_id, mu_pp(exp), exp.object_id]
815
+ "Expected %s (oid=%d) to not be the same as %s (oid=%d)" % data
816
+ }
817
+ refute exp.equal?(act), msg
818
+ end
819
+
820
+ ##
821
+ # Skips the current run. If run in verbose-mode, the skipped run
822
+ # gets listed at the end of the run but doesn't cause a failure
823
+ # exit code.
824
+
825
+ def skip msg = nil, _ignored = nil
826
+ msg ||= "Skipped, no message given"
827
+ @skip = true
828
+ raise Minitest::Skip, msg
829
+ end
830
+
831
+ ##
832
+ # Skips the current run until a given date (in the local time
833
+ # zone). This allows you to put some fixes on hold until a later
834
+ # date, but still holds you accountable and prevents you from
835
+ # forgetting it.
836
+
837
+ def skip_until y, m, d, msg
838
+ skip msg if Time.now < Time.local(y, m, d)
839
+ where = caller(1..1).first.rpartition(":in").reject(&:empty?).first
840
+ warn "Stale skip_until %p at %s" % [msg, where]
841
+ end
842
+
843
+ ##
844
+ # Was this testcase skipped? Meant for #teardown.
845
+
846
+ def skipped?
847
+ defined?(@skip) and @skip
848
+ end
849
+ end
850
+ end