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,1250 @@
1
+ require "optparse"
2
+ require "stringio"
3
+ require "etc"
4
+
5
+ require_relative "minitest/parallel"
6
+ require_relative "minitest/compress"
7
+
8
+ ##
9
+ # The top-level namespace for Minitest. Also the location of the main
10
+ # runtime. See +Minitest.run+ for more information.
11
+
12
+ module Minitest
13
+ VERSION = "5.26.2" # :nodoc:
14
+
15
+ @@installed_at_exit ||= false
16
+ @@after_run = []
17
+ @extensions = []
18
+
19
+ def self.cattr_accessor name # :nodoc:
20
+ (class << self; self; end).attr_accessor name
21
+ end
22
+
23
+ ##
24
+ # The random seed used for this run. This is used to srand at the
25
+ # start of the run and between each +Runnable.run+.
26
+ #
27
+ # Set via Minitest.run after processing args.
28
+
29
+ cattr_accessor :seed
30
+
31
+ ##
32
+ # Parallel test executor
33
+
34
+ cattr_accessor :parallel_executor
35
+
36
+ warn "DEPRECATED: use MT_CPU instead of N for parallel test runs" if ENV["N"] && ENV["N"].to_i > 0
37
+ n_threads = (ENV["MT_CPU"] || ENV["N"] || Etc.nprocessors).to_i
38
+
39
+ self.parallel_executor = Parallel::Executor.new n_threads if n_threads > 1
40
+
41
+ ##
42
+ # Filter object for backtraces.
43
+
44
+ cattr_accessor :backtrace_filter
45
+
46
+ ##
47
+ # Reporter object to be used for all runs.
48
+ #
49
+ # NOTE: This accessor is only available during setup, not during runs.
50
+
51
+ cattr_accessor :reporter
52
+
53
+ ##
54
+ # Names of known extension plugins.
55
+
56
+ cattr_accessor :extensions
57
+
58
+ ##
59
+ # The signal to use for dumping information to STDERR. Defaults to "INFO".
60
+
61
+ cattr_accessor :info_signal
62
+ self.info_signal = "INFO"
63
+
64
+ cattr_accessor :allow_fork
65
+ self.allow_fork = false
66
+
67
+ ##
68
+ # Registers Minitest to run at process exit
69
+
70
+ def self.autorun
71
+ Warning[:deprecated] = true
72
+
73
+ at_exit {
74
+ next if $! and not ($!.kind_of? SystemExit and $!.success?)
75
+
76
+ exit_code = nil
77
+
78
+ pid = Process.pid
79
+ at_exit {
80
+ next if !Minitest.allow_fork && Process.pid != pid
81
+ @@after_run.reverse_each(&:call)
82
+ exit exit_code || false
83
+ }
84
+
85
+ exit_code = Minitest.run ARGV
86
+ } unless @@installed_at_exit
87
+ @@installed_at_exit = true
88
+ end
89
+
90
+ ##
91
+ # A simple hook allowing you to run a block of code after everything
92
+ # is done running. Eg:
93
+ #
94
+ # Minitest.after_run { p $debugging_info }
95
+
96
+ def self.after_run &block
97
+ @@after_run << block
98
+ end
99
+
100
+ ##
101
+ # Register a plugin to be used. Does NOT require / load it.
102
+
103
+ def self.register_plugin name_or_mod
104
+ self.extensions << name_or_mod
105
+ nil
106
+ end
107
+
108
+ def self.load_plugins # :nodoc:
109
+ return unless defined? Gem
110
+
111
+ seen = {}
112
+
113
+ Gem.find_files("minitest/*_plugin.rb").each do |plugin_path|
114
+ name = File.basename plugin_path, "_plugin.rb"
115
+
116
+ next if seen[name]
117
+ seen[name] = true
118
+
119
+ require plugin_path
120
+ self.extensions << name
121
+ end
122
+ end
123
+
124
+ def self.init_plugins options # :nodoc:
125
+ self.extensions.each do |mod_or_meth|
126
+ case mod_or_meth
127
+ when Symbol, String then
128
+ name = mod_or_meth
129
+ msg = "plugin_#{name}_init"
130
+ next unless self.respond_to? msg
131
+ send msg, options
132
+ when Module then
133
+ recv = mod_or_meth
134
+ next unless recv.respond_to? :minitest_plugin_init
135
+ recv.minitest_plugin_init options
136
+ else
137
+ raise ArgumentError, "plugin is %p, but it must be a symbol, string or module" % [mod_or_meth]
138
+ end
139
+ end
140
+ end
141
+
142
+ def self.process_args args = [] # :nodoc:
143
+ options = {
144
+ :io => $stdout,
145
+ }
146
+ orig_args = args.dup
147
+
148
+ OptionParser.new do |opts|
149
+ opts.program_name = "minitest"
150
+ opts.version = Minitest::VERSION
151
+
152
+ opts.banner = [
153
+ "Usage: rake test [A=options] (see Minitest::TestTask for more options)",
154
+ "minitest [paths] [options] (with minitest-sprint gem)",
155
+ "ruby path/to/test.rb [options]\n\n",
156
+ ].join "\n or: "
157
+
158
+ opts.on "-h", "--help", "Display this help." do
159
+ puts opts
160
+ exit
161
+ end
162
+
163
+ opts.on "--no-plugins", "Bypass minitest plugin auto-loading (or env: MT_NO_PLUGINS=1)."
164
+
165
+ desc = "Sets random seed. Also via env, eg: SEED=42"
166
+ opts.on "-s", "--seed SEED", Integer, desc do |m|
167
+ options[:seed] = m
168
+ end
169
+
170
+ opts.on "-v", "--verbose", "Verbose. Print each name as they run." do
171
+ options[:verbose] = true
172
+ end
173
+
174
+ opts.on "-q", "--quiet", "Quiet. Show no dots while processing files." do
175
+ options[:quiet] = true
176
+ end
177
+
178
+ opts.on "--show-skips", "Show skipped at the end of run." do
179
+ options[:show_skips] = true
180
+ end
181
+
182
+ opts.on "-n", "--name PATTERN", "Include /regexp/ or string for run." do |a|
183
+ options[:filter] = a
184
+ end
185
+
186
+ opts.on "-e", "--exclude PATTERN", "Exclude /regexp/ or string from run." do |a|
187
+ options[:exclude] = a
188
+ end
189
+
190
+ # part of my unofficial embedded gem "makeoptparseworkwell"
191
+ def opts.topdict(name) = (name.length > 1 ? top.long : top.short)
192
+ def opts.alias(from, to) = (dict = topdict(from) ; dict[to] = dict[from])
193
+
194
+ # these will work but won't show up in --help output:
195
+ opts.alias "name", "include"
196
+ opts.alias "n", "i"
197
+ opts.alias "e", "x"
198
+
199
+ opts.on "-S", "--skip CODES", String, "Skip reporting of certain types of results (eg E)." do |s|
200
+ options[:skip] = s.chars.to_a
201
+ end
202
+
203
+ opts.on "-W[error]", String, "Turn Ruby warnings into errors" do |s|
204
+ options[:Werror] = true
205
+ case s
206
+ when "error", "all", nil then
207
+ require_relative "minitest/error_on_warning"
208
+ $VERBOSE = true
209
+ ::Warning[:deprecated] = true
210
+ else
211
+ ::Warning[s.to_sym] = true # check validity of category
212
+ end
213
+ end
214
+
215
+ unless extensions.empty?
216
+ opts.separator ""
217
+ opts.separator "Known extensions: #{extensions.join ", "}"
218
+
219
+ extensions.each do |mod_or_meth|
220
+ case mod_or_meth
221
+ when Symbol, String then
222
+ meth = mod_or_meth
223
+ msg = "plugin_#{meth}_options"
224
+ send msg, opts, options if respond_to? msg
225
+ when Module
226
+ recv = mod_or_meth
227
+ next unless recv.respond_to? :minitest_plugin_options
228
+ recv.minitest_plugin_options opts, options
229
+ else
230
+ raise ArgumentError, "plugin is %p, but it must be a symbol, string or module" % [mod_or_meth]
231
+ end
232
+ end
233
+ end
234
+
235
+ begin
236
+ opts.parse! args
237
+ rescue OptionParser::InvalidOption => e
238
+ puts
239
+ puts e
240
+ puts
241
+ puts opts
242
+ exit 1
243
+ end
244
+
245
+ orig_args -= args
246
+ end
247
+
248
+ unless options[:seed] then
249
+ srand
250
+ options[:seed] = (ENV["SEED"] || srand).to_i % 0xFFFF
251
+ orig_args << "--seed" << options[:seed].to_s
252
+ end
253
+
254
+ options[:args] = orig_args.map { |s|
255
+ s.match?(/[\s|&<>$()]/) ? s.inspect : s
256
+ }.join " "
257
+
258
+ options
259
+ end
260
+
261
+ ##
262
+ # This is the top-level run method. Everything starts from here. It
263
+ # tells each Runnable sub-class to run, and each of those are
264
+ # responsible for doing whatever they do.
265
+ #
266
+ # The overall structure of a run looks like this:
267
+ #
268
+ # Minitest.autorun
269
+ # Minitest.run(args)
270
+ # Minitest.load_plugins
271
+ # Minitest.process_args
272
+ # Minitest.init_plugins
273
+ # Minitest.__run(reporter, options)
274
+ # Runnable.runnables.each |runnable_klass|
275
+ # runnable_klass.run(reporter, options)
276
+ # filtered_methods = runnable_methods.select {...}.reject {...}
277
+ # filtered_methods.each |runnable_method|
278
+ # runnable_klass.run_one_method(self, runnable_method, reporter)
279
+ # Minitest.run_one_method(runnable_klass, runnable_method)
280
+ # runnable_klass.new(runnable_method).run
281
+
282
+ def self.run args = []
283
+ self.load_plugins unless args.delete("--no-plugins") || ENV["MT_NO_PLUGINS"]
284
+
285
+ options = process_args args
286
+
287
+ Minitest.seed = options[:seed]
288
+ srand Minitest.seed
289
+
290
+ reporter = CompositeReporter.new
291
+ reporter << SummaryReporter.new(options[:io], options)
292
+ reporter << ProgressReporter.new(options[:io], options) unless options[:quiet]
293
+
294
+ self.reporter = reporter # this makes it available to plugins
295
+ self.init_plugins options
296
+ self.reporter = nil # runnables shouldn't depend on the reporter, ever
297
+
298
+ self.parallel_executor.start if parallel_executor.respond_to? :start
299
+ reporter.start
300
+ begin
301
+ __run reporter, options
302
+ finished = true
303
+ rescue Interrupt
304
+ warn "Interrupted. Exiting..."
305
+ end
306
+ self.parallel_executor.shutdown if parallel_executor.respond_to? :shutdown
307
+
308
+ # might have been removed/replaced during init_plugins:
309
+ summary = reporter.reporters.grep(SummaryReporter).first
310
+
311
+ reporter.report
312
+
313
+ return empty_run! options if finished && summary && summary.count == 0
314
+ finished and reporter.passed?
315
+ end
316
+
317
+ def self.empty_run! options # :nodoc:
318
+ filter = options[:filter]
319
+ return true unless filter # no filter, but nothing ran == success
320
+
321
+ warn "Nothing ran for filter: %s" % [filter]
322
+
323
+ require "did_you_mean" # soft dependency, punt if it doesn't load
324
+
325
+ ms = Runnable.runnables.flat_map(&:runnable_methods)
326
+ cs = DidYouMean::SpellChecker.new(dictionary: ms).correct filter
327
+
328
+ warn DidYouMean::Formatter.message_for cs unless cs.empty?
329
+ rescue LoadError
330
+ # do nothing
331
+ end
332
+
333
+ ##
334
+ # Internal run method. Responsible for telling all Runnable
335
+ # sub-classes to run.
336
+
337
+ def self.__run reporter, options
338
+ suites = Runnable.runnables.shuffle
339
+ parallel, serial = suites.partition { |s| s.test_order == :parallel }
340
+
341
+ # If we run the parallel tests before the serial tests, the parallel tests
342
+ # could run in parallel with the serial tests. This would be bad because
343
+ # the serial tests won't lock around Reporter#record. Run the serial tests
344
+ # first, so that after they complete, the parallel tests will lock when
345
+ # recording results.
346
+ serial.map { |suite| suite.run reporter, options } +
347
+ parallel.map { |suite| suite.run reporter, options }
348
+ end
349
+
350
+ def self.filter_backtrace bt # :nodoc:
351
+ result = backtrace_filter.filter bt
352
+ result = bt.dup if result.empty?
353
+ result
354
+ end
355
+
356
+ ##
357
+ # Represents anything "runnable", like Test, Spec, Benchmark, or
358
+ # whatever you can dream up.
359
+ #
360
+ # Subclasses of this are automatically registered and available in
361
+ # Runnable.runnables.
362
+
363
+ class Runnable
364
+ ##
365
+ # Number of assertions executed in this run.
366
+
367
+ attr_accessor :assertions
368
+
369
+ ##
370
+ # An assertion raised during the run, if any.
371
+
372
+ attr_accessor :failures
373
+
374
+ ##
375
+ # The time it took to run.
376
+
377
+ attr_accessor :time
378
+
379
+ def time_it # :nodoc:
380
+ t0 = Minitest.clock_time
381
+
382
+ yield
383
+ ensure
384
+ self.time = Minitest.clock_time - t0
385
+ end
386
+
387
+ ##
388
+ # Name of the run.
389
+
390
+ def name
391
+ @NAME
392
+ end
393
+
394
+ ##
395
+ # Set the name of the run.
396
+
397
+ def name= o
398
+ @NAME = o
399
+ end
400
+
401
+ ##
402
+ # Returns all instance methods matching the pattern +re+.
403
+
404
+ def self.methods_matching re
405
+ public_instance_methods(true).grep(re).map(&:to_s)
406
+ end
407
+
408
+ def self.reset # :nodoc:
409
+ @@runnables = []
410
+ end
411
+
412
+ reset
413
+
414
+ ##
415
+ # Responsible for running all runnable methods in a given class,
416
+ # each in its own instance. Each instance is passed to the
417
+ # reporter to record.
418
+
419
+ def self.run reporter, options = {}
420
+ pos = options[:filter]
421
+ neg = options[:exclude]
422
+
423
+ pos = Regexp.new $1 if pos.kind_of?(String) && pos =~ %r%/(.*)/%
424
+ neg = Regexp.new $1 if neg.kind_of?(String) && neg =~ %r%/(.*)/%
425
+
426
+ # at most 1-2% slower than a 1-pass version, stop optimizing this
427
+ filtered_methods = self.runnable_methods
428
+ .select { |m| !pos || pos === m || pos === "#{self}##{m}" }
429
+ .reject { |m| neg && (neg === m || neg === "#{self}##{m}") }
430
+
431
+ return if filtered_methods.empty?
432
+
433
+ t0 = name = nil
434
+
435
+ @_info_handler = lambda do
436
+ unless reporter.passed? then
437
+ warn "Current results:"
438
+ warn reporter.reporters.grep(SummaryReporter).first
439
+ end
440
+
441
+ warn "Current: %s#%s %.2fs" % [self, name, Minitest.clock_time - t0]
442
+ end
443
+
444
+ with_info_handler reporter do
445
+ filtered_methods.each do |method_name|
446
+ name = method_name
447
+ t0 = Minitest.clock_time
448
+
449
+ run_one_method self, method_name, reporter
450
+ end
451
+ end
452
+ end
453
+
454
+ ##
455
+ # Runs a single method and has the reporter record the result.
456
+ # This was considered internal API but is factored out of run so
457
+ # that subclasses can specialize the running of an individual
458
+ # test. See Minitest::ParallelTest::ClassMethods for an example.
459
+
460
+ def self.run_one_method klass, method_name, reporter
461
+ reporter.prerecord klass, method_name
462
+ reporter.record Minitest.run_one_method(klass, method_name)
463
+ end
464
+
465
+ ##
466
+ # Defines the order to run tests (:random by default). Override
467
+ # this or use a convenience method to change it for your tests.
468
+
469
+ def self.test_order
470
+ :random
471
+ end
472
+
473
+ def self.with_info_handler reporter, &block # :nodoc:
474
+ on_signal ::Minitest.info_signal, @_info_handler, &block
475
+ end
476
+
477
+ SIGNALS = Signal.list # :nodoc:
478
+
479
+ def self.on_signal name, action # :nodoc:
480
+ supported = SIGNALS[name]
481
+
482
+ old_trap = trap name do
483
+ old_trap.call if old_trap.respond_to? :call
484
+ action.call
485
+ end if supported
486
+
487
+ yield
488
+ ensure
489
+ trap name, old_trap if supported
490
+ end
491
+
492
+ ##
493
+ # Each subclass of Runnable is responsible for overriding this
494
+ # method to return all runnable methods. See #methods_matching.
495
+
496
+ def self.runnable_methods
497
+ raise NotImplementedError, "subclass responsibility"
498
+ end
499
+
500
+ ##
501
+ # Returns all subclasses of Runnable.
502
+
503
+ def self.runnables
504
+ @@runnables
505
+ end
506
+
507
+ @@marshal_dump_warned = false
508
+
509
+ def marshal_dump # :nodoc:
510
+ unless @@marshal_dump_warned then
511
+ warn ["Minitest::Runnable#marshal_dump is deprecated.",
512
+ "You might be violating internals. From", caller(1..1).first].join " "
513
+ @@marshal_dump_warned = true
514
+ end
515
+
516
+ [self.name, self.failures, self.assertions, self.time]
517
+ end
518
+
519
+ def marshal_load ary # :nodoc:
520
+ self.name, self.failures, self.assertions, self.time = ary
521
+ end
522
+
523
+ def failure # :nodoc:
524
+ self.failures.first
525
+ end
526
+
527
+ def initialize name # :nodoc:
528
+ self.name = name
529
+ self.failures = []
530
+ self.assertions = 0
531
+ # lazy initializer for metadata
532
+ end
533
+
534
+ ##
535
+ # Metadata you attach to the test results that get sent to the reporter.
536
+ #
537
+ # Lazily initializes to a hash, to keep memory down.
538
+ #
539
+ # NOTE: this data *must* be plain (read: marshal-able) data!
540
+ # Hashes! Arrays! Strings!
541
+
542
+ def metadata
543
+ @metadata ||= {}
544
+ end
545
+
546
+ ##
547
+ # Sets metadata, mainly used for +Result.from+.
548
+
549
+ attr_writer :metadata
550
+
551
+ ##
552
+ # Returns true if metadata exists.
553
+
554
+ def metadata?
555
+ defined? @metadata
556
+ end
557
+
558
+ ##
559
+ # Runs a single method. Needs to return self.
560
+
561
+ def run
562
+ raise NotImplementedError, "subclass responsibility"
563
+ end
564
+
565
+ ##
566
+ # Did this run pass?
567
+ #
568
+ # Note: skipped runs are not considered passing, but they don't
569
+ # cause the process to exit non-zero.
570
+
571
+ def passed?
572
+ raise NotImplementedError, "subclass responsibility"
573
+ end
574
+
575
+ ##
576
+ # Returns a single character string to print based on the result
577
+ # of the run. One of <tt>"."</tt>, <tt>"F"</tt>,
578
+ # <tt>"E"</tt> or <tt>"S"</tt>.
579
+
580
+ def result_code
581
+ raise NotImplementedError, "subclass responsibility"
582
+ end
583
+
584
+ ##
585
+ # Was this run skipped? See #passed? for more information.
586
+
587
+ def skipped?
588
+ raise NotImplementedError, "subclass responsibility"
589
+ end
590
+ end # Runnable
591
+
592
+ ##
593
+ # Shared code for anything that can get passed to a Reporter. See
594
+ # Minitest::Test & Minitest::Result.
595
+
596
+ module Reportable
597
+ ##
598
+ # Did this run pass?
599
+ #
600
+ # Note: skipped runs are not considered passing, but they don't
601
+ # cause the process to exit non-zero.
602
+
603
+ def passed?
604
+ not self.failure
605
+ end
606
+
607
+ BASE_DIR = "#{Dir.pwd}/" # :nodoc:
608
+
609
+ ##
610
+ # The location identifier of this test. Depends on a method
611
+ # existing called class_name.
612
+
613
+ def location
614
+ loc = " [#{self.failure.location.delete_prefix BASE_DIR}]" unless passed? or error?
615
+ "#{self.class_name}##{self.name}#{loc}"
616
+ end
617
+
618
+ def class_name # :nodoc:
619
+ raise NotImplementedError, "subclass responsibility"
620
+ end
621
+
622
+ ##
623
+ # Returns ".", "F", or "E" based on the result of the run.
624
+
625
+ def result_code
626
+ self.failure and self.failure.result_code or "."
627
+ end
628
+
629
+ ##
630
+ # Was this run skipped?
631
+
632
+ def skipped?
633
+ self.failure and Skip === self.failure
634
+ end
635
+
636
+ ##
637
+ # Did this run error?
638
+
639
+ def error?
640
+ self.failures.any? UnexpectedError
641
+ end
642
+ end # Reportable
643
+
644
+ ##
645
+ # This represents a test result in a clean way that can be
646
+ # marshalled over a wire. Tests can do anything they want to the
647
+ # test instance and can create conditions that cause Marshal.dump to
648
+ # blow up. By using Result.from(a_test) you can be reasonably sure
649
+ # that the test result can be marshalled.
650
+
651
+ class Result < Runnable
652
+ include Minitest::Reportable
653
+
654
+ undef_method :marshal_dump
655
+ undef_method :marshal_load
656
+
657
+ ##
658
+ # The class name of the test result.
659
+
660
+ attr_accessor :klass
661
+
662
+ ##
663
+ # The location of the test method.
664
+
665
+ attr_accessor :source_location
666
+
667
+ ##
668
+ # Create a new test result from a Runnable instance.
669
+
670
+ def self.from runnable
671
+ o = runnable
672
+
673
+ r = self.new o.name
674
+ r.klass = o.class.name
675
+ r.assertions = o.assertions
676
+ r.failures = o.failures.dup
677
+ r.time = o.time
678
+ r.metadata = o.metadata if o.metadata?
679
+
680
+ r.source_location = o.method(o.name).source_location rescue ["unknown", -1]
681
+
682
+ r
683
+ end
684
+
685
+ def class_name # :nodoc:
686
+ self.klass # for Minitest::Reportable
687
+ end
688
+
689
+ def to_s # :nodoc:
690
+ return location if passed? and not skipped?
691
+
692
+ failures.map { |failure|
693
+ "#{failure.result_label}:\n#{self.location}:\n#{failure.message}\n"
694
+ }.join "\n"
695
+ end
696
+ end # Result
697
+
698
+ ##
699
+ # Defines the API for Reporters. Subclass this and override whatever
700
+ # you want. Go nuts.
701
+
702
+ class AbstractReporter
703
+
704
+ def initialize # :nodoc:
705
+ @mutex = Mutex.new
706
+ end
707
+
708
+ ##
709
+ # Starts reporting on the run.
710
+
711
+ def start
712
+ end
713
+
714
+ ##
715
+ # About to start running a test. This allows a reporter to show
716
+ # that it is starting or that we are in the middle of a test run.
717
+
718
+ def prerecord klass, name
719
+ end
720
+
721
+ ##
722
+ # Output and record the result of the test. Call
723
+ # {result#result_code}[rdoc-ref:Runnable#result_code] to get the
724
+ # result character string. Stores the result of the run if the run
725
+ # did not pass.
726
+
727
+ def record result
728
+ end
729
+
730
+ ##
731
+ # Outputs the summary of the run.
732
+
733
+ def report
734
+ end
735
+
736
+ ##
737
+ # Did this run pass?
738
+
739
+ def passed?
740
+ true
741
+ end
742
+
743
+ def synchronize &block # :nodoc:
744
+ @mutex.synchronize(&block)
745
+ end
746
+ end # AbstractReportera
747
+
748
+ class Reporter < AbstractReporter # :nodoc:
749
+ ##
750
+ # The IO used to report.
751
+
752
+ attr_accessor :io
753
+
754
+ ##
755
+ # Command-line options for this run.
756
+
757
+ attr_accessor :options
758
+
759
+ def initialize io = $stdout, options = {} # :nodoc:
760
+ super()
761
+ self.io = io
762
+ self.options = options
763
+ end
764
+ end
765
+
766
+ ##
767
+ # A very simple reporter that prints the "dots" during the run.
768
+ #
769
+ # This is added to the top-level CompositeReporter at the start of
770
+ # the run. If you want to change the output of minitest via a
771
+ # plugin, pull this out of the composite and replace it with your
772
+ # own.
773
+
774
+ class ProgressReporter < Reporter
775
+ def prerecord klass, name # :nodoc:
776
+ return unless options[:verbose]
777
+
778
+ io.print "%s#%s = " % [klass.name, name]
779
+ io.flush
780
+ end
781
+
782
+ def record result # :nodoc:
783
+ io.print "%.2f s = " % [result.time] if options[:verbose]
784
+ io.print result.result_code
785
+ io.puts if options[:verbose]
786
+ end
787
+ end
788
+
789
+ ##
790
+ # A reporter that gathers statistics about a test run. Does not do
791
+ # any IO because meant to be used as a parent class for a reporter
792
+ # that does.
793
+ #
794
+ # If you want to create an entirely different type of output (eg,
795
+ # CI, HTML, etc), this is the place to start.
796
+ #
797
+ # Example:
798
+ #
799
+ # class JenkinsCIReporter < StatisticsReporter
800
+ # def report
801
+ # super # Needed to calculate some statistics
802
+ #
803
+ # print "<testsuite "
804
+ # print "tests='#{count}' "
805
+ # print "failures='#{failures}' "
806
+ # # Remaining XML...
807
+ # end
808
+ # end
809
+
810
+ class StatisticsReporter < Reporter
811
+ ##
812
+ # Total number of assertions.
813
+
814
+ attr_accessor :assertions
815
+
816
+ ##
817
+ # Total number of test cases.
818
+
819
+ attr_accessor :count
820
+
821
+ ##
822
+ # An +Array+ of test cases that failed or were skipped.
823
+
824
+ attr_accessor :results
825
+
826
+ ##
827
+ # Time the test run started. If available, the monotonic clock is
828
+ # used and this is a +Float+, otherwise it's an instance of
829
+ # +Time+.
830
+
831
+ attr_accessor :start_time
832
+
833
+ ##
834
+ # Test run time. If available, the monotonic clock is used and
835
+ # this is a +Float+, otherwise it's an instance of +Time+.
836
+
837
+ attr_accessor :total_time
838
+
839
+ ##
840
+ # Total number of tests that failed.
841
+
842
+ attr_accessor :failures
843
+
844
+ ##
845
+ # Total number of tests that erred.
846
+
847
+ attr_accessor :errors
848
+
849
+ ##
850
+ # Total number of tests that warned.
851
+
852
+ attr_accessor :warnings
853
+
854
+ ##
855
+ # Total number of tests that where skipped.
856
+
857
+ attr_accessor :skips
858
+
859
+ def initialize io = $stdout, options = {} # :nodoc:
860
+ super
861
+
862
+ self.assertions = 0
863
+ self.count = 0
864
+ self.results = []
865
+ self.start_time = nil
866
+ self.total_time = nil
867
+ self.failures = nil
868
+ self.errors = nil
869
+ self.warnings = nil
870
+ self.skips = nil
871
+ end
872
+
873
+ def passed? # :nodoc:
874
+ results.all?(&:skipped?)
875
+ end
876
+
877
+ def start # :nodoc:
878
+ self.start_time = Minitest.clock_time
879
+ end
880
+
881
+ def record result # :nodoc:
882
+ self.count += 1
883
+ self.assertions += result.assertions
884
+
885
+ results << result if not result.passed? or result.skipped?
886
+ end
887
+
888
+ ##
889
+ # Report on the tracked statistics.
890
+
891
+ def report
892
+ aggregate = results.group_by { |r| r.failure.class }
893
+ aggregate.default = [] # dumb. group_by should provide this
894
+
895
+ self.total_time = Minitest.clock_time - start_time
896
+ self.failures = aggregate[Assertion].size
897
+ self.errors = aggregate[UnexpectedError].size
898
+ self.warnings = aggregate[UnexpectedWarning].size
899
+ self.skips = aggregate[Skip].size
900
+ end
901
+ end # StatisticsReporter
902
+
903
+ ##
904
+ # A reporter that prints the header, summary, and failure details at
905
+ # the end of the run.
906
+ #
907
+ # This is added to the top-level CompositeReporter at the start of
908
+ # the run. If you want to change the output of minitest via a
909
+ # plugin, pull this out of the composite and replace it with your
910
+ # own.
911
+
912
+ class SummaryReporter < StatisticsReporter
913
+ attr_accessor :sync # :nodoc:
914
+ attr_accessor :old_sync # :nodoc:
915
+
916
+ def start # :nodoc:
917
+ super
918
+
919
+ io.puts "Run options: #{options[:args]}"
920
+ io.puts
921
+ io.puts "# Running:"
922
+ io.puts
923
+
924
+ self.sync = io.respond_to? :"sync="
925
+ self.old_sync, io.sync = io.sync, true if self.sync
926
+ end
927
+
928
+ def report # :nodoc:
929
+ super
930
+
931
+ io.sync = self.old_sync
932
+
933
+ io.puts unless options[:verbose] # finish the dots
934
+ io.puts
935
+ io.puts statistics
936
+ aggregated_results io
937
+ io.puts summary
938
+ end
939
+
940
+ def statistics # :nodoc:
941
+ "Finished in %.6fs, %.4f runs/s, %.4f assertions/s." %
942
+ [total_time, count / total_time, assertions / total_time]
943
+ end
944
+
945
+ def aggregated_results io # :nodoc:
946
+ filtered_results = results.dup
947
+ filtered_results.reject!(&:skipped?) unless
948
+ options[:verbose] or options[:show_skips]
949
+
950
+ skip = options[:skip] || []
951
+
952
+ filtered_results.each_with_index { |result, i|
953
+ next if skip.include? result.result_code
954
+
955
+ io.puts "\n%3d) %s" % [i+1, result]
956
+ }
957
+ io.puts
958
+ io
959
+ end
960
+
961
+ def to_s # :nodoc:
962
+ aggregated_results(StringIO.new("".b)).string
963
+ end
964
+
965
+ def summary # :nodoc:
966
+ extra = []
967
+
968
+ extra << ", %d warnings" % [warnings] if options[:Werror]
969
+
970
+ extra << "\n\nYou have skipped tests. Run with --verbose for details." if
971
+ results.any?(&:skipped?) unless
972
+ options[:verbose] or
973
+ options[:show_skips] or
974
+ ENV["MT_NO_SKIP_MSG"]
975
+
976
+ "%d runs, %d assertions, %d failures, %d errors, %d skips%s" %
977
+ [count, assertions, failures, errors, skips, extra.join]
978
+ end
979
+ end # SummaryReporter
980
+
981
+ ##
982
+ # Dispatch to multiple reporters as one.
983
+
984
+ class CompositeReporter < AbstractReporter
985
+ ##
986
+ # The list of reporters to dispatch to.
987
+
988
+ attr_accessor :reporters
989
+
990
+ def initialize *reporters # :nodoc:
991
+ super()
992
+ self.reporters = reporters
993
+ end
994
+
995
+ def io # :nodoc:
996
+ reporters.first.io
997
+ end
998
+
999
+ ##
1000
+ # Add another reporter to the mix.
1001
+
1002
+ def << reporter
1003
+ self.reporters << reporter
1004
+ end
1005
+
1006
+ def passed? # :nodoc:
1007
+ self.reporters.all?(&:passed?)
1008
+ end
1009
+
1010
+ def start # :nodoc:
1011
+ self.reporters.each(&:start)
1012
+ end
1013
+
1014
+ def prerecord klass, name # :nodoc:
1015
+ self.reporters.each do |reporter|
1016
+ # TODO: remove conditional for minitest 6
1017
+ reporter.prerecord klass, name if reporter.respond_to? :prerecord
1018
+ end
1019
+ end
1020
+
1021
+ def record result # :nodoc:
1022
+ self.reporters.each do |reporter|
1023
+ reporter.record result
1024
+ end
1025
+ end
1026
+
1027
+ def report # :nodoc:
1028
+ self.reporters.each(&:report)
1029
+ end
1030
+ end # CompositeReporter
1031
+
1032
+ ##
1033
+ # Represents run failures.
1034
+
1035
+ class Assertion < Exception
1036
+ RE = /in [`'](?:[^']+[#.])?(?:assert|refute|flunk|pass|fail|raise|must|wont)/ # :nodoc:
1037
+
1038
+ def error # :nodoc:
1039
+ self
1040
+ end
1041
+
1042
+ ##
1043
+ # Where was this run before an assertion was raised?
1044
+
1045
+ def location
1046
+ bt = Minitest.filter_backtrace self.backtrace
1047
+ idx = bt.rindex { |s| s.match? RE } || -1 # fall back to first item
1048
+ loc = bt[idx+1] || bt.last || "unknown:-1"
1049
+
1050
+ loc.sub(/:in .*$/, "")
1051
+ end
1052
+
1053
+ def result_code # :nodoc:
1054
+ result_label[0, 1]
1055
+ end
1056
+
1057
+ def result_label # :nodoc:
1058
+ "Failure"
1059
+ end
1060
+ end
1061
+
1062
+ ##
1063
+ # Assertion raised when skipping a run.
1064
+
1065
+ class Skip < Assertion
1066
+ def result_label # :nodoc:
1067
+ "Skipped"
1068
+ end
1069
+ end
1070
+
1071
+ ##
1072
+ # Assertion wrapping an unexpected error that was raised during a run.
1073
+
1074
+ class UnexpectedError < Assertion
1075
+ include Minitest::Compress
1076
+
1077
+ # TODO: figure out how to use `cause` instead
1078
+ attr_accessor :error # :nodoc:
1079
+
1080
+ def initialize error # :nodoc:
1081
+ super "Unexpected exception"
1082
+
1083
+ if SystemStackError === error then
1084
+ bt = error.backtrace
1085
+ new_bt = compress bt
1086
+ error = error.exception "#{bt.size} -> #{new_bt.size}"
1087
+ error.set_backtrace new_bt
1088
+ end
1089
+
1090
+ self.error = error
1091
+ end
1092
+
1093
+ def backtrace # :nodoc:
1094
+ self.error.backtrace
1095
+ end
1096
+
1097
+ BASE_RE = %r%#{Regexp.escape Dir.pwd}/% # :nodoc:
1098
+
1099
+ def message # :nodoc:
1100
+ bt = Minitest.filter_backtrace(self.backtrace).join("\n ")
1101
+ .gsub(BASE_RE, "")
1102
+ "#{self.error.class}: #{self.error.message}\n #{bt}"
1103
+ end
1104
+
1105
+ def result_label # :nodoc:
1106
+ "Error"
1107
+ end
1108
+ end
1109
+
1110
+ ##
1111
+ # Assertion raised on warning when running in -Werror mode.
1112
+
1113
+ class UnexpectedWarning < Assertion
1114
+ def result_label # :nodoc:
1115
+ "Warning"
1116
+ end
1117
+ end
1118
+
1119
+ ##
1120
+ # Provides a simple set of guards that you can use in your tests
1121
+ # to skip execution if it is not applicable. These methods are
1122
+ # mixed into Test as both instance and class methods so you
1123
+ # can use them inside or outside of the test methods.
1124
+ #
1125
+ # def test_something_for_mri
1126
+ # skip "bug 1234" if jruby?
1127
+ # # ...
1128
+ # end
1129
+ #
1130
+ # if windows? then
1131
+ # # ... lots of test methods ...
1132
+ # end
1133
+
1134
+ module Guard
1135
+
1136
+ ##
1137
+ # Is this running on jruby?
1138
+
1139
+ def jruby? platform = RUBY_PLATFORM
1140
+ "java" == platform
1141
+ end
1142
+
1143
+ ##
1144
+ # Is this running on maglev?
1145
+
1146
+ def maglev? platform = defined?(RUBY_ENGINE) && RUBY_ENGINE
1147
+ where = Minitest.filter_backtrace(caller).first
1148
+ where = where.split(":in ", 2).first # clean up noise
1149
+ warn "DEPRECATED: `maglev?` called from #{where}. This will fail in Minitest 6."
1150
+ "maglev" == platform
1151
+ end
1152
+
1153
+ ##
1154
+ # Is this running on mri?
1155
+
1156
+ def mri? platform = RUBY_DESCRIPTION
1157
+ platform.start_with? "ruby"
1158
+ end
1159
+
1160
+ ##
1161
+ # Is this running on macOS?
1162
+
1163
+ def osx? platform = RUBY_PLATFORM
1164
+ platform.include? "darwin"
1165
+ end
1166
+
1167
+ ##
1168
+ # Is this running on rubinius?
1169
+
1170
+ def rubinius? platform = defined?(RUBY_ENGINE) && RUBY_ENGINE
1171
+ where = Minitest.filter_backtrace(caller).first
1172
+ where = where.split(":in ", 2).first # clean up noise
1173
+ warn "DEPRECATED: `rubinius?` called from #{where}. This will fail in Minitest 6."
1174
+ "rbx" == platform
1175
+ end
1176
+
1177
+ ##
1178
+ # Is this running on windows?
1179
+
1180
+ def windows? platform = RUBY_PLATFORM
1181
+ /mswin|mingw/.match? platform
1182
+ end
1183
+ end
1184
+
1185
+ ##
1186
+ # The standard backtrace filter for minitest.
1187
+ #
1188
+ # See Minitest.backtrace_filter=.
1189
+
1190
+ class BacktraceFilter
1191
+
1192
+ MT_RE = %r%lib/minitest|internal:warning% # :nodoc:
1193
+
1194
+ ##
1195
+ # The regular expression to use to filter backtraces. Defaults to +MT_RE+.
1196
+
1197
+ attr_accessor :regexp
1198
+
1199
+ def initialize regexp = MT_RE # :nodoc:
1200
+ self.regexp = regexp
1201
+ end
1202
+
1203
+ ##
1204
+ # Filter +bt+ to something useful. Returns the whole thing if
1205
+ # $DEBUG (ruby) or $MT_DEBUG (env).
1206
+
1207
+ def filter bt
1208
+ return ["No backtrace"] unless bt
1209
+
1210
+ return bt.dup if $DEBUG || ENV["MT_DEBUG"]
1211
+
1212
+ new_bt = bt.take_while { |line| !regexp.match? line.to_s }
1213
+ new_bt = bt.select { |line| !regexp.match? line.to_s } if new_bt.empty?
1214
+ new_bt = bt.dup if new_bt.empty?
1215
+
1216
+ new_bt
1217
+ end
1218
+ end
1219
+
1220
+ self.backtrace_filter = BacktraceFilter.new
1221
+
1222
+ def self.run_one_method klass, method_name # :nodoc:
1223
+ result = klass.new(method_name).run
1224
+ raise "#{klass}#run _must_ return a Result" unless Result === result
1225
+ result
1226
+ end
1227
+
1228
+ # :stopdoc:
1229
+
1230
+ if defined? Process::CLOCK_MONOTONIC # :nodoc:
1231
+ def self.clock_time
1232
+ Process.clock_gettime Process::CLOCK_MONOTONIC
1233
+ end
1234
+ else
1235
+ def self.clock_time
1236
+ Time.now
1237
+ end
1238
+ end
1239
+
1240
+ class Runnable # re-open
1241
+ def self.inherited klass # :nodoc:
1242
+ self.runnables << klass
1243
+ super
1244
+ end
1245
+ end
1246
+
1247
+ # :startdoc:
1248
+ end
1249
+
1250
+ require_relative "minitest/test"