diff options
| -rw-r--r-- | Cargo.lock | 674 | ||||
| -rw-r--r-- | Cargo.toml | 44 | ||||
| -rw-r--r-- | flake.lock | 12 | ||||
| -rw-r--r-- | flake.nix | 2 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/push.rs | 36 | ||||
| -rw-r--r-- | src/bin/git_remote_nostr/utils.rs | 13 | ||||
| -rw-r--r-- | src/bin/ngit/sub_commands/list.rs | 13 | ||||
| -rw-r--r-- | src/bin/ngit/sub_commands/send.rs | 7 | ||||
| -rw-r--r-- | src/lib/client.rs | 135 | ||||
| -rw-r--r-- | src/lib/git/identify_ahead_behind.rs | 8 | ||||
| -rw-r--r-- | src/lib/git/mod.rs | 94 | ||||
| -rw-r--r-- | src/lib/git/nostr_url.rs | 8 | ||||
| -rw-r--r-- | src/lib/git_events.rs | 16 | ||||
| -rw-r--r-- | src/lib/login/fresh.rs | 8 | ||||
| -rw-r--r-- | src/lib/login/mod.rs | 14 | ||||
| -rw-r--r-- | src/lib/repo_ref.rs | 13 | ||||
| -rw-r--r-- | src/lib/repo_state.rs | 7 | ||||
| -rw-r--r-- | test_utils/Cargo.toml | 26 | ||||
| -rw-r--r-- | test_utils/src/lib.rs | 214 | ||||
| -rw-r--r-- | test_utils/src/relay.rs | 10 | ||||
| -rw-r--r-- | tests/git_remote_nostr/list.rs | 23 | ||||
| -rw-r--r-- | tests/git_remote_nostr/push.rs | 42 | ||||
| -rw-r--r-- | tests/ngit_init.rs | 36 | ||||
| -rw-r--r-- | tests/ngit_list.rs | 378 | ||||
| -rw-r--r-- | tests/ngit_login.rs | 368 | ||||
| -rw-r--r-- | tests/ngit_send.rs | 253 |
26 files changed, 1388 insertions, 1066 deletions
| @@ -13,9 +13,9 @@ dependencies = [ | |||
| 13 | 13 | ||
| 14 | [[package]] | 14 | [[package]] |
| 15 | name = "adler2" | 15 | name = "adler2" |
| 16 | version = "2.0.0" | 16 | version = "2.0.1" |
| 17 | source = "registry+https://github.com/rust-lang/crates.io-index" | 17 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 18 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" | 18 | checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" |
| 19 | 19 | ||
| 20 | [[package]] | 20 | [[package]] |
| 21 | name = "aead" | 21 | name = "aead" |
| @@ -49,9 +49,9 @@ dependencies = [ | |||
| 49 | 49 | ||
| 50 | [[package]] | 50 | [[package]] |
| 51 | name = "anstream" | 51 | name = "anstream" |
| 52 | version = "0.6.18" | 52 | version = "0.6.19" |
| 53 | source = "registry+https://github.com/rust-lang/crates.io-index" | 53 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 54 | checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" | 54 | checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" |
| 55 | dependencies = [ | 55 | dependencies = [ |
| 56 | "anstyle", | 56 | "anstyle", |
| 57 | "anstyle-parse", | 57 | "anstyle-parse", |
| @@ -64,36 +64,36 @@ dependencies = [ | |||
| 64 | 64 | ||
| 65 | [[package]] | 65 | [[package]] |
| 66 | name = "anstyle" | 66 | name = "anstyle" |
| 67 | version = "1.0.10" | 67 | version = "1.0.11" |
| 68 | source = "registry+https://github.com/rust-lang/crates.io-index" | 68 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 69 | checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" | 69 | checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" |
| 70 | 70 | ||
| 71 | [[package]] | 71 | [[package]] |
| 72 | name = "anstyle-parse" | 72 | name = "anstyle-parse" |
| 73 | version = "0.2.6" | 73 | version = "0.2.7" |
| 74 | source = "registry+https://github.com/rust-lang/crates.io-index" | 74 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 75 | checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" | 75 | checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" |
| 76 | dependencies = [ | 76 | dependencies = [ |
| 77 | "utf8parse", | 77 | "utf8parse", |
| 78 | ] | 78 | ] |
| 79 | 79 | ||
| 80 | [[package]] | 80 | [[package]] |
| 81 | name = "anstyle-query" | 81 | name = "anstyle-query" |
| 82 | version = "1.1.2" | 82 | version = "1.1.3" |
| 83 | source = "registry+https://github.com/rust-lang/crates.io-index" | 83 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 84 | checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" | 84 | checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" |
| 85 | dependencies = [ | 85 | dependencies = [ |
| 86 | "windows-sys 0.59.0", | 86 | "windows-sys 0.59.0", |
| 87 | ] | 87 | ] |
| 88 | 88 | ||
| 89 | [[package]] | 89 | [[package]] |
| 90 | name = "anstyle-wincon" | 90 | name = "anstyle-wincon" |
| 91 | version = "3.0.7" | 91 | version = "3.0.9" |
| 92 | source = "registry+https://github.com/rust-lang/crates.io-index" | 92 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 93 | checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" | 93 | checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" |
| 94 | dependencies = [ | 94 | dependencies = [ |
| 95 | "anstyle", | 95 | "anstyle", |
| 96 | "once_cell", | 96 | "once_cell_polyfill", |
| 97 | "windows-sys 0.59.0", | 97 | "windows-sys 0.59.0", |
| 98 | ] | 98 | ] |
| 99 | 99 | ||
| @@ -175,9 +175,9 @@ checksum = "ef49f5882e4b6afaac09ad239a4f8c70a24b8f2b0897edb1f706008efd109cf4" | |||
| 175 | 175 | ||
| 176 | [[package]] | 176 | [[package]] |
| 177 | name = "auth-git2" | 177 | name = "auth-git2" |
| 178 | version = "0.5.7" | 178 | version = "0.5.8" |
| 179 | source = "registry+https://github.com/rust-lang/crates.io-index" | 179 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 180 | checksum = "d55eead120c93036f531829cf9b85830a474e75ce71169680879d28078321ddc" | 180 | checksum = "4888bf91cce63baf1670512d0f12b5d636179a4abbad6504812ac8ab124b3efe" |
| 181 | dependencies = [ | 181 | dependencies = [ |
| 182 | "dirs", | 182 | "dirs", |
| 183 | "git2", | 183 | "git2", |
| @@ -186,15 +186,15 @@ dependencies = [ | |||
| 186 | 186 | ||
| 187 | [[package]] | 187 | [[package]] |
| 188 | name = "autocfg" | 188 | name = "autocfg" |
| 189 | version = "1.4.0" | 189 | version = "1.5.0" |
| 190 | source = "registry+https://github.com/rust-lang/crates.io-index" | 190 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 191 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" | 191 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" |
| 192 | 192 | ||
| 193 | [[package]] | 193 | [[package]] |
| 194 | name = "backtrace" | 194 | name = "backtrace" |
| 195 | version = "0.3.74" | 195 | version = "0.3.75" |
| 196 | source = "registry+https://github.com/rust-lang/crates.io-index" | 196 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 197 | checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" | 197 | checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" |
| 198 | dependencies = [ | 198 | dependencies = [ |
| 199 | "addr2line", | 199 | "addr2line", |
| 200 | "cfg-if", | 200 | "cfg-if", |
| @@ -213,9 +213,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" | |||
| 213 | 213 | ||
| 214 | [[package]] | 214 | [[package]] |
| 215 | name = "base64ct" | 215 | name = "base64ct" |
| 216 | version = "1.7.3" | 216 | version = "1.8.0" |
| 217 | source = "registry+https://github.com/rust-lang/crates.io-index" | 217 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 218 | checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" | 218 | checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" |
| 219 | 219 | ||
| 220 | [[package]] | 220 | [[package]] |
| 221 | name = "bech32" | 221 | name = "bech32" |
| @@ -225,9 +225,9 @@ checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" | |||
| 225 | 225 | ||
| 226 | [[package]] | 226 | [[package]] |
| 227 | name = "bip39" | 227 | name = "bip39" |
| 228 | version = "2.1.0" | 228 | version = "2.2.0" |
| 229 | source = "registry+https://github.com/rust-lang/crates.io-index" | 229 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 230 | checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" | 230 | checksum = "43d193de1f7487df1914d3a568b772458861d33f9c54249612cc2893d6915054" |
| 231 | dependencies = [ | 231 | dependencies = [ |
| 232 | "bitcoin_hashes 0.13.0", | 232 | "bitcoin_hashes 0.13.0", |
| 233 | "serde", | 233 | "serde", |
| @@ -275,9 +275,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | |||
| 275 | 275 | ||
| 276 | [[package]] | 276 | [[package]] |
| 277 | name = "bitflags" | 277 | name = "bitflags" |
| 278 | version = "2.9.0" | 278 | version = "2.9.1" |
| 279 | source = "registry+https://github.com/rust-lang/crates.io-index" | 279 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 280 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" | 280 | checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" |
| 281 | dependencies = [ | 281 | dependencies = [ |
| 282 | "serde", | 282 | "serde", |
| 283 | ] | 283 | ] |
| @@ -313,9 +313,9 @@ dependencies = [ | |||
| 313 | 313 | ||
| 314 | [[package]] | 314 | [[package]] |
| 315 | name = "bumpalo" | 315 | name = "bumpalo" |
| 316 | version = "3.17.0" | 316 | version = "3.19.0" |
| 317 | source = "registry+https://github.com/rust-lang/crates.io-index" | 317 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 318 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" | 318 | checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" |
| 319 | 319 | ||
| 320 | [[package]] | 320 | [[package]] |
| 321 | name = "byteorder" | 321 | name = "byteorder" |
| @@ -340,9 +340,9 @@ dependencies = [ | |||
| 340 | 340 | ||
| 341 | [[package]] | 341 | [[package]] |
| 342 | name = "cc" | 342 | name = "cc" |
| 343 | version = "1.2.21" | 343 | version = "1.2.29" |
| 344 | source = "registry+https://github.com/rust-lang/crates.io-index" | 344 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 345 | checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" | 345 | checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" |
| 346 | dependencies = [ | 346 | dependencies = [ |
| 347 | "jobserver", | 347 | "jobserver", |
| 348 | "libc", | 348 | "libc", |
| @@ -351,9 +351,9 @@ dependencies = [ | |||
| 351 | 351 | ||
| 352 | [[package]] | 352 | [[package]] |
| 353 | name = "cfg-if" | 353 | name = "cfg-if" |
| 354 | version = "1.0.0" | 354 | version = "1.0.1" |
| 355 | source = "registry+https://github.com/rust-lang/crates.io-index" | 355 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 356 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | 356 | checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" |
| 357 | 357 | ||
| 358 | [[package]] | 358 | [[package]] |
| 359 | name = "cfg_aliases" | 359 | name = "cfg_aliases" |
| @@ -398,9 +398,9 @@ dependencies = [ | |||
| 398 | 398 | ||
| 399 | [[package]] | 399 | [[package]] |
| 400 | name = "clap" | 400 | name = "clap" |
| 401 | version = "4.5.37" | 401 | version = "4.5.41" |
| 402 | source = "registry+https://github.com/rust-lang/crates.io-index" | 402 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 403 | checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" | 403 | checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" |
| 404 | dependencies = [ | 404 | dependencies = [ |
| 405 | "clap_builder", | 405 | "clap_builder", |
| 406 | "clap_derive", | 406 | "clap_derive", |
| @@ -408,9 +408,9 @@ dependencies = [ | |||
| 408 | 408 | ||
| 409 | [[package]] | 409 | [[package]] |
| 410 | name = "clap_builder" | 410 | name = "clap_builder" |
| 411 | version = "4.5.37" | 411 | version = "4.5.41" |
| 412 | source = "registry+https://github.com/rust-lang/crates.io-index" | 412 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 413 | checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" | 413 | checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" |
| 414 | dependencies = [ | 414 | dependencies = [ |
| 415 | "anstream", | 415 | "anstream", |
| 416 | "anstyle", | 416 | "anstyle", |
| @@ -420,9 +420,9 @@ dependencies = [ | |||
| 420 | 420 | ||
| 421 | [[package]] | 421 | [[package]] |
| 422 | name = "clap_derive" | 422 | name = "clap_derive" |
| 423 | version = "4.5.32" | 423 | version = "4.5.41" |
| 424 | source = "registry+https://github.com/rust-lang/crates.io-index" | 424 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 425 | checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" | 425 | checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" |
| 426 | dependencies = [ | 426 | dependencies = [ |
| 427 | "heck", | 427 | "heck", |
| 428 | "proc-macro2", | 428 | "proc-macro2", |
| @@ -432,15 +432,15 @@ dependencies = [ | |||
| 432 | 432 | ||
| 433 | [[package]] | 433 | [[package]] |
| 434 | name = "clap_lex" | 434 | name = "clap_lex" |
| 435 | version = "0.7.4" | 435 | version = "0.7.5" |
| 436 | source = "registry+https://github.com/rust-lang/crates.io-index" | 436 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 437 | checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" | 437 | checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" |
| 438 | 438 | ||
| 439 | [[package]] | 439 | [[package]] |
| 440 | name = "colorchoice" | 440 | name = "colorchoice" |
| 441 | version = "1.0.3" | 441 | version = "1.0.4" |
| 442 | source = "registry+https://github.com/rust-lang/crates.io-index" | 442 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 443 | checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" | 443 | checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" |
| 444 | 444 | ||
| 445 | [[package]] | 445 | [[package]] |
| 446 | name = "comma" | 446 | name = "comma" |
| @@ -462,6 +462,19 @@ dependencies = [ | |||
| 462 | ] | 462 | ] |
| 463 | 463 | ||
| 464 | [[package]] | 464 | [[package]] |
| 465 | name = "console" | ||
| 466 | version = "0.16.0" | ||
| 467 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 468 | checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" | ||
| 469 | dependencies = [ | ||
| 470 | "encode_unicode", | ||
| 471 | "libc", | ||
| 472 | "once_cell", | ||
| 473 | "unicode-width", | ||
| 474 | "windows-sys 0.60.2", | ||
| 475 | ] | ||
| 476 | |||
| 477 | [[package]] | ||
| 465 | name = "cpufeatures" | 478 | name = "cpufeatures" |
| 466 | version = "0.2.17" | 479 | version = "0.2.17" |
| 467 | source = "registry+https://github.com/rust-lang/crates.io-index" | 480 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -508,7 +521,7 @@ version = "0.11.0" | |||
| 508 | source = "registry+https://github.com/rust-lang/crates.io-index" | 521 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 509 | checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" | 522 | checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" |
| 510 | dependencies = [ | 523 | dependencies = [ |
| 511 | "console", | 524 | "console 0.15.11", |
| 512 | "shell-words", | 525 | "shell-words", |
| 513 | "tempfile", | 526 | "tempfile", |
| 514 | "thiserror 1.0.69", | 527 | "thiserror 1.0.69", |
| @@ -559,7 +572,7 @@ dependencies = [ | |||
| 559 | "libc", | 572 | "libc", |
| 560 | "option-ext", | 573 | "option-ext", |
| 561 | "redox_users", | 574 | "redox_users", |
| 562 | "windows-sys 0.59.0", | 575 | "windows-sys 0.60.2", |
| 563 | ] | 576 | ] |
| 564 | 577 | ||
| 565 | [[package]] | 578 | [[package]] |
| @@ -614,12 +627,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" | |||
| 614 | 627 | ||
| 615 | [[package]] | 628 | [[package]] |
| 616 | name = "errno" | 629 | name = "errno" |
| 617 | version = "0.3.11" | 630 | version = "0.3.13" |
| 618 | source = "registry+https://github.com/rust-lang/crates.io-index" | 631 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 619 | checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" | 632 | checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" |
| 620 | dependencies = [ | 633 | dependencies = [ |
| 621 | "libc", | 634 | "libc", |
| 622 | "windows-sys 0.59.0", | 635 | "windows-sys 0.60.2", |
| 623 | ] | 636 | ] |
| 624 | 637 | ||
| 625 | [[package]] | 638 | [[package]] |
| @@ -780,15 +793,15 @@ dependencies = [ | |||
| 780 | "cfg-if", | 793 | "cfg-if", |
| 781 | "js-sys", | 794 | "js-sys", |
| 782 | "libc", | 795 | "libc", |
| 783 | "wasi 0.11.0+wasi-snapshot-preview1", | 796 | "wasi 0.11.1+wasi-snapshot-preview1", |
| 784 | "wasm-bindgen", | 797 | "wasm-bindgen", |
| 785 | ] | 798 | ] |
| 786 | 799 | ||
| 787 | [[package]] | 800 | [[package]] |
| 788 | name = "getrandom" | 801 | name = "getrandom" |
| 789 | version = "0.3.2" | 802 | version = "0.3.3" |
| 790 | source = "registry+https://github.com/rust-lang/crates.io-index" | 803 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 791 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" | 804 | checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" |
| 792 | dependencies = [ | 805 | dependencies = [ |
| 793 | "cfg-if", | 806 | "cfg-if", |
| 794 | "js-sys", | 807 | "js-sys", |
| @@ -810,7 +823,7 @@ version = "0.20.2" | |||
| 810 | source = "registry+https://github.com/rust-lang/crates.io-index" | 823 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 811 | checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" | 824 | checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" |
| 812 | dependencies = [ | 825 | dependencies = [ |
| 813 | "bitflags 2.9.0", | 826 | "bitflags 2.9.1", |
| 814 | "libc", | 827 | "libc", |
| 815 | "libgit2-sys", | 828 | "libgit2-sys", |
| 816 | "log", | 829 | "log", |
| @@ -833,9 +846,9 @@ dependencies = [ | |||
| 833 | 846 | ||
| 834 | [[package]] | 847 | [[package]] |
| 835 | name = "hashbrown" | 848 | name = "hashbrown" |
| 836 | version = "0.15.3" | 849 | version = "0.15.4" |
| 837 | source = "registry+https://github.com/rust-lang/crates.io-index" | 850 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 838 | checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" | 851 | checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" |
| 839 | 852 | ||
| 840 | [[package]] | 853 | [[package]] |
| 841 | name = "heck" | 854 | name = "heck" |
| @@ -849,7 +862,7 @@ version = "0.20.5" | |||
| 849 | source = "registry+https://github.com/rust-lang/crates.io-index" | 862 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 850 | checksum = "7d4f449bab7320c56003d37732a917e18798e2f1709d80263face2b4f9436ddb" | 863 | checksum = "7d4f449bab7320c56003d37732a917e18798e2f1709d80263face2b4f9436ddb" |
| 851 | dependencies = [ | 864 | dependencies = [ |
| 852 | "bitflags 2.9.0", | 865 | "bitflags 2.9.1", |
| 853 | "byteorder", | 866 | "byteorder", |
| 854 | "heed-traits", | 867 | "heed-traits", |
| 855 | "heed-types", | 868 | "heed-types", |
| @@ -973,11 +986,10 @@ dependencies = [ | |||
| 973 | 986 | ||
| 974 | [[package]] | 987 | [[package]] |
| 975 | name = "hyper-rustls" | 988 | name = "hyper-rustls" |
| 976 | version = "0.27.5" | 989 | version = "0.27.7" |
| 977 | source = "registry+https://github.com/rust-lang/crates.io-index" | 990 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 978 | checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" | 991 | checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" |
| 979 | dependencies = [ | 992 | dependencies = [ |
| 980 | "futures-util", | ||
| 981 | "http 1.3.1", | 993 | "http 1.3.1", |
| 982 | "hyper", | 994 | "hyper", |
| 983 | "hyper-util", | 995 | "hyper-util", |
| @@ -986,22 +998,26 @@ dependencies = [ | |||
| 986 | "tokio", | 998 | "tokio", |
| 987 | "tokio-rustls", | 999 | "tokio-rustls", |
| 988 | "tower-service", | 1000 | "tower-service", |
| 989 | "webpki-roots", | 1001 | "webpki-roots 1.0.1", |
| 990 | ] | 1002 | ] |
| 991 | 1003 | ||
| 992 | [[package]] | 1004 | [[package]] |
| 993 | name = "hyper-util" | 1005 | name = "hyper-util" |
| 994 | version = "0.1.11" | 1006 | version = "0.1.15" |
| 995 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1007 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 996 | checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" | 1008 | checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" |
| 997 | dependencies = [ | 1009 | dependencies = [ |
| 1010 | "base64", | ||
| 998 | "bytes", | 1011 | "bytes", |
| 999 | "futures-channel", | 1012 | "futures-channel", |
| 1013 | "futures-core", | ||
| 1000 | "futures-util", | 1014 | "futures-util", |
| 1001 | "http 1.3.1", | 1015 | "http 1.3.1", |
| 1002 | "http-body", | 1016 | "http-body", |
| 1003 | "hyper", | 1017 | "hyper", |
| 1018 | "ipnet", | ||
| 1004 | "libc", | 1019 | "libc", |
| 1020 | "percent-encoding", | ||
| 1005 | "pin-project-lite", | 1021 | "pin-project-lite", |
| 1006 | "socket2", | 1022 | "socket2", |
| 1007 | "tokio", | 1023 | "tokio", |
| @@ -1011,21 +1027,22 @@ dependencies = [ | |||
| 1011 | 1027 | ||
| 1012 | [[package]] | 1028 | [[package]] |
| 1013 | name = "icu_collections" | 1029 | name = "icu_collections" |
| 1014 | version = "1.5.0" | 1030 | version = "2.0.0" |
| 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1016 | checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" | 1032 | checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" |
| 1017 | dependencies = [ | 1033 | dependencies = [ |
| 1018 | "displaydoc", | 1034 | "displaydoc", |
| 1035 | "potential_utf", | ||
| 1019 | "yoke", | 1036 | "yoke", |
| 1020 | "zerofrom", | 1037 | "zerofrom", |
| 1021 | "zerovec", | 1038 | "zerovec", |
| 1022 | ] | 1039 | ] |
| 1023 | 1040 | ||
| 1024 | [[package]] | 1041 | [[package]] |
| 1025 | name = "icu_locid" | 1042 | name = "icu_locale_core" |
| 1026 | version = "1.5.0" | 1043 | version = "2.0.0" |
| 1027 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1044 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1028 | checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" | 1045 | checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" |
| 1029 | dependencies = [ | 1046 | dependencies = [ |
| 1030 | "displaydoc", | 1047 | "displaydoc", |
| 1031 | "litemap", | 1048 | "litemap", |
| @@ -1035,30 +1052,10 @@ dependencies = [ | |||
| 1035 | ] | 1052 | ] |
| 1036 | 1053 | ||
| 1037 | [[package]] | 1054 | [[package]] |
| 1038 | name = "icu_locid_transform" | ||
| 1039 | version = "1.5.0" | ||
| 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1041 | checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" | ||
| 1042 | dependencies = [ | ||
| 1043 | "displaydoc", | ||
| 1044 | "icu_locid", | ||
| 1045 | "icu_locid_transform_data", | ||
| 1046 | "icu_provider", | ||
| 1047 | "tinystr", | ||
| 1048 | "zerovec", | ||
| 1049 | ] | ||
| 1050 | |||
| 1051 | [[package]] | ||
| 1052 | name = "icu_locid_transform_data" | ||
| 1053 | version = "1.5.1" | ||
| 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1055 | checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" | ||
| 1056 | |||
| 1057 | [[package]] | ||
| 1058 | name = "icu_normalizer" | 1055 | name = "icu_normalizer" |
| 1059 | version = "1.5.0" | 1056 | version = "2.0.0" |
| 1060 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1061 | checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" | 1058 | checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" |
| 1062 | dependencies = [ | 1059 | dependencies = [ |
| 1063 | "displaydoc", | 1060 | "displaydoc", |
| 1064 | "icu_collections", | 1061 | "icu_collections", |
| @@ -1066,68 +1063,55 @@ dependencies = [ | |||
| 1066 | "icu_properties", | 1063 | "icu_properties", |
| 1067 | "icu_provider", | 1064 | "icu_provider", |
| 1068 | "smallvec", | 1065 | "smallvec", |
| 1069 | "utf16_iter", | ||
| 1070 | "utf8_iter", | ||
| 1071 | "write16", | ||
| 1072 | "zerovec", | 1066 | "zerovec", |
| 1073 | ] | 1067 | ] |
| 1074 | 1068 | ||
| 1075 | [[package]] | 1069 | [[package]] |
| 1076 | name = "icu_normalizer_data" | 1070 | name = "icu_normalizer_data" |
| 1077 | version = "1.5.1" | 1071 | version = "2.0.0" |
| 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1072 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1079 | checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" | 1073 | checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" |
| 1080 | 1074 | ||
| 1081 | [[package]] | 1075 | [[package]] |
| 1082 | name = "icu_properties" | 1076 | name = "icu_properties" |
| 1083 | version = "1.5.1" | 1077 | version = "2.0.1" |
| 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1085 | checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" | 1079 | checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" |
| 1086 | dependencies = [ | 1080 | dependencies = [ |
| 1087 | "displaydoc", | 1081 | "displaydoc", |
| 1088 | "icu_collections", | 1082 | "icu_collections", |
| 1089 | "icu_locid_transform", | 1083 | "icu_locale_core", |
| 1090 | "icu_properties_data", | 1084 | "icu_properties_data", |
| 1091 | "icu_provider", | 1085 | "icu_provider", |
| 1092 | "tinystr", | 1086 | "potential_utf", |
| 1087 | "zerotrie", | ||
| 1093 | "zerovec", | 1088 | "zerovec", |
| 1094 | ] | 1089 | ] |
| 1095 | 1090 | ||
| 1096 | [[package]] | 1091 | [[package]] |
| 1097 | name = "icu_properties_data" | 1092 | name = "icu_properties_data" |
| 1098 | version = "1.5.1" | 1093 | version = "2.0.1" |
| 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1100 | checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" | 1095 | checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" |
| 1101 | 1096 | ||
| 1102 | [[package]] | 1097 | [[package]] |
| 1103 | name = "icu_provider" | 1098 | name = "icu_provider" |
| 1104 | version = "1.5.0" | 1099 | version = "2.0.0" |
| 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1106 | checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" | 1101 | checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" |
| 1107 | dependencies = [ | 1102 | dependencies = [ |
| 1108 | "displaydoc", | 1103 | "displaydoc", |
| 1109 | "icu_locid", | 1104 | "icu_locale_core", |
| 1110 | "icu_provider_macros", | ||
| 1111 | "stable_deref_trait", | 1105 | "stable_deref_trait", |
| 1112 | "tinystr", | 1106 | "tinystr", |
| 1113 | "writeable", | 1107 | "writeable", |
| 1114 | "yoke", | 1108 | "yoke", |
| 1115 | "zerofrom", | 1109 | "zerofrom", |
| 1110 | "zerotrie", | ||
| 1116 | "zerovec", | 1111 | "zerovec", |
| 1117 | ] | 1112 | ] |
| 1118 | 1113 | ||
| 1119 | [[package]] | 1114 | [[package]] |
| 1120 | name = "icu_provider_macros" | ||
| 1121 | version = "1.5.0" | ||
| 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1123 | checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" | ||
| 1124 | dependencies = [ | ||
| 1125 | "proc-macro2", | ||
| 1126 | "quote", | ||
| 1127 | "syn", | ||
| 1128 | ] | ||
| 1129 | |||
| 1130 | [[package]] | ||
| 1131 | name = "idna" | 1115 | name = "idna" |
| 1132 | version = "1.0.3" | 1116 | version = "1.0.3" |
| 1133 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1117 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1140,9 +1124,9 @@ dependencies = [ | |||
| 1140 | 1124 | ||
| 1141 | [[package]] | 1125 | [[package]] |
| 1142 | name = "idna_adapter" | 1126 | name = "idna_adapter" |
| 1143 | version = "1.2.0" | 1127 | version = "1.2.1" |
| 1144 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1145 | checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" | 1129 | checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" |
| 1146 | dependencies = [ | 1130 | dependencies = [ |
| 1147 | "icu_normalizer", | 1131 | "icu_normalizer", |
| 1148 | "icu_properties", | 1132 | "icu_properties", |
| @@ -1150,9 +1134,9 @@ dependencies = [ | |||
| 1150 | 1134 | ||
| 1151 | [[package]] | 1135 | [[package]] |
| 1152 | name = "indexmap" | 1136 | name = "indexmap" |
| 1153 | version = "2.9.0" | 1137 | version = "2.10.0" |
| 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1138 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1155 | checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" | 1139 | checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" |
| 1156 | dependencies = [ | 1140 | dependencies = [ |
| 1157 | "equivalent", | 1141 | "equivalent", |
| 1158 | "hashbrown", | 1142 | "hashbrown", |
| @@ -1160,14 +1144,14 @@ dependencies = [ | |||
| 1160 | 1144 | ||
| 1161 | [[package]] | 1145 | [[package]] |
| 1162 | name = "indicatif" | 1146 | name = "indicatif" |
| 1163 | version = "0.17.11" | 1147 | version = "0.18.0" |
| 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1165 | checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" | 1149 | checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" |
| 1166 | dependencies = [ | 1150 | dependencies = [ |
| 1167 | "console", | 1151 | "console 0.16.0", |
| 1168 | "number_prefix", | ||
| 1169 | "portable-atomic", | 1152 | "portable-atomic", |
| 1170 | "unicode-width", | 1153 | "unicode-width", |
| 1154 | "unit-prefix", | ||
| 1171 | "web-time", | 1155 | "web-time", |
| 1172 | ] | 1156 | ] |
| 1173 | 1157 | ||
| @@ -1194,12 +1178,33 @@ dependencies = [ | |||
| 1194 | ] | 1178 | ] |
| 1195 | 1179 | ||
| 1196 | [[package]] | 1180 | [[package]] |
| 1181 | name = "io-uring" | ||
| 1182 | version = "0.7.8" | ||
| 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1184 | checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" | ||
| 1185 | dependencies = [ | ||
| 1186 | "bitflags 2.9.1", | ||
| 1187 | "cfg-if", | ||
| 1188 | "libc", | ||
| 1189 | ] | ||
| 1190 | |||
| 1191 | [[package]] | ||
| 1197 | name = "ipnet" | 1192 | name = "ipnet" |
| 1198 | version = "2.11.0" | 1193 | version = "2.11.0" |
| 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1194 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1200 | checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" | 1195 | checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" |
| 1201 | 1196 | ||
| 1202 | [[package]] | 1197 | [[package]] |
| 1198 | name = "iri-string" | ||
| 1199 | version = "0.7.8" | ||
| 1200 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1201 | checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" | ||
| 1202 | dependencies = [ | ||
| 1203 | "memchr", | ||
| 1204 | "serde", | ||
| 1205 | ] | ||
| 1206 | |||
| 1207 | [[package]] | ||
| 1203 | name = "is_terminal_polyfill" | 1208 | name = "is_terminal_polyfill" |
| 1204 | version = "1.70.1" | 1209 | version = "1.70.1" |
| 1205 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1210 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1217,7 +1222,7 @@ version = "0.1.33" | |||
| 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1218 | checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" | 1223 | checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" |
| 1219 | dependencies = [ | 1224 | dependencies = [ |
| 1220 | "getrandom 0.3.2", | 1225 | "getrandom 0.3.3", |
| 1221 | "libc", | 1226 | "libc", |
| 1222 | ] | 1227 | ] |
| 1223 | 1228 | ||
| @@ -1233,15 +1238,15 @@ dependencies = [ | |||
| 1233 | 1238 | ||
| 1234 | [[package]] | 1239 | [[package]] |
| 1235 | name = "libc" | 1240 | name = "libc" |
| 1236 | version = "0.2.172" | 1241 | version = "0.2.174" |
| 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1238 | checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" | 1243 | checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" |
| 1239 | 1244 | ||
| 1240 | [[package]] | 1245 | [[package]] |
| 1241 | name = "libgit2-sys" | 1246 | name = "libgit2-sys" |
| 1242 | version = "0.18.1+1.9.0" | 1247 | version = "0.18.2+1.9.1" |
| 1243 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1244 | checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e" | 1249 | checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" |
| 1245 | dependencies = [ | 1250 | dependencies = [ |
| 1246 | "cc", | 1251 | "cc", |
| 1247 | "libc", | 1252 | "libc", |
| @@ -1253,11 +1258,11 @@ dependencies = [ | |||
| 1253 | 1258 | ||
| 1254 | [[package]] | 1259 | [[package]] |
| 1255 | name = "libredox" | 1260 | name = "libredox" |
| 1256 | version = "0.1.3" | 1261 | version = "0.1.4" |
| 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1258 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" | 1263 | checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" |
| 1259 | dependencies = [ | 1264 | dependencies = [ |
| 1260 | "bitflags 2.9.0", | 1265 | "bitflags 2.9.1", |
| 1261 | "libc", | 1266 | "libc", |
| 1262 | ] | 1267 | ] |
| 1263 | 1268 | ||
| @@ -1295,9 +1300,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" | |||
| 1295 | 1300 | ||
| 1296 | [[package]] | 1301 | [[package]] |
| 1297 | name = "litemap" | 1302 | name = "litemap" |
| 1298 | version = "0.7.5" | 1303 | version = "0.8.0" |
| 1299 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1300 | checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" | 1305 | checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" |
| 1301 | 1306 | ||
| 1302 | [[package]] | 1307 | [[package]] |
| 1303 | name = "lmdb-master-sys" | 1308 | name = "lmdb-master-sys" |
| @@ -1312,9 +1317,9 @@ dependencies = [ | |||
| 1312 | 1317 | ||
| 1313 | [[package]] | 1318 | [[package]] |
| 1314 | name = "lock_api" | 1319 | name = "lock_api" |
| 1315 | version = "0.4.12" | 1320 | version = "0.4.13" |
| 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1321 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1317 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" | 1322 | checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" |
| 1318 | dependencies = [ | 1323 | dependencies = [ |
| 1319 | "autocfg", | 1324 | "autocfg", |
| 1320 | "scopeguard", | 1325 | "scopeguard", |
| @@ -1328,40 +1333,40 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" | |||
| 1328 | 1333 | ||
| 1329 | [[package]] | 1334 | [[package]] |
| 1330 | name = "lru" | 1335 | name = "lru" |
| 1331 | version = "0.13.0" | 1336 | version = "0.14.0" |
| 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1333 | checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" | 1338 | checksum = "9f8cc7106155f10bdf99a6f379688f543ad6596a415375b36a59a054ceda1198" |
| 1334 | 1339 | ||
| 1335 | [[package]] | 1340 | [[package]] |
| 1336 | name = "memchr" | 1341 | name = "lru-slab" |
| 1337 | version = "2.7.4" | 1342 | version = "0.1.2" |
| 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1343 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1339 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" | 1344 | checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" |
| 1340 | 1345 | ||
| 1341 | [[package]] | 1346 | [[package]] |
| 1342 | name = "mime" | 1347 | name = "memchr" |
| 1343 | version = "0.3.17" | 1348 | version = "2.7.5" |
| 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1345 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" | 1350 | checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" |
| 1346 | 1351 | ||
| 1347 | [[package]] | 1352 | [[package]] |
| 1348 | name = "miniz_oxide" | 1353 | name = "miniz_oxide" |
| 1349 | version = "0.8.8" | 1354 | version = "0.8.9" |
| 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1351 | checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" | 1356 | checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" |
| 1352 | dependencies = [ | 1357 | dependencies = [ |
| 1353 | "adler2", | 1358 | "adler2", |
| 1354 | ] | 1359 | ] |
| 1355 | 1360 | ||
| 1356 | [[package]] | 1361 | [[package]] |
| 1357 | name = "mio" | 1362 | name = "mio" |
| 1358 | version = "1.0.3" | 1363 | version = "1.0.4" |
| 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1364 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1360 | checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" | 1365 | checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" |
| 1361 | dependencies = [ | 1366 | dependencies = [ |
| 1362 | "libc", | 1367 | "libc", |
| 1363 | "wasi 0.11.0+wasi-snapshot-preview1", | 1368 | "wasi 0.11.1+wasi-snapshot-preview1", |
| 1364 | "windows-sys 0.52.0", | 1369 | "windows-sys 0.59.0", |
| 1365 | ] | 1370 | ] |
| 1366 | 1371 | ||
| 1367 | [[package]] | 1372 | [[package]] |
| @@ -1401,12 +1406,6 @@ dependencies = [ | |||
| 1401 | 1406 | ||
| 1402 | [[package]] | 1407 | [[package]] |
| 1403 | name = "negentropy" | 1408 | name = "negentropy" |
| 1404 | version = "0.3.1" | ||
| 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1406 | checksum = "e664971378a3987224f7a0e10059782035e89899ae403718ee07de85bec42afe" | ||
| 1407 | |||
| 1408 | [[package]] | ||
| 1409 | name = "negentropy" | ||
| 1410 | version = "0.5.0" | 1409 | version = "0.5.0" |
| 1411 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1412 | checksum = "f0efe882e02d206d8d279c20eb40e03baf7cb5136a1476dc084a324fbc3ec42d" | 1411 | checksum = "f0efe882e02d206d8d279c20eb40e03baf7cb5136a1476dc084a324fbc3ec42d" |
| @@ -1421,7 +1420,7 @@ dependencies = [ | |||
| 1421 | "auth-git2", | 1420 | "auth-git2", |
| 1422 | "chacha20poly1305", | 1421 | "chacha20poly1305", |
| 1423 | "clap", | 1422 | "clap", |
| 1424 | "console", | 1423 | "console 0.16.0", |
| 1425 | "dialoguer", | 1424 | "dialoguer", |
| 1426 | "directories", | 1425 | "directories", |
| 1427 | "futures", | 1426 | "futures", |
| @@ -1454,16 +1453,16 @@ version = "0.27.1" | |||
| 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1455 | checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" | 1454 | checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" |
| 1456 | dependencies = [ | 1455 | dependencies = [ |
| 1457 | "bitflags 2.9.0", | 1456 | "bitflags 2.9.1", |
| 1458 | "cfg-if", | 1457 | "cfg-if", |
| 1459 | "libc", | 1458 | "libc", |
| 1460 | ] | 1459 | ] |
| 1461 | 1460 | ||
| 1462 | [[package]] | 1461 | [[package]] |
| 1463 | name = "nostr" | 1462 | name = "nostr" |
| 1464 | version = "0.41.0" | 1463 | version = "0.42.2" |
| 1465 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1466 | checksum = "95d3f2f0d564cce3ebe09bb1343af67d88c60108cedc518a307dfdf6e3f503b6" | 1465 | checksum = "d193102a62a22b61f9a61b9df54fb19ebab8c1763d088fbb9a6f0f57000fba2d" |
| 1467 | dependencies = [ | 1466 | dependencies = [ |
| 1468 | "aes", | 1467 | "aes", |
| 1469 | "base64", | 1468 | "base64", |
| @@ -1487,9 +1486,9 @@ dependencies = [ | |||
| 1487 | 1486 | ||
| 1488 | [[package]] | 1487 | [[package]] |
| 1489 | name = "nostr-connect" | 1488 | name = "nostr-connect" |
| 1490 | version = "0.41.0" | 1489 | version = "0.42.0" |
| 1491 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1490 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1492 | checksum = "387abe557e3e43f7704f3c77a9d728de0987108a7f0b5de84f2948310ada11b1" | 1491 | checksum = "29bcce69dcfe07f399cba2f304b2b0662764eaf35b8e227049c063b1d2ec37d0" |
| 1493 | dependencies = [ | 1492 | dependencies = [ |
| 1494 | "async-utility", | 1493 | "async-utility", |
| 1495 | "nostr", | 1494 | "nostr", |
| @@ -1500,9 +1499,9 @@ dependencies = [ | |||
| 1500 | 1499 | ||
| 1501 | [[package]] | 1500 | [[package]] |
| 1502 | name = "nostr-database" | 1501 | name = "nostr-database" |
| 1503 | version = "0.41.0" | 1502 | version = "0.42.0" |
| 1504 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1505 | checksum = "de6dc456a11d26f99a932b6531d94c20cb2e274ada6eab1d2438e2fb9c944af5" | 1504 | checksum = "b6aafe85dc7c039c399796043b76009fa744c3a45ac073a023932f7b7d91b1e7" |
| 1506 | dependencies = [ | 1505 | dependencies = [ |
| 1507 | "flatbuffers", | 1506 | "flatbuffers", |
| 1508 | "lru", | 1507 | "lru", |
| @@ -1512,9 +1511,9 @@ dependencies = [ | |||
| 1512 | 1511 | ||
| 1513 | [[package]] | 1512 | [[package]] |
| 1514 | name = "nostr-lmdb" | 1513 | name = "nostr-lmdb" |
| 1515 | version = "0.41.0" | 1514 | version = "0.42.0" |
| 1516 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1517 | checksum = "b0f371f08cef23050bd15deef5fbb34cb24a96314c47462d0b2b9ce7f0902ef1" | 1516 | checksum = "ed36ce93b11d1dea86b50f26a5bcd7317f237915eeed3948cf52c036ba52872a" |
| 1518 | dependencies = [ | 1517 | dependencies = [ |
| 1519 | "async-utility", | 1518 | "async-utility", |
| 1520 | "heed", | 1519 | "heed", |
| @@ -1526,16 +1525,15 @@ dependencies = [ | |||
| 1526 | 1525 | ||
| 1527 | [[package]] | 1526 | [[package]] |
| 1528 | name = "nostr-relay-pool" | 1527 | name = "nostr-relay-pool" |
| 1529 | version = "0.41.0" | 1528 | version = "0.42.0" |
| 1530 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1531 | checksum = "23994b7a613540de50d0b6ac5fcdfeb65d814b0dc5630875d3e1d3e8f05e8c7c" | 1530 | checksum = "df4d5628d2444349570fb185b0c2d92cfdb7e68d62b13bf3e8a4348b5de7430b" |
| 1532 | dependencies = [ | 1531 | dependencies = [ |
| 1533 | "async-utility", | 1532 | "async-utility", |
| 1534 | "async-wsocket", | 1533 | "async-wsocket", |
| 1535 | "atomic-destructor", | 1534 | "atomic-destructor", |
| 1536 | "lru", | 1535 | "lru", |
| 1537 | "negentropy 0.3.1", | 1536 | "negentropy", |
| 1538 | "negentropy 0.5.0", | ||
| 1539 | "nostr", | 1537 | "nostr", |
| 1540 | "nostr-database", | 1538 | "nostr-database", |
| 1541 | "tokio", | 1539 | "tokio", |
| @@ -1544,9 +1542,9 @@ dependencies = [ | |||
| 1544 | 1542 | ||
| 1545 | [[package]] | 1543 | [[package]] |
| 1546 | name = "nostr-sdk" | 1544 | name = "nostr-sdk" |
| 1547 | version = "0.41.0" | 1545 | version = "0.42.0" |
| 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1549 | checksum = "58d201c49818ef560a67f9c26c415007da38b007943e7d1644ac55aa98c55a42" | 1547 | checksum = "a1e928ba9ac2695fbe10b8aefda59f2abfeb23c10a0e86a0b3e0f6a27bb274a2" |
| 1550 | dependencies = [ | 1548 | dependencies = [ |
| 1551 | "async-utility", | 1549 | "async-utility", |
| 1552 | "nostr", | 1550 | "nostr", |
| @@ -1557,12 +1555,6 @@ dependencies = [ | |||
| 1557 | ] | 1555 | ] |
| 1558 | 1556 | ||
| 1559 | [[package]] | 1557 | [[package]] |
| 1560 | name = "number_prefix" | ||
| 1561 | version = "0.4.0" | ||
| 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1563 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" | ||
| 1564 | |||
| 1565 | [[package]] | ||
| 1566 | name = "object" | 1558 | name = "object" |
| 1567 | version = "0.36.7" | 1559 | version = "0.36.7" |
| 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1560 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1578,6 +1570,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 1578 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" | 1570 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" |
| 1579 | 1571 | ||
| 1580 | [[package]] | 1572 | [[package]] |
| 1573 | name = "once_cell_polyfill" | ||
| 1574 | version = "1.70.1" | ||
| 1575 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1576 | checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" | ||
| 1577 | |||
| 1578 | [[package]] | ||
| 1581 | name = "opaque-debug" | 1579 | name = "opaque-debug" |
| 1582 | version = "0.3.1" | 1580 | version = "0.3.1" |
| 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1581 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1591,18 +1589,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" | |||
| 1591 | 1589 | ||
| 1592 | [[package]] | 1590 | [[package]] |
| 1593 | name = "openssl-src" | 1591 | name = "openssl-src" |
| 1594 | version = "300.5.0+3.5.0" | 1592 | version = "300.5.1+3.5.1" |
| 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1596 | checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" | 1594 | checksum = "735230c832b28c000e3bc117119e6466a663ec73506bc0a9907ea4187508e42a" |
| 1597 | dependencies = [ | 1595 | dependencies = [ |
| 1598 | "cc", | 1596 | "cc", |
| 1599 | ] | 1597 | ] |
| 1600 | 1598 | ||
| 1601 | [[package]] | 1599 | [[package]] |
| 1602 | name = "openssl-sys" | 1600 | name = "openssl-sys" |
| 1603 | version = "0.9.108" | 1601 | version = "0.9.109" |
| 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1602 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1605 | checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" | 1603 | checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" |
| 1606 | dependencies = [ | 1604 | dependencies = [ |
| 1607 | "cc", | 1605 | "cc", |
| 1608 | "libc", | 1606 | "libc", |
| @@ -1629,9 +1627,9 @@ dependencies = [ | |||
| 1629 | 1627 | ||
| 1630 | [[package]] | 1628 | [[package]] |
| 1631 | name = "parking_lot" | 1629 | name = "parking_lot" |
| 1632 | version = "0.12.3" | 1630 | version = "0.12.4" |
| 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1634 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" | 1632 | checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" |
| 1635 | dependencies = [ | 1633 | dependencies = [ |
| 1636 | "lock_api", | 1634 | "lock_api", |
| 1637 | "parking_lot_core", | 1635 | "parking_lot_core", |
| @@ -1639,9 +1637,9 @@ dependencies = [ | |||
| 1639 | 1637 | ||
| 1640 | [[package]] | 1638 | [[package]] |
| 1641 | name = "parking_lot_core" | 1639 | name = "parking_lot_core" |
| 1642 | version = "0.9.10" | 1640 | version = "0.9.11" |
| 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1644 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" | 1642 | checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" |
| 1645 | dependencies = [ | 1643 | dependencies = [ |
| 1646 | "cfg-if", | 1644 | "cfg-if", |
| 1647 | "libc", | 1645 | "libc", |
| @@ -1779,9 +1777,18 @@ dependencies = [ | |||
| 1779 | 1777 | ||
| 1780 | [[package]] | 1778 | [[package]] |
| 1781 | name = "portable-atomic" | 1779 | name = "portable-atomic" |
| 1782 | version = "1.11.0" | 1780 | version = "1.11.1" |
| 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1782 | checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" | ||
| 1783 | |||
| 1784 | [[package]] | ||
| 1785 | name = "potential_utf" | ||
| 1786 | version = "0.1.2" | ||
| 1783 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1787 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1784 | checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" | 1788 | checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" |
| 1789 | dependencies = [ | ||
| 1790 | "zerovec", | ||
| 1791 | ] | ||
| 1785 | 1792 | ||
| 1786 | [[package]] | 1793 | [[package]] |
| 1787 | name = "ppv-lite86" | 1794 | name = "ppv-lite86" |
| @@ -1842,9 +1849,9 @@ checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec" | |||
| 1842 | 1849 | ||
| 1843 | [[package]] | 1850 | [[package]] |
| 1844 | name = "quinn" | 1851 | name = "quinn" |
| 1845 | version = "0.11.7" | 1852 | version = "0.11.8" |
| 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1853 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1847 | checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" | 1854 | checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" |
| 1848 | dependencies = [ | 1855 | dependencies = [ |
| 1849 | "bytes", | 1856 | "bytes", |
| 1850 | "cfg_aliases", | 1857 | "cfg_aliases", |
| @@ -1862,12 +1869,13 @@ dependencies = [ | |||
| 1862 | 1869 | ||
| 1863 | [[package]] | 1870 | [[package]] |
| 1864 | name = "quinn-proto" | 1871 | name = "quinn-proto" |
| 1865 | version = "0.11.11" | 1872 | version = "0.11.12" |
| 1866 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1873 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1867 | checksum = "bcbafbbdbb0f638fe3f35f3c56739f77a8a1d070cb25603226c83339b391472b" | 1874 | checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" |
| 1868 | dependencies = [ | 1875 | dependencies = [ |
| 1869 | "bytes", | 1876 | "bytes", |
| 1870 | "getrandom 0.3.2", | 1877 | "getrandom 0.3.3", |
| 1878 | "lru-slab", | ||
| 1871 | "rand 0.9.1", | 1879 | "rand 0.9.1", |
| 1872 | "ring", | 1880 | "ring", |
| 1873 | "rustc-hash", | 1881 | "rustc-hash", |
| @@ -1882,9 +1890,9 @@ dependencies = [ | |||
| 1882 | 1890 | ||
| 1883 | [[package]] | 1891 | [[package]] |
| 1884 | name = "quinn-udp" | 1892 | name = "quinn-udp" |
| 1885 | version = "0.5.12" | 1893 | version = "0.5.13" |
| 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1894 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1887 | checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" | 1895 | checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" |
| 1888 | dependencies = [ | 1896 | dependencies = [ |
| 1889 | "cfg_aliases", | 1897 | "cfg_aliases", |
| 1890 | "libc", | 1898 | "libc", |
| @@ -1905,9 +1913,9 @@ dependencies = [ | |||
| 1905 | 1913 | ||
| 1906 | [[package]] | 1914 | [[package]] |
| 1907 | name = "r-efi" | 1915 | name = "r-efi" |
| 1908 | version = "5.2.0" | 1916 | version = "5.3.0" |
| 1909 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1910 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" | 1918 | checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" |
| 1911 | 1919 | ||
| 1912 | [[package]] | 1920 | [[package]] |
| 1913 | name = "rand" | 1921 | name = "rand" |
| @@ -1965,7 +1973,7 @@ version = "0.9.3" | |||
| 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1973 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1966 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" | 1974 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" |
| 1967 | dependencies = [ | 1975 | dependencies = [ |
| 1968 | "getrandom 0.3.2", | 1976 | "getrandom 0.3.3", |
| 1969 | ] | 1977 | ] |
| 1970 | 1978 | ||
| 1971 | [[package]] | 1979 | [[package]] |
| @@ -2001,11 +2009,11 @@ dependencies = [ | |||
| 2001 | 2009 | ||
| 2002 | [[package]] | 2010 | [[package]] |
| 2003 | name = "redox_syscall" | 2011 | name = "redox_syscall" |
| 2004 | version = "0.5.12" | 2012 | version = "0.5.13" |
| 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2013 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2006 | checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" | 2014 | checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" |
| 2007 | dependencies = [ | 2015 | dependencies = [ |
| 2008 | "bitflags 2.9.0", | 2016 | "bitflags 2.9.1", |
| 2009 | ] | 2017 | ] |
| 2010 | 2018 | ||
| 2011 | [[package]] | 2019 | [[package]] |
| @@ -2050,30 +2058,25 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" | |||
| 2050 | 2058 | ||
| 2051 | [[package]] | 2059 | [[package]] |
| 2052 | name = "reqwest" | 2060 | name = "reqwest" |
| 2053 | version = "0.12.15" | 2061 | version = "0.12.22" |
| 2054 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2062 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2055 | checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" | 2063 | checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" |
| 2056 | dependencies = [ | 2064 | dependencies = [ |
| 2057 | "base64", | 2065 | "base64", |
| 2058 | "bytes", | 2066 | "bytes", |
| 2059 | "futures-core", | 2067 | "futures-core", |
| 2060 | "futures-util", | ||
| 2061 | "http 1.3.1", | 2068 | "http 1.3.1", |
| 2062 | "http-body", | 2069 | "http-body", |
| 2063 | "http-body-util", | 2070 | "http-body-util", |
| 2064 | "hyper", | 2071 | "hyper", |
| 2065 | "hyper-rustls", | 2072 | "hyper-rustls", |
| 2066 | "hyper-util", | 2073 | "hyper-util", |
| 2067 | "ipnet", | ||
| 2068 | "js-sys", | 2074 | "js-sys", |
| 2069 | "log", | 2075 | "log", |
| 2070 | "mime", | ||
| 2071 | "once_cell", | ||
| 2072 | "percent-encoding", | 2076 | "percent-encoding", |
| 2073 | "pin-project-lite", | 2077 | "pin-project-lite", |
| 2074 | "quinn", | 2078 | "quinn", |
| 2075 | "rustls", | 2079 | "rustls", |
| 2076 | "rustls-pemfile", | ||
| 2077 | "rustls-pki-types", | 2080 | "rustls-pki-types", |
| 2078 | "serde", | 2081 | "serde", |
| 2079 | "serde_json", | 2082 | "serde_json", |
| @@ -2081,15 +2084,14 @@ dependencies = [ | |||
| 2081 | "sync_wrapper", | 2084 | "sync_wrapper", |
| 2082 | "tokio", | 2085 | "tokio", |
| 2083 | "tokio-rustls", | 2086 | "tokio-rustls", |
| 2084 | "tokio-socks", | ||
| 2085 | "tower", | 2087 | "tower", |
| 2088 | "tower-http", | ||
| 2086 | "tower-service", | 2089 | "tower-service", |
| 2087 | "url", | 2090 | "url", |
| 2088 | "wasm-bindgen", | 2091 | "wasm-bindgen", |
| 2089 | "wasm-bindgen-futures", | 2092 | "wasm-bindgen-futures", |
| 2090 | "web-sys", | 2093 | "web-sys", |
| 2091 | "webpki-roots", | 2094 | "webpki-roots 1.0.1", |
| 2092 | "windows-registry", | ||
| 2093 | ] | 2095 | ] |
| 2094 | 2096 | ||
| 2095 | [[package]] | 2097 | [[package]] |
| @@ -2120,9 +2122,9 @@ dependencies = [ | |||
| 2120 | 2122 | ||
| 2121 | [[package]] | 2123 | [[package]] |
| 2122 | name = "rustc-demangle" | 2124 | name = "rustc-demangle" |
| 2123 | version = "0.1.24" | 2125 | version = "0.1.25" |
| 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2125 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" | 2127 | checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" |
| 2126 | 2128 | ||
| 2127 | [[package]] | 2129 | [[package]] |
| 2128 | name = "rustc-hash" | 2130 | name = "rustc-hash" |
| @@ -2141,22 +2143,22 @@ dependencies = [ | |||
| 2141 | 2143 | ||
| 2142 | [[package]] | 2144 | [[package]] |
| 2143 | name = "rustix" | 2145 | name = "rustix" |
| 2144 | version = "1.0.7" | 2146 | version = "1.0.8" |
| 2145 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2147 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2146 | checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" | 2148 | checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" |
| 2147 | dependencies = [ | 2149 | dependencies = [ |
| 2148 | "bitflags 2.9.0", | 2150 | "bitflags 2.9.1", |
| 2149 | "errno", | 2151 | "errno", |
| 2150 | "libc", | 2152 | "libc", |
| 2151 | "linux-raw-sys", | 2153 | "linux-raw-sys", |
| 2152 | "windows-sys 0.59.0", | 2154 | "windows-sys 0.60.2", |
| 2153 | ] | 2155 | ] |
| 2154 | 2156 | ||
| 2155 | [[package]] | 2157 | [[package]] |
| 2156 | name = "rustls" | 2158 | name = "rustls" |
| 2157 | version = "0.23.27" | 2159 | version = "0.23.29" |
| 2158 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2160 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2159 | checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" | 2161 | checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" |
| 2160 | dependencies = [ | 2162 | dependencies = [ |
| 2161 | "once_cell", | 2163 | "once_cell", |
| 2162 | "ring", | 2164 | "ring", |
| @@ -2167,28 +2169,20 @@ dependencies = [ | |||
| 2167 | ] | 2169 | ] |
| 2168 | 2170 | ||
| 2169 | [[package]] | 2171 | [[package]] |
| 2170 | name = "rustls-pemfile" | ||
| 2171 | version = "2.2.0" | ||
| 2172 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2173 | checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" | ||
| 2174 | dependencies = [ | ||
| 2175 | "rustls-pki-types", | ||
| 2176 | ] | ||
| 2177 | |||
| 2178 | [[package]] | ||
| 2179 | name = "rustls-pki-types" | 2172 | name = "rustls-pki-types" |
| 2180 | version = "1.11.0" | 2173 | version = "1.12.0" |
| 2181 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2174 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2182 | checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" | 2175 | checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" |
| 2183 | dependencies = [ | 2176 | dependencies = [ |
| 2184 | "web-time", | 2177 | "web-time", |
| 2178 | "zeroize", | ||
| 2185 | ] | 2179 | ] |
| 2186 | 2180 | ||
| 2187 | [[package]] | 2181 | [[package]] |
| 2188 | name = "rustls-webpki" | 2182 | name = "rustls-webpki" |
| 2189 | version = "0.103.2" | 2183 | version = "0.103.4" |
| 2190 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2184 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2191 | checksum = "7149975849f1abb3832b246010ef62ccc80d3a76169517ada7188252b9cfb437" | 2185 | checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" |
| 2192 | dependencies = [ | 2186 | dependencies = [ |
| 2193 | "ring", | 2187 | "ring", |
| 2194 | "rustls-pki-types", | 2188 | "rustls-pki-types", |
| @@ -2197,9 +2191,9 @@ dependencies = [ | |||
| 2197 | 2191 | ||
| 2198 | [[package]] | 2192 | [[package]] |
| 2199 | name = "rustversion" | 2193 | name = "rustversion" |
| 2200 | version = "1.0.20" | 2194 | version = "1.0.21" |
| 2201 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2195 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2202 | checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" | 2196 | checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" |
| 2203 | 2197 | ||
| 2204 | [[package]] | 2198 | [[package]] |
| 2205 | name = "ryu" | 2199 | name = "ryu" |
| @@ -2245,9 +2239,9 @@ dependencies = [ | |||
| 2245 | 2239 | ||
| 2246 | [[package]] | 2240 | [[package]] |
| 2247 | name = "sdd" | 2241 | name = "sdd" |
| 2248 | version = "3.0.8" | 2242 | version = "3.0.9" |
| 2249 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2243 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2250 | checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" | 2244 | checksum = "62f5557d2bbddd5afd236ba7856b0e494f5acc7ce805bb0774cc5674b20a06b4" |
| 2251 | 2245 | ||
| 2252 | [[package]] | 2246 | [[package]] |
| 2253 | name = "secp256k1" | 2247 | name = "secp256k1" |
| @@ -2419,24 +2413,21 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" | |||
| 2419 | 2413 | ||
| 2420 | [[package]] | 2414 | [[package]] |
| 2421 | name = "slab" | 2415 | name = "slab" |
| 2422 | version = "0.4.9" | 2416 | version = "0.4.10" |
| 2423 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2417 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2424 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" | 2418 | checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" |
| 2425 | dependencies = [ | ||
| 2426 | "autocfg", | ||
| 2427 | ] | ||
| 2428 | 2419 | ||
| 2429 | [[package]] | 2420 | [[package]] |
| 2430 | name = "smallvec" | 2421 | name = "smallvec" |
| 2431 | version = "1.15.0" | 2422 | version = "1.15.1" |
| 2432 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2423 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2433 | checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" | 2424 | checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" |
| 2434 | 2425 | ||
| 2435 | [[package]] | 2426 | [[package]] |
| 2436 | name = "socket2" | 2427 | name = "socket2" |
| 2437 | version = "0.5.9" | 2428 | version = "0.5.10" |
| 2438 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2429 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2439 | checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" | 2430 | checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" |
| 2440 | dependencies = [ | 2431 | dependencies = [ |
| 2441 | "libc", | 2432 | "libc", |
| 2442 | "windows-sys 0.52.0", | 2433 | "windows-sys 0.52.0", |
| @@ -2480,9 +2471,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" | |||
| 2480 | 2471 | ||
| 2481 | [[package]] | 2472 | [[package]] |
| 2482 | name = "syn" | 2473 | name = "syn" |
| 2483 | version = "2.0.101" | 2474 | version = "2.0.104" |
| 2484 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2485 | checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" | 2476 | checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" |
| 2486 | dependencies = [ | 2477 | dependencies = [ |
| 2487 | "proc-macro2", | 2478 | "proc-macro2", |
| 2488 | "quote", | 2479 | "quote", |
| @@ -2520,12 +2511,12 @@ dependencies = [ | |||
| 2520 | 2511 | ||
| 2521 | [[package]] | 2512 | [[package]] |
| 2522 | name = "tempfile" | 2513 | name = "tempfile" |
| 2523 | version = "3.19.1" | 2514 | version = "3.20.0" |
| 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2515 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2525 | checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" | 2516 | checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" |
| 2526 | dependencies = [ | 2517 | dependencies = [ |
| 2527 | "fastrand", | 2518 | "fastrand", |
| 2528 | "getrandom 0.3.2", | 2519 | "getrandom 0.3.3", |
| 2529 | "once_cell", | 2520 | "once_cell", |
| 2530 | "rustix", | 2521 | "rustix", |
| 2531 | "windows-sys 0.59.0", | 2522 | "windows-sys 0.59.0", |
| @@ -2562,13 +2553,13 @@ dependencies = [ | |||
| 2562 | "nostr-lmdb", | 2553 | "nostr-lmdb", |
| 2563 | "nostr-sdk", | 2554 | "nostr-sdk", |
| 2564 | "once_cell", | 2555 | "once_cell", |
| 2565 | "rand 0.8.5", | 2556 | "rand 0.9.1", |
| 2566 | "rexpect", | 2557 | "rexpect", |
| 2567 | "sha2", | 2558 | "sha2", |
| 2568 | "simple-websockets", | 2559 | "simple-websockets", |
| 2569 | "strip-ansi-escapes", | 2560 | "strip-ansi-escapes", |
| 2570 | "tokio", | 2561 | "tokio", |
| 2571 | "tungstenite 0.20.1", | 2562 | "tungstenite 0.27.0", |
| 2572 | ] | 2563 | ] |
| 2573 | 2564 | ||
| 2574 | [[package]] | 2565 | [[package]] |
| @@ -2613,9 +2604,9 @@ dependencies = [ | |||
| 2613 | 2604 | ||
| 2614 | [[package]] | 2605 | [[package]] |
| 2615 | name = "tinystr" | 2606 | name = "tinystr" |
| 2616 | version = "0.7.6" | 2607 | version = "0.8.1" |
| 2617 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2608 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2618 | checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" | 2609 | checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" |
| 2619 | dependencies = [ | 2610 | dependencies = [ |
| 2620 | "displaydoc", | 2611 | "displaydoc", |
| 2621 | "zerovec", | 2612 | "zerovec", |
| @@ -2638,17 +2629,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" | |||
| 2638 | 2629 | ||
| 2639 | [[package]] | 2630 | [[package]] |
| 2640 | name = "tokio" | 2631 | name = "tokio" |
| 2641 | version = "1.45.0" | 2632 | version = "1.46.1" |
| 2642 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2633 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2643 | checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" | 2634 | checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" |
| 2644 | dependencies = [ | 2635 | dependencies = [ |
| 2645 | "backtrace", | 2636 | "backtrace", |
| 2646 | "bytes", | 2637 | "bytes", |
| 2638 | "io-uring", | ||
| 2647 | "libc", | 2639 | "libc", |
| 2648 | "mio", | 2640 | "mio", |
| 2649 | "parking_lot", | 2641 | "parking_lot", |
| 2650 | "pin-project-lite", | 2642 | "pin-project-lite", |
| 2651 | "signal-hook-registry", | 2643 | "signal-hook-registry", |
| 2644 | "slab", | ||
| 2652 | "socket2", | 2645 | "socket2", |
| 2653 | "tokio-macros", | 2646 | "tokio-macros", |
| 2654 | "windows-sys 0.52.0", | 2647 | "windows-sys 0.52.0", |
| @@ -2712,7 +2705,7 @@ dependencies = [ | |||
| 2712 | "tokio", | 2705 | "tokio", |
| 2713 | "tokio-rustls", | 2706 | "tokio-rustls", |
| 2714 | "tungstenite 0.26.2", | 2707 | "tungstenite 0.26.2", |
| 2715 | "webpki-roots", | 2708 | "webpki-roots 0.26.11", |
| 2716 | ] | 2709 | ] |
| 2717 | 2710 | ||
| 2718 | [[package]] | 2711 | [[package]] |
| @@ -2731,6 +2724,24 @@ dependencies = [ | |||
| 2731 | ] | 2724 | ] |
| 2732 | 2725 | ||
| 2733 | [[package]] | 2726 | [[package]] |
| 2727 | name = "tower-http" | ||
| 2728 | version = "0.6.6" | ||
| 2729 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2730 | checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" | ||
| 2731 | dependencies = [ | ||
| 2732 | "bitflags 2.9.1", | ||
| 2733 | "bytes", | ||
| 2734 | "futures-util", | ||
| 2735 | "http 1.3.1", | ||
| 2736 | "http-body", | ||
| 2737 | "iri-string", | ||
| 2738 | "pin-project-lite", | ||
| 2739 | "tower", | ||
| 2740 | "tower-layer", | ||
| 2741 | "tower-service", | ||
| 2742 | ] | ||
| 2743 | |||
| 2744 | [[package]] | ||
| 2734 | name = "tower-layer" | 2745 | name = "tower-layer" |
| 2735 | version = "0.3.3" | 2746 | version = "0.3.3" |
| 2736 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2747 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2755,9 +2766,9 @@ dependencies = [ | |||
| 2755 | 2766 | ||
| 2756 | [[package]] | 2767 | [[package]] |
| 2757 | name = "tracing-attributes" | 2768 | name = "tracing-attributes" |
| 2758 | version = "0.1.28" | 2769 | version = "0.1.30" |
| 2759 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2770 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2760 | checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" | 2771 | checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" |
| 2761 | dependencies = [ | 2772 | dependencies = [ |
| 2762 | "proc-macro2", | 2773 | "proc-macro2", |
| 2763 | "quote", | 2774 | "quote", |
| @@ -2766,9 +2777,9 @@ dependencies = [ | |||
| 2766 | 2777 | ||
| 2767 | [[package]] | 2778 | [[package]] |
| 2768 | name = "tracing-core" | 2779 | name = "tracing-core" |
| 2769 | version = "0.1.33" | 2780 | version = "0.1.34" |
| 2770 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2781 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2771 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" | 2782 | checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" |
| 2772 | dependencies = [ | 2783 | dependencies = [ |
| 2773 | "once_cell", | 2784 | "once_cell", |
| 2774 | ] | 2785 | ] |
| @@ -2818,6 +2829,23 @@ dependencies = [ | |||
| 2818 | ] | 2829 | ] |
| 2819 | 2830 | ||
| 2820 | [[package]] | 2831 | [[package]] |
| 2832 | name = "tungstenite" | ||
| 2833 | version = "0.27.0" | ||
| 2834 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2835 | checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" | ||
| 2836 | dependencies = [ | ||
| 2837 | "bytes", | ||
| 2838 | "data-encoding", | ||
| 2839 | "http 1.3.1", | ||
| 2840 | "httparse", | ||
| 2841 | "log", | ||
| 2842 | "rand 0.9.1", | ||
| 2843 | "sha1", | ||
| 2844 | "thiserror 2.0.12", | ||
| 2845 | "utf-8", | ||
| 2846 | ] | ||
| 2847 | |||
| 2848 | [[package]] | ||
| 2821 | name = "typenum" | 2849 | name = "typenum" |
| 2822 | version = "1.18.0" | 2850 | version = "1.18.0" |
| 2823 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2851 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2831,18 +2859,24 @@ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" | |||
| 2831 | 2859 | ||
| 2832 | [[package]] | 2860 | [[package]] |
| 2833 | name = "unicode-normalization" | 2861 | name = "unicode-normalization" |
| 2834 | version = "0.1.22" | 2862 | version = "0.1.24" |
| 2835 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2863 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2836 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" | 2864 | checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" |
| 2837 | dependencies = [ | 2865 | dependencies = [ |
| 2838 | "tinyvec", | 2866 | "tinyvec", |
| 2839 | ] | 2867 | ] |
| 2840 | 2868 | ||
| 2841 | [[package]] | 2869 | [[package]] |
| 2842 | name = "unicode-width" | 2870 | name = "unicode-width" |
| 2843 | version = "0.2.0" | 2871 | version = "0.2.1" |
| 2872 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2873 | checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" | ||
| 2874 | |||
| 2875 | [[package]] | ||
| 2876 | name = "unit-prefix" | ||
| 2877 | version = "0.5.1" | ||
| 2844 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2878 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2845 | checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" | 2879 | checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" |
| 2846 | 2880 | ||
| 2847 | [[package]] | 2881 | [[package]] |
| 2848 | name = "universal-hash" | 2882 | name = "universal-hash" |
| @@ -2891,12 +2925,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 2891 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" | 2925 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" |
| 2892 | 2926 | ||
| 2893 | [[package]] | 2927 | [[package]] |
| 2894 | name = "utf16_iter" | ||
| 2895 | version = "1.0.5" | ||
| 2896 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2897 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" | ||
| 2898 | |||
| 2899 | [[package]] | ||
| 2900 | name = "utf8_iter" | 2928 | name = "utf8_iter" |
| 2901 | version = "1.0.4" | 2929 | version = "1.0.4" |
| 2902 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2930 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2949,9 +2977,9 @@ dependencies = [ | |||
| 2949 | 2977 | ||
| 2950 | [[package]] | 2978 | [[package]] |
| 2951 | name = "wasi" | 2979 | name = "wasi" |
| 2952 | version = "0.11.0+wasi-snapshot-preview1" | 2980 | version = "0.11.1+wasi-snapshot-preview1" |
| 2953 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2981 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2954 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" | 2982 | checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" |
| 2955 | 2983 | ||
| 2956 | [[package]] | 2984 | [[package]] |
| 2957 | name = "wasi" | 2985 | name = "wasi" |
| @@ -3055,9 +3083,18 @@ dependencies = [ | |||
| 3055 | 3083 | ||
| 3056 | [[package]] | 3084 | [[package]] |
| 3057 | name = "webpki-roots" | 3085 | name = "webpki-roots" |
| 3058 | version = "0.26.10" | 3086 | version = "0.26.11" |
| 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3087 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3060 | checksum = "37493cadf42a2a939ed404698ded7fb378bf301b5011f973361779a3a74f8c93" | 3088 | checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" |
| 3089 | dependencies = [ | ||
| 3090 | "webpki-roots 1.0.1", | ||
| 3091 | ] | ||
| 3092 | |||
| 3093 | [[package]] | ||
| 3094 | name = "webpki-roots" | ||
| 3095 | version = "1.0.1" | ||
| 3096 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3097 | checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" | ||
| 3061 | dependencies = [ | 3098 | dependencies = [ |
| 3062 | "rustls-pki-types", | 3099 | "rustls-pki-types", |
| 3063 | ] | 3100 | ] |
| @@ -3085,41 +3122,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 3085 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | 3122 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
| 3086 | 3123 | ||
| 3087 | [[package]] | 3124 | [[package]] |
| 3088 | name = "windows-link" | ||
| 3089 | version = "0.1.1" | ||
| 3090 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3091 | checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" | ||
| 3092 | |||
| 3093 | [[package]] | ||
| 3094 | name = "windows-registry" | ||
| 3095 | version = "0.4.0" | ||
| 3096 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3097 | checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" | ||
| 3098 | dependencies = [ | ||
| 3099 | "windows-result", | ||
| 3100 | "windows-strings", | ||
| 3101 | "windows-targets 0.53.0", | ||
| 3102 | ] | ||
| 3103 | |||
| 3104 | [[package]] | ||
| 3105 | name = "windows-result" | ||
| 3106 | version = "0.3.2" | ||
| 3107 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3108 | checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" | ||
| 3109 | dependencies = [ | ||
| 3110 | "windows-link", | ||
| 3111 | ] | ||
| 3112 | |||
| 3113 | [[package]] | ||
| 3114 | name = "windows-strings" | ||
| 3115 | version = "0.3.1" | ||
| 3116 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3117 | checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" | ||
| 3118 | dependencies = [ | ||
| 3119 | "windows-link", | ||
| 3120 | ] | ||
| 3121 | |||
| 3122 | [[package]] | ||
| 3123 | name = "windows-sys" | 3125 | name = "windows-sys" |
| 3124 | version = "0.52.0" | 3126 | version = "0.52.0" |
| 3125 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3127 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -3138,6 +3140,15 @@ dependencies = [ | |||
| 3138 | ] | 3140 | ] |
| 3139 | 3141 | ||
| 3140 | [[package]] | 3142 | [[package]] |
| 3143 | name = "windows-sys" | ||
| 3144 | version = "0.60.2" | ||
| 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3146 | checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" | ||
| 3147 | dependencies = [ | ||
| 3148 | "windows-targets 0.53.2", | ||
| 3149 | ] | ||
| 3150 | |||
| 3151 | [[package]] | ||
| 3141 | name = "windows-targets" | 3152 | name = "windows-targets" |
| 3142 | version = "0.52.6" | 3153 | version = "0.52.6" |
| 3143 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3154 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -3155,9 +3166,9 @@ dependencies = [ | |||
| 3155 | 3166 | ||
| 3156 | [[package]] | 3167 | [[package]] |
| 3157 | name = "windows-targets" | 3168 | name = "windows-targets" |
| 3158 | version = "0.53.0" | 3169 | version = "0.53.2" |
| 3159 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3170 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3160 | checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" | 3171 | checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" |
| 3161 | dependencies = [ | 3172 | dependencies = [ |
| 3162 | "windows_aarch64_gnullvm 0.53.0", | 3173 | "windows_aarch64_gnullvm 0.53.0", |
| 3163 | "windows_aarch64_msvc 0.53.0", | 3174 | "windows_aarch64_msvc 0.53.0", |
| @@ -3271,26 +3282,20 @@ version = "0.39.0" | |||
| 3271 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3282 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3272 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" | 3283 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" |
| 3273 | dependencies = [ | 3284 | dependencies = [ |
| 3274 | "bitflags 2.9.0", | 3285 | "bitflags 2.9.1", |
| 3275 | ] | 3286 | ] |
| 3276 | 3287 | ||
| 3277 | [[package]] | 3288 | [[package]] |
| 3278 | name = "write16" | ||
| 3279 | version = "1.0.0" | ||
| 3280 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3281 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" | ||
| 3282 | |||
| 3283 | [[package]] | ||
| 3284 | name = "writeable" | 3289 | name = "writeable" |
| 3285 | version = "0.5.5" | 3290 | version = "0.6.1" |
| 3286 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3291 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3287 | checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" | 3292 | checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" |
| 3288 | 3293 | ||
| 3289 | [[package]] | 3294 | [[package]] |
| 3290 | name = "yoke" | 3295 | name = "yoke" |
| 3291 | version = "0.7.5" | 3296 | version = "0.8.0" |
| 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3297 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3293 | checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" | 3298 | checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" |
| 3294 | dependencies = [ | 3299 | dependencies = [ |
| 3295 | "serde", | 3300 | "serde", |
| 3296 | "stable_deref_trait", | 3301 | "stable_deref_trait", |
| @@ -3300,9 +3305,9 @@ dependencies = [ | |||
| 3300 | 3305 | ||
| 3301 | [[package]] | 3306 | [[package]] |
| 3302 | name = "yoke-derive" | 3307 | name = "yoke-derive" |
| 3303 | version = "0.7.5" | 3308 | version = "0.8.0" |
| 3304 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3309 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3305 | checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" | 3310 | checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" |
| 3306 | dependencies = [ | 3311 | dependencies = [ |
| 3307 | "proc-macro2", | 3312 | "proc-macro2", |
| 3308 | "quote", | 3313 | "quote", |
| @@ -3312,18 +3317,18 @@ dependencies = [ | |||
| 3312 | 3317 | ||
| 3313 | [[package]] | 3318 | [[package]] |
| 3314 | name = "zerocopy" | 3319 | name = "zerocopy" |
| 3315 | version = "0.8.25" | 3320 | version = "0.8.26" |
| 3316 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3321 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3317 | checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" | 3322 | checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" |
| 3318 | dependencies = [ | 3323 | dependencies = [ |
| 3319 | "zerocopy-derive", | 3324 | "zerocopy-derive", |
| 3320 | ] | 3325 | ] |
| 3321 | 3326 | ||
| 3322 | [[package]] | 3327 | [[package]] |
| 3323 | name = "zerocopy-derive" | 3328 | name = "zerocopy-derive" |
| 3324 | version = "0.8.25" | 3329 | version = "0.8.26" |
| 3325 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3330 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3326 | checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" | 3331 | checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" |
| 3327 | dependencies = [ | 3332 | dependencies = [ |
| 3328 | "proc-macro2", | 3333 | "proc-macro2", |
| 3329 | "quote", | 3334 | "quote", |
| @@ -3358,10 +3363,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 3358 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" | 3363 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" |
| 3359 | 3364 | ||
| 3360 | [[package]] | 3365 | [[package]] |
| 3366 | name = "zerotrie" | ||
| 3367 | version = "0.2.2" | ||
| 3368 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3369 | checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" | ||
| 3370 | dependencies = [ | ||
| 3371 | "displaydoc", | ||
| 3372 | "yoke", | ||
| 3373 | "zerofrom", | ||
| 3374 | ] | ||
| 3375 | |||
| 3376 | [[package]] | ||
| 3361 | name = "zerovec" | 3377 | name = "zerovec" |
| 3362 | version = "0.10.4" | 3378 | version = "0.11.2" |
| 3363 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3379 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3364 | checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" | 3380 | checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" |
| 3365 | dependencies = [ | 3381 | dependencies = [ |
| 3366 | "yoke", | 3382 | "yoke", |
| 3367 | "zerofrom", | 3383 | "zerofrom", |
| @@ -3370,9 +3386,9 @@ dependencies = [ | |||
| 3370 | 3386 | ||
| 3371 | [[package]] | 3387 | [[package]] |
| 3372 | name = "zerovec-derive" | 3388 | name = "zerovec-derive" |
| 3373 | version = "0.10.3" | 3389 | version = "0.11.1" |
| 3374 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3390 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3375 | checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" | 3391 | checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" |
| 3376 | dependencies = [ | 3392 | dependencies = [ |
| 3377 | "proc-macro2", | 3393 | "proc-macro2", |
| 3378 | "quote", | 3394 | "quote", |
| @@ -12,37 +12,37 @@ keywords = ["nostr", "git"] | |||
| 12 | categories = ["command-line-utilities","development-tools"] | 12 | categories = ["command-line-utilities","development-tools"] |
| 13 | 13 | ||
| 14 | [dependencies] | 14 | [dependencies] |
| 15 | anyhow = "1.0.75" | 15 | anyhow = "1.0.98" |
| 16 | async-trait = "0.1.73" | 16 | async-trait = "0.1.88" |
| 17 | auth-git2 = "0.5.4" | 17 | auth-git2 = "0.5.8" |
| 18 | chacha20poly1305 = "0.10.1" | 18 | chacha20poly1305 = "0.10.1" |
| 19 | clap = { version = "4.3.19", features = ["derive"] } | 19 | clap = { version = "4.5.41", features = ["derive"] } |
| 20 | console = "0.15.7" | 20 | console = "0.16.0" |
| 21 | dialoguer = "0.11.0" | 21 | dialoguer = "0.11.0" |
| 22 | directories = "6.0.0" | 22 | directories = "6.0.0" |
| 23 | futures = "0.3.28" | 23 | futures = "0.3.31" |
| 24 | git2 = "0.20.2" | 24 | git2 = "0.20.2" |
| 25 | indicatif = "0.17.7" | 25 | indicatif = "0.18.0" |
| 26 | nostr = { version = "0.41.0", features = ["nip05", "nip49"] } | 26 | nostr = { version = "0.42.2", features = ["nip05", "nip49"] } |
| 27 | nostr-connect = "0.41.0" | 27 | nostr-connect = "0.42.0" |
| 28 | nostr-database = "0.41.0" | 28 | nostr-database = "0.42.0" |
| 29 | nostr-lmdb = "0.41.0" | 29 | nostr-lmdb = "0.42.0" |
| 30 | nostr-relay-pool = "0.41.0" | 30 | nostr-relay-pool = "0.42.0" |
| 31 | nostr-sdk = "0.41.0" | 31 | nostr-sdk = "0.42.0" |
| 32 | passwords = "3.1.13" | 32 | passwords = "3.1.16" |
| 33 | qrcode = { version = "0.14.1", default-features = false } | 33 | qrcode = { version = "0.14.1", default-features = false } |
| 34 | scrypt = "0.11.0" | 34 | scrypt = "0.11.0" |
| 35 | serde = { version = "1.0.181", features = ["derive"] } | 35 | serde = { version = "1.0.219", features = ["derive"] } |
| 36 | serde_json = "1.0.105" | 36 | serde_json = "1.0.140" |
| 37 | serde_yaml = "0.9.27" | 37 | serde_yaml = "0.9.34" |
| 38 | tokio = { version = "1.40.0", features = ["full"] } | 38 | tokio = { version = "1.46.1", features = ["full"] } |
| 39 | urlencoding = "2.1.3" | 39 | urlencoding = "2.1.3" |
| 40 | zeroize = "1.6.0" | 40 | zeroize = "1.8.1" |
| 41 | 41 | ||
| 42 | [dev-dependencies] | 42 | [dev-dependencies] |
| 43 | assert_cmd = "2.0.12" | 43 | assert_cmd = "2.0.17" |
| 44 | mockall = "0.13.1" | 44 | mockall = "0.13.1" |
| 45 | once_cell = "1.18.0" | 45 | once_cell = "1.21.3" |
| 46 | serial_test = "3.2.0" | 46 | serial_test = "3.2.0" |
| 47 | test_utils = { path = "test_utils" } | 47 | test_utils = { path = "test_utils" } |
| 48 | 48 | ||
| @@ -69,4 +69,4 @@ path = "src/bin/git_remote_nostr/main.rs" | |||
| 69 | 69 | ||
| 70 | [profile.release] | 70 | [profile.release] |
| 71 | lto = true | 71 | lto = true |
| 72 | strip = "symbols" \ No newline at end of file | 72 | strip = "symbols" |
| @@ -20,11 +20,11 @@ | |||
| 20 | }, | 20 | }, |
| 21 | "nixpkgs": { | 21 | "nixpkgs": { |
| 22 | "locked": { | 22 | "locked": { |
| 23 | "lastModified": 1746141548, | 23 | "lastModified": 1752480373, |
| 24 | "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", | 24 | "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", |
| 25 | "owner": "NixOS", | 25 | "owner": "NixOS", |
| 26 | "repo": "nixpkgs", | 26 | "repo": "nixpkgs", |
| 27 | "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", | 27 | "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", |
| 28 | "type": "github" | 28 | "type": "github" |
| 29 | }, | 29 | }, |
| 30 | "original": { | 30 | "original": { |
| @@ -62,11 +62,11 @@ | |||
| 62 | "nixpkgs": "nixpkgs_2" | 62 | "nixpkgs": "nixpkgs_2" |
| 63 | }, | 63 | }, |
| 64 | "locked": { | 64 | "locked": { |
| 65 | "lastModified": 1746153335, | 65 | "lastModified": 1752633862, |
| 66 | "narHash": "sha256-vwKelhJJS8haCdH3t8uf96VFao7/YzJahPG5JLTO1PU=", | 66 | "narHash": "sha256-Bj7ozT1+5P7NmvDcuAXJvj56txcXuAhk3Vd9FdWFQzk=", |
| 67 | "owner": "oxalica", | 67 | "owner": "oxalica", |
| 68 | "repo": "rust-overlay", | 68 | "repo": "rust-overlay", |
| 69 | "rev": "ebc7823c3ffde594c7733113042b72694d996de9", | 69 | "rev": "8668ca94858206ac3db0860a9dec471de0d995f8", |
| 70 | "type": "github" | 70 | "type": "github" |
| 71 | }, | 71 | }, |
| 72 | "original": { | 72 | "original": { |
| @@ -19,7 +19,7 @@ | |||
| 19 | # ideally this wouldn't be pinned to a specific nightly version but | 19 | # ideally this wouldn't be pinned to a specific nightly version but |
| 20 | # selectLatestNightlyWith isn't support with mixed toolchains | 20 | # selectLatestNightlyWith isn't support with mixed toolchains |
| 21 | # https://github.com/oxalica/rust-overlay/issues/136 | 21 | # https://github.com/oxalica/rust-overlay/issues/136 |
| 22 | (lib.hiPrio rust-bin.nightly."2024-12-15".rustfmt) | 22 | (lib.hiPrio rust-bin.nightly."2025-07-16".rustfmt) |
| 23 | # (rust-bin.stable.latest.override { extensions = [ "rust-analyzer" ]; }) | 23 | # (rust-bin.stable.latest.override { extensions = [ "rust-analyzer" ]; }) |
| 24 | rust-bin.stable.latest.default | 24 | rust-bin.stable.latest.default |
| 25 | ]; | 25 | ]; |
diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index 04fc4d8..9ff8af0 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs | |||
| @@ -1049,10 +1049,13 @@ async fn get_merged_status_events( | |||
| 1049 | let (ahead, _) = | 1049 | let (ahead, _) = |
| 1050 | git_repo.get_commits_ahead_behind(&tip_of_remote_branch, &tip_of_pushed_branch)?; | 1050 | git_repo.get_commits_ahead_behind(&tip_of_remote_branch, &tip_of_pushed_branch)?; |
| 1051 | 1051 | ||
| 1052 | let commit_events = get_events_from_local_cache(git_repo.get_path()?, vec![ | 1052 | let commit_events = get_events_from_local_cache( |
| 1053 | nostr::Filter::default().kind(nostr::Kind::GitPatch), | 1053 | git_repo.get_path()?, |
| 1054 | // TODO: limit by repo_ref | 1054 | vec![ |
| 1055 | ]) | 1055 | nostr::Filter::default().kind(nostr::Kind::GitPatch), |
| 1056 | // TODO: limit by repo_ref | ||
| 1057 | ], | ||
| 1058 | ) | ||
| 1056 | .await?; | 1059 | .await?; |
| 1057 | 1060 | ||
| 1058 | let merged_proposals_info = | 1061 | let merged_proposals_info = |
| @@ -1129,9 +1132,12 @@ async fn get_merged_proposals_info( | |||
| 1129 | proposals.entry(proposal_id).or_default(); | 1132 | proposals.entry(proposal_id).or_default(); |
| 1130 | // ignore revisions without all the merged commits | 1133 | // ignore revisions without all the merged commits |
| 1131 | if entry_revision_id == &revision_id { | 1134 | if entry_revision_id == &revision_id { |
| 1132 | merged_patches.insert(*commit_hash, MergedPRCommitType::PatchCommit { | 1135 | merged_patches.insert( |
| 1133 | event_id: patch_event.id, | 1136 | *commit_hash, |
| 1134 | }); | 1137 | MergedPRCommitType::PatchCommit { |
| 1138 | event_id: patch_event.id, | ||
| 1139 | }, | ||
| 1140 | ); | ||
| 1135 | } | 1141 | } |
| 1136 | } | 1142 | } |
| 1137 | } | 1143 | } |
| @@ -1156,9 +1162,12 @@ async fn get_merged_proposals_info( | |||
| 1156 | proposals.entry(proposal_id).or_default(); | 1162 | proposals.entry(proposal_id).or_default(); |
| 1157 | // ignore revisions without all the applied commits | 1163 | // ignore revisions without all the applied commits |
| 1158 | if entry_revision_id == &revision_id { | 1164 | if entry_revision_id == &revision_id { |
| 1159 | merged_patches.insert(*commit_hash, MergedPRCommitType::PatchApplied { | 1165 | merged_patches.insert( |
| 1160 | event_id: patch_event.id, | 1166 | *commit_hash, |
| 1161 | }); | 1167 | MergedPRCommitType::PatchApplied { |
| 1168 | event_id: patch_event.id, | ||
| 1169 | }, | ||
| 1170 | ); | ||
| 1162 | } | 1171 | } |
| 1163 | } | 1172 | } |
| 1164 | } | 1173 | } |
| @@ -1405,9 +1414,10 @@ async fn get_proposal_and_revision_root_from_patch( | |||
| 1405 | .clone(), | 1414 | .clone(), |
| 1406 | )?; | 1415 | )?; |
| 1407 | 1416 | ||
| 1408 | get_events_from_local_cache(git_repo.get_path()?, vec![ | 1417 | get_events_from_local_cache( |
| 1409 | nostr::Filter::default().id(proposal_or_revision_id), | 1418 | git_repo.get_path()?, |
| 1410 | ]) | 1419 | vec![nostr::Filter::default().id(proposal_or_revision_id)], |
| 1420 | ) | ||
| 1411 | .await? | 1421 | .await? |
| 1412 | .first() | 1422 | .first() |
| 1413 | .unwrap() | 1423 | .unwrap() |
diff --git a/src/bin/git_remote_nostr/utils.rs b/src/bin/git_remote_nostr/utils.rs index f7e688e..dc75872 100644 --- a/src/bin/git_remote_nostr/utils.rs +++ b/src/bin/git_remote_nostr/utils.rs | |||
| @@ -108,11 +108,14 @@ pub async fn get_open_or_draft_proposals( | |||
| 108 | .collect(); | 108 | .collect(); |
| 109 | 109 | ||
| 110 | let statuses: Vec<nostr::Event> = { | 110 | let statuses: Vec<nostr::Event> = { |
| 111 | let mut statuses = get_events_from_local_cache(git_repo_path, vec![ | 111 | let mut statuses = get_events_from_local_cache( |
| 112 | nostr::Filter::default() | 112 | git_repo_path, |
| 113 | .kinds(status_kinds().clone()) | 113 | vec![ |
| 114 | .events(proposals.iter().map(|e| e.id)), | 114 | nostr::Filter::default() |
| 115 | ]) | 115 | .kinds(status_kinds().clone()) |
| 116 | .events(proposals.iter().map(|e| e.id)), | ||
| 117 | ], | ||
| 118 | ) | ||
| 116 | .await?; | 119 | .await?; |
| 117 | statuses.sort_by_key(|e| e.created_at); | 120 | statuses.sort_by_key(|e| e.created_at); |
| 118 | statuses.reverse(); | 121 | statuses.reverse(); |
diff --git a/src/bin/ngit/sub_commands/list.rs b/src/bin/ngit/sub_commands/list.rs index 2c91e66..0330be1 100644 --- a/src/bin/ngit/sub_commands/list.rs +++ b/src/bin/ngit/sub_commands/list.rs | |||
| @@ -49,11 +49,14 @@ pub async fn launch() -> Result<()> { | |||
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | let statuses: Vec<nostr::Event> = { | 51 | let statuses: Vec<nostr::Event> = { |
| 52 | let mut statuses = get_events_from_local_cache(git_repo_path, vec![ | 52 | let mut statuses = get_events_from_local_cache( |
| 53 | nostr::Filter::default() | 53 | git_repo_path, |
| 54 | .kinds(status_kinds().clone()) | 54 | vec![ |
| 55 | .events(proposals_and_revisions.iter().map(|e| e.id)), | 55 | nostr::Filter::default() |
| 56 | ]) | 56 | .kinds(status_kinds().clone()) |
| 57 | .events(proposals_and_revisions.iter().map(|e| e.id)), | ||
| 58 | ], | ||
| 59 | ) | ||
| 57 | .await?; | 60 | .await?; |
| 58 | statuses.sort_by_key(|e| e.created_at); | 61 | statuses.sort_by_key(|e| e.created_at); |
| 59 | statuses.reverse(); | 62 | statuses.reverse(); |
diff --git a/src/bin/ngit/sub_commands/send.rs b/src/bin/ngit/sub_commands/send.rs index 5a5acc8..c84e339 100644 --- a/src/bin/ngit/sub_commands/send.rs +++ b/src/bin/ngit/sub_commands/send.rs | |||
| @@ -378,9 +378,10 @@ async fn get_root_proposal_id_and_mentions_from_in_reply_to( | |||
| 378 | public_key: _, | 378 | public_key: _, |
| 379 | uppercase: false, | 379 | uppercase: false, |
| 380 | }) => { | 380 | }) => { |
| 381 | let events = get_events_from_local_cache(git_repo_path, vec![ | 381 | let events = get_events_from_local_cache( |
| 382 | nostr::Filter::new().id(*event_id), | 382 | git_repo_path, |
| 383 | ]) | 383 | vec![nostr::Filter::new().id(*event_id)], |
| 384 | ) | ||
| 384 | .await?; | 385 | .await?; |
| 385 | 386 | ||
| 386 | if let Some(first) = events.iter().find(|e| e.id.eq(event_id)) { | 387 | if let Some(first) = events.iter().find(|e| e.id.eq(event_id)) { |
diff --git a/src/lib/client.rs b/src/lib/client.rs index 445bf77..9253022 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs | |||
| @@ -794,8 +794,7 @@ pub async fn sign_event( | |||
| 794 | if signer.backend() == SignerBackend::NostrConnect { | 794 | if signer.backend() == SignerBackend::NostrConnect { |
| 795 | let term = console::Term::stderr(); | 795 | let term = console::Term::stderr(); |
| 796 | term.write_line(&format!( | 796 | term.write_line(&format!( |
| 797 | "signing event ({}) with remote signer...", | 797 | "signing event ({description}) with remote signer..." |
| 798 | description | ||
| 799 | ))?; | 798 | ))?; |
| 800 | let event = signer | 799 | let event = signer |
| 801 | .sign_event(event_builder.build(signer.get_public_key().await?)) | 800 | .sign_event(event_builder.build(signer.get_public_key().await?)) |
| @@ -1104,16 +1103,18 @@ pub async fn get_state_from_cache( | |||
| 1104 | ) -> Result<RepoState> { | 1103 | ) -> Result<RepoState> { |
| 1105 | if let Some(git_repo_path) = git_repo_path { | 1104 | if let Some(git_repo_path) = git_repo_path { |
| 1106 | RepoState::try_from( | 1105 | RepoState::try_from( |
| 1107 | get_events_from_local_cache(git_repo_path, vec![get_filter_state_events( | 1106 | get_events_from_local_cache( |
| 1108 | &repo_ref.coordinates(), | 1107 | git_repo_path, |
| 1109 | )]) | 1108 | vec![get_filter_state_events(&repo_ref.coordinates())], |
| 1109 | ) | ||
| 1110 | .await?, | 1110 | .await?, |
| 1111 | ) | 1111 | ) |
| 1112 | } else { | 1112 | } else { |
| 1113 | RepoState::try_from( | 1113 | RepoState::try_from( |
| 1114 | get_event_from_global_cache(git_repo_path, vec![get_filter_state_events( | 1114 | get_event_from_global_cache( |
| 1115 | &repo_ref.coordinates(), | 1115 | git_repo_path, |
| 1116 | )]) | 1116 | vec![get_filter_state_events(&repo_ref.coordinates())], |
| 1117 | ) | ||
| 1117 | .await?, | 1118 | .await?, |
| 1118 | ) | 1119 | ) |
| 1119 | } | 1120 | } |
| @@ -1179,17 +1180,20 @@ async fn create_relays_request( | |||
| 1179 | } | 1180 | } |
| 1180 | 1181 | ||
| 1181 | if let Some(git_repo_path) = git_repo_path { | 1182 | if let Some(git_repo_path) = git_repo_path { |
| 1182 | for event in &get_events_from_local_cache(git_repo_path, vec![ | 1183 | for event in &get_events_from_local_cache( |
| 1183 | nostr::Filter::default() | 1184 | git_repo_path, |
| 1184 | .kinds(vec![Kind::GitPatch]) | 1185 | vec![ |
| 1185 | .custom_tags( | 1186 | nostr::Filter::default() |
| 1186 | SingleLetterTag::lowercase(nostr_sdk::Alphabet::A), | 1187 | .kinds(vec![Kind::GitPatch]) |
| 1187 | repo_coordinates_without_relays | 1188 | .custom_tags( |
| 1188 | .iter() | 1189 | SingleLetterTag::lowercase(nostr_sdk::Alphabet::A), |
| 1189 | .map(|c| c.coordinate.to_string()) | 1190 | repo_coordinates_without_relays |
| 1190 | .collect::<Vec<String>>(), | 1191 | .iter() |
| 1191 | ), | 1192 | .map(|c| c.coordinate.to_string()) |
| 1192 | ]) | 1193 | .collect::<Vec<String>>(), |
| 1194 | ), | ||
| 1195 | ], | ||
| 1196 | ) | ||
| 1193 | .await? | 1197 | .await? |
| 1194 | { | 1198 | { |
| 1195 | if event_is_patch_set_root(event) || event_is_revision_root(event) { | 1199 | if event_is_patch_set_root(event) || event_is_revision_root(event) { |
| @@ -1199,11 +1203,11 @@ async fn create_relays_request( | |||
| 1199 | } | 1203 | } |
| 1200 | } | 1204 | } |
| 1201 | 1205 | ||
| 1202 | let profile_events = | 1206 | let profile_events = get_event_from_global_cache( |
| 1203 | get_event_from_global_cache(git_repo_path, vec![get_filter_contributor_profiles( | 1207 | git_repo_path, |
| 1204 | contributors.clone(), | 1208 | vec![get_filter_contributor_profiles(contributors.clone())], |
| 1205 | )]) | 1209 | ) |
| 1206 | .await?; | 1210 | .await?; |
| 1207 | for c in &contributors { | 1211 | for c in &contributors { |
| 1208 | if let Some(event) = profile_events | 1212 | if let Some(event) = profile_events |
| 1209 | .iter() | 1213 | .iter() |
| @@ -1769,17 +1773,20 @@ pub async fn get_proposals_and_revisions_from_cache( | |||
| 1769 | git_repo_path: &Path, | 1773 | git_repo_path: &Path, |
| 1770 | repo_coordinates: HashSet<Nip19Coordinate>, | 1774 | repo_coordinates: HashSet<Nip19Coordinate>, |
| 1771 | ) -> Result<Vec<nostr::Event>> { | 1775 | ) -> Result<Vec<nostr::Event>> { |
| 1772 | let mut proposals = get_events_from_local_cache(git_repo_path, vec![ | 1776 | let mut proposals = get_events_from_local_cache( |
| 1773 | nostr::Filter::default() | 1777 | git_repo_path, |
| 1774 | .kind(nostr::Kind::GitPatch) | 1778 | vec![ |
| 1775 | .custom_tags( | 1779 | nostr::Filter::default() |
| 1776 | nostr::SingleLetterTag::lowercase(nostr_sdk::Alphabet::A), | 1780 | .kind(nostr::Kind::GitPatch) |
| 1777 | repo_coordinates | 1781 | .custom_tags( |
| 1778 | .iter() | 1782 | nostr::SingleLetterTag::lowercase(nostr_sdk::Alphabet::A), |
| 1779 | .map(|c| c.coordinate.to_string()) | 1783 | repo_coordinates |
| 1780 | .collect::<Vec<String>>(), | 1784 | .iter() |
| 1781 | ), | 1785 | .map(|c| c.coordinate.to_string()) |
| 1782 | ]) | 1786 | .collect::<Vec<String>>(), |
| 1787 | ), | ||
| 1788 | ], | ||
| 1789 | ) | ||
| 1783 | .await? | 1790 | .await? |
| 1784 | .iter() | 1791 | .iter() |
| 1785 | .filter(|e| event_is_patch_set_root(e)) | 1792 | .filter(|e| event_is_patch_set_root(e)) |
| @@ -1795,23 +1802,29 @@ pub async fn get_all_proposal_patch_events_from_cache( | |||
| 1795 | repo_ref: &RepoRef, | 1802 | repo_ref: &RepoRef, |
| 1796 | proposal_id: &nostr::EventId, | 1803 | proposal_id: &nostr::EventId, |
| 1797 | ) -> Result<Vec<nostr::Event>> { | 1804 | ) -> Result<Vec<nostr::Event>> { |
| 1798 | let mut commit_events = get_events_from_local_cache(git_repo_path, vec![ | 1805 | let mut commit_events = get_events_from_local_cache( |
| 1799 | nostr::Filter::default() | 1806 | git_repo_path, |
| 1800 | .kind(nostr::Kind::GitPatch) | 1807 | vec![ |
| 1801 | .event(*proposal_id), | 1808 | nostr::Filter::default() |
| 1802 | nostr::Filter::default() | 1809 | .kind(nostr::Kind::GitPatch) |
| 1803 | .kind(nostr::Kind::GitPatch) | 1810 | .event(*proposal_id), |
| 1804 | .id(*proposal_id), | 1811 | nostr::Filter::default() |
| 1805 | ]) | 1812 | .kind(nostr::Kind::GitPatch) |
| 1813 | .id(*proposal_id), | ||
| 1814 | ], | ||
| 1815 | ) | ||
| 1806 | .await?; | 1816 | .await?; |
| 1807 | 1817 | ||
| 1808 | let permissioned_users: HashSet<PublicKey> = [repo_ref.maintainers.clone(), vec![ | 1818 | let permissioned_users: HashSet<PublicKey> = [ |
| 1809 | commit_events | 1819 | repo_ref.maintainers.clone(), |
| 1810 | .iter() | 1820 | vec![ |
| 1811 | .find(|e| e.id.eq(proposal_id)) | 1821 | commit_events |
| 1812 | .context("proposal not in cache")? | 1822 | .iter() |
| 1813 | .pubkey, | 1823 | .find(|e| e.id.eq(proposal_id)) |
| 1814 | ]] | 1824 | .context("proposal not in cache")? |
| 1825 | .pubkey, | ||
| 1826 | ], | ||
| 1827 | ] | ||
| 1815 | .concat() | 1828 | .concat() |
| 1816 | .iter() | 1829 | .iter() |
| 1817 | .copied() | 1830 | .copied() |
| @@ -1825,12 +1838,15 @@ pub async fn get_all_proposal_patch_events_from_cache( | |||
| 1825 | .collect(); | 1838 | .collect(); |
| 1826 | 1839 | ||
| 1827 | if !revision_roots.is_empty() { | 1840 | if !revision_roots.is_empty() { |
| 1828 | for event in get_events_from_local_cache(git_repo_path, vec![ | 1841 | for event in get_events_from_local_cache( |
| 1829 | nostr::Filter::default() | 1842 | git_repo_path, |
| 1830 | .kind(nostr::Kind::GitPatch) | 1843 | vec![ |
| 1831 | .events(revision_roots) | 1844 | nostr::Filter::default() |
| 1832 | .authors(permissioned_users.clone()), | 1845 | .kind(nostr::Kind::GitPatch) |
| 1833 | ]) | 1846 | .events(revision_roots) |
| 1847 | .authors(permissioned_users.clone()), | ||
| 1848 | ], | ||
| 1849 | ) | ||
| 1834 | .await? | 1850 | .await? |
| 1835 | { | 1851 | { |
| 1836 | commit_events.push(event); | 1852 | commit_events.push(event); |
| @@ -1845,9 +1861,10 @@ pub async fn get_all_proposal_patch_events_from_cache( | |||
| 1845 | } | 1861 | } |
| 1846 | 1862 | ||
| 1847 | pub async fn get_event_from_cache_by_id(git_repo: &Repo, event_id: &EventId) -> Result<Event> { | 1863 | pub async fn get_event_from_cache_by_id(git_repo: &Repo, event_id: &EventId) -> Result<Event> { |
| 1848 | Ok(get_events_from_local_cache(git_repo.get_path()?, vec![ | 1864 | Ok(get_events_from_local_cache( |
| 1849 | nostr::Filter::default().id(*event_id), | 1865 | git_repo.get_path()?, |
| 1850 | ]) | 1866 | vec![nostr::Filter::default().id(*event_id)], |
| 1867 | ) | ||
| 1851 | .await? | 1868 | .await? |
| 1852 | .first() | 1869 | .first() |
| 1853 | .context("failed to find event in cache")? | 1870 | .context("failed to find event in cache")? |
diff --git a/src/lib/git/identify_ahead_behind.rs b/src/lib/git/identify_ahead_behind.rs index baea687..d736522 100644 --- a/src/lib/git/identify_ahead_behind.rs +++ b/src/lib/git/identify_ahead_behind.rs | |||
| @@ -184,10 +184,10 @@ mod tests { | |||
| 184 | identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?; | 184 | identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?; |
| 185 | 185 | ||
| 186 | assert_eq!(from_branch, "feature"); | 186 | assert_eq!(from_branch, "feature"); |
| 187 | assert_eq!(ahead, vec![ | 187 | assert_eq!( |
| 188 | oid_to_sha1(&feature_oid), | 188 | ahead, |
| 189 | oid_to_sha1(&dev_oid_first) | 189 | vec![oid_to_sha1(&feature_oid), oid_to_sha1(&dev_oid_first)] |
| 190 | ]); | 190 | ); |
| 191 | assert_eq!(to_branch, "main"); | 191 | assert_eq!(to_branch, "main"); |
| 192 | assert_eq!(behind, vec![]); | 192 | assert_eq!(behind, vec![]); |
| 193 | 193 | ||
diff --git a/src/lib/git/mod.rs b/src/lib/git/mod.rs index 0256457..d4bf2f5 100644 --- a/src/lib/git/mod.rs +++ b/src/lib/git/mod.rs | |||
| @@ -888,7 +888,7 @@ pub fn save_git_config_item(git_repo: &Option<&Repo>, item: &str, value: &str) - | |||
| 888 | git2::Config::open_default()? | 888 | git2::Config::open_default()? |
| 889 | .open_global()? | 889 | .open_global()? |
| 890 | .set_str(item, value) | 890 | .set_str(item, value) |
| 891 | .context(format!("failed to set global git config item {}", item)) | 891 | .context(format!("failed to set global git config item {item}")) |
| 892 | } | 892 | } |
| 893 | } | 893 | } |
| 894 | 894 | ||
| @@ -901,10 +901,7 @@ pub fn remove_git_config_item(git_repo: &Option<&Repo>, item: &str) -> Result<bo | |||
| 901 | git2::Config::open_default()? | 901 | git2::Config::open_default()? |
| 902 | .open_global()? | 902 | .open_global()? |
| 903 | .remove(item) | 903 | .remove(item) |
| 904 | .context(format!( | 904 | .context(format!("failed to remove existing git config item {item}"))?; |
| 905 | "failed to remove existing git config item {}", | ||
| 906 | item | ||
| 907 | ))?; | ||
| 908 | Ok(true) | 905 | Ok(true) |
| 909 | } | 906 | } |
| 910 | } | 907 | } |
| @@ -1271,7 +1268,7 @@ mod tests { | |||
| 1271 | +some content1\n\\ \ | 1268 | +some content1\n\\ \ |
| 1272 | No newline at end of file\n\ | 1269 | No newline at end of file\n\ |
| 1273 | --\n\ | 1270 | --\n\ |
| 1274 | libgit2 1.9.0\n\ | 1271 | libgit2 1.9.1\n\ |
| 1275 | \n\ | 1272 | \n\ |
| 1276 | ", | 1273 | ", |
| 1277 | git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &None)?, | 1274 | git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &None)?, |
| @@ -1307,7 +1304,7 @@ mod tests { | |||
| 1307 | +some content1\n\\ \ | 1304 | +some content1\n\\ \ |
| 1308 | No newline at end of file\n\ | 1305 | No newline at end of file\n\ |
| 1309 | --\n\ | 1306 | --\n\ |
| 1310 | libgit2 1.9.0\n\ | 1307 | libgit2 1.9.1\n\ |
| 1311 | \n\ | 1308 | \n\ |
| 1312 | ", | 1309 | ", |
| 1313 | git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &Some((3, 5)))?, | 1310 | git_repo.make_patch_from_commit(&oid_to_sha1(&oid), &Some((3, 5)))?, |
| @@ -1493,10 +1490,10 @@ mod tests { | |||
| 1493 | &oid_to_sha1(&feature_oid), | 1490 | &oid_to_sha1(&feature_oid), |
| 1494 | )?; | 1491 | )?; |
| 1495 | assert_eq!(ahead, vec![]); | 1492 | assert_eq!(ahead, vec![]); |
| 1496 | assert_eq!(behind, vec![ | 1493 | assert_eq!( |
| 1497 | oid_to_sha1(&behind_2_oid), | 1494 | behind, |
| 1498 | oid_to_sha1(&behind_1_oid), | 1495 | vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid),], |
| 1499 | ],); | 1496 | ); |
| 1500 | Ok(()) | 1497 | Ok(()) |
| 1501 | } | 1498 | } |
| 1502 | 1499 | ||
| @@ -1518,10 +1515,10 @@ mod tests { | |||
| 1518 | &oid_to_sha1(&main_oid), | 1515 | &oid_to_sha1(&main_oid), |
| 1519 | &oid_to_sha1(&ahead_2_oid), | 1516 | &oid_to_sha1(&ahead_2_oid), |
| 1520 | )?; | 1517 | )?; |
| 1521 | assert_eq!(ahead, vec![ | 1518 | assert_eq!( |
| 1522 | oid_to_sha1(&ahead_2_oid), | 1519 | ahead, |
| 1523 | oid_to_sha1(&ahead_1_oid), | 1520 | vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid),], |
| 1524 | ],); | 1521 | ); |
| 1525 | assert_eq!(behind, vec![]); | 1522 | assert_eq!(behind, vec![]); |
| 1526 | Ok(()) | 1523 | Ok(()) |
| 1527 | } | 1524 | } |
| @@ -1550,14 +1547,14 @@ mod tests { | |||
| 1550 | &oid_to_sha1(&behind_2_oid), | 1547 | &oid_to_sha1(&behind_2_oid), |
| 1551 | &oid_to_sha1(&ahead_2_oid), | 1548 | &oid_to_sha1(&ahead_2_oid), |
| 1552 | )?; | 1549 | )?; |
| 1553 | assert_eq!(ahead, vec![ | 1550 | assert_eq!( |
| 1554 | oid_to_sha1(&ahead_2_oid), | 1551 | ahead, |
| 1555 | oid_to_sha1(&ahead_1_oid) | 1552 | vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid)], |
| 1556 | ],); | 1553 | ); |
| 1557 | assert_eq!(behind, vec![ | 1554 | assert_eq!( |
| 1558 | oid_to_sha1(&behind_2_oid), | 1555 | behind, |
| 1559 | oid_to_sha1(&behind_1_oid) | 1556 | vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid)], |
| 1560 | ],); | 1557 | ); |
| 1561 | Ok(()) | 1558 | Ok(()) |
| 1562 | } | 1559 | } |
| 1563 | } | 1560 | } |
| @@ -2212,9 +2209,10 @@ mod tests { | |||
| 2212 | test_repo.populate_with_test_branch()?; | 2209 | test_repo.populate_with_test_branch()?; |
| 2213 | test_repo.checkout("main")?; | 2210 | test_repo.checkout("main")?; |
| 2214 | 2211 | ||
| 2215 | assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ | 2212 | assert_eq!( |
| 2216 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")? | 2213 | git_repo.parse_starting_commits("HEAD~1")?, |
| 2217 | ],); | 2214 | vec![str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?], |
| 2215 | ); | ||
| 2218 | Ok(()) | 2216 | Ok(()) |
| 2219 | } | 2217 | } |
| 2220 | 2218 | ||
| @@ -2224,9 +2222,10 @@ mod tests { | |||
| 2224 | let git_repo = Repo::from_path(&test_repo.dir)?; | 2222 | let git_repo = Repo::from_path(&test_repo.dir)?; |
| 2225 | test_repo.populate_with_test_branch()?; | 2223 | test_repo.populate_with_test_branch()?; |
| 2226 | 2224 | ||
| 2227 | assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ | 2225 | assert_eq!( |
| 2228 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")? | 2226 | git_repo.parse_starting_commits("HEAD~1")?, |
| 2229 | ],); | 2227 | vec![str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?], |
| 2228 | ); | ||
| 2230 | Ok(()) | 2229 | Ok(()) |
| 2231 | } | 2230 | } |
| 2232 | } | 2231 | } |
| @@ -2240,10 +2239,13 @@ mod tests { | |||
| 2240 | test_repo.populate_with_test_branch()?; | 2239 | test_repo.populate_with_test_branch()?; |
| 2241 | test_repo.checkout("main")?; | 2240 | test_repo.checkout("main")?; |
| 2242 | 2241 | ||
| 2243 | assert_eq!(git_repo.parse_starting_commits("HEAD~2")?, vec![ | 2242 | assert_eq!( |
| 2244 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, | 2243 | git_repo.parse_starting_commits("HEAD~2")?, |
| 2245 | str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?, | 2244 | vec![ |
| 2246 | ],); | 2245 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, |
| 2246 | str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?, | ||
| 2247 | ], | ||
| 2248 | ); | ||
| 2247 | Ok(()) | 2249 | Ok(()) |
| 2248 | } | 2250 | } |
| 2249 | } | 2251 | } |
| @@ -2256,11 +2258,14 @@ mod tests { | |||
| 2256 | let git_repo = Repo::from_path(&test_repo.dir)?; | 2258 | let git_repo = Repo::from_path(&test_repo.dir)?; |
| 2257 | test_repo.populate_with_test_branch()?; | 2259 | test_repo.populate_with_test_branch()?; |
| 2258 | 2260 | ||
| 2259 | assert_eq!(git_repo.parse_starting_commits("HEAD~3")?, vec![ | 2261 | assert_eq!( |
| 2260 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?, | 2262 | git_repo.parse_starting_commits("HEAD~3")?, |
| 2261 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, | 2263 | vec![ |
| 2262 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, | 2264 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?, |
| 2263 | ],); | 2265 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, |
| 2266 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, | ||
| 2267 | ], | ||
| 2268 | ); | ||
| 2264 | Ok(()) | 2269 | Ok(()) |
| 2265 | } | 2270 | } |
| 2266 | } | 2271 | } |
| @@ -2274,11 +2279,14 @@ mod tests { | |||
| 2274 | test_repo.populate_with_test_branch()?; | 2279 | test_repo.populate_with_test_branch()?; |
| 2275 | test_repo.checkout("main")?; | 2280 | test_repo.checkout("main")?; |
| 2276 | 2281 | ||
| 2277 | assert_eq!(git_repo.parse_starting_commits("af474d8..a23e6b0")?, vec![ | 2282 | assert_eq!( |
| 2278 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, | 2283 | git_repo.parse_starting_commits("af474d8..a23e6b0")?, |
| 2279 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, | 2284 | vec![ |
| 2280 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, | 2285 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, |
| 2281 | ],); | 2286 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, |
| 2287 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, | ||
| 2288 | ], | ||
| 2289 | ); | ||
| 2282 | Ok(()) | 2290 | Ok(()) |
| 2283 | } | 2291 | } |
| 2284 | } | 2292 | } |
diff --git a/src/lib/git/nostr_url.rs b/src/lib/git/nostr_url.rs index a9b08eb..e9b482f 100644 --- a/src/lib/git/nostr_url.rs +++ b/src/lib/git/nostr_url.rs | |||
| @@ -71,13 +71,13 @@ impl fmt::Display for NostrUrlDecoded { | |||
| 71 | } | 71 | } |
| 72 | write!(f, "nostr://")?; | 72 | write!(f, "nostr://")?; |
| 73 | if let Some(user) = &self.user { | 73 | if let Some(user) = &self.user { |
| 74 | write!(f, "{}@", user)?; | 74 | write!(f, "{user}@")?; |
| 75 | } | 75 | } |
| 76 | if let Some(protocol) = &self.protocol { | 76 | if let Some(protocol) = &self.protocol { |
| 77 | write!(f, "{}/", protocol)?; | 77 | write!(f, "{protocol}/")?; |
| 78 | } | 78 | } |
| 79 | if let Some(nip05) = &self.nip05 { | 79 | if let Some(nip05) = &self.nip05 { |
| 80 | write!(f, "{}/", nip05)?; | 80 | write!(f, "{nip05}/")?; |
| 81 | } else { | 81 | } else { |
| 82 | write!(f, "{}/", self.coordinate.public_key.to_bech32().unwrap())?; | 82 | write!(f, "{}/", self.coordinate.public_key.to_bech32().unwrap())?; |
| 83 | } | 83 | } |
| @@ -454,7 +454,7 @@ impl CloneUrl { | |||
| 454 | format!("{}@", user.as_deref().unwrap_or("git")).as_str(), | 454 | format!("{}@", user.as_deref().unwrap_or("git")).as_str(), |
| 455 | ); | 455 | ); |
| 456 | if url.port().is_some() { | 456 | if url.port().is_some() { |
| 457 | formatted_url = format!("ssh://{}", formatted_url); | 457 | formatted_url = format!("ssh://{formatted_url}"); |
| 458 | } else { | 458 | } else { |
| 459 | formatted_url = replace_first_occurrence(&formatted_url, '/', ':'); | 459 | formatted_url = replace_first_occurrence(&formatted_url, '/', ':'); |
| 460 | } | 460 | } |
diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs index 3ce7637..69406c1 100644 --- a/src/lib/git_events.rs +++ b/src/lib/git_events.rs | |||
| @@ -134,14 +134,15 @@ pub async fn generate_patch_event( | |||
| 134 | // code that makes it into the main branch, assuming | 134 | // code that makes it into the main branch, assuming |
| 135 | // the commit id is correct | 135 | // the commit id is correct |
| 136 | Tag::from_standardized(TagStandard::Reference(commit.to_string())), | 136 | Tag::from_standardized(TagStandard::Reference(commit.to_string())), |
| 137 | Tag::custom(TagKind::Custom(std::borrow::Cow::Borrowed("alt")), vec![ | 137 | Tag::custom( |
| 138 | format!( | 138 | TagKind::Custom(std::borrow::Cow::Borrowed("alt")), |
| 139 | vec![format!( | ||
| 139 | "git patch: {}", | 140 | "git patch: {}", |
| 140 | git_repo | 141 | git_repo |
| 141 | .get_commit_message_summary(commit) | 142 | .get_commit_message_summary(commit) |
| 142 | .unwrap_or_default() | 143 | .unwrap_or_default() |
| 143 | ), | 144 | )], |
| 144 | ]), | 145 | ), |
| 145 | ], | 146 | ], |
| 146 | if let Some(thread_event_id) = thread_event_id { | 147 | if let Some(thread_event_id) = thread_event_id { |
| 147 | vec![Tag::from_standardized(nostr_sdk::TagStandard::Event { | 148 | vec![Tag::from_standardized(nostr_sdk::TagStandard::Event { |
| @@ -205,9 +206,10 @@ pub async fn generate_patch_event( | |||
| 205 | .collect(), | 206 | .collect(), |
| 206 | vec![ | 207 | vec![ |
| 207 | // a fallback is now in place to extract this from the patch | 208 | // a fallback is now in place to extract this from the patch |
| 208 | Tag::custom(TagKind::Custom(std::borrow::Cow::Borrowed("commit")), vec![ | 209 | Tag::custom( |
| 209 | commit.to_string(), | 210 | TagKind::Custom(std::borrow::Cow::Borrowed("commit")), |
| 210 | ]), | 211 | vec![commit.to_string()], |
| 212 | ), | ||
| 211 | // this is required as patches cannot be relied upon to include the 'base | 213 | // this is required as patches cannot be relied upon to include the 'base |
| 212 | // commit' | 214 | // commit' |
| 213 | Tag::custom( | 215 | Tag::custom( |
diff --git a/src/lib/login/fresh.rs b/src/lib/login/fresh.rs index 683d4af..a169177 100644 --- a/src/lib/login/fresh.rs +++ b/src/lib/login/fresh.rs | |||
| @@ -278,7 +278,7 @@ pub async fn get_fresh_nip46_signer( | |||
| 278 | let input = Interactor::default() | 278 | let input = Interactor::default() |
| 279 | .input( | 279 | .input( |
| 280 | PromptInputParms::default().with_prompt(if let Some(error) = error { | 280 | PromptInputParms::default().with_prompt(if let Some(error) = error { |
| 281 | format!("error: {}. try again with NIP-05 address", error) | 281 | format!("error: {error}. try again with NIP-05 address") |
| 282 | } else { | 282 | } else { |
| 283 | "NIP-05 address".to_string() | 283 | "NIP-05 address".to_string() |
| 284 | }), | 284 | }), |
| @@ -296,7 +296,7 @@ pub async fn get_fresh_nip46_signer( | |||
| 296 | let input = Interactor::default() | 296 | let input = Interactor::default() |
| 297 | .input( | 297 | .input( |
| 298 | PromptInputParms::default().with_prompt(if let Some(error) = error { | 298 | PromptInputParms::default().with_prompt(if let Some(error) = error { |
| 299 | format!("error: {}. try again with bunker url", error) | 299 | format!("error: {error}. try again with bunker url") |
| 300 | } else { | 300 | } else { |
| 301 | "bunker url".to_string() | 301 | "bunker url".to_string() |
| 302 | }), | 302 | }), |
| @@ -505,7 +505,7 @@ async fn save_to_git_config( | |||
| 505 | if let Err(error) = | 505 | if let Err(error) = |
| 506 | silently_save_to_git_config(git_repo, signer_info, global).context(err_msg.clone()) | 506 | silently_save_to_git_config(git_repo, signer_info, global).context(err_msg.clone()) |
| 507 | { | 507 | { |
| 508 | eprintln!("Error: {:?}", error); | 508 | eprintln!("Error: {error:?}"); |
| 509 | match signer_info { | 509 | match signer_info { |
| 510 | SignerInfo::Nsec { | 510 | SignerInfo::Nsec { |
| 511 | nsec, | 511 | nsec, |
| @@ -577,7 +577,7 @@ async fn save_to_git_config( | |||
| 577 | ), | 577 | ), |
| 578 | ) | 578 | ) |
| 579 | { | 579 | { |
| 580 | eprintln!("Error: {:?}", error); | 580 | eprintln!("Error: {error:?}"); |
| 581 | eprintln!("login details were not saved"); | 581 | eprintln!("login details were not saved"); |
| 582 | } else { | 582 | } else { |
| 583 | eprintln!( | 583 | eprintln!( |
diff --git a/src/lib/login/mod.rs b/src/lib/login/mod.rs index bfc7328..3fcd755 100644 --- a/src/lib/login/mod.rs +++ b/src/lib/login/mod.rs | |||
| @@ -79,11 +79,15 @@ fn print_logged_in_as( | |||
| 79 | "failed to find your relay list. consider using another nostr client to create one to enhance your nostr experience." | 79 | "failed to find your relay list. consider using another nostr client to create one to enhance your nostr experience." |
| 80 | ); | 80 | ); |
| 81 | } | 81 | } |
| 82 | eprintln!("logged in as {}{}", user_ref.metadata.name, match source { | 82 | eprintln!( |
| 83 | SignerInfoSource::CommandLineArguments => " via cli arguments", | 83 | "logged in as {}{}", |
| 84 | SignerInfoSource::GitLocal => " to local repository", | 84 | user_ref.metadata.name, |
| 85 | SignerInfoSource::GitGlobal => "", | 85 | match source { |
| 86 | }); | 86 | SignerInfoSource::CommandLineArguments => " via cli arguments", |
| 87 | SignerInfoSource::GitLocal => " to local repository", | ||
| 88 | SignerInfoSource::GitGlobal => "", | ||
| 89 | } | ||
| 90 | ); | ||
| 87 | Ok(()) | 91 | Ok(()) |
| 88 | } | 92 | } |
| 89 | 93 | ||
diff --git a/src/lib/repo_ref.rs b/src/lib/repo_ref.rs index c1fc288..0236e34 100644 --- a/src/lib/repo_ref.rs +++ b/src/lib/repo_ref.rs | |||
| @@ -578,11 +578,14 @@ pub fn save_repo_config_to_yaml( | |||
| 578 | .context("failed to convert public key into npub")?, | 578 | .context("failed to convert public key into npub")?, |
| 579 | ); | 579 | ); |
| 580 | } | 580 | } |
| 581 | serde_yaml::to_writer(file, &RepoConfigYaml { | 581 | serde_yaml::to_writer( |
| 582 | identifier: Some(identifier), | 582 | file, |
| 583 | maintainers: maintainers_npubs, | 583 | &RepoConfigYaml { |
| 584 | relays, | 584 | identifier: Some(identifier), |
| 585 | }) | 585 | maintainers: maintainers_npubs, |
| 586 | relays, | ||
| 587 | }, | ||
| 588 | ) | ||
| 586 | .context("failed to write maintainers to maintainers.yaml file serde_yaml") | 589 | .context("failed to write maintainers to maintainers.yaml file serde_yaml") |
| 587 | } | 590 | } |
| 588 | 591 | ||
diff --git a/src/lib/repo_state.rs b/src/lib/repo_state.rs index 04f3cf2..345f05c 100644 --- a/src/lib/repo_state.rs +++ b/src/lib/repo_state.rs | |||
| @@ -56,9 +56,10 @@ impl RepoState { | |||
| 56 | add_head(&mut state); | 56 | add_head(&mut state); |
| 57 | let mut tags = vec![Tag::identifier(identifier.clone())]; | 57 | let mut tags = vec![Tag::identifier(identifier.clone())]; |
| 58 | for (name, value) in &state { | 58 | for (name, value) in &state { |
| 59 | tags.push(Tag::custom(nostr_sdk::TagKind::Custom(name.into()), vec![ | 59 | tags.push(Tag::custom( |
| 60 | value.clone(), | 60 | nostr_sdk::TagKind::Custom(name.into()), |
| 61 | ])); | 61 | vec![value.clone()], |
| 62 | )); | ||
| 62 | } | 63 | } |
| 63 | let event = sign_event( | 64 | let event = sign_event( |
| 64 | EventBuilder::new(STATE_KIND, "").tags(tags), | 65 | EventBuilder::new(STATE_KIND, "").tags(tags), |
diff --git a/test_utils/Cargo.toml b/test_utils/Cargo.toml index 2001733..8602416 100644 --- a/test_utils/Cargo.toml +++ b/test_utils/Cargo.toml | |||
| @@ -4,21 +4,21 @@ version = "0.1.0" | |||
| 4 | edition = "2021" | 4 | edition = "2021" |
| 5 | 5 | ||
| 6 | [dependencies] | 6 | [dependencies] |
| 7 | anyhow = "1.0.75" | 7 | anyhow = "1.0.98" |
| 8 | assert_cmd = "2.0.12" | 8 | assert_cmd = "2.0.17" |
| 9 | dialoguer = "0.11.0" | 9 | dialoguer = "0.11.0" |
| 10 | directories = "6.0.0" | 10 | directories = "6.0.0" |
| 11 | futures = "0.3.28" | 11 | futures = "0.3.31" |
| 12 | git2 = "0.20.2" | 12 | git2 = "0.20.2" |
| 13 | nostr = "0.41.0" | 13 | nostr = "0.42.2" |
| 14 | nostr-database = "0.41.0" | 14 | nostr-database = "0.42.0" |
| 15 | nostr-lmdb = "0.41.0" | 15 | nostr-lmdb = "0.42.0" |
| 16 | nostr-sdk = "0.41.0" | 16 | nostr-sdk = "0.42.0" |
| 17 | once_cell = "1.18.0" | 17 | once_cell = "1.21.3" |
| 18 | rand = "0.8" | 18 | rand = "0.9" |
| 19 | rexpect = { git = "https://github.com/rust-cli/rexpect.git", rev = "9eb61dd" } | 19 | rexpect = { git = "https://github.com/rust-cli/rexpect.git", rev = "9eb61dd" } |
| 20 | simple-websockets = { git = "https://github.com/DanConwayDev/simple-websockets", branch= "auto-release-port" } | 20 | simple-websockets = { git = "https://github.com/DanConwayDev/simple-websockets", branch= "auto-release-port" } |
| 21 | strip-ansi-escapes = "0.2.0" | 21 | strip-ansi-escapes = "0.2.1" |
| 22 | tokio = { version = "1.40.0", features = ["full"] } | 22 | tokio = { version = "1.46.1", features = ["full"] } |
| 23 | tungstenite = "0.20.1" | 23 | tungstenite = "0.27.0" |
| 24 | sha2 = "0.10" \ No newline at end of file | 24 | sha2 = "0.10" |
diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs index 5feb64b..7d79cff 100644 --- a/test_utils/src/lib.rs +++ b/test_utils/src/lib.rs | |||
| @@ -167,7 +167,7 @@ pub fn generate_repo_ref_event_with_git_server_with_keys( | |||
| 167 | .tags([ | 167 | .tags([ |
| 168 | Tag::identifier( | 168 | Tag::identifier( |
| 169 | // root_commit.to_string() | 169 | // root_commit.to_string() |
| 170 | format!("{}-consider-it-random", root_commit), | 170 | format!("{root_commit}-consider-it-random"), |
| 171 | ), | 171 | ), |
| 172 | Tag::from_standardized(TagStandard::Reference(root_commit.to_string())), | 172 | Tag::from_standardized(TagStandard::Reference(root_commit.to_string())), |
| 173 | Tag::from_standardized(TagStandard::Name("example name".into())), | 173 | Tag::from_standardized(TagStandard::Name("example name".into())), |
| @@ -544,10 +544,14 @@ impl CliTesterConfirmPrompt<'_> { | |||
| 544 | let mut s = String::new(); | 544 | let mut s = String::new(); |
| 545 | self.tester | 545 | self.tester |
| 546 | .formatter | 546 | .formatter |
| 547 | .format_confirm_prompt_selection(&mut s, self.prompt.as_str(), match input { | 547 | .format_confirm_prompt_selection( |
| 548 | None => self.default, | 548 | &mut s, |
| 549 | Some(_) => input, | 549 | self.prompt.as_str(), |
| 550 | }) | 550 | match input { |
| 551 | None => self.default, | ||
| 552 | Some(_) => input, | ||
| 553 | }, | ||
| 554 | ) | ||
| 551 | .expect("diagluer theme formatter should succeed"); | 555 | .expect("diagluer theme formatter should succeed"); |
| 552 | if !s.contains(self.prompt.as_str()) { | 556 | if !s.contains(self.prompt.as_str()) { |
| 553 | panic!("dialoguer must be broken as formatted prompt success doesnt contain prompt"); | 557 | panic!("dialoguer must be broken as formatted prompt success doesnt contain prompt"); |
| @@ -1017,10 +1021,13 @@ where | |||
| 1017 | cmd.env("RUST_BACKTRACE", "0"); | 1021 | cmd.env("RUST_BACKTRACE", "0"); |
| 1018 | cmd.args(args); | 1022 | cmd.args(args); |
| 1019 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes | 1023 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes |
| 1020 | rexpect::session::spawn_with_options(cmd, Options { | 1024 | rexpect::session::spawn_with_options( |
| 1021 | timeout_ms: Some(timeout_ms), | 1025 | cmd, |
| 1022 | strip_ansi_escape_codes: true, | 1026 | Options { |
| 1023 | }) | 1027 | timeout_ms: Some(timeout_ms), |
| 1028 | strip_ansi_escape_codes: true, | ||
| 1029 | }, | ||
| 1030 | ) | ||
| 1024 | } | 1031 | } |
| 1025 | 1032 | ||
| 1026 | pub fn rexpect_with_from_dir<I, S>( | 1033 | pub fn rexpect_with_from_dir<I, S>( |
| @@ -1038,10 +1045,13 @@ where | |||
| 1038 | cmd.current_dir(dir); | 1045 | cmd.current_dir(dir); |
| 1039 | cmd.args(args); | 1046 | cmd.args(args); |
| 1040 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes | 1047 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes |
| 1041 | rexpect::session::spawn_with_options(cmd, Options { | 1048 | rexpect::session::spawn_with_options( |
| 1042 | timeout_ms: Some(timeout_ms), | 1049 | cmd, |
| 1043 | strip_ansi_escape_codes: true, | 1050 | Options { |
| 1044 | }) | 1051 | timeout_ms: Some(timeout_ms), |
| 1052 | strip_ansi_escape_codes: true, | ||
| 1053 | }, | ||
| 1054 | ) | ||
| 1045 | } | 1055 | } |
| 1046 | 1056 | ||
| 1047 | pub fn remote_helper_rexpect_with_from_dir( | 1057 | pub fn remote_helper_rexpect_with_from_dir( |
| @@ -1056,10 +1066,13 @@ pub fn remote_helper_rexpect_with_from_dir( | |||
| 1056 | cmd.current_dir(dir); | 1066 | cmd.current_dir(dir); |
| 1057 | cmd.args([dir.as_os_str().to_str().unwrap(), nostr_remote_url]); | 1067 | cmd.args([dir.as_os_str().to_str().unwrap(), nostr_remote_url]); |
| 1058 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes | 1068 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes |
| 1059 | rexpect::session::spawn_with_options(cmd, Options { | 1069 | rexpect::session::spawn_with_options( |
| 1060 | timeout_ms: Some(timeout_ms), | 1070 | cmd, |
| 1061 | strip_ansi_escape_codes: true, | 1071 | Options { |
| 1062 | }) | 1072 | timeout_ms: Some(timeout_ms), |
| 1073 | strip_ansi_escape_codes: true, | ||
| 1074 | }, | ||
| 1075 | ) | ||
| 1063 | } | 1076 | } |
| 1064 | 1077 | ||
| 1065 | pub fn git_with_remote_helper_rexpect_with_from_dir<I, S>( | 1078 | pub fn git_with_remote_helper_rexpect_with_from_dir<I, S>( |
| @@ -1103,10 +1116,13 @@ where | |||
| 1103 | cmd.current_dir(dir); | 1116 | cmd.current_dir(dir); |
| 1104 | cmd.args(args); | 1117 | cmd.args(args); |
| 1105 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes | 1118 | // using branch for PR https://github.com/rust-cli/rexpect/pull/103 to strip ansi escape codes |
| 1106 | rexpect::session::spawn_with_options(cmd, Options { | 1119 | rexpect::session::spawn_with_options( |
| 1107 | timeout_ms: Some(timeout_ms), | 1120 | cmd, |
| 1108 | strip_ansi_escape_codes: true, | 1121 | Options { |
| 1109 | }) | 1122 | timeout_ms: Some(timeout_ms), |
| 1123 | strip_ansi_escape_codes: true, | ||
| 1124 | }, | ||
| 1125 | ) | ||
| 1110 | .context("spawning failed") | 1126 | .context("spawning failed") |
| 1111 | } | 1127 | } |
| 1112 | 1128 | ||
| @@ -1145,11 +1161,14 @@ pub fn get_proposal_branch_name( | |||
| 1145 | test_repo: &GitTestRepo, | 1161 | test_repo: &GitTestRepo, |
| 1146 | branch_name_in_event: &str, | 1162 | branch_name_in_event: &str, |
| 1147 | ) -> Result<String> { | 1163 | ) -> Result<String> { |
| 1148 | let events = block_on(get_events_from_cache(&test_repo.dir, vec![ | 1164 | let events = block_on(get_events_from_cache( |
| 1149 | nostr::Filter::default() | 1165 | &test_repo.dir, |
| 1150 | .kind(nostr_sdk::Kind::GitPatch) | 1166 | vec![ |
| 1151 | .hashtag("root"), | 1167 | nostr::Filter::default() |
| 1152 | ]))?; | 1168 | .kind(nostr_sdk::Kind::GitPatch) |
| 1169 | .hashtag("root"), | ||
| 1170 | ], | ||
| 1171 | ))?; | ||
| 1153 | get_proposal_branch_name_from_events(&events, branch_name_in_event) | 1172 | get_proposal_branch_name_from_events(&events, branch_name_in_event) |
| 1154 | } | 1173 | } |
| 1155 | 1174 | ||
| @@ -1235,10 +1254,10 @@ pub fn create_and_populate_branch( | |||
| 1235 | test_repo.checkout("main")?; | 1254 | test_repo.checkout("main")?; |
| 1236 | test_repo.create_branch(branch_name)?; | 1255 | test_repo.create_branch(branch_name)?; |
| 1237 | test_repo.checkout(branch_name)?; | 1256 | test_repo.checkout(branch_name)?; |
| 1238 | let file_name = format!("{}3.md", prefix); | 1257 | let file_name = format!("{prefix}3.md"); |
| 1239 | std::fs::write(test_repo.dir.join(&file_name), "some content")?; | 1258 | std::fs::write(test_repo.dir.join(&file_name), "some content")?; |
| 1240 | test_repo.stage_and_commit_custom_signature( | 1259 | test_repo.stage_and_commit_custom_signature( |
| 1241 | &format!("add {}3.md", prefix), | 1260 | &format!("add {prefix}3.md"), |
| 1242 | Some( | 1261 | Some( |
| 1243 | &Signature::new( | 1262 | &Signature::new( |
| 1244 | "Joe Bloggs", | 1263 | "Joe Bloggs", |
| @@ -1250,10 +1269,10 @@ pub fn create_and_populate_branch( | |||
| 1250 | commiter, | 1269 | commiter, |
| 1251 | )?; | 1270 | )?; |
| 1252 | if !only_one_commit { | 1271 | if !only_one_commit { |
| 1253 | let file_name = format!("{}4.md", prefix); | 1272 | let file_name = format!("{prefix}4.md"); |
| 1254 | std::fs::write(test_repo.dir.join(&file_name), "some content")?; | 1273 | std::fs::write(test_repo.dir.join(&file_name), "some content")?; |
| 1255 | test_repo.stage_and_commit_custom_signature( | 1274 | test_repo.stage_and_commit_custom_signature( |
| 1256 | &format!("add {}4.md", prefix), | 1275 | &format!("add {prefix}4.md"), |
| 1257 | Some( | 1276 | Some( |
| 1258 | &Signature::new( | 1277 | &Signature::new( |
| 1259 | "Joe Bloggs", | 1278 | "Joe Bloggs", |
| @@ -1303,45 +1322,54 @@ pub fn cli_tester_create_proposal( | |||
| 1303 | create_and_populate_branch(test_repo, branch_name, prefix, false, None)?; | 1322 | create_and_populate_branch(test_repo, branch_name, prefix, false, None)?; |
| 1304 | std::thread::sleep(std::time::Duration::from_millis(1000)); | 1323 | std::thread::sleep(std::time::Duration::from_millis(1000)); |
| 1305 | if let Some(in_reply_to) = in_reply_to { | 1324 | if let Some(in_reply_to) = in_reply_to { |
| 1306 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 1325 | let mut p = CliTester::new_from_dir( |
| 1307 | "--nsec", | 1326 | &test_repo.dir, |
| 1308 | TEST_KEY_1_NSEC, | 1327 | [ |
| 1309 | "--password", | 1328 | "--nsec", |
| 1310 | TEST_PASSWORD, | 1329 | TEST_KEY_1_NSEC, |
| 1311 | "--disable-cli-spinners", | 1330 | "--password", |
| 1312 | "send", | 1331 | TEST_PASSWORD, |
| 1313 | "HEAD~2", | 1332 | "--disable-cli-spinners", |
| 1314 | "--no-cover-letter", | 1333 | "send", |
| 1315 | "--in-reply-to", | 1334 | "HEAD~2", |
| 1316 | in_reply_to.as_str(), | 1335 | "--no-cover-letter", |
| 1317 | ]); | 1336 | "--in-reply-to", |
| 1337 | in_reply_to.as_str(), | ||
| 1338 | ], | ||
| 1339 | ); | ||
| 1318 | p.expect_end_eventually()?; | 1340 | p.expect_end_eventually()?; |
| 1319 | } else if let Some((title, description)) = cover_letter_title_and_description { | 1341 | } else if let Some((title, description)) = cover_letter_title_and_description { |
| 1320 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 1342 | let mut p = CliTester::new_from_dir( |
| 1321 | "--nsec", | 1343 | &test_repo.dir, |
| 1322 | TEST_KEY_1_NSEC, | 1344 | [ |
| 1323 | "--password", | 1345 | "--nsec", |
| 1324 | TEST_PASSWORD, | 1346 | TEST_KEY_1_NSEC, |
| 1325 | "--disable-cli-spinners", | 1347 | "--password", |
| 1326 | "send", | 1348 | TEST_PASSWORD, |
| 1327 | "HEAD~2", | 1349 | "--disable-cli-spinners", |
| 1328 | "--title", | 1350 | "send", |
| 1329 | format!("\"{title}\"").as_str(), | 1351 | "HEAD~2", |
| 1330 | "--description", | 1352 | "--title", |
| 1331 | format!("\"{description}\"").as_str(), | 1353 | format!("\"{title}\"").as_str(), |
| 1332 | ]); | 1354 | "--description", |
| 1355 | format!("\"{description}\"").as_str(), | ||
| 1356 | ], | ||
| 1357 | ); | ||
| 1333 | p.expect_end_eventually()?; | 1358 | p.expect_end_eventually()?; |
| 1334 | } else { | 1359 | } else { |
| 1335 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 1360 | let mut p = CliTester::new_from_dir( |
| 1336 | "--nsec", | 1361 | &test_repo.dir, |
| 1337 | TEST_KEY_1_NSEC, | 1362 | [ |
| 1338 | "--password", | 1363 | "--nsec", |
| 1339 | TEST_PASSWORD, | 1364 | TEST_KEY_1_NSEC, |
| 1340 | "--disable-cli-spinners", | 1365 | "--password", |
| 1341 | "send", | 1366 | TEST_PASSWORD, |
| 1342 | "HEAD~2", | 1367 | "--disable-cli-spinners", |
| 1343 | "--no-cover-letter", | 1368 | "send", |
| 1344 | ]); | 1369 | "HEAD~2", |
| 1370 | "--no-cover-letter", | ||
| 1371 | ], | ||
| 1372 | ); | ||
| 1345 | p.expect_end_eventually()?; | 1373 | p.expect_end_eventually()?; |
| 1346 | } | 1374 | } |
| 1347 | Ok(()) | 1375 | Ok(()) |
| @@ -1373,11 +1401,14 @@ pub fn use_ngit_list_to_download_and_checkout_proposal_branch( | |||
| 1373 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1401 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1374 | p.expect("fetching updates...\r\n")?; | 1402 | p.expect("fetching updates...\r\n")?; |
| 1375 | p.expect_eventually("\r\n")?; // some updates listed here | 1403 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1376 | let mut c = p.expect_choice("all proposals", vec![ | 1404 | let mut c = p.expect_choice( |
| 1377 | format!("\"{PROPOSAL_TITLE_3}\""), | 1405 | "all proposals", |
| 1378 | format!("\"{PROPOSAL_TITLE_2}\""), | 1406 | vec![ |
| 1379 | format!("\"{PROPOSAL_TITLE_1}\""), | 1407 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1380 | ])?; | 1408 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1409 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1410 | ], | ||
| 1411 | )?; | ||
| 1381 | c.succeeds_with( | 1412 | c.succeeds_with( |
| 1382 | if proposal_number == 3 { | 1413 | if proposal_number == 3 { |
| 1383 | 0 | 1414 | 0 |
| @@ -1389,12 +1420,15 @@ pub fn use_ngit_list_to_download_and_checkout_proposal_branch( | |||
| 1389 | true, | 1420 | true, |
| 1390 | None, | 1421 | None, |
| 1391 | )?; | 1422 | )?; |
| 1392 | let mut c = p.expect_choice("", vec![ | 1423 | let mut c = p.expect_choice( |
| 1393 | format!("create and checkout proposal branch (2 ahead 0 behind 'main')"), | 1424 | "", |
| 1394 | format!("apply to current branch with `git am`"), | 1425 | vec![ |
| 1395 | format!("download to ./patches"), | 1426 | format!("create and checkout proposal branch (2 ahead 0 behind 'main')"), |
| 1396 | format!("back"), | 1427 | format!("apply to current branch with `git am`"), |
| 1397 | ])?; | 1428 | format!("download to ./patches"), |
| 1429 | format!("back"), | ||
| 1430 | ], | ||
| 1431 | )?; | ||
| 1398 | c.succeeds_with(0, true, Some(0))?; | 1432 | c.succeeds_with(0, true, Some(0))?; |
| 1399 | p.expect_end_eventually()?; | 1433 | p.expect_end_eventually()?; |
| 1400 | Ok(()) | 1434 | Ok(()) |
| @@ -1466,9 +1500,10 @@ fn get_first_proposal_event_id() -> Result<nostr::EventId> { | |||
| 1466 | client.fetch_events( | 1500 | client.fetch_events( |
| 1467 | nostr::Filter::default() | 1501 | nostr::Filter::default() |
| 1468 | .kind(nostr::Kind::GitPatch) | 1502 | .kind(nostr::Kind::GitPatch) |
| 1469 | .custom_tags(nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), vec![ | 1503 | .custom_tags( |
| 1470 | "root", | 1504 | nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), |
| 1471 | ]), | 1505 | vec!["root"], |
| 1506 | ), | ||
| 1472 | Duration::from_millis(500), | 1507 | Duration::from_millis(500), |
| 1473 | ), | 1508 | ), |
| 1474 | )? | 1509 | )? |
| @@ -1496,15 +1531,18 @@ pub fn create_proposals_with_first_revised_and_repo_with_unrevised_proposal_chec | |||
| 1496 | 1531 | ||
| 1497 | amend_last_commit(&originating_repo, "add some ammended-commit.md")?; | 1532 | amend_last_commit(&originating_repo, "add some ammended-commit.md")?; |
| 1498 | 1533 | ||
| 1499 | let mut p = CliTester::new_from_dir(&originating_repo.dir, [ | 1534 | let mut p = CliTester::new_from_dir( |
| 1500 | "--nsec", | 1535 | &originating_repo.dir, |
| 1501 | TEST_KEY_1_NSEC, | 1536 | [ |
| 1502 | "--password", | 1537 | "--nsec", |
| 1503 | TEST_PASSWORD, | 1538 | TEST_KEY_1_NSEC, |
| 1504 | "--disable-cli-spinners", | 1539 | "--password", |
| 1505 | "push", | 1540 | TEST_PASSWORD, |
| 1506 | "--force", | 1541 | "--disable-cli-spinners", |
| 1507 | ]); | 1542 | "push", |
| 1543 | "--force", | ||
| 1544 | ], | ||
| 1545 | ); | ||
| 1508 | p.expect_end_eventually()?; | 1546 | p.expect_end_eventually()?; |
| 1509 | 1547 | ||
| 1510 | Ok((originating_repo, test_repo)) | 1548 | Ok((originating_repo, test_repo)) |
diff --git a/test_utils/src/relay.rs b/test_utils/src/relay.rs index e820651..b14f532 100644 --- a/test_utils/src/relay.rs +++ b/test_utils/src/relay.rs | |||
| @@ -161,9 +161,11 @@ impl<'a> Relay<'a> { | |||
| 161 | if let Some(listner) = self.req_listener { | 161 | if let Some(listner) = self.req_listener { |
| 162 | listner(self, client_id, subscription_id, vec![filter.clone()])?; | 162 | listner(self, client_id, subscription_id, vec![filter.clone()])?; |
| 163 | } else { | 163 | } else { |
| 164 | self.respond_standard_req(client_id, &subscription_id, &[ | 164 | self.respond_standard_req( |
| 165 | filter.clone() | 165 | client_id, |
| 166 | ])?; | 166 | &subscription_id, |
| 167 | &[filter.clone()], | ||
| 168 | )?; | ||
| 167 | // self.respond_eose(client_id, subscription_id)?; | 169 | // self.respond_eose(client_id, subscription_id)?; |
| 168 | } | 170 | } |
| 169 | // respond with events | 171 | // respond with events |
| @@ -186,7 +188,7 @@ impl<'a> Relay<'a> { | |||
| 186 | 188 | ||
| 187 | pub fn shutdown_relay(port: u64) -> Result<()> { | 189 | pub fn shutdown_relay(port: u64) -> Result<()> { |
| 188 | let mut counter = 0; | 190 | let mut counter = 0; |
| 189 | while let Ok((mut socket, _)) = tungstenite::connect(format!("ws://localhost:{}", port)) { | 191 | while let Ok((mut socket, _)) = tungstenite::connect(format!("ws://localhost:{port}")) { |
| 190 | counter += 1; | 192 | counter += 1; |
| 191 | if counter == 1 { | 193 | if counter == 1 { |
| 192 | socket.write(tungstenite::Message::text("shut me down"))?; | 194 | socket.write(tungstenite::Message::text("shut me down"))?; |
diff --git a/tests/git_remote_nostr/list.rs b/tests/git_remote_nostr/list.rs index 37cff30..c201054 100644 --- a/tests/git_remote_nostr/list.rs +++ b/tests/git_remote_nostr/list.rs | |||
| @@ -41,7 +41,7 @@ mod without_state_announcement { | |||
| 41 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | 41 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { |
| 42 | let mut p = cli_tester_after_fetch(&git_repo)?; | 42 | let mut p = cli_tester_after_fetch(&git_repo)?; |
| 43 | p.send_line("list")?; | 43 | p.send_line("list")?; |
| 44 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 44 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 45 | p.expect("list: connecting...\r\n\r\r\r")?; | 45 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 46 | // println!("{}", p.expect_eventually("\r\n\r\n")?); | 46 | // println!("{}", p.expect_eventually("\r\n\r\n")?); |
| 47 | let res = p.expect_eventually("\r\n\r\n")?; | 47 | let res = p.expect_eventually("\r\n\r\n")?; |
| @@ -59,8 +59,8 @@ mod without_state_announcement { | |||
| 59 | .collect::<HashSet<String>>(), | 59 | .collect::<HashSet<String>>(), |
| 60 | HashSet::from([ | 60 | HashSet::from([ |
| 61 | "@refs/heads/main HEAD".to_string(), | 61 | "@refs/heads/main HEAD".to_string(), |
| 62 | format!("{} refs/heads/main", main_commit_id), | 62 | format!("{main_commit_id} refs/heads/main"), |
| 63 | format!("{} refs/heads/vnext", vnext_commit_id), | 63 | format!("{vnext_commit_id} refs/heads/vnext"), |
| 64 | ]), | 64 | ]), |
| 65 | ); | 65 | ); |
| 66 | Ok(()) | 66 | Ok(()) |
| @@ -120,7 +120,7 @@ mod with_state_announcement { | |||
| 120 | let mut p = cli_tester_after_fetch(&git_repo)?; | 120 | let mut p = cli_tester_after_fetch(&git_repo)?; |
| 121 | p.send_line("list")?; | 121 | p.send_line("list")?; |
| 122 | p.expect( | 122 | p.expect( |
| 123 | format!("fetching {} ref list over filesystem...\r\n", source_path).as_str(), | 123 | format!("fetching {source_path} ref list over filesystem...\r\n").as_str(), |
| 124 | )?; | 124 | )?; |
| 125 | p.expect("list: connecting...\r\n\r\r\r")?; | 125 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 126 | // println!("{}", p.expect_eventually("\r\n\r\n")?); | 126 | // println!("{}", p.expect_eventually("\r\n\r\n")?); |
| @@ -135,8 +135,8 @@ mod with_state_announcement { | |||
| 135 | .collect::<HashSet<String>>(), | 135 | .collect::<HashSet<String>>(), |
| 136 | HashSet::from([ | 136 | HashSet::from([ |
| 137 | "@refs/heads/main HEAD".to_string(), | 137 | "@refs/heads/main HEAD".to_string(), |
| 138 | format!("{} refs/heads/main", main_commit_id), | 138 | format!("{main_commit_id} refs/heads/main"), |
| 139 | format!("{} refs/heads/example-branch", example_commit_id), | 139 | format!("{example_commit_id} refs/heads/example-branch"), |
| 140 | ]), | 140 | ]), |
| 141 | ); | 141 | ); |
| 142 | 142 | ||
| @@ -204,13 +204,12 @@ mod with_state_announcement { | |||
| 204 | let mut p = cli_tester_after_fetch(&git_repo)?; | 204 | let mut p = cli_tester_after_fetch(&git_repo)?; |
| 205 | p.send_line("list")?; | 205 | p.send_line("list")?; |
| 206 | p.expect( | 206 | p.expect( |
| 207 | format!("fetching {} ref list over filesystem...\r\n", source_path).as_str(), | 207 | format!("fetching {source_path} ref list over filesystem...\r\n").as_str(), |
| 208 | )?; | 208 | )?; |
| 209 | p.expect("list: connecting...\r\n\r\r\r")?; | 209 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 210 | p.expect( | 210 | p.expect( |
| 211 | format!( | 211 | format!( |
| 212 | "WARNING: {} refs/heads/main is out of sync with nostr \r\n", | 212 | "WARNING: {source_path} refs/heads/main is out of sync with nostr \r\n" |
| 213 | source_path | ||
| 214 | ) | 213 | ) |
| 215 | .as_str(), | 214 | .as_str(), |
| 216 | )?; | 215 | )?; |
| @@ -231,8 +230,8 @@ mod with_state_announcement { | |||
| 231 | .collect::<HashSet<String>>(), | 230 | .collect::<HashSet<String>>(), |
| 232 | HashSet::from([ | 231 | HashSet::from([ |
| 233 | "@refs/heads/main HEAD".to_string(), | 232 | "@refs/heads/main HEAD".to_string(), |
| 234 | format!("{} refs/heads/main", main_original_commit_id), | 233 | format!("{main_original_commit_id} refs/heads/main"), |
| 235 | format!("{} refs/heads/example-branch", example_commit_id), | 234 | format!("{example_commit_id} refs/heads/example-branch"), |
| 236 | ]), | 235 | ]), |
| 237 | ); | 236 | ); |
| 238 | Ok(()) | 237 | Ok(()) |
| @@ -292,7 +291,7 @@ mod with_state_announcement { | |||
| 292 | let mut p = cli_tester_after_fetch(&git_repo)?; | 291 | let mut p = cli_tester_after_fetch(&git_repo)?; |
| 293 | p.send_line("list")?; | 292 | p.send_line("list")?; |
| 294 | p.expect( | 293 | p.expect( |
| 295 | format!("fetching {} ref list over filesystem...\r\n", source_path).as_str(), | 294 | format!("fetching {source_path} ref list over filesystem...\r\n").as_str(), |
| 296 | )?; | 295 | )?; |
| 297 | p.expect("list: connecting...\r\n\r\r\r")?; | 296 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 298 | // println!("{}", p.expect_eventually("\r\n\r\n")?); | 297 | // println!("{}", p.expect_eventually("\r\n\r\n")?); |
diff --git a/tests/git_remote_nostr/push.rs b/tests/git_remote_nostr/push.rs index f46b0ea..5912543 100644 --- a/tests/git_remote_nostr/push.rs +++ b/tests/git_remote_nostr/push.rs | |||
| @@ -969,19 +969,17 @@ async fn proposal_three_way_merge_commit_pushed_to_main_leads_to_status_event_is | |||
| 969 | std::fs::write(git_repo.dir.join("new.md"), "some content")?; | 969 | std::fs::write(git_repo.dir.join("new.md"), "some content")?; |
| 970 | git_repo.stage_and_commit("new.md")?; | 970 | git_repo.stage_and_commit("new.md")?; |
| 971 | 971 | ||
| 972 | CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, [ | 972 | CliTester::new_git_with_remote_helper_from_dir( |
| 973 | "merge", | 973 | &git_repo.dir, |
| 974 | &branch_name, | 974 | ["merge", &branch_name, "-m", "proposal merge commit message"], |
| 975 | "-m", | 975 | ) |
| 976 | "proposal merge commit message", | ||
| 977 | ]) | ||
| 978 | .expect_end_eventually_and_print()?; | 976 | .expect_end_eventually_and_print()?; |
| 979 | 977 | ||
| 980 | let oid = git_repo.get_tip_of_local_branch("main")?; | 978 | let oid = git_repo.get_tip_of_local_branch("main")?; |
| 981 | 979 | ||
| 982 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); | 980 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); |
| 983 | cli_expect_nostr_fetch(&mut p)?; | 981 | cli_expect_nostr_fetch(&mut p)?; |
| 984 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 982 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 985 | p.expect("list: connecting...\r\n")?; | 983 | p.expect("list: connecting...\r\n")?; |
| 986 | p.expect_eventually("merge commit ")?; | 984 | p.expect_eventually("merge commit ")?; |
| 987 | // shorthand merge commit id appears in this gap | 985 | // shorthand merge commit id appears in this gap |
| @@ -1125,19 +1123,17 @@ async fn proposal_fast_forward_merge_commits_pushed_to_main_leads_to_status_even | |||
| 1125 | git_repo.checkout_remote_branch(&branch_name)?; | 1123 | git_repo.checkout_remote_branch(&branch_name)?; |
| 1126 | git_repo.checkout("refs/heads/main")?; | 1124 | git_repo.checkout("refs/heads/main")?; |
| 1127 | 1125 | ||
| 1128 | CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, [ | 1126 | CliTester::new_git_with_remote_helper_from_dir( |
| 1129 | "merge", | 1127 | &git_repo.dir, |
| 1130 | &branch_name, | 1128 | ["merge", &branch_name, "-m", "proposal merge commit message"], |
| 1131 | "-m", | 1129 | ) |
| 1132 | "proposal merge commit message", | ||
| 1133 | ]) | ||
| 1134 | .expect_end_eventually_and_print()?; | 1130 | .expect_end_eventually_and_print()?; |
| 1135 | 1131 | ||
| 1136 | let oid = git_repo.get_tip_of_local_branch("main")?; | 1132 | let oid = git_repo.get_tip_of_local_branch("main")?; |
| 1137 | 1133 | ||
| 1138 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); | 1134 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); |
| 1139 | cli_expect_nostr_fetch(&mut p)?; | 1135 | cli_expect_nostr_fetch(&mut p)?; |
| 1140 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 1136 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 1141 | p.expect("list: connecting...\r\n")?; | 1137 | p.expect("list: connecting...\r\n")?; |
| 1142 | p.expect_eventually(format!( | 1138 | p.expect_eventually(format!( |
| 1143 | "fast-forward merge: create nostr proposal status event for {branch_name}\r\n" | 1139 | "fast-forward merge: create nostr proposal status event for {branch_name}\r\n" |
| @@ -1323,7 +1319,7 @@ async fn proposal_commits_applied_and_pushed_to_main_leads_to_status_event_issue | |||
| 1323 | 1319 | ||
| 1324 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); | 1320 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); |
| 1325 | cli_expect_nostr_fetch(&mut p)?; | 1321 | cli_expect_nostr_fetch(&mut p)?; |
| 1326 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 1322 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 1327 | p.expect("list: connecting...\r\n")?; | 1323 | p.expect("list: connecting...\r\n")?; |
| 1328 | p.expect_eventually(format!( | 1324 | p.expect_eventually(format!( |
| 1329 | "applied commits from proposal: create nostr proposal status event for {branch_name}\r\n" ))?; | 1325 | "applied commits from proposal: create nostr proposal status event for {branch_name}\r\n" ))?; |
| @@ -1484,7 +1480,7 @@ async fn push_2_commits_to_existing_proposal() -> Result<()> { | |||
| 1484 | 1480 | ||
| 1485 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); | 1481 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push"]); |
| 1486 | cli_expect_nostr_fetch(&mut p)?; | 1482 | cli_expect_nostr_fetch(&mut p)?; |
| 1487 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 1483 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 1488 | p.expect("list: connecting...\r\n\r\r\r")?; | 1484 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 1489 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; | 1485 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; |
| 1490 | let output = p.expect_end_eventually()?; | 1486 | let output = p.expect_end_eventually()?; |
| @@ -1639,7 +1635,7 @@ async fn force_push_creates_proposal_revision() -> Result<()> { | |||
| 1639 | let mut p = | 1635 | let mut p = |
| 1640 | CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push", "--force"]); | 1636 | CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, ["push", "--force"]); |
| 1641 | cli_expect_nostr_fetch(&mut p)?; | 1637 | cli_expect_nostr_fetch(&mut p)?; |
| 1642 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 1638 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 1643 | p.expect("list: connecting...\r\n")?; | 1639 | p.expect("list: connecting...\r\n")?; |
| 1644 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; | 1640 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; |
| 1645 | let output = p.expect_end_eventually()?; | 1641 | let output = p.expect_end_eventually()?; |
| @@ -1784,14 +1780,12 @@ async fn push_new_pr_branch_creates_proposal() -> Result<()> { | |||
| 1784 | std::fs::write(git_repo.dir.join("new2.md"), "some content")?; | 1780 | std::fs::write(git_repo.dir.join("new2.md"), "some content")?; |
| 1785 | git_repo.stage_and_commit("new2.md")?; | 1781 | git_repo.stage_and_commit("new2.md")?; |
| 1786 | 1782 | ||
| 1787 | let mut p = CliTester::new_git_with_remote_helper_from_dir(&git_repo.dir, [ | 1783 | let mut p = CliTester::new_git_with_remote_helper_from_dir( |
| 1788 | "push", | 1784 | &git_repo.dir, |
| 1789 | "-u", | 1785 | ["push", "-u", "origin", branch_name], |
| 1790 | "origin", | 1786 | ); |
| 1791 | branch_name, | ||
| 1792 | ]); | ||
| 1793 | cli_expect_nostr_fetch(&mut p)?; | 1787 | cli_expect_nostr_fetch(&mut p)?; |
| 1794 | p.expect(format!("fetching {} ref list over filesystem...\r\n", source_path).as_str())?; | 1788 | p.expect(format!("fetching {source_path} ref list over filesystem...\r\n").as_str())?; |
| 1795 | p.expect("list: connecting...\r\n\r\r\r")?; | 1789 | p.expect("list: connecting...\r\n\r\r\r")?; |
| 1796 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; | 1790 | p.expect_eventually_and_print(format!("To {}\r\n", get_nostr_remote_url()?).as_str())?; |
| 1797 | let output = p.expect_end_eventually()?; | 1791 | let output = p.expect_end_eventually()?; |
diff --git a/tests/ngit_init.rs b/tests/ngit_init.rs index e49dbdd..1a23177 100644 --- a/tests/ngit_init.rs +++ b/tests/ngit_init.rs | |||
| @@ -75,10 +75,14 @@ mod when_repo_not_previously_claimed { | |||
| 75 | 8051, | 75 | 8051, |
| 76 | None, | 76 | None, |
| 77 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 77 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 78 | relay.respond_events(client_id, &subscription_id, &vec![ | 78 | relay.respond_events( |
| 79 | generate_test_key_1_metadata_event("fred"), | 79 | client_id, |
| 80 | generate_test_key_1_relay_list_event(), | 80 | &subscription_id, |
| 81 | ])?; | 81 | &vec![ |
| 82 | generate_test_key_1_metadata_event("fred"), | ||
| 83 | generate_test_key_1_relay_list_event(), | ||
| 84 | ], | ||
| 85 | )?; | ||
| 82 | Ok(()) | 86 | Ok(()) |
| 83 | }), | 87 | }), |
| 84 | ), | 88 | ), |
| @@ -197,10 +201,14 @@ mod when_repo_not_previously_claimed { | |||
| 197 | 8051, | 201 | 8051, |
| 198 | None, | 202 | None, |
| 199 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 203 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 200 | relay.respond_events(client_id, &subscription_id, &vec![ | 204 | relay.respond_events( |
| 201 | generate_test_key_1_metadata_event("fred"), | 205 | client_id, |
| 202 | generate_test_key_1_relay_list_event(), | 206 | &subscription_id, |
| 203 | ])?; | 207 | &vec![ |
| 208 | generate_test_key_1_metadata_event("fred"), | ||
| 209 | generate_test_key_1_relay_list_event(), | ||
| 210 | ], | ||
| 211 | )?; | ||
| 204 | Ok(()) | 212 | Ok(()) |
| 205 | }), | 213 | }), |
| 206 | ), | 214 | ), |
| @@ -454,10 +462,14 @@ mod when_repo_not_previously_claimed { | |||
| 454 | 8051, | 462 | 8051, |
| 455 | None, | 463 | None, |
| 456 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 464 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 457 | relay.respond_events(client_id, &subscription_id, &vec![ | 465 | relay.respond_events( |
| 458 | generate_test_key_1_metadata_event("fred"), | 466 | client_id, |
| 459 | generate_test_key_1_relay_list_event(), | 467 | &subscription_id, |
| 460 | ])?; | 468 | &vec![ |
| 469 | generate_test_key_1_metadata_event("fred"), | ||
| 470 | generate_test_key_1_relay_list_event(), | ||
| 471 | ], | ||
| 472 | )?; | ||
| 461 | Ok(()) | 473 | Ok(()) |
| 462 | }), | 474 | }), |
| 463 | ), | 475 | ), |
diff --git a/tests/ngit_list.rs b/tests/ngit_list.rs index bb742cf..0547ad4 100644 --- a/tests/ngit_list.rs +++ b/tests/ngit_list.rs | |||
| @@ -201,11 +201,14 @@ mod when_main_branch_is_uptodate { | |||
| 201 | 201 | ||
| 202 | p.expect("fetching updates...\r\n")?; | 202 | p.expect("fetching updates...\r\n")?; |
| 203 | p.expect_eventually("\r\n")?; // some updates listed here | 203 | p.expect_eventually("\r\n")?; // some updates listed here |
| 204 | let mut c = p.expect_choice("all proposals", vec![ | 204 | let mut c = p.expect_choice( |
| 205 | format!("\"{PROPOSAL_TITLE_3}\""), | 205 | "all proposals", |
| 206 | format!("\"{PROPOSAL_TITLE_2}\""), | 206 | vec![ |
| 207 | format!("\"{PROPOSAL_TITLE_1}\""), | 207 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 208 | ])?; | 208 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 209 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 210 | ], | ||
| 211 | )?; | ||
| 209 | c.succeeds_with(2, true, None)?; | 212 | c.succeeds_with(2, true, None)?; |
| 210 | let mut c = p.expect_choice("", vec![ | 213 | let mut c = p.expect_choice("", vec![ |
| 211 | format!( | 214 | format!( |
| @@ -217,8 +220,7 @@ mod when_main_branch_is_uptodate { | |||
| 217 | ])?; | 220 | ])?; |
| 218 | c.succeeds_with(0, true, None)?; | 221 | c.succeeds_with(0, true, None)?; |
| 219 | p.expect(format!( | 222 | p.expect(format!( |
| 220 | "checked out proposal as 'pr/{}(", | 223 | "checked out proposal as 'pr/{FEATURE_BRANCH_NAME_1}(", |
| 221 | FEATURE_BRANCH_NAME_1, | ||
| 222 | ))?; | 224 | ))?; |
| 223 | p.expect_end_eventually_with(")' branch\r\n")?; | 225 | p.expect_end_eventually_with(")' branch\r\n")?; |
| 224 | 226 | ||
| @@ -318,11 +320,14 @@ mod when_main_branch_is_uptodate { | |||
| 318 | 320 | ||
| 319 | p.expect("fetching updates...\r\n")?; | 321 | p.expect("fetching updates...\r\n")?; |
| 320 | p.expect_eventually("\r\n")?; // some updates listed here | 322 | p.expect_eventually("\r\n")?; // some updates listed here |
| 321 | let mut c = p.expect_choice("all proposals", vec![ | 323 | let mut c = p.expect_choice( |
| 322 | format!("\"{PROPOSAL_TITLE_3}\""), | 324 | "all proposals", |
| 323 | format!("\"{PROPOSAL_TITLE_2}\""), | 325 | vec![ |
| 324 | format!("\"{PROPOSAL_TITLE_1}\""), | 326 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 325 | ])?; | 327 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 328 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 329 | ], | ||
| 330 | )?; | ||
| 326 | c.succeeds_with(0, true, None)?; | 331 | c.succeeds_with(0, true, None)?; |
| 327 | let mut c = p.expect_choice("", vec![ | 332 | let mut c = p.expect_choice("", vec![ |
| 328 | format!( | 333 | format!( |
| @@ -334,8 +339,7 @@ mod when_main_branch_is_uptodate { | |||
| 334 | ])?; | 339 | ])?; |
| 335 | c.succeeds_with(0, true, Some(0))?; | 340 | c.succeeds_with(0, true, Some(0))?; |
| 336 | p.expect(format!( | 341 | p.expect(format!( |
| 337 | "checked out proposal as 'pr/{}(", | 342 | "checked out proposal as 'pr/{FEATURE_BRANCH_NAME_3}(", |
| 338 | FEATURE_BRANCH_NAME_3, | ||
| 339 | ))?; | 343 | ))?; |
| 340 | p.expect_end_eventually_with(")' branch\r\n")?; | 344 | p.expect_end_eventually_with(")' branch\r\n")?; |
| 341 | 345 | ||
| @@ -438,12 +442,15 @@ mod when_main_branch_is_uptodate { | |||
| 438 | 442 | ||
| 439 | p.expect("fetching updates...\r\n")?; | 443 | p.expect("fetching updates...\r\n")?; |
| 440 | p.expect_eventually("\r\n")?; // some updates listed here | 444 | p.expect_eventually("\r\n")?; // some updates listed here |
| 441 | let mut c = p.expect_choice("all proposals", vec![ | 445 | let mut c = p.expect_choice( |
| 442 | format!("add d3.md"), // commit msg title | 446 | "all proposals", |
| 443 | format!("\"{PROPOSAL_TITLE_3}\""), | 447 | vec![ |
| 444 | format!("\"{PROPOSAL_TITLE_2}\""), | 448 | format!("add d3.md"), // commit msg title |
| 445 | format!("\"{PROPOSAL_TITLE_1}\""), | 449 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 446 | ])?; | 450 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 451 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 452 | ], | ||
| 453 | )?; | ||
| 447 | c.succeeds_with(0, true, None)?; | 454 | c.succeeds_with(0, true, None)?; |
| 448 | let mut c = p.expect_choice("", vec![ | 455 | let mut c = p.expect_choice("", vec![ |
| 449 | format!( | 456 | format!( |
| @@ -513,12 +520,15 @@ mod when_main_branch_is_uptodate { | |||
| 513 | 520 | ||
| 514 | p.expect("fetching updates...\r\n")?; | 521 | p.expect("fetching updates...\r\n")?; |
| 515 | p.expect_eventually("\r\n")?; // some updates listed here | 522 | p.expect_eventually("\r\n")?; // some updates listed here |
| 516 | let mut c = p.expect_choice("all proposals", vec![ | 523 | let mut c = p.expect_choice( |
| 517 | format!("add d3.md"), // commit msg title | 524 | "all proposals", |
| 518 | format!("\"{PROPOSAL_TITLE_3}\""), | 525 | vec![ |
| 519 | format!("\"{PROPOSAL_TITLE_2}\""), | 526 | format!("add d3.md"), // commit msg title |
| 520 | format!("\"{PROPOSAL_TITLE_1}\""), | 527 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 521 | ])?; | 528 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 529 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 530 | ], | ||
| 531 | )?; | ||
| 522 | c.succeeds_with(0, true, None)?; | 532 | c.succeeds_with(0, true, None)?; |
| 523 | let mut c = p.expect_choice("", vec![ | 533 | let mut c = p.expect_choice("", vec![ |
| 524 | format!( | 534 | format!( |
| @@ -530,8 +540,7 @@ mod when_main_branch_is_uptodate { | |||
| 530 | ])?; | 540 | ])?; |
| 531 | c.succeeds_with(0, true, Some(0))?; | 541 | c.succeeds_with(0, true, Some(0))?; |
| 532 | p.expect(format!( | 542 | p.expect(format!( |
| 533 | "checked out proposal as 'pr/{}(", | 543 | "checked out proposal as 'pr/{FEATURE_BRANCH_NAME_4}(", |
| 534 | FEATURE_BRANCH_NAME_4, | ||
| 535 | ))?; | 544 | ))?; |
| 536 | p.expect_end_eventually_with(")' branch\r\n")?; | 545 | p.expect_end_eventually_with(")' branch\r\n")?; |
| 537 | 546 | ||
| @@ -633,11 +642,14 @@ mod when_main_branch_is_uptodate { | |||
| 633 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 642 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 634 | p.expect("fetching updates...\r\n")?; | 643 | p.expect("fetching updates...\r\n")?; |
| 635 | p.expect_eventually("\r\n")?; // some updates listed here | 644 | p.expect_eventually("\r\n")?; // some updates listed here |
| 636 | let mut c = p.expect_choice("all proposals", vec![ | 645 | let mut c = p.expect_choice( |
| 637 | format!("\"{PROPOSAL_TITLE_3}\""), | 646 | "all proposals", |
| 638 | format!("\"{PROPOSAL_TITLE_2}\""), | 647 | vec![ |
| 639 | format!("\"{PROPOSAL_TITLE_1}\""), | 648 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 640 | ])?; | 649 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 650 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 651 | ], | ||
| 652 | )?; | ||
| 641 | c.succeeds_with(2, true, None)?; | 653 | c.succeeds_with(2, true, None)?; |
| 642 | let mut c = p.expect_choice("", vec![ | 654 | let mut c = p.expect_choice("", vec![ |
| 643 | format!( | 655 | format!( |
| @@ -655,18 +667,24 @@ mod when_main_branch_is_uptodate { | |||
| 655 | p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 667 | p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 656 | p.expect("fetching updates...\r\n")?; | 668 | p.expect("fetching updates...\r\n")?; |
| 657 | p.expect_eventually("\r\n")?; // some updates listed here | 669 | p.expect_eventually("\r\n")?; // some updates listed here |
| 658 | let mut c = p.expect_choice("all proposals", vec![ | 670 | let mut c = p.expect_choice( |
| 659 | format!("\"{PROPOSAL_TITLE_3}\""), | 671 | "all proposals", |
| 660 | format!("\"{PROPOSAL_TITLE_2}\""), | 672 | vec![ |
| 661 | format!("\"{PROPOSAL_TITLE_1}\""), | 673 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 662 | ])?; | 674 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 675 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 676 | ], | ||
| 677 | )?; | ||
| 663 | c.succeeds_with(2, true, None)?; | 678 | c.succeeds_with(2, true, None)?; |
| 664 | let mut c = p.expect_choice("", vec![ | 679 | let mut c = p.expect_choice( |
| 665 | format!("checkout proposal branch (2 ahead 0 behind 'main')"), | 680 | "", |
| 666 | format!("apply to current branch with `git am`"), | 681 | vec![ |
| 667 | format!("download to ./patches"), | 682 | format!("checkout proposal branch (2 ahead 0 behind 'main')"), |
| 668 | format!("back"), | 683 | format!("apply to current branch with `git am`"), |
| 669 | ])?; | 684 | format!("download to ./patches"), |
| 685 | format!("back"), | ||
| 686 | ], | ||
| 687 | )?; | ||
| 670 | c.succeeds_with(0, true, Some(0))?; | 688 | c.succeeds_with(0, true, Some(0))?; |
| 671 | p.expect_end_eventually_and_print()?; | 689 | p.expect_end_eventually_and_print()?; |
| 672 | 690 | ||
| @@ -720,11 +738,14 @@ mod when_main_branch_is_uptodate { | |||
| 720 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 738 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 721 | p.expect("fetching updates...\r\n")?; | 739 | p.expect("fetching updates...\r\n")?; |
| 722 | p.expect_eventually("\r\n")?; // some updates listed here | 740 | p.expect_eventually("\r\n")?; // some updates listed here |
| 723 | let mut c = p.expect_choice("all proposals", vec![ | 741 | let mut c = p.expect_choice( |
| 724 | format!("\"{PROPOSAL_TITLE_3}\""), | 742 | "all proposals", |
| 725 | format!("\"{PROPOSAL_TITLE_2}\""), | 743 | vec![ |
| 726 | format!("\"{PROPOSAL_TITLE_1}\""), | 744 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 727 | ])?; | 745 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 746 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 747 | ], | ||
| 748 | )?; | ||
| 728 | c.succeeds_with(2, true, None)?; | 749 | c.succeeds_with(2, true, None)?; |
| 729 | let mut c = p.expect_choice("", vec![ | 750 | let mut c = p.expect_choice("", vec![ |
| 730 | format!( | 751 | format!( |
| @@ -742,22 +763,27 @@ mod when_main_branch_is_uptodate { | |||
| 742 | p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 763 | p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 743 | p.expect("fetching updates...\r\n")?; | 764 | p.expect("fetching updates...\r\n")?; |
| 744 | p.expect_eventually("\r\n")?; // some updates listed here | 765 | p.expect_eventually("\r\n")?; // some updates listed here |
| 745 | let mut c = p.expect_choice("all proposals", vec![ | 766 | let mut c = p.expect_choice( |
| 746 | format!("\"{PROPOSAL_TITLE_3}\""), | 767 | "all proposals", |
| 747 | format!("\"{PROPOSAL_TITLE_2}\""), | 768 | vec![ |
| 748 | format!("\"{PROPOSAL_TITLE_1}\""), | 769 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 749 | ])?; | 770 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 771 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 772 | ], | ||
| 773 | )?; | ||
| 750 | c.succeeds_with(2, true, None)?; | 774 | c.succeeds_with(2, true, None)?; |
| 751 | let mut c = p.expect_choice("", vec![ | 775 | let mut c = p.expect_choice( |
| 752 | format!("checkout proposal branch (2 ahead 0 behind 'main')"), | 776 | "", |
| 753 | format!("apply to current branch with `git am`"), | 777 | vec![ |
| 754 | format!("download to ./patches"), | 778 | format!("checkout proposal branch (2 ahead 0 behind 'main')"), |
| 755 | format!("back"), | 779 | format!("apply to current branch with `git am`"), |
| 756 | ])?; | 780 | format!("download to ./patches"), |
| 781 | format!("back"), | ||
| 782 | ], | ||
| 783 | )?; | ||
| 757 | c.succeeds_with(0, true, Some(0))?; | 784 | c.succeeds_with(0, true, Some(0))?; |
| 758 | p.expect(format!( | 785 | p.expect(format!( |
| 759 | "checked out proposal as 'pr/{}(", | 786 | "checked out proposal as 'pr/{FEATURE_BRANCH_NAME_1}(", |
| 760 | FEATURE_BRANCH_NAME_1, | ||
| 761 | ))?; | 787 | ))?; |
| 762 | p.expect_end_eventually_with(")' branch\r\n")?; | 788 | p.expect_end_eventually_with(")' branch\r\n")?; |
| 763 | 789 | ||
| @@ -827,18 +853,24 @@ mod when_main_branch_is_uptodate { | |||
| 827 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 853 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 828 | p.expect("fetching updates...\r\n")?; | 854 | p.expect("fetching updates...\r\n")?; |
| 829 | p.expect_eventually("\r\n")?; // some updates listed here | 855 | p.expect_eventually("\r\n")?; // some updates listed here |
| 830 | let mut c = p.expect_choice("all proposals", vec![ | 856 | let mut c = p.expect_choice( |
| 831 | format!("\"{PROPOSAL_TITLE_3}\""), | 857 | "all proposals", |
| 832 | format!("\"{PROPOSAL_TITLE_2}\""), | 858 | vec![ |
| 833 | format!("\"{PROPOSAL_TITLE_1}\""), | 859 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 834 | ])?; | 860 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 861 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 862 | ], | ||
| 863 | )?; | ||
| 835 | c.succeeds_with(2, true, None)?; | 864 | c.succeeds_with(2, true, None)?; |
| 836 | let mut c = p.expect_choice("", vec![ | 865 | let mut c = p.expect_choice( |
| 837 | format!("checkout proposal branch and apply 1 appendments"), | 866 | "", |
| 838 | format!("apply to current branch with `git am`"), | 867 | vec![ |
| 839 | format!("download to ./patches"), | 868 | format!("checkout proposal branch and apply 1 appendments"), |
| 840 | format!("back"), | 869 | format!("apply to current branch with `git am`"), |
| 841 | ])?; | 870 | format!("download to ./patches"), |
| 871 | format!("back"), | ||
| 872 | ], | ||
| 873 | )?; | ||
| 842 | c.succeeds_with(0, true, Some(0))?; | 874 | c.succeeds_with(0, true, Some(0))?; |
| 843 | p.expect("checked out proposal branch and applied 1 appendments (2 ahead 0 behind 'main')\r\n")?; | 875 | p.expect("checked out proposal branch and applied 1 appendments (2 ahead 0 behind 'main')\r\n")?; |
| 844 | p.expect_end()?; | 876 | p.expect_end()?; |
| @@ -897,18 +929,24 @@ mod when_main_branch_is_uptodate { | |||
| 897 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 929 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 898 | p.expect("fetching updates...\r\n")?; | 930 | p.expect("fetching updates...\r\n")?; |
| 899 | p.expect_eventually("\r\n")?; // some updates listed here | 931 | p.expect_eventually("\r\n")?; // some updates listed here |
| 900 | let mut c = p.expect_choice("all proposals", vec![ | 932 | let mut c = p.expect_choice( |
| 901 | format!("\"{PROPOSAL_TITLE_3}\""), | 933 | "all proposals", |
| 902 | format!("\"{PROPOSAL_TITLE_2}\""), | 934 | vec![ |
| 903 | format!("\"{PROPOSAL_TITLE_1}\""), | 935 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 904 | ])?; | 936 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 937 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 938 | ], | ||
| 939 | )?; | ||
| 905 | c.succeeds_with(2, true, None)?; | 940 | c.succeeds_with(2, true, None)?; |
| 906 | let mut c = p.expect_choice("", vec![ | 941 | let mut c = p.expect_choice( |
| 907 | format!("checkout proposal branch and apply 1 appendments"), | 942 | "", |
| 908 | format!("apply to current branch with `git am`"), | 943 | vec![ |
| 909 | format!("download to ./patches"), | 944 | format!("checkout proposal branch and apply 1 appendments"), |
| 910 | format!("back"), | 945 | format!("apply to current branch with `git am`"), |
| 911 | ])?; | 946 | format!("download to ./patches"), |
| 947 | format!("back"), | ||
| 948 | ], | ||
| 949 | )?; | ||
| 912 | c.succeeds_with(0, true, Some(0))?; | 950 | c.succeeds_with(0, true, Some(0))?; |
| 913 | p.expect("checked out proposal branch and applied 1 appendments (2 ahead 0 behind 'main')\r\n")?; | 951 | p.expect("checked out proposal branch and applied 1 appendments (2 ahead 0 behind 'main')\r\n")?; |
| 914 | p.expect_end()?; | 952 | p.expect_end()?; |
| @@ -1004,21 +1042,29 @@ mod when_main_branch_is_uptodate { | |||
| 1004 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1042 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1005 | p.expect("fetching updates...\r\n")?; | 1043 | p.expect("fetching updates...\r\n")?; |
| 1006 | p.expect_eventually("\r\n")?; // some updates listed here | 1044 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1007 | let mut c = p.expect_choice("all proposals", vec![ | 1045 | let mut c = p.expect_choice( |
| 1008 | format!("\"{PROPOSAL_TITLE_3}\""), | 1046 | "all proposals", |
| 1009 | format!("\"{PROPOSAL_TITLE_2}\""), | 1047 | vec![ |
| 1010 | format!("\"{PROPOSAL_TITLE_1}\""), | 1048 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1011 | ])?; | 1049 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1050 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1051 | ], | ||
| 1052 | )?; | ||
| 1012 | c.succeeds_with(2, true, None)?; | 1053 | c.succeeds_with(2, true, None)?; |
| 1013 | p.expect_eventually("--force`\r\n")?; | 1054 | p.expect_eventually("--force`\r\n")?; |
| 1014 | 1055 | ||
| 1015 | let mut c = p.expect_choice("", vec![ | 1056 | let mut c = p.expect_choice( |
| 1016 | format!("checkout local branch with unpublished changes"), | 1057 | "", |
| 1017 | format!("discard unpublished changes and checkout new revision"), | 1058 | vec![ |
| 1018 | format!("apply to current branch with `git am`"), | 1059 | format!("checkout local branch with unpublished changes"), |
| 1019 | format!("download to ./patches"), | 1060 | format!( |
| 1020 | "back".to_string(), | 1061 | "discard unpublished changes and checkout new revision" |
| 1021 | ])?; | 1062 | ), |
| 1063 | format!("apply to current branch with `git am`"), | ||
| 1064 | format!("download to ./patches"), | ||
| 1065 | "back".to_string(), | ||
| 1066 | ], | ||
| 1067 | )?; | ||
| 1022 | c.succeeds_with(1, true, Some(0))?; | 1068 | c.succeeds_with(1, true, Some(0))?; |
| 1023 | 1069 | ||
| 1024 | p.expect_end_eventually_and_print()?; | 1070 | p.expect_end_eventually_and_print()?; |
| @@ -1075,11 +1121,14 @@ mod when_main_branch_is_uptodate { | |||
| 1075 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1121 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1076 | p.expect("fetching updates...\r\n")?; | 1122 | p.expect("fetching updates...\r\n")?; |
| 1077 | p.expect_eventually("\r\n")?; // some updates listed here | 1123 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1078 | let mut c = p.expect_choice("all proposals", vec![ | 1124 | let mut c = p.expect_choice( |
| 1079 | format!("\"{PROPOSAL_TITLE_3}\""), | 1125 | "all proposals", |
| 1080 | format!("\"{PROPOSAL_TITLE_2}\""), | 1126 | vec![ |
| 1081 | format!("\"{PROPOSAL_TITLE_1}\""), | 1127 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1082 | ])?; | 1128 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1129 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1130 | ], | ||
| 1131 | )?; | ||
| 1083 | c.succeeds_with(2, true, None)?; | 1132 | c.succeeds_with(2, true, None)?; |
| 1084 | p.expect("you have an amended/rebase version the proposal that is unpublished\r\n")?; | 1133 | p.expect("you have an amended/rebase version the proposal that is unpublished\r\n")?; |
| 1085 | p.expect("you have previously applied the latest version of the proposal (2 ahead 0 behind 'main') but your local proposal branch has amended or rebased it (2 ahead 0 behind 'main')\r\n")?; | 1134 | p.expect("you have previously applied the latest version of the proposal (2 ahead 0 behind 'main') but your local proposal branch has amended or rebased it (2 ahead 0 behind 'main')\r\n")?; |
| @@ -1088,13 +1137,18 @@ mod when_main_branch_is_uptodate { | |||
| 1088 | p.expect(" 2) run `ngit list` and checkout the latest published version of this proposal\r\n")?; | 1137 | p.expect(" 2) run `ngit list` and checkout the latest published version of this proposal\r\n")?; |
| 1089 | p.expect("if you are confident in your changes consider running `ngit push --force`\r\n")?; | 1138 | p.expect("if you are confident in your changes consider running `ngit push --force`\r\n")?; |
| 1090 | 1139 | ||
| 1091 | let mut c = p.expect_choice("", vec![ | 1140 | let mut c = p.expect_choice( |
| 1092 | format!("checkout local branch with unpublished changes"), | 1141 | "", |
| 1093 | format!("discard unpublished changes and checkout new revision"), | 1142 | vec![ |
| 1094 | format!("apply to current branch with `git am`"), | 1143 | format!("checkout local branch with unpublished changes"), |
| 1095 | format!("download to ./patches"), | 1144 | format!( |
| 1096 | "back".to_string(), | 1145 | "discard unpublished changes and checkout new revision" |
| 1097 | ])?; | 1146 | ), |
| 1147 | format!("apply to current branch with `git am`"), | ||
| 1148 | format!("download to ./patches"), | ||
| 1149 | "back".to_string(), | ||
| 1150 | ], | ||
| 1151 | )?; | ||
| 1098 | c.succeeds_with(1, true, Some(1))?; | 1152 | c.succeeds_with(1, true, Some(1))?; |
| 1099 | p.expect_end_with("checked out latest version of proposal (2 ahead 0 behind 'main'), replacing unpublished version (2 ahead 0 behind 'main')\r\n")?; | 1153 | p.expect_end_with("checked out latest version of proposal (2 ahead 0 behind 'main'), replacing unpublished version (2 ahead 0 behind 'main')\r\n")?; |
| 1100 | 1154 | ||
| @@ -1172,20 +1226,26 @@ mod when_main_branch_is_uptodate { | |||
| 1172 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1226 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1173 | p.expect("fetching updates...\r\n")?; | 1227 | p.expect("fetching updates...\r\n")?; |
| 1174 | p.expect_eventually("\r\n")?; // some updates listed here | 1228 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1175 | let mut c = p.expect_choice("all proposals", vec![ | 1229 | let mut c = p.expect_choice( |
| 1176 | format!("\"{PROPOSAL_TITLE_3}\""), | 1230 | "all proposals", |
| 1177 | format!("\"{PROPOSAL_TITLE_2}\""), | 1231 | vec![ |
| 1178 | format!("\"{PROPOSAL_TITLE_1}\""), | 1232 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1179 | ])?; | 1233 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1234 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1235 | ], | ||
| 1236 | )?; | ||
| 1180 | c.succeeds_with(2, true, None)?; | 1237 | c.succeeds_with(2, true, None)?; |
| 1181 | p.expect( | 1238 | p.expect( |
| 1182 | "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", | 1239 | "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", |
| 1183 | )?; | 1240 | )?; |
| 1184 | 1241 | ||
| 1185 | let mut c = p.expect_choice("", vec![ | 1242 | let mut c = p.expect_choice( |
| 1186 | format!("checkout proposal branch with 1 unpublished commits"), | 1243 | "", |
| 1187 | format!("back"), | 1244 | vec![ |
| 1188 | ])?; | 1245 | format!("checkout proposal branch with 1 unpublished commits"), |
| 1246 | format!("back"), | ||
| 1247 | ], | ||
| 1248 | )?; | ||
| 1189 | c.succeeds_with(0, true, Some(0))?; | 1249 | c.succeeds_with(0, true, Some(0))?; |
| 1190 | p.expect("checked out proposal branch with 1 unpublished commits (3 ahead 0 behind 'main')\r\n")?; | 1250 | p.expect("checked out proposal branch with 1 unpublished commits (3 ahead 0 behind 'main')\r\n")?; |
| 1191 | p.expect_end()?; | 1251 | p.expect_end()?; |
| @@ -1248,20 +1308,26 @@ mod when_main_branch_is_uptodate { | |||
| 1248 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1308 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1249 | p.expect("fetching updates...\r\n")?; | 1309 | p.expect("fetching updates...\r\n")?; |
| 1250 | p.expect_eventually("\r\n")?; // some updates listed here | 1310 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1251 | let mut c = p.expect_choice("all proposals", vec![ | 1311 | let mut c = p.expect_choice( |
| 1252 | format!("\"{PROPOSAL_TITLE_3}\""), | 1312 | "all proposals", |
| 1253 | format!("\"{PROPOSAL_TITLE_2}\""), | 1313 | vec![ |
| 1254 | format!("\"{PROPOSAL_TITLE_1}\""), | 1314 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1255 | ])?; | 1315 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1316 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1317 | ], | ||
| 1318 | )?; | ||
| 1256 | c.succeeds_with(2, true, None)?; | 1319 | c.succeeds_with(2, true, None)?; |
| 1257 | p.expect( | 1320 | p.expect( |
| 1258 | "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", | 1321 | "local proposal branch exists with 1 unpublished commits on top of the most up-to-date version of the proposal (3 ahead 0 behind 'main')\r\n", |
| 1259 | )?; | 1322 | )?; |
| 1260 | 1323 | ||
| 1261 | let mut c = p.expect_choice("", vec![ | 1324 | let mut c = p.expect_choice( |
| 1262 | format!("checkout proposal branch with 1 unpublished commits"), | 1325 | "", |
| 1263 | format!("back"), | 1326 | vec![ |
| 1264 | ])?; | 1327 | format!("checkout proposal branch with 1 unpublished commits"), |
| 1328 | format!("back"), | ||
| 1329 | ], | ||
| 1330 | )?; | ||
| 1265 | c.succeeds_with(0, true, Some(0))?; | 1331 | c.succeeds_with(0, true, Some(0))?; |
| 1266 | p.expect("checked out proposal branch with 1 unpublished commits (3 ahead 0 behind 'main')\r\n")?; | 1332 | p.expect("checked out proposal branch with 1 unpublished commits (3 ahead 0 behind 'main')\r\n")?; |
| 1267 | p.expect_end()?; | 1333 | p.expect_end()?; |
| @@ -1344,20 +1410,26 @@ mod when_main_branch_is_uptodate { | |||
| 1344 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1410 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1345 | p.expect("fetching updates...\r\n")?; | 1411 | p.expect("fetching updates...\r\n")?; |
| 1346 | p.expect_eventually("\r\n")?; // some updates listed here | 1412 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1347 | let mut c = p.expect_choice("all proposals", vec![ | 1413 | let mut c = p.expect_choice( |
| 1348 | format!("\"{PROPOSAL_TITLE_3}\""), | 1414 | "all proposals", |
| 1349 | format!("\"{PROPOSAL_TITLE_2}\""), | 1415 | vec![ |
| 1350 | format!("\"{PROPOSAL_TITLE_1}\""), | 1416 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1351 | ])?; | 1417 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1418 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1419 | ], | ||
| 1420 | )?; | ||
| 1352 | c.succeeds_with(2, true, None)?; | 1421 | c.succeeds_with(2, true, None)?; |
| 1353 | p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; | 1422 | p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; |
| 1354 | let mut c = p.expect_choice("", vec![ | 1423 | let mut c = p.expect_choice( |
| 1355 | format!("checkout and overwrite existing proposal branch"), | 1424 | "", |
| 1356 | format!("checkout existing outdated proposal branch"), | 1425 | vec![ |
| 1357 | format!("apply to current branch with `git am`"), | 1426 | format!("checkout and overwrite existing proposal branch"), |
| 1358 | format!("download to ./patches"), | 1427 | format!("checkout existing outdated proposal branch"), |
| 1359 | format!("back"), | 1428 | format!("apply to current branch with `git am`"), |
| 1360 | ])?; | 1429 | format!("download to ./patches"), |
| 1430 | format!("back"), | ||
| 1431 | ], | ||
| 1432 | )?; | ||
| 1361 | c.succeeds_with(0, true, Some(0))?; | 1433 | c.succeeds_with(0, true, Some(0))?; |
| 1362 | p.expect("checked out new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; | 1434 | p.expect("checked out new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; |
| 1363 | p.expect_end()?; | 1435 | p.expect_end()?; |
| @@ -1411,20 +1483,26 @@ mod when_main_branch_is_uptodate { | |||
| 1411 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 1483 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 1412 | p.expect("fetching updates...\r\n")?; | 1484 | p.expect("fetching updates...\r\n")?; |
| 1413 | p.expect_eventually("\r\n")?; // some updates listed here | 1485 | p.expect_eventually("\r\n")?; // some updates listed here |
| 1414 | let mut c = p.expect_choice("all proposals", vec![ | 1486 | let mut c = p.expect_choice( |
| 1415 | format!("\"{PROPOSAL_TITLE_3}\""), | 1487 | "all proposals", |
| 1416 | format!("\"{PROPOSAL_TITLE_2}\""), | 1488 | vec![ |
| 1417 | format!("\"{PROPOSAL_TITLE_1}\""), | 1489 | format!("\"{PROPOSAL_TITLE_3}\""), |
| 1418 | ])?; | 1490 | format!("\"{PROPOSAL_TITLE_2}\""), |
| 1491 | format!("\"{PROPOSAL_TITLE_1}\""), | ||
| 1492 | ], | ||
| 1493 | )?; | ||
| 1419 | c.succeeds_with(2, true, None)?; | 1494 | c.succeeds_with(2, true, None)?; |
| 1420 | p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; | 1495 | p.expect("updated proposal available (2 ahead 0 behind 'main'). existing version is 2 ahead 1 behind 'main'\r\n")?; |
| 1421 | let mut c = p.expect_choice("", vec![ | 1496 | let mut c = p.expect_choice( |
| 1422 | format!("checkout and overwrite existing proposal branch"), | 1497 | "", |
| 1423 | format!("checkout existing outdated proposal branch"), | 1498 | vec![ |
| 1424 | format!("apply to current branch with `git am`"), | 1499 | format!("checkout and overwrite existing proposal branch"), |
| 1425 | format!("download to ./patches"), | 1500 | format!("checkout existing outdated proposal branch"), |
| 1426 | format!("back"), | 1501 | format!("apply to current branch with `git am`"), |
| 1427 | ])?; | 1502 | format!("download to ./patches"), |
| 1503 | format!("back"), | ||
| 1504 | ], | ||
| 1505 | )?; | ||
| 1428 | c.succeeds_with(0, true, Some(0))?; | 1506 | c.succeeds_with(0, true, Some(0))?; |
| 1429 | p.expect("checked out new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; | 1507 | p.expect("checked out new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; |
| 1430 | p.expect_end()?; | 1508 | p.expect_end()?; |
diff --git a/tests/ngit_login.rs b/tests/ngit_login.rs index b1e2676..9e708dc 100644 --- a/tests/ngit_login.rs +++ b/tests/ngit_login.rs | |||
| @@ -6,21 +6,27 @@ use test_utils::*; | |||
| 6 | static EXPECTED_NSEC_PROMPT: &str = "nsec"; | 6 | static EXPECTED_NSEC_PROMPT: &str = "nsec"; |
| 7 | 7 | ||
| 8 | fn show_first_time_login_choices(p: &mut CliTester) -> Result<CliTesterChoicePrompt> { | 8 | fn show_first_time_login_choices(p: &mut CliTester) -> Result<CliTesterChoicePrompt> { |
| 9 | p.expect_choice("login to nostr", vec![ | 9 | p.expect_choice( |
| 10 | "secret key (nsec / ncryptsec)".to_string(), | 10 | "login to nostr", |
| 11 | "nostr connect (remote signer)".to_string(), | 11 | vec![ |
| 12 | "create account".to_string(), | 12 | "secret key (nsec / ncryptsec)".to_string(), |
| 13 | "help".to_string(), | 13 | "nostr connect (remote signer)".to_string(), |
| 14 | ]) | 14 | "create account".to_string(), |
| 15 | "help".to_string(), | ||
| 16 | ], | ||
| 17 | ) | ||
| 15 | } | 18 | } |
| 16 | 19 | ||
| 17 | fn first_time_login_choices_succeeds_with_nsec(p: &mut CliTester, nsec: &str) -> Result<()> { | 20 | fn first_time_login_choices_succeeds_with_nsec(p: &mut CliTester, nsec: &str) -> Result<()> { |
| 18 | p.expect_choice("login to nostr", vec![ | 21 | p.expect_choice( |
| 19 | "secret key (nsec / ncryptsec)".to_string(), | 22 | "login to nostr", |
| 20 | "nostr connect (remote signer)".to_string(), | 23 | vec![ |
| 21 | "create account".to_string(), | 24 | "secret key (nsec / ncryptsec)".to_string(), |
| 22 | "help".to_string(), | 25 | "nostr connect (remote signer)".to_string(), |
| 23 | ])? | 26 | "create account".to_string(), |
| 27 | "help".to_string(), | ||
| 28 | ], | ||
| 29 | )? | ||
| 24 | .succeeds_with(0, false, Some(0))?; | 30 | .succeeds_with(0, false, Some(0))?; |
| 25 | 31 | ||
| 26 | p.expect_input(EXPECTED_NSEC_PROMPT)? | 32 | p.expect_input(EXPECTED_NSEC_PROMPT)? |
| @@ -110,9 +116,7 @@ mod with_relays { | |||
| 110 | 116 | ||
| 111 | p.expect("failed to extract account name from account metadata...\r\n")?; | 117 | p.expect("failed to extract account name from account metadata...\r\n")?; |
| 112 | 118 | ||
| 113 | p.expect_end_with( | 119 | p.expect_end_with(format!("logged in as {TEST_KEY_1_NPUB}\r\n").as_str())?; |
| 114 | format!("logged in as {}\r\n", TEST_KEY_1_NPUB).as_str(), | ||
| 115 | )?; | ||
| 116 | for p in [51, 52] { | 120 | for p in [51, 52] { |
| 117 | shutdown_relay(8000 + p)?; | 121 | shutdown_relay(8000 + p)?; |
| 118 | } | 122 | } |
| @@ -131,17 +135,25 @@ mod with_relays { | |||
| 131 | async fn when_latest_metadata_and_relay_list_on_all_relays() -> Result<()> { | 135 | async fn when_latest_metadata_and_relay_list_on_all_relays() -> Result<()> { |
| 132 | run_test_displays_correct_name( | 136 | run_test_displays_correct_name( |
| 133 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 137 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 134 | relay.respond_events(client_id, &subscription_id, &vec![ | 138 | relay.respond_events( |
| 135 | generate_test_key_1_metadata_event("fred"), | 139 | client_id, |
| 136 | generate_test_key_1_relay_list_event_same_as_fallback(), | 140 | &subscription_id, |
| 137 | ])?; | 141 | &vec![ |
| 142 | generate_test_key_1_metadata_event("fred"), | ||
| 143 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 144 | ], | ||
| 145 | )?; | ||
| 138 | Ok(()) | 146 | Ok(()) |
| 139 | }), | 147 | }), |
| 140 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 148 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 141 | relay.respond_events(client_id, &subscription_id, &vec![ | 149 | relay.respond_events( |
| 142 | generate_test_key_1_metadata_event("fred"), | 150 | client_id, |
| 143 | generate_test_key_1_relay_list_event_same_as_fallback(), | 151 | &subscription_id, |
| 144 | ])?; | 152 | &vec![ |
| 153 | generate_test_key_1_metadata_event("fred"), | ||
| 154 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 155 | ], | ||
| 156 | )?; | ||
| 145 | Ok(()) | 157 | Ok(()) |
| 146 | }), | 158 | }), |
| 147 | ) | 159 | ) |
| @@ -156,14 +168,18 @@ mod with_relays { | |||
| 156 | async fn when_metadata_contains_only_display_name() -> Result<()> { | 168 | async fn when_metadata_contains_only_display_name() -> Result<()> { |
| 157 | run_test_displays_correct_name( | 169 | run_test_displays_correct_name( |
| 158 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 170 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 159 | relay.respond_events(client_id, &subscription_id, &vec![ | 171 | relay.respond_events( |
| 160 | nostr::event::EventBuilder::metadata( | 172 | client_id, |
| 161 | &nostr::Metadata::new().display_name("fred"), | 173 | &subscription_id, |
| 162 | ) | 174 | &vec![ |
| 163 | .sign_with_keys(&TEST_KEY_1_KEYS) | 175 | nostr::event::EventBuilder::metadata( |
| 164 | .unwrap(), | 176 | &nostr::Metadata::new().display_name("fred"), |
| 165 | generate_test_key_1_relay_list_event_same_as_fallback(), | 177 | ) |
| 166 | ])?; | 178 | .sign_with_keys(&TEST_KEY_1_KEYS) |
| 179 | .unwrap(), | ||
| 180 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 181 | ], | ||
| 182 | )?; | ||
| 167 | Ok(()) | 183 | Ok(()) |
| 168 | }), | 184 | }), |
| 169 | None, | 185 | None, |
| @@ -189,14 +205,19 @@ mod with_relays { | |||
| 189 | 205 | ||
| 190 | run_test_displays_correct_name( | 206 | run_test_displays_correct_name( |
| 191 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 207 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 192 | relay.respond_events(client_id, &subscription_id, &vec![ | 208 | relay.respond_events( |
| 193 | nostr::event::EventBuilder::metadata( | 209 | client_id, |
| 194 | &nostr::Metadata::new().custom_field("displayName", "fred"), | 210 | &subscription_id, |
| 195 | ) | 211 | &vec![ |
| 196 | .sign_with_keys(&TEST_KEY_1_KEYS) | 212 | nostr::event::EventBuilder::metadata( |
| 197 | .unwrap(), | 213 | &nostr::Metadata::new() |
| 198 | generate_test_key_1_relay_list_event_same_as_fallback(), | 214 | .custom_field("displayName", "fred"), |
| 199 | ])?; | 215 | ) |
| 216 | .sign_with_keys(&TEST_KEY_1_KEYS) | ||
| 217 | .unwrap(), | ||
| 218 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 219 | ], | ||
| 220 | )?; | ||
| 200 | Ok(()) | 221 | Ok(()) |
| 201 | }), | 222 | }), |
| 202 | None, | 223 | None, |
| @@ -210,14 +231,18 @@ mod with_relays { | |||
| 210 | -> Result<()> { | 231 | -> Result<()> { |
| 211 | run_test_displays_fallback_to_npub( | 232 | run_test_displays_fallback_to_npub( |
| 212 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 233 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 213 | relay.respond_events(client_id, &subscription_id, &vec![ | 234 | relay.respond_events( |
| 214 | nostr::event::EventBuilder::metadata( | 235 | client_id, |
| 215 | &nostr::Metadata::new().about("other info in metadata"), | 236 | &subscription_id, |
| 216 | ) | 237 | &vec![ |
| 217 | .sign_with_keys(&TEST_KEY_1_KEYS) | 238 | nostr::event::EventBuilder::metadata( |
| 218 | .unwrap(), | 239 | &nostr::Metadata::new().about("other info in metadata"), |
| 219 | generate_test_key_1_relay_list_event_same_as_fallback(), | 240 | ) |
| 220 | ])?; | 241 | .sign_with_keys(&TEST_KEY_1_KEYS) |
| 242 | .unwrap(), | ||
| 243 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 244 | ], | ||
| 245 | )?; | ||
| 221 | Ok(()) | 246 | Ok(()) |
| 222 | }), | 247 | }), |
| 223 | None, | 248 | None, |
| @@ -232,10 +257,14 @@ mod with_relays { | |||
| 232 | -> Result<()> { | 257 | -> Result<()> { |
| 233 | run_test_displays_correct_name( | 258 | run_test_displays_correct_name( |
| 234 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 259 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 235 | relay.respond_events(client_id, &subscription_id, &vec![ | 260 | relay.respond_events( |
| 236 | generate_test_key_1_metadata_event("fred"), | 261 | client_id, |
| 237 | generate_test_key_1_relay_list_event_same_as_fallback(), | 262 | &subscription_id, |
| 238 | ])?; | 263 | &vec![ |
| 264 | generate_test_key_1_metadata_event("fred"), | ||
| 265 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 266 | ], | ||
| 267 | )?; | ||
| 239 | Ok(()) | 268 | Ok(()) |
| 240 | }), | 269 | }), |
| 241 | None, | 270 | None, |
| @@ -249,15 +278,19 @@ mod with_relays { | |||
| 249 | { | 278 | { |
| 250 | run_test_displays_correct_name( | 279 | run_test_displays_correct_name( |
| 251 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 280 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 252 | relay.respond_events(client_id, &subscription_id, &vec![ | 281 | relay.respond_events( |
| 253 | generate_test_key_1_metadata_event("fred"), | 282 | client_id, |
| 254 | ])?; | 283 | &subscription_id, |
| 284 | &vec![generate_test_key_1_metadata_event("fred")], | ||
| 285 | )?; | ||
| 255 | Ok(()) | 286 | Ok(()) |
| 256 | }), | 287 | }), |
| 257 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 288 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 258 | relay.respond_events(client_id, &subscription_id, &vec![ | 289 | relay.respond_events( |
| 259 | generate_test_key_1_relay_list_event_same_as_fallback(), | 290 | client_id, |
| 260 | ])?; | 291 | &subscription_id, |
| 292 | &vec![generate_test_key_1_relay_list_event_same_as_fallback()], | ||
| 293 | )?; | ||
| 261 | Ok(()) | 294 | Ok(()) |
| 262 | }), | 295 | }), |
| 263 | ) | 296 | ) |
| @@ -269,16 +302,22 @@ mod with_relays { | |||
| 269 | async fn when_some_relays_return_old_metadata_event() -> Result<()> { | 302 | async fn when_some_relays_return_old_metadata_event() -> Result<()> { |
| 270 | run_test_displays_correct_name( | 303 | run_test_displays_correct_name( |
| 271 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 304 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 272 | relay.respond_events(client_id, &subscription_id, &vec![ | 305 | relay.respond_events( |
| 273 | generate_test_key_1_metadata_event("fred"), | 306 | client_id, |
| 274 | generate_test_key_1_relay_list_event_same_as_fallback(), | 307 | &subscription_id, |
| 275 | ])?; | 308 | &vec![ |
| 309 | generate_test_key_1_metadata_event("fred"), | ||
| 310 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 311 | ], | ||
| 312 | )?; | ||
| 276 | Ok(()) | 313 | Ok(()) |
| 277 | }), | 314 | }), |
| 278 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 315 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 279 | relay.respond_events(client_id, &subscription_id, &vec![ | 316 | relay.respond_events( |
| 280 | generate_test_key_1_metadata_event_old("fred old"), | 317 | client_id, |
| 281 | ])?; | 318 | &subscription_id, |
| 319 | &vec![generate_test_key_1_metadata_event_old("fred old")], | ||
| 320 | )?; | ||
| 282 | Ok(()) | 321 | Ok(()) |
| 283 | }), | 322 | }), |
| 284 | ) | 323 | ) |
| @@ -290,16 +329,22 @@ mod with_relays { | |||
| 290 | async fn when_some_relays_return_other_users_metadata() -> Result<()> { | 329 | async fn when_some_relays_return_other_users_metadata() -> Result<()> { |
| 291 | run_test_displays_correct_name( | 330 | run_test_displays_correct_name( |
| 292 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 331 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 293 | relay.respond_events(client_id, &subscription_id, &vec![ | 332 | relay.respond_events( |
| 294 | generate_test_key_2_metadata_event("carole"), | 333 | client_id, |
| 295 | ])?; | 334 | &subscription_id, |
| 335 | &vec![generate_test_key_2_metadata_event("carole")], | ||
| 336 | )?; | ||
| 296 | Ok(()) | 337 | Ok(()) |
| 297 | }), | 338 | }), |
| 298 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 339 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 299 | relay.respond_events(client_id, &subscription_id, &vec![ | 340 | relay.respond_events( |
| 300 | generate_test_key_1_metadata_event_old("fred"), | 341 | client_id, |
| 301 | generate_test_key_1_relay_list_event_same_as_fallback(), | 342 | &subscription_id, |
| 302 | ])?; | 343 | &vec![ |
| 344 | generate_test_key_1_metadata_event_old("fred"), | ||
| 345 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 346 | ], | ||
| 347 | )?; | ||
| 303 | Ok(()) | 348 | Ok(()) |
| 304 | }), | 349 | }), |
| 305 | ) | 350 | ) |
| @@ -312,16 +357,22 @@ mod with_relays { | |||
| 312 | run_test_displays_correct_name( | 357 | run_test_displays_correct_name( |
| 313 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 358 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 314 | let event = generate_test_key_1_kind_event(nostr::Kind::TextNote); | 359 | let event = generate_test_key_1_kind_event(nostr::Kind::TextNote); |
| 315 | relay.respond_events(client_id, &subscription_id, &vec![ | 360 | relay.respond_events( |
| 316 | make_event_old_or_change_user(event, &TEST_KEY_1_KEYS, 0), | 361 | client_id, |
| 317 | ])?; | 362 | &subscription_id, |
| 363 | &vec![make_event_old_or_change_user(event, &TEST_KEY_1_KEYS, 0)], | ||
| 364 | )?; | ||
| 318 | Ok(()) | 365 | Ok(()) |
| 319 | }), | 366 | }), |
| 320 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 367 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 321 | relay.respond_events(client_id, &subscription_id, &vec![ | 368 | relay.respond_events( |
| 322 | generate_test_key_1_metadata_event_old("fred"), | 369 | client_id, |
| 323 | generate_test_key_1_relay_list_event_same_as_fallback(), | 370 | &subscription_id, |
| 324 | ])?; | 371 | &vec![ |
| 372 | generate_test_key_1_metadata_event_old("fred"), | ||
| 373 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 374 | ], | ||
| 375 | )?; | ||
| 325 | Ok(()) | 376 | Ok(()) |
| 326 | }), | 377 | }), |
| 327 | ) | 378 | ) |
| @@ -336,10 +387,14 @@ mod with_relays { | |||
| 336 | async fn displays_correct_name() -> Result<()> { | 387 | async fn displays_correct_name() -> Result<()> { |
| 337 | run_test_when_specifying_command_line_nsec_only_displays_correct_name( | 388 | run_test_when_specifying_command_line_nsec_only_displays_correct_name( |
| 338 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 389 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 339 | relay.respond_events(client_id, &subscription_id, &vec![ | 390 | relay.respond_events( |
| 340 | generate_test_key_1_metadata_event("fred"), | 391 | client_id, |
| 341 | generate_test_key_1_relay_list_event_same_as_fallback(), | 392 | &subscription_id, |
| 342 | ])?; | 393 | &vec![ |
| 394 | generate_test_key_1_metadata_event("fred"), | ||
| 395 | generate_test_key_1_relay_list_event_same_as_fallback(), | ||
| 396 | ], | ||
| 397 | )?; | ||
| 343 | Ok(()) | 398 | Ok(()) |
| 344 | }), | 399 | }), |
| 345 | None, | 400 | None, |
| @@ -357,12 +412,10 @@ mod with_relays { | |||
| 357 | 412 | ||
| 358 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | 413 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { |
| 359 | let test_repo = GitTestRepo::default(); | 414 | let test_repo = GitTestRepo::default(); |
| 360 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 415 | let mut p = CliTester::new_from_dir( |
| 361 | "account", | 416 | &test_repo.dir, |
| 362 | "login", | 417 | ["account", "login", "--nsec", TEST_KEY_1_NSEC], |
| 363 | "--nsec", | 418 | ); |
| 364 | TEST_KEY_1_NSEC, | ||
| 365 | ]); | ||
| 366 | 419 | ||
| 367 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 420 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 368 | 421 | ||
| @@ -434,9 +487,11 @@ mod with_relays { | |||
| 434 | async fn warm_user_and_displays_name() -> Result<()> { | 487 | async fn warm_user_and_displays_name() -> Result<()> { |
| 435 | run_test_when_no_relay_list_found_warns_user_and_uses_npub( | 488 | run_test_when_no_relay_list_found_warns_user_and_uses_npub( |
| 436 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 489 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 437 | relay.respond_events(client_id, &subscription_id, &vec![ | 490 | relay.respond_events( |
| 438 | generate_test_key_1_metadata_event("fred"), | 491 | client_id, |
| 439 | ])?; | 492 | &subscription_id, |
| 493 | &vec![generate_test_key_1_metadata_event("fred")], | ||
| 494 | )?; | ||
| 440 | Ok(()) | 495 | Ok(()) |
| 441 | }), | 496 | }), |
| 442 | None, | 497 | None, |
| @@ -527,17 +582,25 @@ mod with_relays { | |||
| 527 | async fn displays_correct_name() -> Result<()> { | 582 | async fn displays_correct_name() -> Result<()> { |
| 528 | run_test_displays_correct_name( | 583 | run_test_displays_correct_name( |
| 529 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 584 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 530 | relay.respond_events(client_id, &subscription_id, &vec![ | 585 | relay.respond_events( |
| 531 | generate_test_key_1_metadata_event_old("Fred"), | 586 | client_id, |
| 532 | generate_test_key_1_relay_list_event(), | 587 | &subscription_id, |
| 533 | ])?; | 588 | &vec![ |
| 589 | generate_test_key_1_metadata_event_old("Fred"), | ||
| 590 | generate_test_key_1_relay_list_event(), | ||
| 591 | ], | ||
| 592 | )?; | ||
| 534 | Ok(()) | 593 | Ok(()) |
| 535 | }), | 594 | }), |
| 536 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 595 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 537 | relay.respond_events(client_id, &subscription_id, &vec![ | 596 | relay.respond_events( |
| 538 | generate_test_key_1_metadata_event("fred"), | 597 | client_id, |
| 539 | generate_test_key_1_relay_list_event(), | 598 | &subscription_id, |
| 540 | ])?; | 599 | &vec![ |
| 600 | generate_test_key_1_metadata_event("fred"), | ||
| 601 | generate_test_key_1_relay_list_event(), | ||
| 602 | ], | ||
| 603 | )?; | ||
| 541 | Ok(()) | 604 | Ok(()) |
| 542 | }), | 605 | }), |
| 543 | ) | 606 | ) |
| @@ -572,7 +635,7 @@ mod with_offline_flag { | |||
| 572 | 635 | ||
| 573 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 636 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 574 | 637 | ||
| 575 | p.expect_end_with(format!("logged in as {}\r\n", TEST_KEY_1_NPUB).as_str()) | 638 | p.expect_end_with(format!("logged in as {TEST_KEY_1_NPUB}\r\n").as_str()) |
| 576 | } | 639 | } |
| 577 | 640 | ||
| 578 | #[test] | 641 | #[test] |
| @@ -587,7 +650,7 @@ mod with_offline_flag { | |||
| 587 | 650 | ||
| 588 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 651 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 589 | 652 | ||
| 590 | p.expect_end_with(format!("logged in as {}\r\n", TEST_KEY_1_NPUB).as_str()) | 653 | p.expect_end_with(format!("logged in as {TEST_KEY_1_NPUB}\r\n").as_str()) |
| 591 | } | 654 | } |
| 592 | 655 | ||
| 593 | mod when_invalid_nsec { | 656 | mod when_invalid_nsec { |
| @@ -609,10 +672,10 @@ mod with_offline_flag { | |||
| 609 | true, | 672 | true, |
| 610 | )?; | 673 | )?; |
| 611 | 674 | ||
| 612 | p.expect_choice("login to nostr", vec![ | 675 | p.expect_choice( |
| 613 | "try again with nsec".to_string(), | 676 | "login to nostr", |
| 614 | "back".to_string(), | 677 | vec!["try again with nsec".to_string(), "back".to_string()], |
| 615 | ])? | 678 | )? |
| 616 | .succeeds_with(0, false, Some(0))?; | 679 | .succeeds_with(0, false, Some(0))?; |
| 617 | } | 680 | } |
| 618 | 681 | ||
| @@ -621,7 +684,7 @@ mod with_offline_flag { | |||
| 621 | 684 | ||
| 622 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 685 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 623 | 686 | ||
| 624 | p.expect_end_with(format!("logged in as {}\r\n", TEST_KEY_1_NPUB).as_str()) | 687 | p.expect_end_with(format!("logged in as {TEST_KEY_1_NPUB}\r\n").as_str()) |
| 625 | } | 688 | } |
| 626 | } | 689 | } |
| 627 | } | 690 | } |
| @@ -632,31 +695,25 @@ mod with_offline_flag { | |||
| 632 | #[test] | 695 | #[test] |
| 633 | fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { | 696 | fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { |
| 634 | let test_repo = GitTestRepo::default(); | 697 | let test_repo = GitTestRepo::default(); |
| 635 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 698 | let mut p = CliTester::new_from_dir( |
| 636 | "account", | 699 | &test_repo.dir, |
| 637 | "login", | 700 | ["account", "login", "--offline", "--nsec", TEST_KEY_1_NSEC], |
| 638 | "--offline", | 701 | ); |
| 639 | "--nsec", | ||
| 640 | TEST_KEY_1_NSEC, | ||
| 641 | ]); | ||
| 642 | 702 | ||
| 643 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 703 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 644 | 704 | ||
| 645 | p.expect_end_with( | 705 | p.expect_end_with( |
| 646 | format!("logged in as {} via cli arguments\r\n", TEST_KEY_1_NPUB).as_str(), | 706 | format!("logged in as {TEST_KEY_1_NPUB} via cli arguments\r\n").as_str(), |
| 647 | ) | 707 | ) |
| 648 | } | 708 | } |
| 649 | 709 | ||
| 650 | #[test] | 710 | #[test] |
| 651 | fn invalid_nsec_param_fails_without_prompts() -> Result<()> { | 711 | fn invalid_nsec_param_fails_without_prompts() -> Result<()> { |
| 652 | let test_repo = GitTestRepo::default(); | 712 | let test_repo = GitTestRepo::default(); |
| 653 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 713 | let mut p = CliTester::new_from_dir( |
| 654 | "account", | 714 | &test_repo.dir, |
| 655 | "login", | 715 | ["account", "login", "--offline", "--nsec", TEST_INVALID_NSEC], |
| 656 | "--offline", | 716 | ); |
| 657 | "--nsec", | ||
| 658 | TEST_INVALID_NSEC, | ||
| 659 | ]); | ||
| 660 | 717 | ||
| 661 | p.expect_end_with( | 718 | p.expect_end_with( |
| 662 | "Error: invalid nsec parameter\r\n\r\nCaused by:\r\n Invalid secret key\r\n", | 719 | "Error: invalid nsec parameter\r\n\r\nCaused by:\r\n Invalid secret key\r\n", |
| @@ -670,38 +727,44 @@ mod with_offline_flag { | |||
| 670 | #[test] | 727 | #[test] |
| 671 | fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { | 728 | fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { |
| 672 | let test_repo = GitTestRepo::default(); | 729 | let test_repo = GitTestRepo::default(); |
| 673 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 730 | let mut p = CliTester::new_from_dir( |
| 674 | "account", | 731 | &test_repo.dir, |
| 675 | "login", | 732 | [ |
| 676 | "--offline", | 733 | "account", |
| 677 | "--nsec", | 734 | "login", |
| 678 | TEST_KEY_1_NSEC, | 735 | "--offline", |
| 679 | "--password", | 736 | "--nsec", |
| 680 | TEST_PASSWORD, | 737 | TEST_KEY_1_NSEC, |
| 681 | ]); | 738 | "--password", |
| 739 | TEST_PASSWORD, | ||
| 740 | ], | ||
| 741 | ); | ||
| 682 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 742 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 683 | 743 | ||
| 684 | p.expect_end_with( | 744 | p.expect_end_with( |
| 685 | format!("logged in as {} via cli arguments\r\n", TEST_KEY_1_NPUB).as_str(), | 745 | format!("logged in as {TEST_KEY_1_NPUB} via cli arguments\r\n").as_str(), |
| 686 | ) | 746 | ) |
| 687 | } | 747 | } |
| 688 | 748 | ||
| 689 | #[test] | 749 | #[test] |
| 690 | fn parameters_can_be_called_globally() -> Result<()> { | 750 | fn parameters_can_be_called_globally() -> Result<()> { |
| 691 | let test_repo = GitTestRepo::default(); | 751 | let test_repo = GitTestRepo::default(); |
| 692 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 752 | let mut p = CliTester::new_from_dir( |
| 693 | "--nsec", | 753 | &test_repo.dir, |
| 694 | TEST_KEY_1_NSEC, | 754 | [ |
| 695 | "--password", | 755 | "--nsec", |
| 696 | TEST_PASSWORD, | 756 | TEST_KEY_1_NSEC, |
| 697 | "account", | 757 | "--password", |
| 698 | "login", | 758 | TEST_PASSWORD, |
| 699 | "--offline", | 759 | "account", |
| 700 | ]); | 760 | "login", |
| 761 | "--offline", | ||
| 762 | ], | ||
| 763 | ); | ||
| 701 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 764 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 702 | 765 | ||
| 703 | p.expect_end_with( | 766 | p.expect_end_with( |
| 704 | format!("logged in as {} via cli arguments\r\n", TEST_KEY_1_NPUB).as_str(), | 767 | format!("logged in as {TEST_KEY_1_NPUB} via cli arguments\r\n").as_str(), |
| 705 | ) | 768 | ) |
| 706 | } | 769 | } |
| 707 | 770 | ||
| @@ -712,19 +775,22 @@ mod with_offline_flag { | |||
| 712 | fn valid_nsec_param_succeeds_without_prompts_and_logs_in() -> Result<()> { | 775 | fn valid_nsec_param_succeeds_without_prompts_and_logs_in() -> Result<()> { |
| 713 | standard_first_time_login_with_nsec()?.exit()?; | 776 | standard_first_time_login_with_nsec()?.exit()?; |
| 714 | let test_repo = GitTestRepo::default(); | 777 | let test_repo = GitTestRepo::default(); |
| 715 | let mut p = CliTester::new_from_dir(&test_repo.dir, [ | 778 | let mut p = CliTester::new_from_dir( |
| 716 | "account", | 779 | &test_repo.dir, |
| 717 | "login", | 780 | [ |
| 718 | "--offline", | 781 | "account", |
| 719 | "--nsec", | 782 | "login", |
| 720 | TEST_KEY_2_NSEC, | 783 | "--offline", |
| 721 | "--password", | 784 | "--nsec", |
| 722 | TEST_PASSWORD, | 785 | TEST_KEY_2_NSEC, |
| 723 | ]); | 786 | "--password", |
| 787 | TEST_PASSWORD, | ||
| 788 | ], | ||
| 789 | ); | ||
| 724 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; | 790 | p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; |
| 725 | 791 | ||
| 726 | p.expect_end_with( | 792 | p.expect_end_with( |
| 727 | format!("logged in as {} via cli arguments\r\n", TEST_KEY_2_NPUB).as_str(), | 793 | format!("logged in as {TEST_KEY_2_NPUB} via cli arguments\r\n").as_str(), |
| 728 | ) | 794 | ) |
| 729 | } | 795 | } |
| 730 | } | 796 | } |
diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs index 629454b..2cd5956 100644 --- a/tests/ngit_send.rs +++ b/tests/ngit_send.rs | |||
| @@ -181,10 +181,14 @@ async fn prep_run_create_proposal( | |||
| 181 | 8051, | 181 | 8051, |
| 182 | None, | 182 | None, |
| 183 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 183 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 184 | relay.respond_events(client_id, &subscription_id, &vec![ | 184 | relay.respond_events( |
| 185 | generate_test_key_1_metadata_event("fred"), | 185 | client_id, |
| 186 | generate_test_key_1_relay_list_event(), | 186 | &subscription_id, |
| 187 | ])?; | 187 | &vec![ |
| 188 | generate_test_key_1_metadata_event("fred"), | ||
| 189 | generate_test_key_1_relay_list_event(), | ||
| 190 | ], | ||
| 191 | )?; | ||
| 188 | Ok(()) | 192 | Ok(()) |
| 189 | }), | 193 | }), |
| 190 | ), | 194 | ), |
| @@ -194,9 +198,11 @@ async fn prep_run_create_proposal( | |||
| 194 | 8055, | 198 | 8055, |
| 195 | None, | 199 | None, |
| 196 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 200 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 197 | relay.respond_events(client_id, &subscription_id, &vec![ | 201 | relay.respond_events( |
| 198 | generate_repo_ref_event(), | 202 | client_id, |
| 199 | ])?; | 203 | &subscription_id, |
| 204 | &vec![generate_repo_ref_event()], | ||
| 205 | )?; | ||
| 200 | Ok(()) | 206 | Ok(()) |
| 201 | }), | 207 | }), |
| 202 | ), | 208 | ), |
| @@ -321,7 +327,7 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 321 | +some content\n\\ \ | 327 | +some content\n\\ \ |
| 322 | No newline at end of file\n\ | 328 | No newline at end of file\n\ |
| 323 | --\n\ | 329 | --\n\ |
| 324 | libgit2 1.9.0\n\ | 330 | libgit2 1.9.1\n\ |
| 325 | \n\ | 331 | \n\ |
| 326 | ", | 332 | ", |
| 327 | ); | 333 | ); |
| @@ -347,7 +353,7 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 347 | +some content\n\\ \ | 353 | +some content\n\\ \ |
| 348 | No newline at end of file\n\ | 354 | No newline at end of file\n\ |
| 349 | --\n\ | 355 | --\n\ |
| 350 | libgit2 1.9.0\n\ | 356 | libgit2 1.9.1\n\ |
| 351 | \n\ | 357 | \n\ |
| 352 | ", | 358 | ", |
| 353 | ); | 359 | ); |
| @@ -762,10 +768,14 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 762 | 8051, | 768 | 8051, |
| 763 | None, | 769 | None, |
| 764 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 770 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 765 | relay.respond_events(client_id, &subscription_id, &vec![ | 771 | relay.respond_events( |
| 766 | generate_test_key_1_metadata_event("fred"), | 772 | client_id, |
| 767 | generate_test_key_1_relay_list_event(), | 773 | &subscription_id, |
| 768 | ])?; | 774 | &vec![ |
| 775 | generate_test_key_1_metadata_event("fred"), | ||
| 776 | generate_test_key_1_relay_list_event(), | ||
| 777 | ], | ||
| 778 | )?; | ||
| 769 | Ok(()) | 779 | Ok(()) |
| 770 | }), | 780 | }), |
| 771 | ), | 781 | ), |
| @@ -775,9 +785,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 775 | 8055, | 785 | 8055, |
| 776 | None, | 786 | None, |
| 777 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 787 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 778 | relay.respond_events(client_id, &subscription_id, &vec![ | 788 | relay.respond_events( |
| 779 | generate_repo_ref_event(), | 789 | client_id, |
| 780 | ])?; | 790 | &subscription_id, |
| 791 | &vec![generate_repo_ref_event()], | ||
| 792 | )?; | ||
| 781 | Ok(()) | 793 | Ok(()) |
| 782 | }), | 794 | }), |
| 783 | ), | 795 | ), |
| @@ -836,10 +848,14 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 836 | 8051, | 848 | 8051, |
| 837 | None, | 849 | None, |
| 838 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 850 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 839 | relay.respond_events(client_id, &subscription_id, &vec![ | 851 | relay.respond_events( |
| 840 | generate_test_key_1_metadata_event("fred"), | 852 | client_id, |
| 841 | generate_test_key_1_relay_list_event(), | 853 | &subscription_id, |
| 842 | ])?; | 854 | &vec![ |
| 855 | generate_test_key_1_metadata_event("fred"), | ||
| 856 | generate_test_key_1_relay_list_event(), | ||
| 857 | ], | ||
| 858 | )?; | ||
| 843 | Ok(()) | 859 | Ok(()) |
| 844 | }), | 860 | }), |
| 845 | ), | 861 | ), |
| @@ -849,9 +865,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 849 | 8055, | 865 | 8055, |
| 850 | None, | 866 | None, |
| 851 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 867 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 852 | relay.respond_events(client_id, &subscription_id, &vec![ | 868 | relay.respond_events( |
| 853 | generate_repo_ref_event(), | 869 | client_id, |
| 854 | ])?; | 870 | &subscription_id, |
| 871 | &vec![generate_repo_ref_event()], | ||
| 872 | )?; | ||
| 855 | Ok(()) | 873 | Ok(()) |
| 856 | }), | 874 | }), |
| 857 | ), | 875 | ), |
| @@ -904,10 +922,14 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 904 | 8051, | 922 | 8051, |
| 905 | None, | 923 | None, |
| 906 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 924 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 907 | relay.respond_events(client_id, &subscription_id, &vec![ | 925 | relay.respond_events( |
| 908 | generate_test_key_1_metadata_event("fred"), | 926 | client_id, |
| 909 | generate_test_key_1_relay_list_event(), | 927 | &subscription_id, |
| 910 | ])?; | 928 | &vec![ |
| 929 | generate_test_key_1_metadata_event("fred"), | ||
| 930 | generate_test_key_1_relay_list_event(), | ||
| 931 | ], | ||
| 932 | )?; | ||
| 911 | Ok(()) | 933 | Ok(()) |
| 912 | }), | 934 | }), |
| 913 | ), | 935 | ), |
| @@ -917,9 +939,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ | |||
| 917 | 8055, | 939 | 8055, |
| 918 | None, | 940 | None, |
| 919 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 941 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 920 | relay.respond_events(client_id, &subscription_id, &vec![ | 942 | relay.respond_events( |
| 921 | generate_repo_ref_event(), | 943 | client_id, |
| 922 | ])?; | 944 | &subscription_id, |
| 945 | &vec![generate_repo_ref_event()], | ||
| 946 | )?; | ||
| 923 | Ok(()) | 947 | Ok(()) |
| 924 | }), | 948 | }), |
| 925 | ), | 949 | ), |
| @@ -992,10 +1016,14 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c | |||
| 992 | 8051, | 1016 | 8051, |
| 993 | None, | 1017 | None, |
| 994 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1018 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 995 | relay.respond_events(client_id, &subscription_id, &vec![ | 1019 | relay.respond_events( |
| 996 | generate_test_key_1_metadata_event("fred"), | 1020 | client_id, |
| 997 | generate_test_key_1_relay_list_event(), | 1021 | &subscription_id, |
| 998 | ])?; | 1022 | &vec![ |
| 1023 | generate_test_key_1_metadata_event("fred"), | ||
| 1024 | generate_test_key_1_relay_list_event(), | ||
| 1025 | ], | ||
| 1026 | )?; | ||
| 999 | Ok(()) | 1027 | Ok(()) |
| 1000 | }), | 1028 | }), |
| 1001 | ), | 1029 | ), |
| @@ -1005,9 +1033,11 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c | |||
| 1005 | 8055, | 1033 | 8055, |
| 1006 | None, | 1034 | None, |
| 1007 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1035 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1008 | relay.respond_events(client_id, &subscription_id, &vec![ | 1036 | relay.respond_events( |
| 1009 | generate_repo_ref_event(), | 1037 | client_id, |
| 1010 | ])?; | 1038 | &subscription_id, |
| 1039 | &vec![generate_repo_ref_event()], | ||
| 1040 | )?; | ||
| 1011 | Ok(()) | 1041 | Ok(()) |
| 1012 | }), | 1042 | }), |
| 1013 | ), | 1043 | ), |
| @@ -1174,13 +1204,16 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1174 | fn expect_msgs_first(p: &mut CliTester) -> Result<()> { | 1204 | fn expect_msgs_first(p: &mut CliTester) -> Result<()> { |
| 1175 | p.expect("fetching updates...\r\n")?; | 1205 | p.expect("fetching updates...\r\n")?; |
| 1176 | p.expect_eventually("\r\n")?; // may be 'no updates' or some updates | 1206 | p.expect_eventually("\r\n")?; // may be 'no updates' or some updates |
| 1177 | let mut selector = p.expect_multi_select("select commits for proposal", vec![ | 1207 | let mut selector = p.expect_multi_select( |
| 1178 | "(Joe Bloggs) add t4.md [feature] fe973a8".to_string(), | 1208 | "select commits for proposal", |
| 1179 | "(Joe Bloggs) add t3.md 232efb3".to_string(), | 1209 | vec![ |
| 1180 | "(Joe Bloggs) add t2.md [main] 431b84e".to_string(), | 1210 | "(Joe Bloggs) add t4.md [feature] fe973a8".to_string(), |
| 1181 | "(Joe Bloggs) add t1.md af474d8".to_string(), | 1211 | "(Joe Bloggs) add t3.md 232efb3".to_string(), |
| 1182 | "(Joe Bloggs) Initial commit 9ee507f".to_string(), | 1212 | "(Joe Bloggs) add t2.md [main] 431b84e".to_string(), |
| 1183 | ])?; | 1213 | "(Joe Bloggs) add t1.md af474d8".to_string(), |
| 1214 | "(Joe Bloggs) Initial commit 9ee507f".to_string(), | ||
| 1215 | ], | ||
| 1216 | )?; | ||
| 1184 | selector.succeeds_with(vec![0, 1], false, vec![0, 1])?; | 1217 | selector.succeeds_with(vec![0, 1], false, vec![0, 1])?; |
| 1185 | p.expect("creating proposal from 2 commits:\r\n")?; | 1218 | p.expect("creating proposal from 2 commits:\r\n")?; |
| 1186 | p.expect("fe973a8 add t4.md\r\n")?; | 1219 | p.expect("fe973a8 add t4.md\r\n")?; |
| @@ -1205,10 +1238,14 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1205 | 8051, | 1238 | 8051, |
| 1206 | None, | 1239 | None, |
| 1207 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1240 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1208 | relay.respond_events(client_id, &subscription_id, &vec![ | 1241 | relay.respond_events( |
| 1209 | generate_test_key_1_metadata_event("fred"), | 1242 | client_id, |
| 1210 | generate_test_key_1_relay_list_event(), | 1243 | &subscription_id, |
| 1211 | ])?; | 1244 | &vec![ |
| 1245 | generate_test_key_1_metadata_event("fred"), | ||
| 1246 | generate_test_key_1_relay_list_event(), | ||
| 1247 | ], | ||
| 1248 | )?; | ||
| 1212 | Ok(()) | 1249 | Ok(()) |
| 1213 | }), | 1250 | }), |
| 1214 | ), | 1251 | ), |
| @@ -1218,9 +1255,11 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1218 | 8055, | 1255 | 8055, |
| 1219 | None, | 1256 | None, |
| 1220 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1257 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1221 | relay.respond_events(client_id, &subscription_id, &vec![ | 1258 | relay.respond_events( |
| 1222 | generate_repo_ref_event(), | 1259 | client_id, |
| 1223 | ])?; | 1260 | &subscription_id, |
| 1261 | &vec![generate_repo_ref_event()], | ||
| 1262 | )?; | ||
| 1224 | Ok(()) | 1263 | Ok(()) |
| 1225 | }), | 1264 | }), |
| 1226 | ), | 1265 | ), |
| @@ -1262,10 +1301,14 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1262 | 8051, | 1301 | 8051, |
| 1263 | None, | 1302 | None, |
| 1264 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1303 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1265 | relay.respond_events(client_id, &subscription_id, &vec![ | 1304 | relay.respond_events( |
| 1266 | generate_test_key_1_metadata_event("fred"), | 1305 | client_id, |
| 1267 | generate_test_key_1_relay_list_event(), | 1306 | &subscription_id, |
| 1268 | ])?; | 1307 | &vec![ |
| 1308 | generate_test_key_1_metadata_event("fred"), | ||
| 1309 | generate_test_key_1_relay_list_event(), | ||
| 1310 | ], | ||
| 1311 | )?; | ||
| 1269 | Ok(()) | 1312 | Ok(()) |
| 1270 | }), | 1313 | }), |
| 1271 | ), | 1314 | ), |
| @@ -1275,9 +1318,11 @@ mod when_range_ommited_prompts_for_selection_defaulting_ahead_of_main { | |||
| 1275 | 8055, | 1318 | 8055, |
| 1276 | None, | 1319 | None, |
| 1277 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1320 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1278 | relay.respond_events(client_id, &subscription_id, &vec![ | 1321 | relay.respond_events( |
| 1279 | generate_repo_ref_event(), | 1322 | client_id, |
| 1280 | ])?; | 1323 | &subscription_id, |
| 1324 | &vec![generate_repo_ref_event()], | ||
| 1325 | )?; | ||
| 1281 | Ok(()) | 1326 | Ok(()) |
| 1282 | }), | 1327 | }), |
| 1283 | ), | 1328 | ), |
| @@ -1361,8 +1406,7 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1361 | p.expect("updates: 1 new maintainer, 1 announcement update, 1 proposal\r\n")?; | 1406 | p.expect("updates: 1 new maintainer, 1 announcement update, 1 proposal\r\n")?; |
| 1362 | let proposal_root_bech32 = get_pretend_proposal_root_event().id.to_bech32().unwrap(); | 1407 | let proposal_root_bech32 = get_pretend_proposal_root_event().id.to_bech32().unwrap(); |
| 1363 | p.expect(format!( | 1408 | p.expect(format!( |
| 1364 | "creating proposal revision for: {}\r\n", | 1409 | "creating proposal revision for: {proposal_root_bech32}\r\n", |
| 1365 | proposal_root_bech32, | ||
| 1366 | ))?; | 1410 | ))?; |
| 1367 | p.expect("creating proposal from 2 commits:\r\n")?; | 1411 | p.expect("creating proposal from 2 commits:\r\n")?; |
| 1368 | p.expect("fe973a8 add t4.md\r\n")?; | 1412 | p.expect("fe973a8 add t4.md\r\n")?; |
| @@ -1394,11 +1438,15 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1394 | 8051, | 1438 | 8051, |
| 1395 | None, | 1439 | None, |
| 1396 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1440 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1397 | relay.respond_events(client_id, &subscription_id, &vec![ | 1441 | relay.respond_events( |
| 1398 | generate_test_key_1_metadata_event("fred"), | 1442 | client_id, |
| 1399 | generate_test_key_1_relay_list_event(), | 1443 | &subscription_id, |
| 1400 | get_pretend_proposal_root_event(), | 1444 | &vec![ |
| 1401 | ])?; | 1445 | generate_test_key_1_metadata_event("fred"), |
| 1446 | generate_test_key_1_relay_list_event(), | ||
| 1447 | get_pretend_proposal_root_event(), | ||
| 1448 | ], | ||
| 1449 | )?; | ||
| 1402 | Ok(()) | 1450 | Ok(()) |
| 1403 | }), | 1451 | }), |
| 1404 | ), | 1452 | ), |
| @@ -1408,10 +1456,11 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1408 | 8055, | 1456 | 8055, |
| 1409 | None, | 1457 | None, |
| 1410 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1458 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1411 | relay.respond_events(client_id, &subscription_id, &vec![ | 1459 | relay.respond_events( |
| 1412 | generate_repo_ref_event(), | 1460 | client_id, |
| 1413 | get_pretend_proposal_root_event(), | 1461 | &subscription_id, |
| 1414 | ])?; | 1462 | &vec![generate_repo_ref_event(), get_pretend_proposal_root_event()], |
| 1463 | )?; | ||
| 1415 | Ok(()) | 1464 | Ok(()) |
| 1416 | }), | 1465 | }), |
| 1417 | ), | 1466 | ), |
| @@ -1452,11 +1501,15 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1452 | 8051, | 1501 | 8051, |
| 1453 | None, | 1502 | None, |
| 1454 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1503 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1455 | relay.respond_events(client_id, &subscription_id, &vec![ | 1504 | relay.respond_events( |
| 1456 | generate_test_key_1_metadata_event("fred"), | 1505 | client_id, |
| 1457 | generate_test_key_1_relay_list_event(), | 1506 | &subscription_id, |
| 1458 | get_pretend_proposal_root_event(), | 1507 | &vec![ |
| 1459 | ])?; | 1508 | generate_test_key_1_metadata_event("fred"), |
| 1509 | generate_test_key_1_relay_list_event(), | ||
| 1510 | get_pretend_proposal_root_event(), | ||
| 1511 | ], | ||
| 1512 | )?; | ||
| 1460 | Ok(()) | 1513 | Ok(()) |
| 1461 | }), | 1514 | }), |
| 1462 | ), | 1515 | ), |
| @@ -1466,10 +1519,11 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1466 | 8055, | 1519 | 8055, |
| 1467 | None, | 1520 | None, |
| 1468 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1521 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1469 | relay.respond_events(client_id, &subscription_id, &vec![ | 1522 | relay.respond_events( |
| 1470 | generate_repo_ref_event(), | 1523 | client_id, |
| 1471 | get_pretend_proposal_root_event(), | 1524 | &subscription_id, |
| 1472 | ])?; | 1525 | &vec![generate_repo_ref_event(), get_pretend_proposal_root_event()], |
| 1526 | )?; | ||
| 1473 | Ok(()) | 1527 | Ok(()) |
| 1474 | }), | 1528 | }), |
| 1475 | ), | 1529 | ), |
| @@ -1646,11 +1700,15 @@ mod in_reply_to_mentions_issue { | |||
| 1646 | 8051, | 1700 | 8051, |
| 1647 | None, | 1701 | None, |
| 1648 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1702 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1649 | relay.respond_events(client_id, &subscription_id, &vec![ | 1703 | relay.respond_events( |
| 1650 | generate_test_key_1_metadata_event("fred"), | 1704 | client_id, |
| 1651 | generate_test_key_1_relay_list_event(), | 1705 | &subscription_id, |
| 1652 | get_pretend_issue_event(), | 1706 | &vec![ |
| 1653 | ])?; | 1707 | generate_test_key_1_metadata_event("fred"), |
| 1708 | generate_test_key_1_relay_list_event(), | ||
| 1709 | get_pretend_issue_event(), | ||
| 1710 | ], | ||
| 1711 | )?; | ||
| 1654 | Ok(()) | 1712 | Ok(()) |
| 1655 | }), | 1713 | }), |
| 1656 | ), | 1714 | ), |
| @@ -1660,10 +1718,11 @@ mod in_reply_to_mentions_issue { | |||
| 1660 | 8055, | 1718 | 8055, |
| 1661 | None, | 1719 | None, |
| 1662 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1720 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1663 | relay.respond_events(client_id, &subscription_id, &vec![ | 1721 | relay.respond_events( |
| 1664 | generate_repo_ref_event(), | 1722 | client_id, |
| 1665 | get_pretend_issue_event(), | 1723 | &subscription_id, |
| 1666 | ])?; | 1724 | &vec![generate_repo_ref_event(), get_pretend_issue_event()], |
| 1725 | )?; | ||
| 1667 | Ok(()) | 1726 | Ok(()) |
| 1668 | }), | 1727 | }), |
| 1669 | ), | 1728 | ), |
| @@ -1765,10 +1824,14 @@ mod in_reply_to_mentions_npub_and_nprofile_which_get_mentioned_in_proposal_root | |||
| 1765 | 8051, | 1824 | 8051, |
| 1766 | None, | 1825 | None, |
| 1767 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1826 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1768 | relay.respond_events(client_id, &subscription_id, &vec![ | 1827 | relay.respond_events( |
| 1769 | generate_test_key_1_metadata_event("fred"), | 1828 | client_id, |
| 1770 | generate_test_key_1_relay_list_event(), | 1829 | &subscription_id, |
| 1771 | ])?; | 1830 | &vec![ |
| 1831 | generate_test_key_1_metadata_event("fred"), | ||
| 1832 | generate_test_key_1_relay_list_event(), | ||
| 1833 | ], | ||
| 1834 | )?; | ||
| 1772 | Ok(()) | 1835 | Ok(()) |
| 1773 | }), | 1836 | }), |
| 1774 | ), | 1837 | ), |
| @@ -1778,9 +1841,11 @@ mod in_reply_to_mentions_npub_and_nprofile_which_get_mentioned_in_proposal_root | |||
| 1778 | 8055, | 1841 | 8055, |
| 1779 | None, | 1842 | None, |
| 1780 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | 1843 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { |
| 1781 | relay.respond_events(client_id, &subscription_id, &vec![ | 1844 | relay.respond_events( |
| 1782 | generate_repo_ref_event(), | 1845 | client_id, |
| 1783 | ])?; | 1846 | &subscription_id, |
| 1847 | &vec![generate_repo_ref_event()], | ||
| 1848 | )?; | ||
| 1784 | Ok(()) | 1849 | Ok(()) |
| 1785 | }), | 1850 | }), |
| 1786 | ), | 1851 | ), |