rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwoodc301e7c20c06735798f75f1f6cdfa1e7e6bb9113
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "b062d14befcbc6878a35c757d15c1c537f0b42a2",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"title": "Rust 2024",
"state": {
"status": "open",
"conflicts": []
},
"before": "edde15d9ea700a70de04558fafc0b55360e9f5d2",
"after": "c301e7c20c06735798f75f1f6cdfa1e7e6bb9113",
"commits": [
"c301e7c20c06735798f75f1f6cdfa1e7e6bb9113",
"19ab5f4e32b3b7a4bc561746e90098129d0df73f"
],
"target": "edde15d9ea700a70de04558fafc0b55360e9f5d2",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "b062d14befcbc6878a35c757d15c1c537f0b42a2",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Switch from Rust 2021 to Rust 2024.\n\n- See <https://doc.rust-lang.org/edition-guide/rust-2024/>.\n- Regarding the added bound `use<>`, see\n <https://blog.rust-lang.org/2024/09/05/impl-trait-capture-rules/>.\n- Reformat code with `rustfmt`, now that the edition changed from\n Rust 2021 to Rust 2024.",
"base": "edde15d9ea700a70de04558fafc0b55360e9f5d2",
"oid": "c301e7c20c06735798f75f1f6cdfa1e7e6bb9113",
"timestamp": 1774878861
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "303cc417-da0f-4ca2-ab24-7d05c0431352"
},
"info_url": "https://cci.rad.levitte.org//303cc417-da0f-4ca2-ab24-7d05c0431352.html"
}
Started at: 2026-03-30 15:54:43.822110+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW added
✓ Remote-tracking branch cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW/master created for z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz added
✓ Remote-tracking branch erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz/master created for z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/303cc417-da0f-4ca2-ab24-7d05c0431352/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 154 issues · 41 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout b062d14befcbc6878a35c757d15c1c537f0b42a2
✓ Switched to branch patch/b062d14 at revision b062d14
✓ Branch patch/b062d14 setup to track rad/patches/b062d14befcbc6878a35c757d15c1c537f0b42a2
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout c301e7c20c06735798f75f1f6cdfa1e7e6bb9113
HEAD is now at c301e7c2 rust/edition/fmt: 2021 → 2024
Exit code: 0
$ rad patch show b062d14befcbc6878a35c757d15c1c537f0b42a2 -p
╭───────────────────────────────────────────────────────────────────────╮
│ Title Rust 2024 │
│ Patch b062d14befcbc6878a35c757d15c1c537f0b42a2 │
│ Author lorenz z6MkkPv…WX5sTEz │
│ Head c301e7c20c06735798f75f1f6cdfa1e7e6bb9113 │
│ Base edde15d9ea700a70de04558fafc0b55360e9f5d2 │
│ Branches patch/b062d14 │
│ Commits ahead 2, behind 0 │
│ Status open │
│ │
│ Switch from Rust 2021 to Rust 2024. │
│ │
│ - See <https://doc.rust-lang.org/edition-guide/rust-2024/>. │
│ - Regarding the added bound `use<>`, see │
│ <https://blog.rust-lang.org/2024/09/05/impl-trait-capture-rules/>. │
│ - Reformat code with `rustfmt`, now that the edition changed from │
│ Rust 2021 to Rust 2024. │
├───────────────────────────────────────────────────────────────────────┤
│ c301e7c rust/edition/fmt: 2021 → 2024 │
│ 19ab5f4 rust/edition: 2021 → 2024 │
├───────────────────────────────────────────────────────────────────────┤
│ ● Revision b062d14 @ c301e7c by lorenz z6MkkPv…WX5sTEz 24 seconds ago │
╰───────────────────────────────────────────────────────────────────────╯
commit c301e7c20c06735798f75f1f6cdfa1e7e6bb9113
Author: Lorenz Leutgeb <lorenz.leutgeb@radicle.xyz>
Date: Wed Mar 25 08:24:30 2026 +0100
rust/edition/fmt: 2021 → 2024
Reformat code with `rustfmt`, now that the edition changed from
Rust 2021 to Rust 2024.
diff --git a/.rustfmt.toml b/.rustfmt.toml
index 3a26366d4..f216078d9 100644
--- a/.rustfmt.toml
+++ b/.rustfmt.toml
@@ -1 +1 @@
-edition = "2021"
+edition = "2024"
diff --git a/crates/radicle-cli/src/commands/auth.rs b/crates/radicle-cli/src/commands/auth.rs
index f768ebc61..c0c557349 100644
--- a/crates/radicle-cli/src/commands/auth.rs
+++ b/crates/radicle-cli/src/commands/auth.rs
@@ -3,13 +3,13 @@ mod args;
use std::str::FromStr;
-use anyhow::{anyhow, Context};
+use anyhow::{Context, anyhow};
use radicle::crypto::ssh;
use radicle::crypto::ssh::Passphrase;
use radicle::node::Alias;
use radicle::profile::env;
-use radicle::{profile, Profile};
+use radicle::{Profile, profile};
use crate::terminal as term;
@@ -129,18 +129,25 @@ pub fn authenticate(args: Args, profile: &Profile) -> anyhow::Result<()> {
term::success!("Radicle key already in ssh-agent");
return Ok(());
}
- let passphrase = match profile::env::passphrase() { Some(phrase) => {
- phrase
- } _ => if args.stdin {
- term::passphrase_stdin()?
- } else { match term::io::passphrase(term::io::PassphraseValidator::new(profile.keystore.clone()))?
- { Some(passphrase) => {
- passphrase
- } _ => {
- anyhow::bail!(
- "A passphrase is required to read your Radicle key. Unable to continue."
- )
- }}}};
+ let passphrase = match profile::env::passphrase() {
+ Some(phrase) => phrase,
+ _ => {
+ if args.stdin {
+ term::passphrase_stdin()?
+ } else {
+ match term::io::passphrase(term::io::PassphraseValidator::new(
+ profile.keystore.clone(),
+ ))? {
+ Some(passphrase) => passphrase,
+ _ => {
+ anyhow::bail!(
+ "A passphrase is required to read your Radicle key. Unable to continue."
+ )
+ }
+ }
+ }
+ }
+ };
register(&mut agent, profile, passphrase)?;
term::success!("Radicle key added to {}", term::format::dim("ssh-agent"));
diff --git a/crates/radicle-cli/src/commands/block/args.rs b/crates/radicle-cli/src/commands/block/args.rs
index f75cdcd36..cbba7e590 100644
--- a/crates/radicle-cli/src/commands/block/args.rs
+++ b/crates/radicle-cli/src/commands/block/args.rs
@@ -16,8 +16,8 @@ pub struct Args {
#[cfg(test)]
mod test {
- use clap::error::ErrorKind;
use clap::Parser;
+ use clap::error::ErrorKind;
use super::Args;
diff --git a/crates/radicle-cli/src/commands/checkout.rs b/crates/radicle-cli/src/commands/checkout.rs
index 9cc7a4dd2..a4b185ac4 100644
--- a/crates/radicle-cli/src/commands/checkout.rs
+++ b/crates/radicle-cli/src/commands/checkout.rs
@@ -3,8 +3,8 @@ mod args;
use std::path::PathBuf;
-use anyhow::anyhow;
use anyhow::Context as _;
+use anyhow::anyhow;
use radicle::git;
use radicle::node::AliasStore;
diff --git a/crates/radicle-cli/src/commands/clone/args.rs b/crates/radicle-cli/src/commands/clone/args.rs
index cabaf1926..2a8ddf460 100644
--- a/crates/radicle-cli/src/commands/clone/args.rs
+++ b/crates/radicle-cli/src/commands/clone/args.rs
@@ -2,15 +2,15 @@ use std::path::PathBuf;
use clap::Parser;
-use radicle::identity::doc::RepoId;
use radicle::identity::IdError;
+use radicle::identity::doc::RepoId;
use radicle::node::policy::Scope;
use radicle::prelude::*;
use radicle::storage::refs;
use crate::common_args::{
- SignedReferencesFeatureLevel, SignedReferencesFeatureLevelParser,
- ABOUT_FETCH_SIGNED_REFERENCES_FEATURE_LEVEL_MINIMUM,
+ ABOUT_FETCH_SIGNED_REFERENCES_FEATURE_LEVEL_MINIMUM, SignedReferencesFeatureLevel,
+ SignedReferencesFeatureLevelParser,
};
use crate::node::SyncSettings;
use crate::terminal;
diff --git a/crates/radicle-cli/src/commands/cob.rs b/crates/radicle-cli/src/commands/cob.rs
index 940414c55..12b92364d 100644
--- a/crates/radicle-cli/src/commands/cob.rs
+++ b/crates/radicle-cli/src/commands/cob.rs
@@ -21,7 +21,7 @@ use crate::terminal as term;
pub use args::Args;
-use args::{parse_many_embeds, FilteredTypeName, Format};
+use args::{FilteredTypeName, Format, parse_many_embeds};
fn embeds(
repo: &storage::git::Repository,
diff --git a/crates/radicle-cli/src/commands/cob/args.rs b/crates/radicle-cli/src/commands/cob/args.rs
index bd5f388bd..fcada46a9 100644
--- a/crates/radicle-cli/src/commands/cob/args.rs
+++ b/crates/radicle-cli/src/commands/cob/args.rs
@@ -339,8 +339,8 @@ impl std::str::FromStr for FilteredTypeName {
#[cfg(test)]
mod test {
use super::Args;
- use clap::error::ErrorKind;
use clap::Parser;
+ use clap::error::ErrorKind;
const ARGS: &[&str] = &[
"--repo",
diff --git a/crates/radicle-cli/src/commands/config.rs b/crates/radicle-cli/src/commands/config.rs
index a74c8409f..ae67a407d 100644
--- a/crates/radicle-cli/src/commands/config.rs
+++ b/crates/radicle-cli/src/commands/config.rs
@@ -5,7 +5,7 @@ use args::Command;
use std::path::Path;
-use radicle::profile::{config, Config, ConfigPath, RawConfig};
+use radicle::profile::{Config, ConfigPath, RawConfig, config};
use crate::terminal as term;
use crate::terminal::Element as _;
diff --git a/crates/radicle-cli/src/commands/follow.rs b/crates/radicle-cli/src/commands/follow.rs
index aa214cd2e..27dff43b6 100644
--- a/crates/radicle-cli/src/commands/follow.rs
+++ b/crates/radicle-cli/src/commands/follow.rs
@@ -1,7 +1,7 @@
mod args;
-use radicle::node::{policy, Alias, AliasStore, Handle, NodeId};
-use radicle::{prelude::*, Node};
+use radicle::node::{Alias, AliasStore, Handle, NodeId, policy};
+use radicle::{Node, prelude::*};
use radicle_term::{Element as _, Paint, Table};
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/fork/args.rs b/crates/radicle-cli/src/commands/fork/args.rs
index a2374b3da..850a0b15e 100644
--- a/crates/radicle-cli/src/commands/fork/args.rs
+++ b/crates/radicle-cli/src/commands/fork/args.rs
@@ -25,8 +25,8 @@ pub struct Args {
#[cfg(test)]
mod test {
use super::Args;
- use clap::error::ErrorKind;
use clap::Parser;
+ use clap::error::ErrorKind;
#[test]
fn should_parse_rid_non_urn() {
diff --git a/crates/radicle-cli/src/commands/id.rs b/crates/radicle-cli/src/commands/id.rs
index 6416601d0..904711bf5 100644
--- a/crates/radicle-cli/src/commands/id.rs
+++ b/crates/radicle-cli/src/commands/id.rs
@@ -2,21 +2,21 @@ mod args;
use std::collections::BTreeSet;
-use anyhow::{anyhow, Context};
+use anyhow::{Context, anyhow};
-use radicle::cob::identity::{self, IdentityMut, Revision, RevisionId};
use radicle::cob::Title;
+use radicle::cob::identity::{self, IdentityMut, Revision, RevisionId};
use radicle::identity::doc::update;
-use radicle::identity::{doc, Doc, Identity, RawDoc};
-use radicle::node::device::Device;
+use radicle::identity::{Doc, Identity, RawDoc, doc};
use radicle::node::NodeId;
+use radicle::node::device::Device;
use radicle::storage::{ReadStorage as _, WriteRepository};
-use radicle::{cob, crypto, Profile};
+use radicle::{Profile, cob, crypto};
use radicle_surf::diff::Diff;
use radicle_term::Element;
-use crate::git::unified_diff::Encode as _;
use crate::git::Rev;
+use crate::git::unified_diff::Encode as _;
use crate::terminal as term;
use crate::terminal::args::Error;
use crate::terminal::format::Author;
@@ -526,12 +526,15 @@ fn print_diff(
let diff = repo.diff_tree_to_tree(previous.as_ref(), Some(¤t), Some(&mut opts))?;
let diff = Diff::try_from(diff)?;
- match diff.modified().next() { Some(modified) => {
- let diff = modified.diff.to_unified_string()?;
- print!("{diff}");
- } _ => {
- term::print(term::format::italic("No changes."));
- }}
+ match diff.modified().next() {
+ Some(modified) => {
+ let diff = modified.diff.to_unified_string()?;
+ print!("{diff}");
+ }
+ _ => {
+ term::print(term::format::italic("No changes."));
+ }
+ }
Ok(())
}
diff --git a/crates/radicle-cli/src/commands/id/args.rs b/crates/radicle-cli/src/commands/id/args.rs
index c123b0ef2..d83e60296 100644
--- a/crates/radicle-cli/src/commands/id/args.rs
+++ b/crates/radicle-cli/src/commands/id/args.rs
@@ -8,9 +8,9 @@ use serde_json as json;
use thiserror::Error;
use radicle::cob::{Title, TypeNameParse};
+use radicle::identity::doc::PayloadId;
use radicle::identity::doc::update::EditVisibility;
use radicle::identity::doc::update::PayloadUpsert;
-use radicle::identity::doc::PayloadId;
use radicle::prelude::{Did, RepoId};
use crate::git::Rev;
@@ -240,9 +240,9 @@ pub(super) enum Command {
#[cfg(test)]
mod test {
- use super::{parse_many_upserts, Args};
- use clap::error::ErrorKind;
+ use super::{Args, parse_many_upserts};
use clap::Parser;
+ use clap::error::ErrorKind;
#[test]
fn should_parse_single_payload() {
diff --git a/crates/radicle-cli/src/commands/inbox.rs b/crates/radicle-cli/src/commands/inbox.rs
index 5d5187bb5..c095d153e 100644
--- a/crates/radicle-cli/src/commands/inbox.rs
+++ b/crates/radicle-cli/src/commands/inbox.rs
@@ -9,8 +9,8 @@ use anyhow::anyhow;
use localtime::LocalTime;
use radicle::cob::TypedId;
-use radicle::git::fmt::Qualified;
use radicle::git::BranchName;
+use radicle::git::fmt::Qualified;
use radicle::identity::Identity;
use radicle::issue::cache::Issues as _;
use radicle::node::notifications;
@@ -18,7 +18,7 @@ use radicle::node::notifications::*;
use radicle::patch::cache::Patches as _;
use radicle::prelude::{NodeId, Profile, RepoId};
use radicle::storage::{ReadRepository, ReadStorage};
-use radicle::{cob, git, Storage};
+use radicle::{Storage, cob, git};
use term::Element as _;
@@ -65,23 +65,20 @@ fn list(
profile: &Profile,
) -> anyhow::Result<()> {
let repos: Vec<term::VStack<'_>> = match mode {
- ListMode::Contextual => {
- match radicle::rad::cwd() { Ok((_, rid)) => {
- list_repo(
- notifs,
- rid,
- sort_by,
- reverse,
- show_unknown,
- storage,
- profile,
- )?
- .into_iter()
- .collect()
- } _ => {
- list_all(notifs, sort_by, reverse, show_unknown, storage, profile)?
- }}
- }
+ ListMode::Contextual => match radicle::rad::cwd() {
+ Ok((_, rid)) => list_repo(
+ notifs,
+ rid,
+ sort_by,
+ reverse,
+ show_unknown,
+ storage,
+ profile,
+ )?
+ .into_iter()
+ .collect(),
+ _ => list_all(notifs, sort_by, reverse, show_unknown, storage, profile)?,
+ },
ListMode::All => list_all(notifs, sort_by, reverse, show_unknown, storage, profile)?,
ListMode::ByRepo(rid) => list_repo(
notifs,
@@ -390,13 +387,12 @@ fn clear(notifs: &mut notifications::StoreWriter, mode: ClearMode) -> anyhow::Re
ClearMode::ByNotifications(ids) => notifs.clear(&ids)?,
ClearMode::ByRepo(rid) => notifs.clear_by_repo(&rid)?,
ClearMode::All => notifs.clear_all()?,
- ClearMode::Contextual => {
- match radicle::rad::cwd() { Ok((_, rid)) => {
- notifs.clear_by_repo(&rid)?
- } _ => {
+ ClearMode::Contextual => match radicle::rad::cwd() {
+ Ok((_, rid)) => notifs.clear_by_repo(&rid)?,
+ _ => {
return Err(anyhow!("not a radicle repository"));
- }}
- }
+ }
+ },
};
if cleared > 0 {
term::success!("Cleared {cleared} item(s) from your inbox");
diff --git a/crates/radicle-cli/src/commands/init.rs b/crates/radicle-cli/src/commands/init.rs
index 217a13a79..997bcf65b 100644
--- a/crates/radicle-cli/src/commands/init.rs
+++ b/crates/radicle-cli/src/commands/init.rs
@@ -10,7 +10,7 @@ use std::convert::TryFrom;
use std::env;
use std::str::FromStr;
-use anyhow::{anyhow, bail, Context as _};
+use anyhow::{Context as _, anyhow, bail};
use serde_json as json;
use radicle::crypto::ssh;
@@ -21,9 +21,9 @@ use radicle::git::raw::ErrorExt as _;
use radicle::identity::project::ProjectName;
use radicle::identity::{Doc, RepoId, Visibility};
use radicle::node::events::UploadPack;
-use radicle::node::{Event, Handle, NodeId, DEFAULT_SUBSCRIBE_TIMEOUT};
+use radicle::node::{DEFAULT_SUBSCRIBE_TIMEOUT, Event, Handle, NodeId};
use radicle::storage::ReadStorage as _;
-use radicle::{profile, Node};
+use radicle::{Node, profile};
use crate::commands;
use crate::git;
@@ -63,7 +63,9 @@ pub fn init(repo: git::Repository, args: Args, profile: &profile::Profile) -> an
let default_branch = match find_default_branch(&repo) {
Err(err @ DefaultBranchError::Head) => {
term::error(err);
- term::hint("try `git checkout <default branch>` or set `git config set --local init.defaultBranch <default branch>`");
+ term::hint(
+ "try `git checkout <default branch>` or set `git config set --local init.defaultBranch <default branch>`",
+ );
anyhow::bail!("aborting `rad init`")
}
Err(err @ DefaultBranchError::NoHead) => {
@@ -209,7 +211,9 @@ pub fn init(repo: git::Repository, args: Args, profile: &profile::Profile) -> an
term::warning(format!(
"There was an error announcing your repository to the network: {e}"
));
- term::warning("Try again with `rad sync --announce`, or check your logs with `rad node logs`.");
+ term::warning(
+ "Try again with `rad sync --announce`, or check your logs with `rad node logs`.",
+ );
term::blank();
}
term::info!("To push changes, run {}.", term::format::command(push_cmd));
@@ -445,7 +449,8 @@ pub fn announce(
term::blank();
term::info!(
"You are not connected to any peers. Your repository will be announced as soon as \
- your node establishes a connection with the network.");
+ your node establishes a connection with the network."
+ );
term::info!("Check for peer connections with `rad node status`.");
term::blank();
}
diff --git a/crates/radicle-cli/src/commands/init/args.rs b/crates/radicle-cli/src/commands/init/args.rs
index d45e32684..f10fc4340 100644
--- a/crates/radicle-cli/src/commands/init/args.rs
+++ b/crates/radicle-cli/src/commands/init/args.rs
@@ -2,7 +2,7 @@ use std::path::PathBuf;
use clap::Parser;
use radicle::{
- identity::{project::ProjectName, Visibility},
+ identity::{Visibility, project::ProjectName},
node::policy::Scope,
prelude::RepoId,
};
@@ -115,8 +115,8 @@ impl clap::builder::TypedValueParser for ScopeParser {
#[cfg(test)]
mod test {
use super::Args;
- use clap::error::ErrorKind;
use clap::Parser;
+ use clap::error::ErrorKind;
#[test]
fn should_parse_rid_non_urn() {
diff --git a/crates/radicle-cli/src/commands/inspect.rs b/crates/radicle-cli/src/commands/inspect.rs
index 70194dc4a..9b473c6e3 100644
--- a/crates/radicle-cli/src/commands/inspect.rs
+++ b/crates/radicle-cli/src/commands/inspect.rs
@@ -11,15 +11,15 @@ use chrono::prelude::*;
use radicle::identity::RepoId;
use radicle::identity::{DocAt, Identity};
-use radicle::node::policy::SeedingPolicy;
use radicle::node::AliasStore as _;
+use radicle::node::policy::SeedingPolicy;
use radicle::storage::git::{Repository, Storage};
use radicle::storage::refs::{FeatureLevel, RefsAt, SignedRefs};
use radicle::storage::{ReadRepository, ReadStorage};
use crate::terminal as term;
-use crate::terminal::json;
use crate::terminal::Element;
+use crate::terminal::json;
pub use args::Args;
use args::Target;
diff --git a/crates/radicle-cli/src/commands/issue.rs b/crates/radicle-cli/src/commands/issue.rs
index 79f1cedbe..2efc4d212 100644
--- a/crates/radicle-cli/src/commands/issue.rs
+++ b/crates/radicle-cli/src/commands/issue.rs
@@ -6,18 +6,18 @@ use anyhow::Context as _;
use radicle::cob::common::Label;
use radicle::cob::issue::{CloseReason, State};
-use radicle::cob::{issue, Title};
+use radicle::cob::{Title, issue};
+use radicle::Profile;
use radicle::crypto;
use radicle::issue::cache::Issues as _;
-use radicle::node::device::Device;
use radicle::node::NodeId;
+use radicle::node::device::Device;
use radicle::prelude::Did;
use radicle::profile;
use radicle::storage;
use radicle::storage::{WriteRepository, WriteStorage};
-use radicle::Profile;
-use radicle::{cob, Node};
+use radicle::{Node, cob};
pub use args::Args;
use args::{Assigned, Command, CommentAction, StateArg};
@@ -25,10 +25,10 @@ use args::{Assigned, Command, CommentAction, StateArg};
use crate::git::Rev;
use crate::node;
use crate::terminal as term;
+use crate::terminal::Element;
use crate::terminal::args::Error;
use crate::terminal::format::Author;
use crate::terminal::issue::Format;
-use crate::terminal::Element;
const ABOUT: &str = "Manage issues";
diff --git a/crates/radicle-cli/src/commands/issue/args.rs b/crates/radicle-cli/src/commands/issue/args.rs
index b49e56a86..e48a974f8 100644
--- a/crates/radicle-cli/src/commands/issue/args.rs
+++ b/crates/radicle-cli/src/commands/issue/args.rs
@@ -4,7 +4,7 @@ use clap::{Parser, Subcommand};
use radicle::{
cob::{Label, Reaction, Title},
- identity::{did::DidError, Did, RepoId},
+ identity::{Did, RepoId, did::DidError},
issue::{CloseReason, State},
};
diff --git a/crates/radicle-cli/src/commands/issue/cache.rs b/crates/radicle-cli/src/commands/issue/cache.rs
index 8993dc2e9..e2fb606c2 100644
--- a/crates/radicle-cli/src/commands/issue/cache.rs
+++ b/crates/radicle-cli/src/commands/issue/cache.rs
@@ -1,9 +1,9 @@
use std::ops::ControlFlow;
+use radicle::Profile;
use radicle::issue::IssueId;
-use radicle::storage::git::Repository;
use radicle::storage::ReadStorage as _;
-use radicle::Profile;
+use radicle::storage::git::Repository;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/issue/comment.rs b/crates/radicle-cli/src/commands/issue/comment.rs
index 665f0462d..d072716fb 100644
--- a/crates/radicle-cli/src/commands/issue/comment.rs
+++ b/crates/radicle-cli/src/commands/issue/comment.rs
@@ -1,12 +1,12 @@
+use radicle::Profile;
use radicle::cob::thread;
use radicle::storage::WriteRepository;
-use radicle::Profile;
use radicle::{cob, git, issue, storage};
use crate::git::Rev;
use crate::terminal as term;
-use crate::terminal::patch::Message;
use crate::terminal::Element as _;
+use crate::terminal::patch::Message;
pub(super) fn comment(
profile: &Profile,
diff --git a/crates/radicle-cli/src/commands/node.rs b/crates/radicle-cli/src/commands/node.rs
index 4e227bf46..f7f2f722d 100644
--- a/crates/radicle-cli/src/commands/node.rs
+++ b/crates/radicle-cli/src/commands/node.rs
@@ -7,11 +7,11 @@ pub mod routing;
use std::{process, time};
+use radicle::node::Handle as _;
+use radicle::node::Node;
use radicle::node::address::Store as AddressStore;
use radicle::node::config::ConnectAddress;
use radicle::node::routing::Store;
-use radicle::node::Handle as _;
-use radicle::node::Node;
use crate::commands::node::args::Only;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/node/control.rs b/crates/radicle-cli/src/commands/node/control.rs
index 4111f050c..58c9f26ff 100644
--- a/crates/radicle-cli/src/commands/node/control.rs
+++ b/crates/radicle-cli/src/commands/node/control.rs
@@ -4,14 +4,14 @@ use std::fs::File;
use std::io::{BufRead, BufReader, Read, Seek, SeekFrom, Write};
use std::{path::Path, process, thread, time};
-use anyhow::{anyhow, Context};
+use anyhow::{Context, anyhow};
use localtime::LocalTime;
+use radicle::Node;
use radicle::node;
use radicle::node::{Address, ConnectResult, Handle as _, NodeId};
use radicle::profile::env::RAD_PASSPHRASE;
-use radicle::Node;
-use radicle::{profile, Profile};
+use radicle::{Profile, profile};
use crate::commands::node::logs::{LogRotatorFileSystem, Rotated};
use crate::terminal as term;
@@ -36,15 +36,17 @@ pub fn start(
// Ask passphrase here, otherwise it'll be a fatal error when running the daemon
// without `RAD_PASSPHRASE`.
let validator = term::io::PassphraseValidator::new(profile.keystore.clone());
- let passphrase = match profile::env::passphrase() { Some(phrase) => {
- phrase
- } _ => { match term::io::passphrase(validator)? { Some(phrase) => {
- phrase
- } _ => {
- anyhow::bail!(
- "A passphrase is required to read your Radicle key in order to start the node. Unable to continue. Consider setting the environment variable `{RAD_PASSPHRASE}`."
- );
- }}}};
+ let passphrase = match profile::env::passphrase() {
+ Some(phrase) => phrase,
+ _ => match term::io::passphrase(validator)? {
+ Some(phrase) => phrase,
+ _ => {
+ anyhow::bail!(
+ "A passphrase is required to read your Radicle key in order to start the node. Unable to continue. Consider setting the environment variable `{RAD_PASSPHRASE}`."
+ );
+ }
+ },
+ };
Some((profile::env::RAD_PASSPHRASE, passphrase))
} else {
None
diff --git a/crates/radicle-cli/src/commands/patch.rs b/crates/radicle-cli/src/commands/patch.rs
index c76667125..c4a179078 100644
--- a/crates/radicle-cli/src/commands/patch.rs
+++ b/crates/radicle-cli/src/commands/patch.rs
@@ -22,10 +22,10 @@ use std::collections::BTreeSet;
use anyhow::anyhow;
use radicle::cob::patch::PatchId;
-use radicle::cob::{patch, Label};
+use radicle::cob::{Label, patch};
use radicle::patch::cache::Patches as _;
use radicle::storage::git::transport;
-use radicle::{prelude::*, Node};
+use radicle::{Node, prelude::*};
use crate::git::Rev;
use crate::node;
diff --git a/crates/radicle-cli/src/commands/patch/cache.rs b/crates/radicle-cli/src/commands/patch/cache.rs
index b04f5a006..f04e1c45c 100644
--- a/crates/radicle-cli/src/commands/patch/cache.rs
+++ b/crates/radicle-cli/src/commands/patch/cache.rs
@@ -1,9 +1,9 @@
use std::ops::ControlFlow;
+use radicle::Profile;
use radicle::patch::PatchId;
-use radicle::storage::git::Repository;
use radicle::storage::ReadStorage as _;
-use radicle::Profile;
+use radicle::storage::git::Repository;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/checkout.rs b/crates/radicle-cli/src/commands/patch/checkout.rs
index ef1b400ab..f49a4323d 100644
--- a/crates/radicle-cli/src/commands/patch/checkout.rs
+++ b/crates/radicle-cli/src/commands/patch/checkout.rs
@@ -5,10 +5,10 @@ use radicle::cob::patch::RevisionId;
use radicle::git::fmt::Qualified;
use radicle::git::fmt::RefString;
use radicle::git::raw::ErrorExt as _;
-use radicle::patch::cache::Patches as _;
use radicle::patch::PatchId;
+use radicle::patch::cache::Patches as _;
use radicle::storage::git::Repository;
-use radicle::{git, rad, Profile};
+use radicle::{Profile, git, rad};
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/comment/edit.rs b/crates/radicle-cli/src/commands/patch/comment/edit.rs
index eda591d06..b8d428462 100644
--- a/crates/radicle-cli/src/commands/patch/comment/edit.rs
+++ b/crates/radicle-cli/src/commands/patch/comment/edit.rs
@@ -1,12 +1,12 @@
use anyhow::anyhow;
+use radicle::Profile;
use radicle::cob;
use radicle::cob::patch;
use radicle::cob::thread;
-use radicle::patch::cache::Patches as _;
use radicle::patch::ByRevision;
+use radicle::patch::cache::Patches as _;
use radicle::storage::git::Repository;
-use radicle::Profile;
use crate::git;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/comment/react.rs b/crates/radicle-cli/src/commands/patch/comment/react.rs
index 586fa49cf..3f5f667b4 100644
--- a/crates/radicle-cli/src/commands/patch/comment/react.rs
+++ b/crates/radicle-cli/src/commands/patch/comment/react.rs
@@ -1,13 +1,13 @@
use anyhow::anyhow;
+use radicle::Profile;
use radicle::cob;
+use radicle::cob::Reaction;
use radicle::cob::patch;
use radicle::cob::thread;
-use radicle::cob::Reaction;
-use radicle::patch::cache::Patches as _;
use radicle::patch::ByRevision;
+use radicle::patch::cache::Patches as _;
use radicle::storage::git::Repository;
-use radicle::Profile;
use crate::git;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/comment/redact.rs b/crates/radicle-cli/src/commands/patch/comment/redact.rs
index b8ada9b45..d6de9c3cf 100644
--- a/crates/radicle-cli/src/commands/patch/comment/redact.rs
+++ b/crates/radicle-cli/src/commands/patch/comment/redact.rs
@@ -1,12 +1,12 @@
use anyhow::anyhow;
+use radicle::Profile;
use radicle::cob;
use radicle::cob::patch;
use radicle::cob::thread;
-use radicle::patch::cache::Patches as _;
use radicle::patch::ByRevision;
+use radicle::patch::cache::Patches as _;
use radicle::storage::git::Repository;
-use radicle::Profile;
use crate::git;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/edit.rs b/crates/radicle-cli/src/commands/patch/edit.rs
index d7e4ccff5..4e0c7b585 100644
--- a/crates/radicle-cli/src/commands/patch/edit.rs
+++ b/crates/radicle-cli/src/commands/patch/edit.rs
@@ -1,8 +1,8 @@
use super::*;
use radicle::cob;
-use radicle::cob::patch;
use radicle::cob::Title;
+use radicle::cob::patch;
use radicle::crypto;
use radicle::node::device::Device;
use radicle::prelude::*;
diff --git a/crates/radicle-cli/src/commands/patch/list.rs b/crates/radicle-cli/src/commands/patch/list.rs
index ff9f2d455..e3caca44a 100644
--- a/crates/radicle-cli/src/commands/patch/list.rs
+++ b/crates/radicle-cli/src/commands/patch/list.rs
@@ -7,9 +7,9 @@ use radicle::prelude::*;
use radicle::profile::Profile;
use radicle::storage::git::Repository;
+use term::Element as _;
use term::format::Author;
use term::table::{Table, TableOptions};
-use term::Element as _;
use crate::terminal as term;
use crate::terminal::patch as common;
diff --git a/crates/radicle-cli/src/commands/patch/react.rs b/crates/radicle-cli/src/commands/patch/react.rs
index 132659b50..400ea7bc6 100644
--- a/crates/radicle-cli/src/commands/patch/react.rs
+++ b/crates/radicle-cli/src/commands/patch/react.rs
@@ -1,11 +1,11 @@
use anyhow::anyhow;
+use radicle::Profile;
use radicle::cob;
-use radicle::cob::{patch, Reaction};
-use radicle::patch::cache::Patches as _;
+use radicle::cob::{Reaction, patch};
use radicle::patch::ByRevision;
+use radicle::patch::cache::Patches as _;
use radicle::storage::git::Repository;
-use radicle::Profile;
use crate::git;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/resolve.rs b/crates/radicle-cli/src/commands/patch/resolve.rs
index e7b87f9a3..08f341670 100644
--- a/crates/radicle-cli/src/commands/patch/resolve.rs
+++ b/crates/radicle-cli/src/commands/patch/resolve.rs
@@ -1,9 +1,9 @@
use anyhow::anyhow;
+use radicle::Profile;
use radicle::cob::thread::CommentId;
use radicle::patch::{self, PatchId};
-use radicle::patch::{cache::Patches as _, ReviewId};
+use radicle::patch::{ReviewId, cache::Patches as _};
use radicle::storage::git::Repository;
-use radicle::Profile;
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/patch/review.rs b/crates/radicle-cli/src/commands/patch/review.rs
index 5e3a398a4..07e594bd4 100644
--- a/crates/radicle-cli/src/commands/patch/review.rs
+++ b/crates/radicle-cli/src/commands/patch/review.rs
@@ -1,6 +1,6 @@
mod builder;
-use anyhow::{anyhow, Context};
+use anyhow::{Context, anyhow};
use radicle::cob::patch::{PatchId, RevisionId, Verdict};
use radicle::git;
diff --git a/crates/radicle-cli/src/commands/patch/review/builder.rs b/crates/radicle-cli/src/commands/patch/review/builder.rs
index 226637d65..b7c9a4c73 100644
--- a/crates/radicle-cli/src/commands/patch/review/builder.rs
+++ b/crates/radicle-cli/src/commands/patch/review/builder.rs
@@ -26,7 +26,7 @@ use radicle::git;
use radicle::git::Oid;
use radicle::node::device::Device;
use radicle::prelude::*;
-use radicle::storage::git::{cob::DraftStore, Repository};
+use radicle::storage::git::{Repository, cob::DraftStore};
use radicle_surf::diff::*;
use radicle_term::{Element, VStack};
@@ -636,16 +636,17 @@ impl<'a> ReviewBuilder<'a> {
} else {
Box::new(io::stderr().lock())
};
- let mut brain = match Brain::load(self.patch_id, signer.public_key(), repo) { Ok(b) => {
- term::success!(
- "Loaded existing review {} for patch {}",
- term::format::secondary(term::format::parens(term::format::oid(b.head.id()))),
- term::format::tertiary(&patch_id)
- );
- b
- } _ => {
- Brain::new(self.patch_id, signer.public_key(), base, repo)?
- }};
+ let mut brain = match Brain::load(self.patch_id, signer.public_key(), repo) {
+ Ok(b) => {
+ term::success!(
+ "Loaded existing review {} for patch {}",
+ term::format::secondary(term::format::parens(term::format::oid(b.head.id()))),
+ term::format::tertiary(&patch_id)
+ );
+ b
+ }
+ _ => Brain::new(self.patch_id, signer.public_key(), base, repo)?,
+ };
let diff = self.diff(&brain.accepted, &tree, repo, opts)?;
let drafts = DraftStore::new(self.repo, *signer.public_key());
let mut patches = cob::patch::Cache::no_cache(&drafts)?;
diff --git a/crates/radicle-cli/src/commands/publish.rs b/crates/radicle-cli/src/commands/publish.rs
index aca4b5d87..0cf3f3cf2 100644
--- a/crates/radicle-cli/src/commands/publish.rs
+++ b/crates/radicle-cli/src/commands/publish.rs
@@ -1,6 +1,6 @@
mod args;
-use anyhow::{anyhow, Context as _};
+use anyhow::{Context as _, anyhow};
use radicle::cob;
use radicle::identity::{Identity, Visibility};
diff --git a/crates/radicle-cli/src/commands/publish/args.rs b/crates/radicle-cli/src/commands/publish/args.rs
index ee0385af7..bebdbc0ea 100644
--- a/crates/radicle-cli/src/commands/publish/args.rs
+++ b/crates/radicle-cli/src/commands/publish/args.rs
@@ -27,8 +27,8 @@ pub struct Args {
#[cfg(test)]
mod test {
use super::Args;
- use clap::error::ErrorKind;
use clap::Parser;
+ use clap::error::ErrorKind;
#[test]
fn should_parse_rid_non_urn() {
diff --git a/crates/radicle-cli/src/commands/remote/add.rs b/crates/radicle-cli/src/commands/remote/add.rs
index 7634eff3c..f130e669a 100644
--- a/crates/radicle-cli/src/commands/remote/add.rs
+++ b/crates/radicle-cli/src/commands/remote/add.rs
@@ -1,9 +1,9 @@
use std::str::FromStr;
+use radicle::Profile;
use radicle::git;
use radicle::git::fmt::RefString;
use radicle::prelude::*;
-use radicle::Profile;
use radicle_crypto::PublicKey;
use crate::commands::checkout;
diff --git a/crates/radicle-cli/src/commands/remote/list.rs b/crates/radicle-cli/src/commands/remote/list.rs
index 7356cdd11..1a4e997f6 100644
--- a/crates/radicle-cli/src/commands/remote/list.rs
+++ b/crates/radicle-cli/src/commands/remote/list.rs
@@ -1,10 +1,10 @@
use std::collections::HashSet;
+use radicle::Profile;
use radicle::git::Url;
use radicle::identity::{Did, RepoId};
use radicle::node::{Alias, AliasStore as _, NodeId};
use radicle::storage::ReadStorage as _;
-use radicle::Profile;
use radicle_term::{Element, Table};
use crate::git;
diff --git a/crates/radicle-cli/src/commands/seed.rs b/crates/radicle-cli/src/commands/seed.rs
index 05294b130..fa2799fba 100644
--- a/crates/radicle-cli/src/commands/seed.rs
+++ b/crates/radicle-cli/src/commands/seed.rs
@@ -1,9 +1,9 @@
mod args;
+use radicle::node::Handle;
use radicle::node::policy;
use radicle::node::policy::{Policy, Scope};
-use radicle::node::Handle;
-use radicle::{prelude::*, Node};
+use radicle::{Node, prelude::*};
use radicle_term::Element as _;
use crate::commands::sync;
diff --git a/crates/radicle-cli/src/commands/sync.rs b/crates/radicle-cli/src/commands/sync.rs
index 136619875..b0806fcd9 100644
--- a/crates/radicle-cli/src/commands/sync.rs
+++ b/crates/radicle-cli/src/commands/sync.rs
@@ -5,13 +5,13 @@ use std::collections::BTreeMap;
use std::collections::HashSet;
use std::time;
-use anyhow::{anyhow, Context as _};
+use anyhow::{Context as _, anyhow};
use radicle::node;
+use radicle::node::SyncedAt;
use radicle::node::address::Store;
use radicle::node::sync;
use radicle::node::sync::fetch::SuccessfulOutcome;
-use radicle::node::SyncedAt;
use radicle::node::{AliasStore, Handle as _, Node, Seed, SyncStatus};
use radicle::prelude::{NodeId, Profile, RepoId};
use radicle::storage::ReadRepository;
diff --git a/crates/radicle-cli/src/commands/sync/args.rs b/crates/radicle-cli/src/commands/sync/args.rs
index 0d0ca19d4..28f7e2717 100644
--- a/crates/radicle-cli/src/commands/sync/args.rs
+++ b/crates/radicle-cli/src/commands/sync/args.rs
@@ -4,14 +4,14 @@ use std::time;
use clap::{Parser, Subcommand, ValueEnum};
use radicle::{
- node::{sync, NodeId},
+ node::{NodeId, sync},
prelude::RepoId,
storage::refs,
};
use crate::common_args::{
- SignedReferencesFeatureLevel, SignedReferencesFeatureLevelParser,
- ABOUT_FETCH_SIGNED_REFERENCES_FEATURE_LEVEL_MINIMUM,
+ ABOUT_FETCH_SIGNED_REFERENCES_FEATURE_LEVEL_MINIMUM, SignedReferencesFeatureLevel,
+ SignedReferencesFeatureLevelParser,
};
use crate::node::SyncSettings;
diff --git a/crates/radicle-cli/src/commands/unseed.rs b/crates/radicle-cli/src/commands/unseed.rs
index 9bac37817..df9fdfd47 100644
--- a/crates/radicle-cli/src/commands/unseed.rs
+++ b/crates/radicle-cli/src/commands/unseed.rs
@@ -1,6 +1,6 @@
pub mod args;
-use radicle::{prelude::*, Node};
+use radicle::{Node, prelude::*};
use crate::terminal as term;
diff --git a/crates/radicle-cli/src/commands/watch.rs b/crates/radicle-cli/src/commands/watch.rs
index bd72a33f3..d1e8b0217 100644
--- a/crates/radicle-cli/src/commands/watch.rs
+++ b/crates/radicle-cli/src/commands/watch.rs
@@ -2,7 +2,7 @@ mod args;
use std::{thread, time};
-use anyhow::{anyhow, Context as _};
+use anyhow::{Context as _, anyhow};
use radicle::git;
use radicle::git::raw::ErrorExt as _;
diff --git a/crates/radicle-cli/src/git.rs b/crates/radicle-cli/src/git.rs
index 7d6888432..2144a03d5 100644
--- a/crates/radicle-cli/src/git.rs
+++ b/crates/radicle-cli/src/git.rs
@@ -14,21 +14,21 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::str::FromStr;
-use anyhow::anyhow;
use anyhow::Context as _;
+use anyhow::anyhow;
use thiserror::Error;
use radicle::crypto::ssh;
use radicle::git;
-use radicle::git::{Version, VERSION_REQUIRED};
+use radicle::git::{VERSION_REQUIRED, Version};
use radicle::prelude::{NodeId, RepoId};
use radicle::storage::git::transport;
pub use radicle::git::Oid;
pub use radicle::git::raw::{
- build::CheckoutBuilder, AnnotatedCommit, Commit, Direction, ErrorCode, ErrorExt as _,
- MergeAnalysis, MergeOptions, Reference, Repository, Signature,
+ AnnotatedCommit, Commit, Direction, ErrorCode, ErrorExt as _, MergeAnalysis, MergeOptions,
+ Reference, Repository, Signature, build::CheckoutBuilder,
};
pub const CONFIG_COMMIT_GPG_SIGN: &str = "commit.gpgsign";
diff --git a/crates/radicle-cli/src/git/ddiff.rs b/crates/radicle-cli/src/git/ddiff.rs
index 7157beeef..0938adb32 100644
--- a/crates/radicle-cli/src/git/ddiff.rs
+++ b/crates/radicle-cli/src/git/ddiff.rs
@@ -305,7 +305,7 @@ impl unified_diff::Decode for DiffModification {
(v1, v2) => {
return Err(unified_diff::Error::syntax(format!(
"indicator character expected, but got '{v1}{v2}'"
- )))
+ )));
}
};
diff --git a/crates/radicle-cli/src/git/pretty_diff.rs b/crates/radicle-cli/src/git/pretty_diff.rs
index dc306b93e..d7eaae92a 100644
--- a/crates/radicle-cli/src/git/pretty_diff.rs
+++ b/crates/radicle-cli/src/git/pretty_diff.rs
@@ -7,8 +7,8 @@ use radicle_surf::diff;
use radicle_surf::diff::{Added, Copied, Deleted, FileStats, Hunks, Modified, Moved};
use radicle_surf::diff::{Diff, DiffContent, FileDiff, Hunk, Modification};
use radicle_term as term;
-use term::cell::Cell;
use term::VStack;
+use term::cell::Cell;
use crate::git::unified_diff::FileHeader;
use crate::terminal::highlight::{Highlighter, Theme};
diff --git a/crates/radicle-cli/src/git/unified_diff.rs b/crates/radicle-cli/src/git/unified_diff.rs
index 3843d0eb8..e46868410 100644
--- a/crates/radicle-cli/src/git/unified_diff.rs
+++ b/crates/radicle-cli/src/git/unified_diff.rs
@@ -533,7 +533,7 @@ impl Decode for Modification {
Some(c) => {
return Err(Error::syntax(format!(
"indicator character expected, but got '{c}'",
- )))
+ )));
}
None => return Err(Error::UnexpectedEof),
};
diff --git a/crates/radicle-cli/src/main.rs b/crates/radicle-cli/src/main.rs
index 0ed1fe02d..9f324ebb4 100644
--- a/crates/radicle-cli/src/main.rs
+++ b/crates/radicle-cli/src/main.rs
@@ -5,8 +5,8 @@ use std::io::Write;
use std::{io::ErrorKind, process};
use anyhow::anyhow;
-use clap::builder::styling::AnsiColor;
use clap::builder::Styles;
+use clap::builder::styling::AnsiColor;
use clap::{CommandFactory as _, Parser, Subcommand};
use radicle::version::Version;
diff --git a/crates/radicle-cli/src/node.rs b/crates/radicle-cli/src/node.rs
index ffef201f1..5165c5233 100644
--- a/crates/radicle-cli/src/node.rs
+++ b/crates/radicle-cli/src/node.rs
@@ -4,7 +4,7 @@ use std::io::Write;
use radicle::node::sync;
use radicle::node::{Handle as _, NodeId};
-use radicle::storage::{refs, ReadRepository, RepositoryError};
+use radicle::storage::{ReadRepository, RepositoryError, refs};
use radicle::{Node, Profile};
use crate::terminal as term;
@@ -136,7 +136,9 @@ pub fn announce<R: ReadRepository>(
match announce_(repo, settings, reporting, node, profile) {
Ok(result) => Ok(result),
Err(e) if e.is_connection_err() => {
- term::hint("Node is stopped. To announce changes to the network, start it with `rad node start`.");
+ term::hint(
+ "Node is stopped. To announce changes to the network, start it with `rad node start`.",
+ );
Ok(None)
}
Err(e) => Err(e),
diff --git a/crates/radicle-cli/src/terminal/args.rs b/crates/radicle-cli/src/terminal/args.rs
index 715531049..d1e6e5ab8 100644
--- a/crates/radicle-cli/src/terminal/args.rs
+++ b/crates/radicle-cli/src/terminal/args.rs
@@ -32,7 +32,9 @@ pub(crate) enum BlockTarget {
}
#[derive(Debug, Error)]
-#[error("invalid repository or node specified (RID parsing failed with: '{repo}', NID parsing failed with: '{node}'))")]
+#[error(
+ "invalid repository or node specified (RID parsing failed with: '{repo}', NID parsing failed with: '{node}'))"
+)]
pub(crate) struct BlockTargetParseError {
repo: radicle::identity::IdError,
node: radicle::crypto::PublicKeyError,
@@ -62,7 +64,9 @@ impl std::fmt::Display for BlockTarget {
}
#[derive(Debug, thiserror::Error)]
-#[error("invalid Node ID specified (Node ID parsing failed with: '{nid}', DID parsing failed with: '{did}'))")]
+#[error(
+ "invalid Node ID specified (Node ID parsing failed with: '{nid}', DID parsing failed with: '{did}'))"
+)]
pub(crate) struct NodeIdParseError {
did: radicle::identity::did::DidError,
nid: radicle::crypto::PublicKeyError,
diff --git a/crates/radicle-cli/src/terminal/cob.rs b/crates/radicle-cli/src/terminal/cob.rs
index f2f2d2502..81c4b20ac 100644
--- a/crates/radicle-cli/src/terminal/cob.rs
+++ b/crates/radicle-cli/src/terminal/cob.rs
@@ -1,4 +1,5 @@
use radicle::{
+ Profile,
cob::{
self,
cache::{MigrateCallback, MigrateProgress},
@@ -6,7 +7,6 @@ use radicle::{
prelude::NodeId,
profile,
storage::ReadRepository,
- Profile,
};
use radicle_term as term;
diff --git a/crates/radicle-cli/src/terminal/comment.rs b/crates/radicle-cli/src/terminal/comment.rs
index 8b9c88cb2..b5d0dd1c7 100644
--- a/crates/radicle-cli/src/terminal/comment.rs
+++ b/crates/radicle-cli/src/terminal/comment.rs
@@ -1,5 +1,5 @@
-use radicle::cob::thread::{Comment, CommentId};
use radicle::Profile;
+use radicle::cob::thread::{Comment, CommentId};
use crate::terminal as term;
use crate::terminal::format::Author;
diff --git a/crates/radicle-cli/src/terminal/format.rs b/crates/radicle-cli/src/terminal/format.rs
index f5b702f39..71b5e40ff 100644
--- a/crates/radicle-cli/src/terminal/format.rs
+++ b/crates/radicle-cli/src/terminal/format.rs
@@ -3,14 +3,14 @@ use std::fmt;
use localtime::LocalTime;
pub use radicle_term::format::*;
-pub use radicle_term::{style, Paint};
+pub use radicle_term::{Paint, style};
use radicle::cob::ObjectId;
use radicle::identity::Visibility;
use radicle::node::policy::Policy;
use radicle::node::{Alias, AliasStore, NodeId};
use radicle::prelude::Did;
-use radicle::profile::{env, Profile};
+use radicle::profile::{Profile, env};
use radicle::storage::RefUpdate;
use radicle_term::element::Line;
diff --git a/crates/radicle-cli/src/terminal/io.rs b/crates/radicle-cli/src/terminal/io.rs
index e37d8b3d6..3ba25c739 100644
--- a/crates/radicle-cli/src/terminal/io.rs
+++ b/crates/radicle-cli/src/terminal/io.rs
@@ -1,12 +1,12 @@
use anyhow::anyhow;
+use radicle::cob::Reaction;
use radicle::cob::issue::Issue;
use radicle::cob::thread::{Comment, CommentId};
-use radicle::cob::Reaction;
-use radicle::crypto::ssh::keystore::MemorySigner;
use radicle::crypto::ssh::Keystore;
+use radicle::crypto::ssh::keystore::MemorySigner;
use radicle::node::device::{BoxedDevice, Device};
-use radicle::profile::env::RAD_PASSPHRASE;
use radicle::profile::Profile;
+use radicle::profile::env::RAD_PASSPHRASE;
pub use radicle_term::io::*;
pub use radicle_term::spinner;
diff --git a/crates/radicle-cli/src/terminal/issue.rs b/crates/radicle-cli/src/terminal/issue.rs
index d8dab1987..94410f11d 100644
--- a/crates/radicle-cli/src/terminal/issue.rs
+++ b/crates/radicle-cli/src/terminal/issue.rs
@@ -3,14 +3,14 @@ use std::io;
use radicle_term::table::TableOptions;
use radicle_term::{Table, VStack};
+use radicle::Profile;
use radicle::cob;
use radicle::cob::issue;
use radicle::cob::issue::CloseReason;
-use radicle::Profile;
use crate::terminal as term;
-use crate::terminal::format::Author;
use crate::terminal::Element;
+use crate::terminal::format::Author;
pub const OPEN_MSG: &str = r#"
<!--
diff --git a/crates/radicle-cli/src/terminal/patch.rs b/crates/radicle-cli/src/terminal/patch.rs
index 5d5599ada..8472accc5 100644
--- a/crates/radicle-cli/src/terminal/patch.rs
+++ b/crates/radicle-cli/src/terminal/patch.rs
@@ -9,13 +9,13 @@ use std::io::IsTerminal as _;
use thiserror::Error;
use radicle::cob;
-use radicle::cob::patch;
use radicle::cob::Title;
+use radicle::cob::patch;
use radicle::git;
use radicle::patch::{Patch, PatchId};
use radicle::prelude::Profile;
-use radicle::storage::git::Repository;
use radicle::storage::WriteRepository as _;
+use radicle::storage::git::Repository;
use crate::terminal as term;
use crate::terminal::Element;
diff --git a/crates/radicle-cli/src/warning.rs b/crates/radicle-cli/src/warning.rs
index d1804421a..e164ae0e8 100644
--- a/crates/radicle-cli/src/warning.rs
+++ b/crates/radicle-cli/src/warning.rs
@@ -1,8 +1,8 @@
use std::collections::HashMap;
use std::sync::LazyLock;
-use radicle::node::config::ConnectAddress;
use radicle::node::Address;
+use radicle::node::config::ConnectAddress;
use radicle::profile::Config;
static NODES_RENAMED: LazyLock<HashMap<Address, Address>> = LazyLock::new(|| {
diff --git a/crates/radicle-cli/tests/commands/clone.rs b/crates/radicle-cli/tests/commands/clone.rs
index 59932b823..6938ebcce 100644
--- a/crates/radicle-cli/tests/commands/clone.rs
+++ b/crates/radicle-cli/tests/commands/clone.rs
@@ -1,10 +1,10 @@
use crate::test;
use crate::util::environment::Environment;
use radicle::node;
+use radicle::node::UserAgent;
use radicle::node::address::Store as _;
use radicle::node::policy::Scope;
use radicle::node::routing::Store as _;
-use radicle::node::UserAgent;
use radicle::node::{Alias, Handle as _};
use radicle::prelude::{NodeId, RepoId};
use radicle::storage::ReadStorage as _;
diff --git a/crates/radicle-cli/tests/commands/id.rs b/crates/radicle-cli/tests/commands/id.rs
index 672613c7b..24f0e8c27 100644
--- a/crates/radicle-cli/tests/commands/id.rs
+++ b/crates/radicle-cli/tests/commands/id.rs
@@ -1,9 +1,9 @@
use crate::test;
use crate::util::environment::Environment;
use crate::util::formula::formula;
-use radicle::node::policy::Scope;
-use radicle::node::Event;
use radicle::node::DEFAULT_TIMEOUT;
+use radicle::node::Event;
+use radicle::node::policy::Scope;
use radicle::node::{Alias, Handle as _};
use radicle::prelude::RepoId;
use radicle::storage::ReadStorage as _;
diff --git a/crates/radicle-cli/tests/commands/node.rs b/crates/radicle-cli/tests/commands/node.rs
index 9cbf86fd5..9b80ca096 100644
--- a/crates/radicle-cli/tests/commands/node.rs
+++ b/crates/radicle-cli/tests/commands/node.rs
@@ -1,9 +1,9 @@
use crate::test;
use crate::util::environment::Environment;
-use radicle::node::address::Store as _;
-use radicle::node::config::DefaultSeedingPolicy;
use radicle::node::Address;
use radicle::node::UserAgent;
+use radicle::node::address::Store as _;
+use radicle::node::config::DefaultSeedingPolicy;
use radicle::node::{Alias, Handle as _};
use radicle::test::fixtures;
use radicle_localtime::LocalTime;
diff --git a/crates/radicle-cli/tests/commands/patch.rs b/crates/radicle-cli/tests/commands/patch.rs
index 4f7fb7f9d..341eb0acf 100644
--- a/crates/radicle-cli/tests/commands/patch.rs
+++ b/crates/radicle-cli/tests/commands/patch.rs
@@ -1,8 +1,8 @@
use crate::test;
use crate::util::environment::Environment;
use crate::util::formula::formula;
-use radicle::node::policy::Scope;
use radicle::node::Handle as _;
+use radicle::node::policy::Scope;
use radicle::prelude::RepoId;
use radicle::test::fixtures;
use std::str::FromStr;
diff --git a/crates/radicle-cli/tests/commands/policy.rs b/crates/radicle-cli/tests/commands/policy.rs
index 8ca61ef7e..5fbd2a766 100644
--- a/crates/radicle-cli/tests/commands/policy.rs
+++ b/crates/radicle-cli/tests/commands/policy.rs
@@ -1,8 +1,8 @@
use crate::test;
use crate::util::environment::Environment;
use radicle::node;
-use radicle::node::config::DefaultSeedingPolicy;
use radicle::node::Alias;
+use radicle::node::config::DefaultSeedingPolicy;
#[test]
fn rad_seed_and_follow() {
diff --git a/crates/radicle-cli/tests/commands/sync.rs b/crates/radicle-cli/tests/commands/sync.rs
index 48e6379d9..f39d292f2 100644
--- a/crates/radicle-cli/tests/commands/sync.rs
+++ b/crates/radicle-cli/tests/commands/sync.rs
@@ -1,8 +1,8 @@
use std::str::FromStr as _;
+use radicle::node::Handle as _;
use radicle::node::config::DefaultSeedingPolicy;
use radicle::node::policy::Scope;
-use radicle::node::Handle as _;
use radicle::prelude::RepoId;
use radicle::storage::{ReadStorage as _, RemoteRepository as _};
diff --git a/crates/radicle-cli/tests/commands/utility.rs b/crates/radicle-cli/tests/commands/utility.rs
index 65935c1e0..40cebaa51 100644
--- a/crates/radicle-cli/tests/commands/utility.rs
+++ b/crates/radicle-cli/tests/commands/utility.rs
@@ -1,7 +1,7 @@
use std::str::FromStr as _;
-use radicle::node::policy::Scope;
use radicle::node::DEFAULT_TIMEOUT;
+use radicle::node::policy::Scope;
use radicle::node::{Alias, Handle as _};
use radicle::prelude::RepoId;
use radicle::profile;
@@ -36,11 +36,13 @@ fn rad_config() {
let mut environment = Environment::new();
let alias = Alias::new("alice");
let profile = environment.profile_with(profile::Config {
- preferred_seeds: vec![radicle::node::config::seeds::RADICLE_NODE_BOOTSTRAP_IRIS
- .clone()
- .first()
- .unwrap()
- .clone()],
+ preferred_seeds: vec![
+ radicle::node::config::seeds::RADICLE_NODE_BOOTSTRAP_IRIS
+ .clone()
+ .first()
+ .unwrap()
+ .clone(),
+ ],
..profile::Config::new(alias)
});
let working = tempfile::tempdir().unwrap();
diff --git a/crates/radicle-cli/tests/util/environment.rs b/crates/radicle-cli/tests/util/environment.rs
index 294171325..e01a89a21 100644
--- a/crates/radicle-cli/tests/util/environment.rs
+++ b/crates/radicle-cli/tests/util/environment.rs
@@ -2,7 +2,7 @@ use std::path::PathBuf;
use std::str::FromStr;
use radicle::cob::cache::COBS_DB_FILE;
-use radicle::crypto::ssh::{keystore::MemorySigner, Keystore};
+use radicle::crypto::ssh::{Keystore, keystore::MemorySigner};
use radicle::crypto::{KeyPair, Seed};
use radicle::git;
use radicle::node::policy::store as policy;
@@ -47,10 +47,9 @@ pub(crate) mod config {
},
..Limits::default()
},
- external_addresses: vec![node::Address::from_str(&format!(
- "{alias}.radicle.example:8776"
- ))
- .unwrap()],
+ external_addresses: vec![
+ node::Address::from_str(&format!("{alias}.radicle.example:8776")).unwrap(),
+ ],
..node(alias)
}
}
diff --git a/crates/radicle-cob/src/backend/git/change.rs b/crates/radicle-cob/src/backend/git/change.rs
index 9d36dfe7d..9b13f2f01 100644
--- a/crates/radicle-cob/src/backend/git/change.rs
+++ b/crates/radicle-cob/src/backend/git/change.rs
@@ -15,10 +15,10 @@ use crate::change::store::Version;
use crate::signatures;
use crate::trailers::CommitTrailer;
use crate::{
- change,
- change::{store, Contents, Entry, Timestamp},
+ Embed, change,
+ change::{Contents, Entry, Timestamp, store},
signatures::{ExtendedSignature, Signatures},
- trailers, Embed,
+ trailers,
};
use super::commit::Commit;
diff --git a/crates/radicle-cob/src/backend/git/commit.rs b/crates/radicle-cob/src/backend/git/commit.rs
index 462b455b7..1d7f7f99a 100644
--- a/crates/radicle-cob/src/backend/git/commit.rs
+++ b/crates/radicle-cob/src/backend/git/commit.rs
@@ -6,9 +6,9 @@ use std::str::{self, FromStr};
use git2::{ObjectType, Oid};
use metadata::author::Author;
+use metadata::commit::CommitData;
use metadata::commit::headers::Headers;
use metadata::commit::trailers::OwnedTrailer;
-use metadata::commit::CommitData;
use trailers::Trailers;
diff --git a/crates/radicle-cob/src/change/store.rs b/crates/radicle-cob/src/change/store.rs
index feffd98b8..b4e9485cd 100644
--- a/crates/radicle-cob/src/change/store.rs
+++ b/crates/radicle-cob/src/change/store.rs
@@ -7,7 +7,7 @@ use oid::Oid;
use serde::{Deserialize, Serialize};
use crate::object::collaboration::error::{Create, Update};
-use crate::{signatures, TypeName};
+use crate::{TypeName, signatures};
/// Change entry storage.
pub trait Storage {
diff --git a/crates/radicle-cob/src/change_graph.rs b/crates/radicle-cob/src/change_graph.rs
index 488521a3b..6dbfbdf69 100644
--- a/crates/radicle-cob/src/change_graph.rs
+++ b/crates/radicle-cob/src/change_graph.rs
@@ -7,8 +7,8 @@ use dag::Dag;
use oid::Oid;
use crate::{
- change, object, object::collaboration::Evaluate, signatures::ExtendedSignature,
- CollaborativeObject, Entry, EntryId, History, ObjectId, TypeName,
+ CollaborativeObject, Entry, EntryId, History, ObjectId, TypeName, change, object,
+ object::collaboration::Evaluate, signatures::ExtendedSignature,
};
#[derive(Debug, thiserror::Error)]
diff --git a/crates/radicle-cob/src/lib.rs b/crates/radicle-cob/src/lib.rs
index d49135b74..e400f9ba4 100644
--- a/crates/radicle-cob/src/lib.rs
+++ b/crates/radicle-cob/src/lib.rs
@@ -77,8 +77,8 @@ mod change_graph;
mod trailers;
pub mod change;
-pub use change::store::{Contents, Embed, EntryId, Manifest, Version};
pub use change::Entry;
+pub use change::store::{Contents, Embed, EntryId, Manifest, Version};
pub mod history;
pub use history::History;
@@ -91,8 +91,8 @@ pub use type_name::TypeName;
pub mod object;
pub use object::{
- create, get, info, list, remove, update, CollaborativeObject, Create, Evaluate, ObjectId,
- Update, Updated,
+ CollaborativeObject, Create, Evaluate, ObjectId, Update, Updated, create, get, info, list,
+ remove, update,
};
#[cfg(test)]
diff --git a/crates/radicle-cob/src/object.rs b/crates/radicle-cob/src/object.rs
index dfb50a0c1..9b2dbaad2 100644
--- a/crates/radicle-cob/src/object.rs
+++ b/crates/radicle-cob/src/object.rs
@@ -9,8 +9,8 @@ use thiserror::Error;
pub mod collaboration;
pub use collaboration::{
- create, get, info, list, parse_refstr, remove, update, CollaborativeObject, Create, Evaluate,
- Update, Updated,
+ CollaborativeObject, Create, Evaluate, Update, Updated, create, get, info, list, parse_refstr,
+ remove, update,
};
pub mod storage;
diff --git a/crates/radicle-cob/src/object/collaboration.rs b/crates/radicle-cob/src/object/collaboration.rs
index 11cc2dbc1..90f23017a 100644
--- a/crates/radicle-cob/src/object/collaboration.rs
+++ b/crates/radicle-cob/src/object/collaboration.rs
@@ -6,12 +6,12 @@ use nonempty::NonEmpty;
use oid::Oid;
use crate::change::store::{Manifest, Version};
-use crate::{change, Entry, History, ObjectId, TypeName};
+use crate::{Entry, History, ObjectId, TypeName, change};
pub mod error;
mod create;
-pub use create::{create, Create};
+pub use create::{Create, create};
mod get;
pub use get::get;
@@ -25,7 +25,7 @@ mod remove;
pub use remove::remove;
mod update;
-pub use update::{update, Update, Updated};
+pub use update::{Update, Updated, update};
/// A collaborative object
#[derive(Debug, Clone, PartialEq, Eq)]
diff --git a/crates/radicle-cob/src/object/collaboration/get.rs b/crates/radicle-cob/src/object/collaboration/get.rs
index ab7beddbb..66bce507e 100644
--- a/crates/radicle-cob/src/object/collaboration/get.rs
+++ b/crates/radicle-cob/src/object/collaboration/get.rs
@@ -2,7 +2,7 @@
use crypto::ssh::ExtendedSignature;
-use crate::{change_graph::ChangeGraph, CollaborativeObject, Evaluate, ObjectId, TypeName};
+use crate::{CollaborativeObject, Evaluate, ObjectId, TypeName, change_graph::ChangeGraph};
use super::error;
@@ -24,10 +24,10 @@ where
T: Evaluate<S>,
S: crate::object::Storage,
S: crate::change::Storage<
- ObjectId = crate::object::Oid,
- Parent = crate::object::Oid,
- Signatures = ExtendedSignature,
- >,
+ ObjectId = crate::object::Oid,
+ Parent = crate::object::Oid,
+ Signatures = ExtendedSignature,
+ >,
{
let tip_refs = storage
.objects(typename, oid)
diff --git a/crates/radicle-cob/src/object/collaboration/info.rs b/crates/radicle-cob/src/object/collaboration/info.rs
index 08822cde6..89aef0272 100644
--- a/crates/radicle-cob/src/object/collaboration/info.rs
+++ b/crates/radicle-cob/src/object/collaboration/info.rs
@@ -9,7 +9,7 @@ use std::collections::BTreeSet;
use crypto::ssh::ExtendedSignature;
use oid::Oid;
-use crate::{change_graph::ChangeGraph, ObjectId, TypeName};
+use crate::{ObjectId, TypeName, change_graph::ChangeGraph};
use super::error;
@@ -41,10 +41,10 @@ pub fn changegraph<S>(
where
S: crate::object::Storage,
S: crate::change::Storage<
- ObjectId = crate::object::Oid,
- Parent = crate::object::Oid,
- Signatures = ExtendedSignature,
- >,
+ ObjectId = crate::object::Oid,
+ Parent = crate::object::Oid,
+ Signatures = ExtendedSignature,
+ >,
{
let tip_refs = storage
.objects(typename, oid)
diff --git a/crates/radicle-cob/src/object/collaboration/list.rs b/crates/radicle-cob/src/object/collaboration/list.rs
index 33d9c9bbf..04c8b5865 100644
--- a/crates/radicle-cob/src/object/collaboration/list.rs
+++ b/crates/radicle-cob/src/object/collaboration/list.rs
@@ -1,6 +1,6 @@
// Copyright © 2022 The Radicle Link Contributors
-use crate::{change_graph::ChangeGraph, CollaborativeObject, Evaluate, TypeName};
+use crate::{CollaborativeObject, Evaluate, TypeName, change_graph::ChangeGraph};
use super::error;
@@ -19,10 +19,10 @@ where
T: Evaluate<S>,
S: crate::object::Storage,
S: crate::change::Storage<
- ObjectId = crate::object::Oid,
- Parent = crate::object::Oid,
- Signatures = crate::ExtendedSignature,
- >,
+ ObjectId = crate::object::Oid,
+ Parent = crate::object::Oid,
+ Signatures = crate::ExtendedSignature,
+ >,
{
let references = storage
.types(typename)
diff --git a/crates/radicle-cob/src/object/collaboration/update.rs b/crates/radicle-cob/src/object/collaboration/update.rs
index 057b707ce..44bf7fe82 100644
--- a/crates/radicle-cob/src/object/collaboration/update.rs
+++ b/crates/radicle-cob/src/object/collaboration/update.rs
@@ -5,8 +5,8 @@ use nonempty::NonEmpty;
use oid::Oid;
use crate::{
- change, change_graph::ChangeGraph, history::EntryId, CollaborativeObject, Embed, Evaluate,
- ExtendedSignature, ObjectId, TypeName,
+ CollaborativeObject, Embed, Evaluate, ExtendedSignature, ObjectId, TypeName, change,
+ change_graph::ChangeGraph, history::EntryId,
};
use super::error;
diff --git a/crates/radicle-cob/src/signatures.rs b/crates/radicle-cob/src/signatures.rs
index 643cdd210..febdd8d90 100644
--- a/crates/radicle-cob/src/signatures.rs
+++ b/crates/radicle-cob/src/signatures.rs
@@ -7,10 +7,10 @@ use std::{
ops::{Deref, DerefMut},
};
-use crypto::{ssh, PublicKey};
+use crypto::{PublicKey, ssh};
use metadata::commit::{
- headers::Signature::{Pgp, Ssh},
CommitData,
+ headers::Signature::{Pgp, Ssh},
};
pub use ssh::ExtendedSignature;
diff --git a/crates/radicle-cob/src/test/storage.rs b/crates/radicle-cob/src/test/storage.rs
index 78f1f6974..2df1c24c6 100644
--- a/crates/radicle-cob/src/test/storage.rs
+++ b/crates/radicle-cob/src/test/storage.rs
@@ -6,9 +6,9 @@ use fmt::Component;
use tempfile::TempDir;
use crate::{
- change,
+ ObjectId, Store, change,
object::{self, Reference},
- signatures, ObjectId, Store,
+ signatures,
};
pub mod error {
diff --git a/crates/radicle-cob/src/tests.rs b/crates/radicle-cob/src/tests.rs
index ad2411252..48a0d2e54 100644
--- a/crates/radicle-cob/src/tests.rs
+++ b/crates/radicle-cob/src/tests.rs
@@ -2,7 +2,7 @@ use fmt::{Component, RefString};
use radicle_git_ref_format::refname;
-use crate::{object, test::arbitrary::Invalid, ObjectId, TypeName};
+use crate::{ObjectId, TypeName, object, test::arbitrary::Invalid};
#[cfg(feature = "git2")]
mod git {
@@ -10,11 +10,11 @@ mod git {
use crypto::test::signer::MockSigner;
use crypto::{PublicKey, Signer};
- use nonempty::{nonempty, NonEmpty};
+ use nonempty::{NonEmpty, nonempty};
use qcheck::Arbitrary;
use crate::{
- create, get, list, update, Create, Entry, ObjectId, TypeName, Update, Updated, Version,
+ Create, Entry, ObjectId, TypeName, Update, Updated, Version, create, get, list, update,
};
use crate::test;
diff --git a/crates/radicle-cob/src/type_name.rs b/crates/radicle-cob/src/type_name.rs
index 60f86235f..e0ecdef38 100644
--- a/crates/radicle-cob/src/type_name.rs
+++ b/crates/radicle-cob/src/type_name.rs
@@ -116,15 +116,19 @@ mod test {
assert!(TypeName::from_str("abc..ghi").is_err());
assert!(TypeName::from_str("abc.-123.ghi").is_err());
assert!(TypeName::from_str("abc.123-.ghi").is_err());
- assert!(TypeName::from_str(&format!(
- "a.very.long.name.that.exceeds.the.two-hundred-and-fifty-five.length.limit.{}",
- "a".repeat(255)
- ))
- .is_err());
- assert!(TypeName::from_str(&format!(
- "component.exceeds.sixty-three.limit.{}",
- "a".repeat(64)
- ))
- .is_err());
+ assert!(
+ TypeName::from_str(&format!(
+ "a.very.long.name.that.exceeds.the.two-hundred-and-fifty-five.length.limit.{}",
+ "a".repeat(255)
+ ))
+ .is_err()
+ );
+ assert!(
+ TypeName::from_str(&format!(
+ "component.exceeds.sixty-three.limit.{}",
+ "a".repeat(64)
+ ))
+ .is_err()
+ );
}
}
diff --git a/crates/radicle-core/src/repo.rs b/crates/radicle-core/src/repo.rs
index 0648177f3..3d8ab2c1d 100644
--- a/crates/radicle-core/src/repo.rs
+++ b/crates/radicle-core/src/repo.rs
@@ -219,7 +219,7 @@ mod radicle_git_ref_format_impls {
mod serde_impls {
use alloc::string::String;
- use serde::{de, Deserialize, Deserializer, Serialize};
+ use serde::{Deserialize, Deserializer, Serialize, de};
use super::RepoId;
@@ -347,48 +347,72 @@ mod test {
fn invalid() {
assert!("".parse::<RepoId>().is_err());
assert!("not-a-valid-rid".parse::<RepoId>().is_err());
- assert!("xyz:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- .parse::<RepoId>()
- .is_err());
- assert!("RAD:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- .parse::<RepoId>()
- .is_err());
+ assert!(
+ "xyz:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "RAD:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
assert!("rad:".parse::<RepoId>().is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSG0zv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGOzv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGIzv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGlzv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGázv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSG@zv5"
- .parse::<RepoId>()
- .is_err());
- assert!("rad:Z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- .parse::<RepoId>()
- .is_err());
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSG0zv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGOzv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGIzv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGlzv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGázv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSG@zv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad:Z3gqcJUoA1n9HaHKufZs5FCSGazv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
assert!("rad:z3gqcJUoA1n9HaHKuf".parse::<RepoId>().is_err());
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5abcdef"
- .parse::<RepoId>()
- .is_err());
- assert!("rad: z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- .parse::<RepoId>()
- .is_err());
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5abcdef"
+ .parse::<RepoId>()
+ .is_err()
+ );
+ assert!(
+ "rad: z3gqcJUoA1n9HaHKufZs5FCSGazv5"
+ .parse::<RepoId>()
+ .is_err()
+ );
}
#[test]
fn valid() {
- assert!("rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- .parse::<RepoId>()
- .is_ok());
+ assert!(
+ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
+ .parse::<RepoId>()
+ .is_ok()
+ );
assert!("z3gqcJUoA1n9HaHKufZs5FCSGazv5".parse::<RepoId>().is_ok());
assert!("z3XncAdkZjeK9mQS5Sdc4qhw98BUX".parse::<RepoId>().is_ok());
}
diff --git a/crates/radicle-crypto/src/lib.rs b/crates/radicle-crypto/src/lib.rs
index e54cb44db..13cfa9c0e 100644
--- a/crates/radicle-crypto/src/lib.rs
+++ b/crates/radicle-crypto/src/lib.rs
@@ -6,7 +6,7 @@ use ec25519 as ed25519;
use serde::{Deserialize, Serialize};
use thiserror::Error;
-pub use ed25519::{edwards25519, Error, KeyPair, Seed};
+pub use ed25519::{Error, KeyPair, Seed, edwards25519};
pub extern crate signature;
diff --git a/crates/radicle-crypto/src/test/arbitrary.rs b/crates/radicle-crypto/src/test/arbitrary.rs
index 452253ac6..43874c3e6 100644
--- a/crates/radicle-crypto/src/test/arbitrary.rs
+++ b/crates/radicle-crypto/src/test/arbitrary.rs
@@ -1,6 +1,6 @@
use qcheck::Arbitrary;
-use crate::{test::signer::MockSigner, KeyPair, PublicKey, SecretKey, Seed};
+use crate::{KeyPair, PublicKey, SecretKey, Seed, test::signer::MockSigner};
impl Arbitrary for MockSigner {
fn arbitrary(g: &mut qcheck::Gen) -> Self {
diff --git a/crates/radicle-crypto/src/test/signer.rs b/crates/radicle-crypto/src/test/signer.rs
index 3b770bc9e..8a6c397fd 100644
--- a/crates/radicle-crypto/src/test/signer.rs
+++ b/crates/radicle-crypto/src/test/signer.rs
@@ -1,4 +1,4 @@
-use crate::{ssh::ExtendedSignature, KeyPair, PublicKey, SecretKey, Seed, Signature};
+use crate::{KeyPair, PublicKey, SecretKey, Seed, Signature, ssh::ExtendedSignature};
#[derive(Debug, Clone)]
pub struct MockSigner {
diff --git a/crates/radicle-fetch/src/git/mem.rs b/crates/radicle-fetch/src/git/mem.rs
index f04940868..c7715c4c4 100644
--- a/crates/radicle-fetch/src/git/mem.rs
+++ b/crates/radicle-fetch/src/git/mem.rs
@@ -1,7 +1,7 @@
use std::collections::HashMap;
-use radicle::git::fmt::{Component, Qualified, RefString};
use radicle::git::Oid;
+use radicle::git::fmt::{Component, Qualified, RefString};
use radicle::prelude::PublicKey;
use super::refs::{Applied, RefUpdate, Update};
diff --git a/crates/radicle-fetch/src/git/refs/update.rs b/crates/radicle-fetch/src/git/refs/update.rs
index 46e2ede68..318e8b0e6 100644
--- a/crates/radicle-fetch/src/git/refs/update.rs
+++ b/crates/radicle-fetch/src/git/refs/update.rs
@@ -18,8 +18,8 @@
use std::collections::BTreeMap;
use either::Either;
-use radicle::git::fmt::{Namespaced, Qualified};
use radicle::git::Oid;
+use radicle::git::fmt::{Namespaced, Qualified};
use radicle::prelude::PublicKey;
pub use radicle::storage::RefUpdate;
diff --git a/crates/radicle-fetch/src/git/repository.rs b/crates/radicle-fetch/src/git/repository.rs
index 92f1a49a9..a9bbe7229 100644
--- a/crates/radicle-fetch/src/git/repository.rs
+++ b/crates/radicle-fetch/src/git/repository.rs
@@ -3,9 +3,8 @@ pub mod error;
use either::Either;
use radicle::git::raw::ErrorExt as _;
use radicle::git::{
- self,
+ self, Oid,
fmt::{Namespaced, Qualified},
- Oid,
};
use radicle::storage::git::Repository;
diff --git a/crates/radicle-fetch/src/git/repository/error.rs b/crates/radicle-fetch/src/git/repository/error.rs
index fe355448d..0bc692636 100644
--- a/crates/radicle-fetch/src/git/repository/error.rs
+++ b/crates/radicle-fetch/src/git/repository/error.rs
@@ -1,7 +1,6 @@
use radicle::git::{
- self,
+ self, Oid,
fmt::{Namespaced, Qualified},
- Oid,
};
use thiserror::Error;
diff --git a/crates/radicle-fetch/src/handle.rs b/crates/radicle-fetch/src/handle.rs
index 5a51e69b2..01e1c5f5a 100644
--- a/crates/radicle-fetch/src/handle.rs
+++ b/crates/radicle-fetch/src/handle.rs
@@ -1,12 +1,12 @@
-use std::sync::atomic::{self, AtomicBool};
use std::sync::Arc;
+use std::sync::atomic::{self, AtomicBool};
use bstr::BString;
use radicle::crypto::PublicKey;
use radicle::git::Oid;
use radicle::identity::{Doc, DocError};
-use radicle::storage::git::Repository;
use radicle::storage::ReadRepository;
+use radicle::storage::git::Repository;
use crate::policy::{Allowed, BlockList};
use crate::transport::{ConnectionStream, Transport};
diff --git a/crates/radicle-fetch/src/lib.rs b/crates/radicle-fetch/src/lib.rs
index cff3d47e9..0fa536290 100644
--- a/crates/radicle-fetch/src/lib.rs
+++ b/crates/radicle-fetch/src/lib.rs
@@ -12,9 +12,9 @@ mod state;
use std::io;
use std::time::Instant;
-use gix_protocol::{handshake, Handshake};
+use gix_protocol::{Handshake, handshake};
-pub use gix_protocol::{transport::bstr::ByteSlice, RemoteProgress};
+pub use gix_protocol::{RemoteProgress, transport::bstr::ByteSlice};
pub use handle::Handle;
pub use policy::{Allowed, BlockList, Scope};
use radicle::storage::git::Repository;
@@ -22,8 +22,8 @@ pub use state::{Config, FetchLimit, FetchResult};
pub use transport::Transport;
use radicle::crypto::PublicKey;
-use radicle::storage::refs::RefsAt;
use radicle::storage::ReadRepository as _;
+use radicle::storage::refs::RefsAt;
use state::FetchState;
use thiserror::Error;
diff --git a/crates/radicle-fetch/src/refs.rs b/crates/radicle-fetch/src/refs.rs
index 504730bb6..d475f2a9b 100644
--- a/crates/radicle-fetch/src/refs.rs
+++ b/crates/radicle-fetch/src/refs.rs
@@ -2,9 +2,8 @@ use bstr::{BString, ByteSlice};
use either::Either;
use radicle::crypto::PublicKey;
use radicle::git::{
- self,
+ self, Oid,
fmt::{Component, Namespaced, Qualified},
- Oid,
};
use thiserror::Error;
diff --git a/crates/radicle-fetch/src/sigrefs.rs b/crates/radicle-fetch/src/sigrefs.rs
index 8015d5937..c042c46bf 100644
--- a/crates/radicle-fetch/src/sigrefs.rs
+++ b/crates/radicle-fetch/src/sigrefs.rs
@@ -2,7 +2,7 @@ use std::collections::BTreeMap;
use std::ops::Not as _;
pub use radicle::storage::refs::SignedRefs;
-pub use radicle::storage::{git::Validation, Validations};
+pub use radicle::storage::{Validations, git::Validation};
use radicle::{crypto::PublicKey, storage::ValidateRepository};
pub mod error {
diff --git a/crates/radicle-fetch/src/stage.rs b/crates/radicle-fetch/src/stage.rs
index 53a93c6e0..525934dcc 100644
--- a/crates/radicle-fetch/src/stage.rs
+++ b/crates/radicle-fetch/src/stage.rs
@@ -37,10 +37,10 @@ use either::Either;
use gix_protocol::handshake::Ref;
use nonempty::NonEmpty;
use radicle::crypto::PublicKey;
-use radicle::git::fmt::{refname, Component, Namespaced, Qualified};
+use radicle::git::fmt::{Component, Namespaced, Qualified, refname};
+use radicle::storage::ReadRepository;
use radicle::storage::git::Repository;
use radicle::storage::refs::{RefsAt, Special};
-use radicle::storage::ReadRepository;
use crate::git::refs::{Policy, Update, Updates};
use crate::policy::BlockList;
diff --git a/crates/radicle-fetch/src/state.rs b/crates/radicle-fetch/src/state.rs
index f516ec7e2..bcec3c0d8 100644
--- a/crates/radicle-fetch/src/state.rs
+++ b/crates/radicle-fetch/src/state.rs
@@ -3,14 +3,14 @@ use std::time::Instant;
use gix_protocol::Handshake;
use radicle::crypto::PublicKey;
-use radicle::git::{fmt::Qualified, Oid};
+use radicle::git::{Oid, fmt::Qualified};
use radicle::identity::{Did, Doc, DocError};
use radicle::storage;
use radicle::storage::git::Repository;
use radicle::storage::refs::{FeatureLevel, RefsAt};
use radicle::storage::{
- git::Validation, Remote, RemoteId, RemoteRepository, Remotes, ValidateRepository, Validations,
+ Remote, RemoteId, RemoteRepository, Remotes, ValidateRepository, Validations, git::Validation,
};
use crate::git;
@@ -20,7 +20,7 @@ use crate::git::repository;
use crate::sigrefs::SignedRefs;
use crate::stage;
use crate::stage::ProtocolStage;
-use crate::{refs, sigrefs, transport, Handle};
+use crate::{Handle, refs, sigrefs, transport};
/// The data size limit, 5Mb, while fetching the special refs,
/// i.e. `rad/id` and `rad/sigrefs`.
@@ -549,9 +549,13 @@ impl FetchState {
}) => {
let level_required = levels.max();
if level_reachable >= level_required {
- log::info!("Non-delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' and will be upgraded to '{level_reachable}'.")
+ log::info!(
+ "Non-delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' and will be upgraded to '{level_reachable}'."
+ )
} else {
- log::debug!("Non-delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' but only level '{level_reachable}' was advertised.");
+ log::debug!(
+ "Non-delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' but only level '{level_reachable}' was advertised."
+ );
self.prune(&remote);
continue;
}
@@ -601,9 +605,13 @@ impl FetchState {
}) => {
let level_required = levels.max();
if level_reachable >= level_required {
- log::info!("Delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' and will be upgraded to '{level_reachable}'.")
+ log::info!(
+ "Delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' and will be upgraded to '{level_reachable}'."
+ )
} else {
- log::info!("Delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' but only level '{level_reachable}' was advertised.");
+ log::info!(
+ "Delegate {remote} has downgraded history, currently stuck at '{actual}', expects to be upgraded to '{level_required}' but only level '{level_reachable}' was advertised."
+ );
self.prune(&remote);
continue;
}
@@ -629,7 +637,10 @@ impl FetchState {
}
if level_reachable < FeatureLevel::LATEST {
- log::warn!("Delegate {remote} is on feature level '{level_reachable}' which is lower than '{}', they should consider upgrading Radicle.", FeatureLevel::LATEST)
+ log::warn!(
+ "Delegate {remote} is on feature level '{level_reachable}' which is lower than '{}', they should consider upgrading Radicle.",
+ FeatureLevel::LATEST
+ )
}
}
}
diff --git a/crates/radicle-fetch/src/transport.rs b/crates/radicle-fetch/src/transport.rs
index ef6bbe273..f0fad6367 100644
--- a/crates/radicle-fetch/src/transport.rs
+++ b/crates/radicle-fetch/src/transport.rs
@@ -4,18 +4,18 @@ pub(crate) mod ls_refs;
use std::collections::BTreeSet;
use std::io;
use std::path::PathBuf;
-use std::sync::atomic::AtomicBool;
use std::sync::Arc;
+use std::sync::atomic::AtomicBool;
use bstr::BString;
use gix_features::progress::prodash::progress;
-use gix_protocol::handshake;
use gix_protocol::Handshake;
-use gix_transport::client;
+use gix_protocol::handshake;
use gix_transport::Protocol;
use gix_transport::Service;
-use radicle::git::fmt::Qualified;
+use gix_transport::client;
use radicle::git::Oid;
+use radicle::git::fmt::Qualified;
use radicle::storage::git::Repository;
use thiserror::Error;
diff --git a/crates/radicle-fetch/src/transport/fetch.rs b/crates/radicle-fetch/src/transport/fetch.rs
index 5d4b4bd08..6834015c5 100644
--- a/crates/radicle-fetch/src/transport/fetch.rs
+++ b/crates/radicle-fetch/src/transport/fetch.rs
@@ -1,16 +1,16 @@
use std::io;
use std::path::PathBuf;
-use std::sync::{atomic::AtomicBool, Arc};
+use std::sync::{Arc, atomic::AtomicBool};
use gix_features::progress::{DynNestedProgress, NestedProgress};
use gix_pack as pack;
use gix_protocol::fetch::negotiate::one_round::State;
use gix_protocol::handshake::Ref;
-use gix_protocol::{fetch, Handshake};
+use gix_protocol::{Handshake, fetch};
use crate::git::packfile;
-use super::{agent_name, Connection, WantsHaves};
+use super::{Connection, WantsHaves, agent_name};
pub type Error = fetch::Error;
diff --git a/crates/radicle-fetch/src/transport/ls_refs.rs b/crates/radicle-fetch/src/transport/ls_refs.rs
index 7c8cf5c20..e83058589 100644
--- a/crates/radicle-fetch/src/transport/ls_refs.rs
+++ b/crates/radicle-fetch/src/transport/ls_refs.rs
@@ -5,12 +5,12 @@ use std::io;
use gix_features::progress::Progress;
use gix_protocol::handshake::Ref;
use gix_protocol::transport::Protocol;
-use gix_protocol::{ls_refs, Handshake};
+use gix_protocol::{Handshake, ls_refs};
use gix_transport::bstr::BString;
use crate::stage::RefPrefix;
-use super::{agent_name, Connection};
+use super::{Connection, agent_name};
/// Configuration for running an ls-refs process.
///
diff --git a/crates/radicle-git-metadata/src/commit/parse.rs b/crates/radicle-git-metadata/src/commit/parse.rs
index e555898e8..63e2d0bf2 100644
--- a/crates/radicle-git-metadata/src/commit/parse.rs
+++ b/crates/radicle-git-metadata/src/commit/parse.rs
@@ -6,9 +6,9 @@ use std::borrow::Cow;
use crate::author::Author;
use super::{
+ CommitData,
headers::Headers,
trailers::{OwnedTrailer, Token, Trailer},
- CommitData,
};
#[derive(Debug, thiserror::Error)]
diff --git a/crates/radicle-git-metadata/src/commit/parse/test/error.rs b/crates/radicle-git-metadata/src/commit/parse/test/error.rs
index 49523060b..89cbe076e 100644
--- a/crates/radicle-git-metadata/src/commit/parse/test/error.rs
+++ b/crates/radicle-git-metadata/src/commit/parse/test/error.rs
@@ -1,4 +1,4 @@
-use crate::commit::parse::{parse, ParseError};
+use crate::commit::parse::{ParseError, parse};
/// Helper type whose FromStr always fails.
///
diff --git a/crates/radicle-git-metadata/src/commit/parse/test/success.rs b/crates/radicle-git-metadata/src/commit/parse/test/success.rs
index 9346bd627..81ed70b92 100644
--- a/crates/radicle-git-metadata/src/commit/parse/test/success.rs
+++ b/crates/radicle-git-metadata/src/commit/parse/test/success.rs
@@ -142,9 +142,11 @@ This line is not a valid trailer."#;
assert_eq!(commit.trailers().count(), 0);
assert!(commit.message().contains("Signed-off-by"));
- assert!(commit
- .message()
- .contains("This line is not a valid trailer."));
+ assert!(
+ commit
+ .message()
+ .contains("This line is not a valid trailer.")
+ );
}
#[test]
diff --git a/crates/radicle-node/src/control.rs b/crates/radicle-node/src/control.rs
index ab3a1acae..dd62bf5da 100644
--- a/crates/radicle-node/src/control.rs
+++ b/crates/radicle-node/src/control.rs
@@ -1,7 +1,7 @@
//! Client control socket implementation.
-use std::io::prelude::*;
use std::io::BufReader;
use std::io::LineWriter;
+use std::io::prelude::*;
use std::path::PathBuf;
use std::{io, net, time};
@@ -283,8 +283,8 @@ mod tests {
use super::*;
use crate::identity::RepoId;
- use crate::node::policy::Scope;
use crate::node::Handle;
+ use crate::node::policy::Scope;
use crate::node::{Alias, Node, NodeId};
use crate::test;
diff --git a/crates/radicle-node/src/lib.rs b/crates/radicle-node/src/lib.rs
index 94ae8d27e..3082aedeb 100644
--- a/crates/radicle-node/src/lib.rs
+++ b/crates/radicle-node/src/lib.rs
@@ -26,8 +26,8 @@ use radicle::version::Version;
pub use localtime::{LocalDuration, LocalTime};
pub use radicle::node::Link;
-pub use radicle::node::UserAgent;
pub use radicle::node::PROTOCOL_VERSION;
+pub use radicle::node::UserAgent;
pub use radicle::prelude::Timestamp;
pub use radicle::{collections, crypto, git, identity, node, profile, rad, storage};
pub use runtime::Runtime;
@@ -49,10 +49,10 @@ pub static USER_AGENT: LazyLock<UserAgent> = LazyLock::new(|| {
pub mod prelude {
pub use crate::crypto::{PublicKey, Signature};
pub use crate::identity::{Did, RepoId};
- pub use crate::node::{config::Network, Address, Event, NodeId};
+ pub use crate::node::{Address, Event, NodeId, config::Network};
pub use crate::service::filter::Filter;
pub use crate::service::{DisconnectReason, Message};
- pub use crate::storage::refs::Refs;
pub use crate::storage::WriteStorage;
+ pub use crate::storage::refs::Refs;
pub use crate::{LocalDuration, LocalTime, Timestamp};
}
diff --git a/crates/radicle-node/src/main.rs b/crates/radicle-node/src/main.rs
index a02e5c6ba..610418040 100644
--- a/crates/radicle-node/src/main.rs
+++ b/crates/radicle-node/src/main.rs
@@ -141,7 +141,9 @@ fn parse_options() -> Result<Options, lexopt::Error> {
}
Long("log") | Long("log-level") => {
if matches!(arg, Long("log")) {
- eprintln!("Warning: The option `--log` is deprecated and will be removed. Please use `--log-level` instead.");
+ eprintln!(
+ "Warning: The option `--log` is deprecated and will be removed. Please use `--log-level` instead."
+ );
}
log_level = Some(parser.value()?.parse_with(log::Level::from_str)?);
}
@@ -202,7 +204,9 @@ enum ExecutionError {
path: PathBuf,
source: radicle::crypto::ssh::keystore::Error,
},
- #[error("failed to load secret key '{secret}': fingerprint of corresponding public key is different from '{fingerprint}'")]
+ #[error(
+ "failed to load secret key '{secret}': fingerprint of corresponding public key is different from '{fingerprint}'"
+ )]
FingerprintMismatch {
secret: PathBuf,
fingerprint: Fingerprint,
@@ -341,7 +345,7 @@ fn initialize_logging(options: &LogOptions) -> Result<(), Box<dyn std::error::Er
match options.logger {
#[cfg(feature = "structured-logger")]
Logger::Structured => {
- use structured_logger::{json, Builder};
+ use structured_logger::{Builder, json};
let writer = match options.format.unwrap_or(LogFormat::Json) {
LogFormat::Json => json::new_writer(io::stdout()),
diff --git a/crates/radicle-node/src/reactor.rs b/crates/radicle-node/src/reactor.rs
index bb17a4518..cae358a41 100644
--- a/crates/radicle-node/src/reactor.rs
+++ b/crates/radicle-node/src/reactor.rs
@@ -13,7 +13,7 @@ use std::thread::JoinHandle;
use std::time::{Duration, Instant};
use std::{io, thread};
-use crossbeam_channel::{unbounded, Receiver, TryRecvError};
+use crossbeam_channel::{Receiver, TryRecvError, unbounded};
use mio::event::{Event, Source};
use mio::{Events, Interest, Poll, Waker};
use thiserror::Error;
diff --git a/crates/radicle-node/src/reactor/session.rs b/crates/radicle-node/src/reactor/session.rs
index 74885e059..1a5d802d0 100644
--- a/crates/radicle-node/src/reactor/session.rs
+++ b/crates/radicle-node/src/reactor/session.rs
@@ -256,7 +256,7 @@ impl Session for TcpStream {
}
mod impl_noise {
- use cyphernet::encrypt::noise::{error::NoiseError as Error, NoiseState as Noise};
+ use cyphernet::encrypt::noise::{NoiseState as Noise, error::NoiseError as Error};
use cyphernet::{Digest, Ecdh};
use super::*;
diff --git a/crates/radicle-node/src/reactor/transport.rs b/crates/radicle-node/src/reactor/transport.rs
index 8f0a1ea5f..a751c28f0 100644
--- a/crates/radicle-node/src/reactor/transport.rs
+++ b/crates/radicle-node/src/reactor/transport.rs
@@ -286,8 +286,8 @@ impl<S: Session + Source> EventHandler for Transport<S> {
type Reaction = SessionEvent<S>;
fn interests(&self) -> Option<Interest> {
- use mio::Interest;
use TransportState::*;
+ use mio::Interest;
match self.state {
Init => Some(Interest::WRITABLE),
diff --git a/crates/radicle-node/src/runtime.rs b/crates/radicle-node/src/runtime.rs
index aa1b57a35..b824d7198 100644
--- a/crates/radicle-node/src/runtime.rs
+++ b/crates/radicle-node/src/runtime.rs
@@ -19,23 +19,23 @@ use radicle_signals::Signal;
use thiserror::Error;
use radicle::node;
+use radicle::node::Event;
+use radicle::node::UserAgent;
use radicle::node::address;
use radicle::node::address::Store as _;
use radicle::node::notifications;
use radicle::node::policy::config as policy;
-use radicle::node::Event;
-use radicle::node::UserAgent;
use radicle::profile::Home;
-use radicle::{cob, git, storage, Storage};
+use radicle::{Storage, cob, git, storage};
use crate::control;
-use crate::node::{routing, NodeId};
+use crate::node::{NodeId, routing};
use crate::reactor;
use crate::reactor::Reactor;
use crate::service::gossip;
use crate::wire::Wire;
use crate::worker;
-use crate::{service, LocalTime};
+use crate::{LocalTime, service};
pub use handle::Error as HandleError;
pub use handle::Handle;
@@ -282,22 +282,24 @@ impl Runtime {
|| control::listen(listener, handle)
});
- let _signals = thread::spawn(&self.id, "signals", move || loop {
- use radicle::node::Handle as _;
-
- match self.signals.recv() {
- Ok(Signal::Terminate | Signal::Interrupt) => {
- log::info!(target: "node", "Termination signal received; shutting down..");
- self.handle.shutdown().ok();
- break;
- }
- Ok(Signal::Hangup) => {
- log::debug!(target: "node", "Hangup signal (SIGHUP) received; ignoring..");
- }
- Ok(Signal::WindowChanged) => {}
- Err(e) => {
- log::warn!(target: "node", "Signal notifications channel error: {e}");
- break;
+ let _signals = thread::spawn(&self.id, "signals", move || {
+ loop {
+ use radicle::node::Handle as _;
+
+ match self.signals.recv() {
+ Ok(Signal::Terminate | Signal::Interrupt) => {
+ log::info!(target: "node", "Termination signal received; shutting down..");
+ self.handle.shutdown().ok();
+ break;
+ }
+ Ok(Signal::Hangup) => {
+ log::debug!(target: "node", "Hangup signal (SIGHUP) received; ignoring..");
+ }
+ Ok(Signal::WindowChanged) => {}
+ Err(e) => {
+ log::warn!(target: "node", "Signal notifications channel error: {e}");
+ break;
+ }
}
}
});
diff --git a/crates/radicle-node/src/runtime/handle.rs b/crates/radicle-node/src/runtime/handle.rs
index 0854fd79d..dcd072192 100644
--- a/crates/radicle-node/src/runtime/handle.rs
+++ b/crates/radicle-node/src/runtime/handle.rs
@@ -1,7 +1,7 @@
use std::collections::HashSet;
use std::net;
-use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
+use std::sync::atomic::{AtomicBool, Ordering};
use std::{fmt, io, time};
#[cfg(unix)]
diff --git a/crates/radicle-node/src/test/gossip.rs b/crates/radicle-node/src/test/gossip.rs
index d8e299d96..87d2698a6 100644
--- a/crates/radicle-node/src/test/gossip.rs
+++ b/crates/radicle-node/src/test/gossip.rs
@@ -1,15 +1,15 @@
use std::str::FromStr;
use radicle::node;
-use radicle::node::device::Device;
use radicle::node::UserAgent;
+use radicle::node::device::Device;
use radicle::test::fixtures::r#gen;
use crate::test::arbitrary;
use crate::{
+ PROTOCOL_VERSION,
prelude::{LocalDuration, LocalTime, Message},
service::message::{InventoryAnnouncement, NodeAnnouncement},
- PROTOCOL_VERSION,
};
pub fn messages(count: usize, now: LocalTime, delta: LocalDuration) -> Vec<Message> {
@@ -23,11 +23,7 @@ pub fn messages(count: usize, now: LocalTime, delta: LocalDuration) -> Vec<Messa
} else {
let delta = LocalDuration::from_secs(rng.u64(0..delta.as_secs()));
- if rng.bool() {
- now + delta
- } else {
- now - delta
- }
+ if rng.bool() { now + delta } else { now - delta }
};
msgs.push(Message::node(
diff --git a/crates/radicle-node/src/test/handle.rs b/crates/radicle-node/src/test/handle.rs
index 8fbb907de..c7f43e496 100644
--- a/crates/radicle-node/src/test/handle.rs
+++ b/crates/radicle-node/src/test/handle.rs
@@ -10,8 +10,8 @@ use radicle::storage::refs::{self, RefsAt};
use crate::identity::RepoId;
use crate::node::{Alias, Config, ConnectOptions, ConnectResult, Event, FetchResult, Seeds};
use crate::runtime::HandleError;
-use radicle::node::policy;
use radicle::node::NodeId;
+use radicle::node::policy;
#[derive(Default, Clone)]
pub struct Handle {
diff --git a/crates/radicle-node/src/test/node.rs b/crates/radicle-node/src/test/node.rs
index 29374e4a5..a7eb96088 100644
--- a/crates/radicle-node/src/test/node.rs
+++ b/crates/radicle-node/src/test/node.rs
@@ -11,33 +11,33 @@ use std::{
use crossbeam_channel as chan;
+use radicle::Storage;
use radicle::cob;
use radicle::cob::issue;
+use radicle::crypto::Signature;
use radicle::crypto::signature::Signer;
use radicle::crypto::ssh::keystore::MemorySigner;
use radicle::crypto::test::signer::MockSigner;
-use radicle::crypto::Signature;
use radicle::git;
use radicle::git::fmt::refname;
use radicle::identity::{RepoId, Visibility};
+use radicle::node::Config;
+use radicle::node::Event;
use radicle::node::config::ConnectAddress;
use radicle::node::policy::store as policy;
use radicle::node::seed::Store as _;
-use radicle::node::Config;
-use radicle::node::Event;
use radicle::node::{self, Alias};
use radicle::node::{ConnectOptions, Handle as _};
use radicle::node::{Database, POLICIES_DB_FILE};
-use radicle::profile::{env, Home, Profile};
+use radicle::profile::{Home, Profile, env};
use radicle::rad;
use radicle::storage::{ReadStorage as _, RemoteRepository as _, SignRepository as _};
use radicle::test::fixtures;
-use radicle::Storage;
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
use crate::storage::git::transport;
-use crate::{runtime, runtime::Handle, service, Runtime};
+use crate::{Runtime, runtime, runtime::Handle, service};
/// A node that can be run.
pub struct Node<G> {
diff --git a/crates/radicle-node/src/test/peer.rs b/crates/radicle-node/src/test/peer.rs
index 41f10e9e7..bf4cf8efd 100644
--- a/crates/radicle-node/src/test/peer.rs
+++ b/crates/radicle-node/src/test/peer.rs
@@ -7,19 +7,19 @@ use std::str::FromStr;
use log::*;
+use radicle::Storage;
use radicle::crypto;
use radicle::git::Oid;
use radicle::identity::Visibility;
-use radicle::node::address::Store as _;
-use radicle::node::device::Device;
use radicle::node::Database;
use radicle::node::UserAgent;
-use radicle::node::{address, Alias, ConnectOptions};
+use radicle::node::address::Store as _;
+use radicle::node::device::Device;
+use radicle::node::{Alias, ConnectOptions, address};
use radicle::rad;
use radicle::storage::refs;
use radicle::storage::refs::{RefsAt, SignedRefs};
use radicle::storage::{ReadRepository, RemoteRepository};
-use radicle::Storage;
use crate::crypto::test::signer::MockSigner;
use crate::identity::RepoId;
diff --git a/crates/radicle-node/src/test/simulator.rs b/crates/radicle-node/src/test/simulator.rs
index d914f8114..8eff8ee58 100644
--- a/crates/radicle-node/src/test/simulator.rs
+++ b/crates/radicle-node/src/test/simulator.rs
@@ -13,10 +13,11 @@ use std::{fmt, io, net};
use localtime::{LocalDuration, LocalTime};
use log::*;
-use radicle::node::events::Event;
use radicle::node::NodeId;
+use radicle::node::events::Event;
use radicle_protocol::worker::FetchError;
+use crate::Link;
use crate::crypto;
use crate::prelude::{Address, RepoId};
use crate::service::io::Io;
@@ -26,7 +27,6 @@ use crate::storage::{ReadRepository, WriteStorage};
use crate::test::arbitrary;
use crate::test::peer::Service;
use crate::worker::fetch;
-use crate::Link;
/// Minimum latency between peers.
pub const MIN_LATENCY: LocalDuration = LocalDuration::from_millis(1);
diff --git a/crates/radicle-node/src/tests.rs b/crates/radicle-node/src/tests.rs
index 4e646a143..9dc855c61 100644
--- a/crates/radicle-node/src/tests.rs
+++ b/crates/radicle-node/src/tests.rs
@@ -13,15 +13,15 @@ use test_log::test;
use radicle::cob;
use radicle::identity::Visibility;
+use radicle::node::Link;
use radicle::node::address::Store as _;
use radicle::node::device::Device;
use radicle::node::policy;
use radicle::node::refs::Store as _;
use radicle::node::routing::Store as _;
-use radicle::node::Link;
use radicle::node::{ConnectOptions, DEFAULT_TIMEOUT};
-use radicle::storage::refs::RefsAt;
use radicle::storage::RefUpdate;
+use radicle::storage::refs::RefsAt;
use radicle::test::arbitrary::r#gen;
use radicle::test::storage::MockRepository;
use radicle_protocol::bounded::BoundedVec;
@@ -32,15 +32,15 @@ use crate::node;
use crate::node::config::*;
use crate::prelude::*;
use crate::prelude::{LocalDuration, Timestamp};
+use crate::service::ServiceState as _;
use crate::service::filter::Filter;
use crate::service::io::Io;
use crate::service::message::*;
-use crate::service::ServiceState as _;
use crate::service::*;
-use crate::storage::git::transport::{local, remote};
+use crate::storage::ReadStorage;
use crate::storage::git::Storage;
+use crate::storage::git::transport::{local, remote};
use crate::storage::refs::SIGREFS_BRANCH;
-use crate::storage::ReadStorage;
use crate::test::arbitrary;
use crate::test::assert_matches;
use crate::test::fixtures;
@@ -51,11 +51,11 @@ use crate::test::peer::Peer;
use crate::test::simulator;
use crate::test::simulator::{Peer as _, Simulation};
+use crate::LocalTime;
use crate::test::storage::MockStorage;
use crate::wire::Decode;
use crate::wire::Encode;
use crate::worker::fetch;
-use crate::LocalTime;
use crate::{git, identity, rad, runtime, service, test};
/// Default number of tests to run when testing things with high variance.
@@ -2040,13 +2040,14 @@ fn test_announcement_message_amplification() {
// Make sure they have the routing table entry.
for node in [&bob, &eve, &zod, &tom] {
- assert!(node
- .service
- .database()
- .routing()
- .get(&rid)
- .unwrap()
- .contains(&alice.id));
+ assert!(
+ node.service
+ .database()
+ .routing()
+ .get(&rid)
+ .unwrap()
+ .contains(&alice.id)
+ );
}
// Count how many copies of Alice's inventory message have been received by peers.
diff --git a/crates/radicle-node/src/tests/e2e.rs b/crates/radicle-node/src/tests/e2e.rs
index 192946577..c2b4484a3 100644
--- a/crates/radicle-node/src/tests/e2e.rs
+++ b/crates/radicle-node/src/tests/e2e.rs
@@ -6,10 +6,10 @@ use radicle_crypto::test::signer::MockSigner;
use test_log::test;
use radicle::git::raw::ErrorExt as _;
+use radicle::node::Event;
use radicle::node::device::Device;
use radicle::node::policy::Scope;
-use radicle::node::Event;
-use radicle::node::{Alias, ConnectResult, FetchResult, Handle as _, DEFAULT_TIMEOUT};
+use radicle::node::{Alias, ConnectResult, DEFAULT_TIMEOUT, FetchResult, Handle as _};
use radicle::storage::{
ReadRepository, ReadStorage, RefUpdate, RemoteRepository, SignRepository, ValidateRepository,
WriteRepository, WriteStorage,
@@ -22,7 +22,7 @@ use crate::node::config::Limits;
use crate::node::{Config, ConnectOptions};
use crate::service;
use crate::storage::git::transport;
-use crate::test::node::{converge, Node, NodeHandle};
+use crate::test::node::{Node, NodeHandle, converge};
mod config {
use super::*;
@@ -631,12 +631,13 @@ fn test_clone() {
assert_eq!(canonical, oid);
// Make sure that bob has refs/rad/id set
- assert!(bob
- .storage
- .repository(acme)
- .unwrap()
- .identity_head()
- .is_ok());
+ assert!(
+ bob.storage
+ .repository(acme)
+ .unwrap()
+ .identity_head()
+ .is_ok()
+ );
}
#[test]
diff --git a/crates/radicle-node/src/wire.rs b/crates/radicle-node/src/wire.rs
index 822d9d186..d96f87630 100644
--- a/crates/radicle-node/src/wire.rs
+++ b/crates/radicle-node/src/wire.rs
@@ -1,8 +1,8 @@
//! Implementation of the transport protocol.
//!
//! We use the Noise XK handshake pattern to establish an encrypted stream with a remote peer.
-use std::collections::hash_map::Entry;
use std::collections::VecDeque;
+use std::collections::hash_map::Entry;
use std::fmt::Debug;
use std::sync::Arc;
use std::time::Instant;
@@ -19,9 +19,9 @@ use radicle::node::device::Device;
use radicle::collections::{RandomMap, RandomSet};
use radicle::crypto;
-use radicle::node::config::AddressConfig;
use radicle::node::Link;
use radicle::node::NodeId;
+use radicle::node::config::AddressConfig;
use radicle::storage::WriteStorage;
use radicle_protocol::deserializer::Deserializer;
pub use radicle_protocol::wire::frame;
@@ -34,9 +34,9 @@ use crate::reactor::{Listener, Transport};
use crate::reactor::{NoiseSession, ProtocolArtifact, SessionEvent, Socks5Session};
use crate::reactor::{Token, Tokens};
use crate::service;
-use crate::service::io::Io;
use crate::service::FETCH_TIMEOUT;
-use crate::service::{session, DisconnectReason, Metrics, Service};
+use crate::service::io::Io;
+use crate::service::{DisconnectReason, Metrics, Service, session};
use crate::worker;
use crate::worker::{ChannelEvent, ChannelsConfig};
use crate::worker::{Task, TaskResult};
@@ -897,7 +897,10 @@ where
e.remove();
}
Peer::Connected { nid, .. } => {
- panic!("Wire::handover_transport: Unexpected handover of connected peer {nid} with token {}", token.0);
+ panic!(
+ "Wire::handover_transport: Unexpected handover of connected peer {nid} with token {}",
+ token.0
+ );
}
}
}
diff --git a/crates/radicle-node/src/worker.rs b/crates/radicle-node/src/worker.rs
index df8788075..5b578f01c 100644
--- a/crates/radicle-node/src/worker.rs
+++ b/crates/radicle-node/src/worker.rs
@@ -16,13 +16,13 @@ use radicle::node::policy::config::SeedingPolicy;
use radicle::prelude::NodeId;
use radicle::storage::refs::RefsAt;
use radicle::storage::{ReadRepository, ReadStorage};
-use radicle::{cob, crypto, Storage};
+use radicle::{Storage, cob, crypto};
pub use radicle_protocol::worker::{
AuthorizationError, FetchError, FetchRequest, FetchResult, UploadError,
};
-use crate::runtime::{thread, Handle};
+use crate::runtime::{Handle, thread};
use crate::wire::StreamId;
pub use channels::{ChannelEvent, Channels, ChannelsConfig};
@@ -154,13 +154,13 @@ impl Worker {
std::io::ErrorKind::UnexpectedEof,
"unexpected end of stream while reading upload-pack header",
))),
- }
+ };
}
Some(Err(e)) => {
return FetchResult::Responder {
rid: None,
result: Err(UploadError::PacketLine(e)),
- }
+ };
}
Some(Ok(Err(e))) => {
return FetchResult::Responder {
@@ -169,7 +169,7 @@ impl Worker {
std::io::ErrorKind::InvalidData,
format!("invalid upload-pack header: {e}"),
))),
- }
+ };
}
Some(Ok(Ok(header))) => header,
};
diff --git a/crates/radicle-node/src/worker/channels.rs b/crates/radicle-node/src/worker/channels.rs
index da994e0b2..83edaf735 100644
--- a/crates/radicle-node/src/worker/channels.rs
+++ b/crates/radicle-node/src/worker/channels.rs
@@ -3,8 +3,8 @@ use std::ops::Deref;
use std::{fmt, io, time};
use crossbeam_channel as chan;
-use radicle::node::config::FetchPackSizeLimit;
use radicle::node::NodeId;
+use radicle::node::config::FetchPackSizeLimit;
use crate::runtime::Handle;
use crate::wire::StreamId;
diff --git a/crates/radicle-node/src/worker/fetch.rs b/crates/radicle-node/src/worker/fetch.rs
index 5e79512ca..e500f5d1c 100644
--- a/crates/radicle-node/src/worker/fetch.rs
+++ b/crates/radicle-node/src/worker/fetch.rs
@@ -1,5 +1,5 @@
-use radicle::identity::doc::CanonicalRefsError;
use radicle::identity::CanonicalRefs;
+use radicle::identity::doc::CanonicalRefsError;
use radicle::storage::git::TempRepository;
pub(crate) use radicle_protocol::worker::fetch::error;
@@ -19,7 +19,7 @@ use radicle::storage::{
ReadRepository, ReadStorage as _, RefUpdate, RemoteRepository, RepositoryError,
WriteRepository as _,
};
-use radicle::{cob, git, node, Storage};
+use radicle::{Storage, cob, git, node};
use radicle_fetch::git::refs::Applied;
use radicle_fetch::{Allowed, BlockList};
pub use radicle_protocol::worker::fetch::{FetchResult, UpdatedCanonicalRefs};
diff --git a/crates/radicle-node/src/worker/upload_pack.rs b/crates/radicle-node/src/worker/upload_pack.rs
index 6a9ff260e..0766cead6 100644
--- a/crates/radicle-node/src/worker/upload_pack.rs
+++ b/crates/radicle-node/src/worker/upload_pack.rs
@@ -5,12 +5,12 @@ use std::time::{Duration, Instant};
use radicle_fetch::{ByteSlice as _, RemoteProgress};
+use radicle::Storage;
use radicle::identity::RepoId;
use radicle::node::events;
use radicle::node::events::Emitter;
use radicle::node::{Event, NodeId};
use radicle::storage::git::paths;
-use radicle::Storage;
use crate::runtime::thread;
diff --git a/crates/radicle-oid/src/lib.rs b/crates/radicle-oid/src/lib.rs
index 63720aa3d..be747b0c2 100644
--- a/crates/radicle-oid/src/lib.rs
+++ b/crates/radicle-oid/src/lib.rs
@@ -509,7 +509,10 @@ mod serde {
fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result {
use crate::str::SHA1_DIGEST_STR_LEN;
- write!(f, "a Git object identifier (SHA-1 digest in hexadecimal notation; {SHA1_DIGEST_STR_LEN} characters; {SHA1_DIGEST_LEN} bytes)")
+ write!(
+ f,
+ "a Git object identifier (SHA-1 digest in hexadecimal notation; {SHA1_DIGEST_STR_LEN} characters; {SHA1_DIGEST_LEN} bytes)"
+ )
}
fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
@@ -551,7 +554,7 @@ mod radicle_git_ref_format {
mod schemars {
use alloc::{borrow::Cow, format};
- use ::schemars::{json_schema, JsonSchema, Schema, SchemaGenerator};
+ use ::schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
use super::Oid;
@@ -565,7 +568,7 @@ mod schemars {
}
fn json_schema(_: &mut SchemaGenerator) -> Schema {
- use crate::{str::SHA1_DIGEST_STR_LEN, SHA1_DIGEST_LEN};
+ use crate::{SHA1_DIGEST_LEN, str::SHA1_DIGEST_STR_LEN};
json_schema!({
"description": format!("A Git object identifier (SHA-1 digest in hexadecimal notation; {SHA1_DIGEST_STR_LEN} characters; {SHA1_DIGEST_LEN} bytes)"),
"type": "string",
diff --git a/crates/radicle-protocol/src/fetcher/service.rs b/crates/radicle-protocol/src/fetcher/service.rs
index a0db81474..2a2b4cb59 100644
--- a/crates/radicle-protocol/src/fetcher/service.rs
+++ b/crates/radicle-protocol/src/fetcher/service.rs
@@ -3,11 +3,12 @@ use std::collections::HashMap;
use radicle_core::{NodeId, RepoId};
use crate::fetcher::{
+ RefsToFetch,
state::{
+ Config, FetcherState, QueuedFetch,
command::{self},
- event, Config, FetcherState, QueuedFetch,
+ event,
},
- RefsToFetch,
};
/// Service layer that wraps [`FetcherState`] and manages subscriber coalescing.
diff --git a/crates/radicle-protocol/src/fetcher/test/queue.rs b/crates/radicle-protocol/src/fetcher/test/queue.rs
index ae315b435..8bf6e7a1e 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue.rs
@@ -11,8 +11,8 @@ use radicle::storage::refs::{FeatureLevel, RefsAt};
use radicle_core::RepoId;
use crate::fetcher::{
- state::{MaxQueueSize, QueuedFetch},
FetchConfig,
+ state::{MaxQueueSize, QueuedFetch},
};
impl Arbitrary for QueuedFetch {
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/properties/capacity.rs b/crates/radicle-protocol/src/fetcher/test/queue/properties/capacity.rs
index 4ff9b1387..17a5f38ce 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/properties/capacity.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/properties/capacity.rs
@@ -1,7 +1,7 @@
use qcheck_macros::quickcheck;
use crate::fetcher::test::queue::helpers::*;
-use crate::fetcher::{state::Enqueue, MaxQueueSize};
+use crate::fetcher::{MaxQueueSize, state::Enqueue};
use crate::fetcher::{Queue, QueuedFetch};
#[quickcheck]
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/properties/equality.rs b/crates/radicle-protocol/src/fetcher/test/queue/properties/equality.rs
index 44f199802..e8d6632b4 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/properties/equality.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/properties/equality.rs
@@ -14,9 +14,5 @@ fn symmetric(a: QueuedFetch, b: QueuedFetch) -> bool {
#[quickcheck]
fn transitive(a: QueuedFetch, b: QueuedFetch, c: QueuedFetch) -> bool {
- if a == b && b == c {
- a == c
- } else {
- true
- }
+ if a == b && b == c { a == c } else { true }
}
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/properties/fifo.rs b/crates/radicle-protocol/src/fetcher/test/queue/properties/fifo.rs
index 7742241a8..9a98d8b67 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/properties/fifo.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/properties/fifo.rs
@@ -1,8 +1,8 @@
use qcheck_macros::quickcheck;
+use crate::fetcher::QueuedFetch;
use crate::fetcher::state::Enqueue;
use crate::fetcher::test::queue::helpers::*;
-use crate::fetcher::QueuedFetch;
#[quickcheck]
fn ordering(count: u8) -> bool {
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/unit.rs b/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
index ad6b3c1ec..0e6f5ef5e 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
@@ -3,11 +3,11 @@ use std::time::Duration;
use radicle::test::arbitrary;
use radicle_core::RepoId;
-use crate::fetcher::state::Enqueue;
-use crate::fetcher::test::queue::helpers::*;
use crate::fetcher::FetchConfig;
use crate::fetcher::QueuedFetch;
use crate::fetcher::RefsToFetch;
+use crate::fetcher::state::Enqueue;
+use crate::fetcher::test::queue::helpers::*;
#[test]
fn zero_timeout_accepted() {
diff --git a/crates/radicle-protocol/src/service.rs b/crates/radicle-protocol/src/service.rs
index 5eee6ce86..0bf6b4051 100644
--- a/crates/radicle-protocol/src/service.rs
+++ b/crates/radicle-protocol/src/service.rs
@@ -42,14 +42,14 @@ use radicle::storage::{RepositoryError, RepositoryInfo, SignedRefsInfo};
use radicle_fetch::policy::SeedingPolicy;
use crate::fetcher;
-use crate::fetcher::service::FetcherService;
use crate::fetcher::FetcherState;
use crate::fetcher::RefsToFetch;
+use crate::fetcher::service::FetcherService;
use crate::service::gossip::Store as _;
use crate::service::message::{
Announcement, AnnouncementMessage, Info, NodeAnnouncement, Ping, RefsAnnouncement, RefsStatus,
};
-use crate::service::policy::{store::Write, Scope};
+use crate::service::policy::{Scope, store::Write};
use radicle::identity::RepoId;
use radicle::node::events::Emitter;
use radicle::node::routing;
@@ -57,7 +57,7 @@ use radicle::node::routing::InsertResult;
use radicle::node::{Address, Features, FetchResult, HostName, Seed, Seeds, SyncStatus, SyncedAt};
use radicle::prelude::*;
use radicle::storage;
-use radicle::storage::{refs::RefsAt, Namespaces, ReadStorage};
+use radicle::storage::{Namespaces, ReadStorage, refs::RefsAt};
// use radicle::worker::fetch;
// use crate::worker::FetchError;
use radicle::crypto;
diff --git a/crates/radicle-protocol/src/service/command.rs b/crates/radicle-protocol/src/service/command.rs
index 85d35258b..cd6fb42c7 100644
--- a/crates/radicle-protocol/src/service/command.rs
+++ b/crates/radicle-protocol/src/service/command.rs
@@ -4,9 +4,9 @@ use crossbeam_channel::Receiver;
use crossbeam_channel::SendError;
use crossbeam_channel::Sender;
use radicle::crypto::PublicKey;
-use radicle::node::policy::Scope;
use radicle::node::FetchResult;
use radicle::node::Seeds;
+use radicle::node::policy::Scope;
use radicle::node::{Address, Alias, Config, ConnectOptions};
use radicle::storage::refs;
use radicle::storage::refs::RefsAt;
diff --git a/crates/radicle-protocol/src/service/gossip.rs b/crates/radicle-protocol/src/service/gossip.rs
index 45aa0b89a..1efe073b1 100644
--- a/crates/radicle-protocol/src/service/gossip.rs
+++ b/crates/radicle-protocol/src/service/gossip.rs
@@ -5,8 +5,8 @@ use std::sync::LazyLock;
use super::*;
use crate::bounded::BoundedVec;
-use radicle::node::UserAgent;
use radicle::node::PROTOCOL_VERSION;
+use radicle::node::UserAgent;
pub use store::{AnnouncementId, Error, RelayStatus, Store};
diff --git a/crates/radicle-protocol/src/service/io.rs b/crates/radicle-protocol/src/service/io.rs
index 3c82ee861..60a6c4b5c 100644
--- a/crates/radicle-protocol/src/service/io.rs
+++ b/crates/radicle-protocol/src/service/io.rs
@@ -3,16 +3,16 @@ use std::collections::VecDeque;
use localtime::LocalDuration;
use log::*;
use radicle::identity::RepoId;
-use radicle::node::config::FetchPackSizeLimit;
use radicle::node::Address;
use radicle::node::NodeId;
+use radicle::node::config::FetchPackSizeLimit;
use radicle::storage::refs::RefsAt;
use crate::fetcher;
-use crate::service::message::Message;
-use crate::service::session::Session;
use crate::service::DisconnectReason;
use crate::service::Link;
+use crate::service::message::Message;
+use crate::service::session::Session;
use super::gossip;
use super::message::{Announcement, AnnouncementMessage};
diff --git a/crates/radicle-protocol/src/service/limiter.rs b/crates/radicle-protocol/src/service/limiter.rs
index d9867bcd4..0246ba175 100644
--- a/crates/radicle-protocol/src/service/limiter.rs
+++ b/crates/radicle-protocol/src/service/limiter.rs
@@ -1,7 +1,7 @@
use std::collections::{HashMap, HashSet};
use localtime::LocalTime;
-use radicle::node::{address, config, HostName, NodeId};
+use radicle::node::{HostName, NodeId, address, config};
/// Peer rate limiter.
///
diff --git a/crates/radicle-protocol/src/service/message.rs b/crates/radicle-protocol/src/service/message.rs
index b53bc3a18..cca54ded8 100644
--- a/crates/radicle-protocol/src/service/message.rs
+++ b/crates/radicle-protocol/src/service/message.rs
@@ -482,26 +482,35 @@ impl Message {
};
let msg = match self {
Self::Announcement(Announcement { node, message, .. }) => match message {
- AnnouncementMessage::Node(NodeAnnouncement { addresses, timestamp, .. }) => format!(
+ AnnouncementMessage::Node(NodeAnnouncement {
+ addresses,
+ timestamp,
+ ..
+ }) => format!(
"{verb} node announcement of {node} with {} address(es) {prep} {remote} (t={timestamp})",
addresses.len()
),
- AnnouncementMessage::Refs(RefsAnnouncement { rid, refs, timestamp }) => format!(
+ AnnouncementMessage::Refs(RefsAnnouncement {
+ rid,
+ refs,
+ timestamp,
+ }) => format!(
"{verb} refs announcement of {node} for {rid} with {} remote(s) {prep} {remote} (t={timestamp})",
refs.len()
),
- AnnouncementMessage::Inventory(InventoryAnnouncement { inventory, timestamp }) => {
+ AnnouncementMessage::Inventory(InventoryAnnouncement {
+ inventory,
+ timestamp,
+ }) => {
format!(
"{verb} inventory announcement of {node} with {} item(s) {prep} {remote} (t={timestamp})",
inventory.len()
)
}
},
- Self::Info(Info::RefsAlreadySynced { rid, .. }) => {
- format!(
- "{verb} `refs-already-synced` info {prep} {remote} for {rid}"
- )
- },
+ Self::Info(Info::RefsAlreadySynced { rid, .. }) => {
+ format!("{verb} `refs-already-synced` info {prep} {remote} for {rid}")
+ }
Self::Ping { .. } => format!("{verb} ping {prep} {remote}"),
Self::Pong { .. } => format!("{verb} pong {prep} {remote}"),
Self::Subscribe(Subscribe { .. }) => {
@@ -530,7 +539,7 @@ impl Ping {
/// Maximum number of zero bytes in a pong message.
pub const MAX_PONG_ZEROES: wire::Size =
Message::MAX_SIZE - mem::size_of::<wire::Size>() as wire::Size; // Account for zeroes length
- // prefix.
+ // prefix.
pub fn new(rng: &mut fastrand::Rng) -> Self {
let ponglen = rng.u16(0..Self::MAX_PONG_ZEROES);
diff --git a/crates/radicle-protocol/src/wire.rs b/crates/radicle-protocol/src/wire.rs
index df5cd6390..6d5aea8a4 100644
--- a/crates/radicle-protocol/src/wire.rs
+++ b/crates/radicle-protocol/src/wire.rs
@@ -85,7 +85,9 @@ pub enum Error {
#[error(transparent)]
Invalid(#[from] Invalid),
- #[error("unexpected end of buffer, requested {requested} more bytes but only {available} are available")]
+ #[error(
+ "unexpected end of buffer, requested {requested} more bytes but only {available} are available"
+ )]
UnexpectedEnd { available: usize, requested: usize },
}
diff --git a/crates/radicle-protocol/src/wire/frame.rs b/crates/radicle-protocol/src/wire/frame.rs
index 7f2bd312d..fd8d15095 100644
--- a/crates/radicle-protocol/src/wire/frame.rs
+++ b/crates/radicle-protocol/src/wire/frame.rs
@@ -6,7 +6,7 @@ use bytes::{Buf, BufMut};
use radicle::node::Link;
use crate::service::Message;
-use crate::{wire, wire::varint, wire::varint::VarInt, PROTOCOL_VERSION};
+use crate::{PROTOCOL_VERSION, wire, wire::varint, wire::varint::VarInt};
/// Protocol version strings all start with the magic sequence `rad`, followed
/// by a version number.
diff --git a/crates/radicle-protocol/src/wire/message.rs b/crates/radicle-protocol/src/wire/message.rs
index 99e7e8c0d..e8520949e 100644
--- a/crates/radicle-protocol/src/wire/message.rs
+++ b/crates/radicle-protocol/src/wire/message.rs
@@ -2,7 +2,7 @@ use std::{mem, net};
use bytes::Buf;
use bytes::BufMut;
-use cypheraddr::{tor, HostName, NetAddr};
+use cypheraddr::{HostName, NetAddr, tor};
use radicle::crypto::Signature;
use radicle::git::Oid;
use radicle::identity::RepoId;
@@ -426,14 +426,14 @@ impl wire::Decode for ZeroBytes {
#[cfg(test)]
mod tests {
use qcheck_macros::quickcheck;
- use radicle::node::device::Device;
use radicle::node::UserAgent;
+ use radicle::node::device::Device;
use radicle::storage::refs::RefsAt;
use radicle::test::arbitrary;
use crate::deserializer::Deserializer;
use crate::prop_roundtrip;
- use crate::wire::{roundtrip, Encode as _};
+ use crate::wire::{Encode as _, roundtrip};
use super::*;
diff --git a/crates/radicle-protocol/src/worker/fetch/error.rs b/crates/radicle-protocol/src/worker/fetch/error.rs
index 71fc0cf95..caad8b052 100644
--- a/crates/radicle-protocol/src/worker/fetch/error.rs
+++ b/crates/radicle-protocol/src/worker/fetch/error.rs
@@ -19,7 +19,9 @@ pub enum Fetch {
Repository(#[from] radicle::storage::RepositoryError),
#[error(transparent)]
RefsDb(Box<radicle::node::refs::Error>),
- #[error("validation of the storage repository failed: the delegates {delegates:?} failed to validate to meet a threshold of {threshold}")]
+ #[error(
+ "validation of the storage repository failed: the delegates {delegates:?} failed to validate to meet a threshold of {threshold}"
+ )]
Validation {
threshold: usize,
delegates: Vec<String>,
diff --git a/crates/radicle-remote-helper/src/fetch.rs b/crates/radicle-remote-helper/src/fetch.rs
index 04044d2f0..634078c70 100644
--- a/crates/radicle-remote-helper/src/fetch.rs
+++ b/crates/radicle-remote-helper/src/fetch.rs
@@ -5,8 +5,8 @@ use thiserror::Error;
use radicle::git;
-use crate::service::GitService;
use crate::Verbosity;
+use crate::service::GitService;
#[derive(Debug, Error)]
pub(super) enum Error {
@@ -24,7 +24,9 @@ pub(super) enum Error {
InvalidOid(#[from] radicle::git::ParseOidError),
/// Error fetching pack from storage to working copy.
- #[error("`git fetch-pack` failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}")]
+ #[error(
+ "`git fetch-pack` failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}"
+ )]
FetchPackFailed {
status: ExitStatus,
stderr: String,
diff --git a/crates/radicle-remote-helper/src/list.rs b/crates/radicle-remote-helper/src/list.rs
index ec4fe4f52..0d0fca778 100644
--- a/crates/radicle-remote-helper/src/list.rs
+++ b/crates/radicle-remote-helper/src/list.rs
@@ -2,12 +2,12 @@ use radicle::patch::cache::Patches as _;
use radicle::profile;
use thiserror::Error;
+use radicle::Profile;
use radicle::cob;
use radicle::git;
use radicle::prelude::NodeId;
-use radicle::storage::git::transport::local::Url;
use radicle::storage::ReadRepository;
-use radicle::Profile;
+use radicle::storage::git::transport::local::Url;
#[derive(Debug, Error)]
pub(super) enum Error {
diff --git a/crates/radicle-remote-helper/src/main.rs b/crates/radicle-remote-helper/src/main.rs
index 86defaf9c..aca172289 100644
--- a/crates/radicle-remote-helper/src/main.rs
+++ b/crates/radicle-remote-helper/src/main.rs
@@ -34,8 +34,8 @@ use radicle::prelude::NodeId;
use radicle::storage::git::transport::local::{Url, UrlError};
use radicle::storage::{ReadRepository, WriteStorage};
use radicle::version::Version;
+use radicle::{Profile, git, storage};
use radicle::{cob, profile};
-use radicle::{git, storage, Profile};
use radicle_cli::terminal as cli;
use crate::protocol::{Command, Line, LineReader};
diff --git a/crates/radicle-remote-helper/src/push.rs b/crates/radicle-remote-helper/src/push.rs
index 953513b08..56d5f1b9e 100644
--- a/crates/radicle-remote-helper/src/push.rs
+++ b/crates/radicle-remote-helper/src/push.rs
@@ -13,6 +13,7 @@ use radicle::identity::doc::CanonicalRefsError;
use radicle::node::device::Device;
use thiserror::Error;
+use radicle::Profile;
use radicle::cob;
use radicle::cob::object::ParseObjectId;
use radicle::cob::patch;
@@ -25,13 +26,12 @@ use radicle::node::NodeId;
use radicle::storage;
use radicle::storage::git::transport::local::Url;
use radicle::storage::{ReadRepository, SignRepository as _, WriteRepository};
-use radicle::Profile;
use radicle::{git, rad};
use radicle_cli::terminal as term;
use crate::service::GitService;
use crate::service::NodeSession;
-use crate::{hint, warn, Options, Verbosity};
+use crate::{Options, Verbosity, hint, warn};
#[derive(Debug, Error)]
pub(super) enum Error {
@@ -39,7 +39,9 @@ pub(super) enum Error {
#[error("cannot push to remote namespace owned by {0}")]
KeyMismatch(Did),
/// No public key is given
- #[error("no public key given as a remote namespace, perhaps you are attempting to push to restricted refs")]
+ #[error(
+ "no public key given as a remote namespace, perhaps you are attempting to push to restricted refs"
+ )]
NoKey,
/// User tried to delete the canonical branch.
#[error("refusing to delete default branch ref '{0}'")]
@@ -116,7 +118,9 @@ pub(super) enum Error {
FindObjects(#[from] git::canonical::error::FindObjectsError),
/// Error sending pack from the working copy to storage.
- #[error("`git send-pack` failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}")]
+ #[error(
+ "`git send-pack` failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}"
+ )]
SendPackFailed {
status: ExitStatus,
stderr: String,
diff --git a/crates/radicle-remote-helper/src/push/canonical.rs b/crates/radicle-remote-helper/src/push/canonical.rs
index ce524baca..7f9f38769 100644
--- a/crates/radicle-remote-helper/src/push/canonical.rs
+++ b/crates/radicle-remote-helper/src/push/canonical.rs
@@ -1,8 +1,8 @@
use radicle::git;
use radicle::git::canonical;
+use radicle::git::canonical::QuorumWithConvergence;
use radicle::git::canonical::effects;
use radicle::git::canonical::error::QuorumError;
-use radicle::git::canonical::QuorumWithConvergence;
use radicle::prelude::Did;
/// Validates a vote to update a canonical reference during push.
diff --git a/crates/radicle-remote-helper/src/push/error.rs b/crates/radicle-remote-helper/src/push/error.rs
index f0e71e19c..62f69c812 100644
--- a/crates/radicle-remote-helper/src/push/error.rs
+++ b/crates/radicle-remote-helper/src/push/error.rs
@@ -26,7 +26,9 @@ pub(crate) struct GraphDescendant {
#[derive(Debug, Error)]
/// Head being pushed diverges from canonical head.
-#[error("refusing to update canonical reference to commit that is not a descendant of current canonical head")]
+#[error(
+ "refusing to update canonical reference to commit that is not a descendant of current canonical head"
+)]
pub(crate) struct HeadsDiverge {
head: git::Oid,
canonical: git::Oid,
diff --git a/crates/radicle-remote-helper/src/service.rs b/crates/radicle-remote-helper/src/service.rs
index c2c1cd15f..668f88c8f 100644
--- a/crates/radicle-remote-helper/src/service.rs
+++ b/crates/radicle-remote-helper/src/service.rs
@@ -3,11 +3,11 @@ use std::io::IsTerminal;
use std::path::Path;
use std::process;
+use radicle::Profile;
use radicle::explorer::ExplorerResource;
use radicle::git;
use radicle::node::Handle;
use radicle::storage;
-use radicle::Profile;
use radicle_cli::node::{SyncError, SyncReporting, SyncSettings};
use radicle_cli::terminal as term;
diff --git a/crates/radicle-signals/src/windows.rs b/crates/radicle-signals/src/windows.rs
index 238225957..18eb156ab 100644
--- a/crates/radicle-signals/src/windows.rs
+++ b/crates/radicle-signals/src/windows.rs
@@ -3,13 +3,13 @@ use std::sync::OnceLock;
use crossbeam_channel as chan;
-use ::windows::core::BOOL;
use ::windows::Win32::System::Console::{
- SetConsoleCtrlHandler, CTRL_BREAK_EVENT, CTRL_CLOSE_EVENT, CTRL_C_EVENT, CTRL_LOGOFF_EVENT,
- CTRL_SHUTDOWN_EVENT,
+ CTRL_BREAK_EVENT, CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, CTRL_SHUTDOWN_EVENT,
+ SetConsoleCtrlHandler,
};
+use ::windows::core::BOOL;
-use crate::{already_installed, Signal};
+use crate::{Signal, already_installed};
static NOTIFY: OnceLock<chan::Sender<Signal>> = OnceLock::new();
diff --git a/crates/radicle-ssh/src/agent/client.rs b/crates/radicle-ssh/src/agent/client.rs
index ffc1fa479..510b5f881 100644
--- a/crates/radicle-ssh/src/agent/client.rs
+++ b/crates/radicle-ssh/src/agent/client.rs
@@ -11,8 +11,8 @@ pub use winpipe::WinStream as Stream;
use thiserror::Error;
use zeroize::Zeroize as _;
-use crate::agent::msg;
use crate::agent::Constraint;
+use crate::agent::msg;
use crate::encoding::{self, Encodable};
use crate::encoding::{Buffer, Encoding, Reader};
@@ -97,13 +97,13 @@ impl AgentClient<Stream> {
return Err(Error::BadAuthSock {
path: path.display().to_string(),
source: err,
- })
+ });
}
Err(err) => {
return Err(Error::Connect {
path: path.display().to_string(),
source: err,
- })
+ });
}
Ok(stream) => stream,
};
diff --git a/crates/radicle-systemd/src/credential.rs b/crates/radicle-systemd/src/credential.rs
index d367b620e..999eb4076 100644
--- a/crates/radicle-systemd/src/credential.rs
+++ b/crates/radicle-systemd/src/credential.rs
@@ -1,7 +1,7 @@
-use std::env::{var, VarError::*};
+use std::env::{VarError::*, var};
use std::ffi::OsString;
use std::fmt;
-use std::path::{is_separator, PathBuf};
+use std::path::{PathBuf, is_separator};
const CREDENTIALS_DIRECTORY: &str = "CREDENTIALS_DIRECTORY";
@@ -39,8 +39,12 @@ impl fmt::Display for PathError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
use PathError::*;
match self {
- InvalidCredentialId { id } => write!(f, "The systemd credential ID '{id}' is invalid."),
- EnvVarNotUnicode { os } => write!(f, "The value of environment variable '{CREDENTIALS_DIRECTORY}' is not valid Unicode (it lossily translates to '{}').", os.to_string_lossy()),
- }
+ InvalidCredentialId { id } => write!(f, "The systemd credential ID '{id}' is invalid."),
+ EnvVarNotUnicode { os } => write!(
+ f,
+ "The value of environment variable '{CREDENTIALS_DIRECTORY}' is not valid Unicode (it lossily translates to '{}').",
+ os.to_string_lossy()
+ ),
+ }
}
}
diff --git a/crates/radicle-systemd/src/journal.rs b/crates/radicle-systemd/src/journal.rs
index 4d53df529..a75972ef5 100644
--- a/crates/radicle-systemd/src/journal.rs
+++ b/crates/radicle-systemd/src/journal.rs
@@ -1,4 +1,4 @@
-use systemd_journal_logger::{connected_to_journal, JournalLog};
+use systemd_journal_logger::{JournalLog, connected_to_journal};
/// If the current process is directly connected to the systemd journal,
/// return a logger that will write to it.
diff --git a/crates/radicle-term/src/ansi.rs b/crates/radicle-term/src/ansi.rs
index 00ea7d7d9..b1e9bc761 100644
--- a/crates/radicle-term/src/ansi.rs
+++ b/crates/radicle-term/src/ansi.rs
@@ -10,8 +10,8 @@ mod style;
mod tests;
pub use color::Color;
-pub use paint::paint;
pub use paint::Filled;
pub use paint::Paint;
pub use paint::TerminalFile;
+pub use paint::paint;
pub use style::Style;
diff --git a/crates/radicle-term/src/ansi/paint.rs b/crates/radicle-term/src/ansi/paint.rs
index 5ed8a11be..dfb22b586 100644
--- a/crates/radicle-term/src/ansi/paint.rs
+++ b/crates/radicle-term/src/ansi/paint.rs
@@ -1,6 +1,6 @@
use std::io::IsTerminal as _;
-use std::sync::atomic::{AtomicBool, AtomicI32};
use std::sync::LazyLock;
+use std::sync::atomic::{AtomicBool, AtomicI32};
use std::{fmt, sync};
use super::color::Color;
diff --git a/crates/radicle-term/src/element.rs b/crates/radicle-term/src/element.rs
index feee19a9b..7e1ebada2 100644
--- a/crates/radicle-term/src/element.rs
+++ b/crates/radicle-term/src/element.rs
@@ -4,7 +4,7 @@ use std::ops::Deref;
use std::{io, vec};
use crate::cell::Cell;
-use crate::{viewport, Color, Filled, Label, Style};
+use crate::{Color, Filled, Label, Style, viewport};
/// Rendering constraint.
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
diff --git a/crates/radicle-term/src/io.rs b/crates/radicle-term/src/io.rs
index 619631fe8..ff74445ae 100644
--- a/crates/radicle-term/src/io.rs
+++ b/crates/radicle-term/src/io.rs
@@ -4,15 +4,15 @@ use std::process::Stdio;
use std::sync::LazyLock;
use std::{env, fmt, io, process};
+use inquire::InquireError;
use inquire::ui::{ErrorMessageRenderConfig, StyleSheet, Styled};
use inquire::validator;
-use inquire::InquireError;
-use inquire::{ui::Color, ui::RenderConfig, Confirm, CustomType, Password};
+use inquire::{Confirm, CustomType, Password, ui::Color, ui::RenderConfig};
use thiserror::Error;
use zeroize::Zeroizing;
use crate::format;
-use crate::{style, Paint, Size};
+use crate::{Paint, Size, style};
pub use inquire;
pub use inquire::Select;
diff --git a/crates/radicle-term/src/label.rs b/crates/radicle-term/src/label.rs
index 10e440589..b26349ccf 100644
--- a/crates/radicle-term/src/label.rs
+++ b/crates/radicle-term/src/label.rs
@@ -1,6 +1,6 @@
use std::fmt;
-use crate::{cell::Cell, Color, Constraint, Element, Filled, Line, Paint, Size, Style};
+use crate::{Color, Constraint, Element, Filled, Line, Paint, Size, Style, cell::Cell};
/// A styled string that does not contain any `'\n'` and implements [`Element`] and [`Cell`].
#[derive(Clone, Default, Debug)]
diff --git a/crates/radicle-term/src/lib.rs b/crates/radicle-term/src/lib.rs
index 2113c6f7c..d53ac06b1 100644
--- a/crates/radicle-term/src/lib.rs
+++ b/crates/radicle-term/src/lib.rs
@@ -16,16 +16,16 @@ use std::fmt;
use std::io::IsTerminal;
pub use ansi::Color;
-pub use ansi::{paint, Filled, Paint, Style, TerminalFile};
+pub use ansi::{Filled, Paint, Style, TerminalFile, paint};
pub use editor::Editor;
pub use element::{Constraint, Element, Line, Size};
pub use hstack::HStack;
pub use inquire::ui::Styled;
pub use io::*;
-pub use label::{label, Label};
-pub use spinner::{spinner, spinner_to, Spinner};
+pub use label::{Label, label};
+pub use spinner::{Spinner, spinner, spinner_to};
pub use table::{Table, TableOptions};
-pub use textarea::{textarea, TextArea};
+pub use textarea::{TextArea, textarea};
pub use vstack::{VStack, VStackOptions};
#[derive(Debug, PartialEq, Eq, Copy, Clone, Default)]
@@ -49,11 +49,7 @@ impl Interactive {
}
pub fn confirm(&self, prompt: impl fmt::Display) -> bool {
- if self.yes() {
- confirm(prompt)
- } else {
- true
- }
+ if self.yes() { confirm(prompt) } else { true }
}
}
@@ -68,11 +64,7 @@ impl From<Interactive> for bool {
impl From<bool> for Interactive {
fn from(b: bool) -> Self {
- if b {
- Interactive::Yes
- } else {
- Interactive::No
- }
+ if b { Interactive::Yes } else { Interactive::No }
}
}
diff --git a/crates/radicle-term/src/textarea.rs b/crates/radicle-term/src/textarea.rs
index f115f9c53..af6c00058 100644
--- a/crates/radicle-term/src/textarea.rs
+++ b/crates/radicle-term/src/textarea.rs
@@ -1,4 +1,4 @@
-use crate::{cell::Cell, Constraint, Element, Line, Paint, Size};
+use crate::{Constraint, Element, Line, Paint, Size, cell::Cell};
/// Default text wrap width.
pub const DEFAULT_WRAP: usize = 80;
diff --git a/crates/radicle-windows/src/jobs.rs b/crates/radicle-windows/src/jobs.rs
index 82ba3863b..22a9ad871 100644
--- a/crates/radicle-windows/src/jobs.rs
+++ b/crates/radicle-windows/src/jobs.rs
@@ -2,11 +2,11 @@ use std::io;
use std::os::windows::io::AsRawHandle as _;
use windows::{
- core::PCWSTR,
Win32::{
Foundation::{CloseHandle, HANDLE},
System::JobObjects::{AssignProcessToJobObject, CreateJobObjectW, TerminateJobObject},
},
+ core::PCWSTR,
};
use thiserror::Error;
diff --git a/crates/radicle/src/cob.rs b/crates/radicle/src/cob.rs
index 7892bd416..c17a50dd2 100644
--- a/crates/radicle/src/cob.rs
+++ b/crates/radicle/src/cob.rs
@@ -16,13 +16,13 @@ pub mod test;
#[cfg(test)]
pub use radicle_cob::stable;
-pub use cache::{migrate, MigrateCallback};
+pub use cache::{MigrateCallback, migrate};
pub use common::*;
pub use op::{ActorId, Op};
pub use radicle_cob::{
- change, history::EntryId, object, object::collaboration::error, type_name::TypeNameParse,
CollaborativeObject, Contents, Create, Embed, Entry, Evaluate, History, Manifest, ObjectId,
- Store, TypeName, Update, Updated, Version,
+ Store, TypeName, Update, Updated, Version, change, history::EntryId, object,
+ object::collaboration::error, type_name::TypeNameParse,
};
pub use radicle_cob::{create, get, list, remove, update};
diff --git a/crates/radicle/src/cob/common.rs b/crates/radicle/src/cob/common.rs
index 0a053b5c5..56356bc06 100644
--- a/crates/radicle/src/cob/common.rs
+++ b/crates/radicle/src/cob/common.rs
@@ -4,7 +4,7 @@ use std::ops::{Deref, Range};
use std::path::PathBuf;
use std::str::FromStr;
-use base64::prelude::{Engine, BASE64_STANDARD};
+use base64::prelude::{BASE64_STANDARD, Engine};
use localtime::LocalTime;
use serde::{Deserialize, Serialize};
use thiserror::Error;
@@ -454,11 +454,7 @@ pub enum Authorization {
impl From<bool> for Authorization {
fn from(value: bool) -> Self {
- if value {
- Self::Allow
- } else {
- Self::Deny
- }
+ if value { Self::Allow } else { Self::Deny }
}
}
diff --git a/crates/radicle/src/cob/external.rs b/crates/radicle/src/cob/external.rs
index 9014b46fb..d3ff95351 100644
--- a/crates/radicle/src/cob/external.rs
+++ b/crates/radicle/src/cob/external.rs
@@ -87,7 +87,7 @@ use std::process::{Command, Stdio};
use serde::{Deserialize, Serialize};
use thiserror::Error;
-use serde_json::{from_slice, to_writer, Error as JsonError, Map, Value};
+use serde_json::{Error as JsonError, Map, Value, from_slice, to_writer};
use crate::cob::object::collaboration::Evaluate;
use crate::cob::op::{Op as CobOp, OpEncodingError};
diff --git a/crates/radicle/src/cob/identity.rs b/crates/radicle/src/cob/identity.rs
index 5732dbc08..e8bbadf93 100644
--- a/crates/radicle/src/cob/identity.rs
+++ b/crates/radicle/src/cob/identity.rs
@@ -10,19 +10,18 @@ use thiserror::Error;
use crate::git;
use crate::git::Oid;
use crate::identity::doc::Doc;
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
use crate::storage;
use crate::{
cob,
cob::{
- op, store,
+ ActorId, Timestamp, Uri, op, store,
store::{Cob, CobAction, Transaction},
- ActorId, Timestamp, Uri,
},
identity::{
- doc::{DocError, RepoId},
Did,
+ doc::{DocError, RepoId},
},
storage::{ReadRepository, RepositoryError, WriteRepository},
};
@@ -1074,12 +1073,12 @@ mod test {
use crate::cob::{self, Title};
use crate::crypto::PublicKey;
+ use crate::identity::Visibility;
use crate::identity::did::Did;
use crate::identity::doc::PayloadId;
- use crate::identity::Visibility;
use crate::rad;
- use crate::storage::git::Storage;
use crate::storage::ReadStorage;
+ use crate::storage::git::Storage;
use crate::test::fixtures;
use crate::test::setup::{Network, NodeWithRepo};
diff --git a/crates/radicle/src/cob/issue.rs b/crates/radicle/src/cob/issue.rs
index 1a3ffffb6..ee438c6e4 100644
--- a/crates/radicle/src/cob/issue.rs
+++ b/crates/radicle/src/cob/issue.rs
@@ -13,11 +13,11 @@ use crate::cob::common::{Author, Authorization, Label, Reaction, Timestamp, Uri}
use crate::cob::store::Transaction;
use crate::cob::store::{Cob, CobAction};
use crate::cob::thread::{Comment, CommentId, Thread};
-use crate::cob::{op, store, ActorId, Embed, EntryId, ObjectId, TypeName};
-use crate::cob::{thread, TitleError};
+use crate::cob::{ActorId, Embed, EntryId, ObjectId, TypeName, op, store};
+use crate::cob::{TitleError, thread};
use crate::identity::doc::DocError;
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
use crate::prelude::{Did, Doc, ReadRepository, RepoId};
use crate::storage;
use crate::storage::{HasRepoId, RepositoryError, WriteRepository};
@@ -981,7 +981,7 @@ mod test {
use pretty_assertions::assert_eq;
use super::*;
- use crate::cob::{store::CobWithType, ActorId, Reaction};
+ use crate::cob::{ActorId, Reaction, store::CobWithType};
use crate::git::Oid;
use crate::issue::cache::Issues as _;
use crate::test::arbitrary;
diff --git a/crates/radicle/src/cob/issue/cache.rs b/crates/radicle/src/cob/issue/cache.rs
index 70f5ac6f9..08cef436c 100644
--- a/crates/radicle/src/cob/issue/cache.rs
+++ b/crates/radicle/src/cob/issue/cache.rs
@@ -9,8 +9,8 @@ use crate::cob::cache;
use crate::cob::cache::{Remove, StoreReader, StoreWriter, Update};
use crate::cob::store;
use crate::cob::{Embed, Label, ObjectId, TypeName, Uri};
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
use crate::prelude::{Did, RepoId};
use crate::storage::{HasRepoId, ReadRepository, RepositoryError, SignRepository, WriteRepository};
diff --git a/crates/radicle/src/cob/op.rs b/crates/radicle/src/cob/op.rs
index b9cbbd3b5..e6439ad91 100644
--- a/crates/radicle/src/cob/op.rs
+++ b/crates/radicle/src/cob/op.rs
@@ -122,10 +122,10 @@ impl<A> Op<A> {
pub fn manifest_of<S>(store: &S, id: &git::Oid) -> Result<Manifest, ManifestError>
where
S: cob::change::Storage<
- ObjectId = git::Oid,
- Parent = git::Oid,
- Signatures = crypto::ssh::ExtendedSignature,
- >,
+ ObjectId = git::Oid,
+ Parent = git::Oid,
+ Signatures = crypto::ssh::ExtendedSignature,
+ >,
{
store.manifest_of(id).map_err(|err| ManifestError {
object: *id,
@@ -137,10 +137,10 @@ impl<A> Op<A> {
pub fn load<S>(store: &S, id: git::Oid) -> Result<Self, LoadError>
where
S: cob::change::Storage<
- ObjectId = git::Oid,
- Parent = git::Oid,
- Signatures = crypto::ssh::ExtendedSignature,
- >,
+ ObjectId = git::Oid,
+ Parent = git::Oid,
+ Signatures = crypto::ssh::ExtendedSignature,
+ >,
for<'de> A: serde::Deserialize<'de>,
{
let entry = store.load(id).map_err(|err| LoadError::Load {
diff --git a/crates/radicle/src/cob/patch.rs b/crates/radicle/src/cob/patch.rs
index 98214b9b8..bb5ae28cf 100644
--- a/crates/radicle/src/cob/patch.rs
+++ b/crates/radicle/src/cob/patch.rs
@@ -25,11 +25,11 @@ use crate::cob::store::{Cob, CobAction};
use crate::cob::thread;
use crate::cob::thread::Thread;
use crate::cob::thread::{Comment, CommentId, Edit, Reactions};
-use crate::cob::{op, store, ActorId, Embed, EntryId, ObjectId, TypeName, Uri};
+use crate::cob::{ActorId, Embed, EntryId, ObjectId, TypeName, Uri, op, store};
use crate::crypto::PublicKey;
use crate::git;
-use crate::identity::doc::{DocAt, DocError};
use crate::identity::PayloadError;
+use crate::identity::doc::{DocAt, DocError};
use crate::node::device::Device;
use crate::prelude::*;
use crate::storage;
@@ -2868,7 +2868,7 @@ mod ser {
use serde::ser::SerializeSeq;
- use crate::cob::{thread::Reactions, ActorId, CodeLocation};
+ use crate::cob::{ActorId, CodeLocation, thread::Reactions};
/// Serialize a `Revision`'s reaction as an object containing the
/// `location`, `emoji`, and all `authors` that have performed the
diff --git a/crates/radicle/src/cob/patch/actions.rs b/crates/radicle/src/cob/patch/actions.rs
index 67f6cfc12..17a2405f3 100644
--- a/crates/radicle/src/cob/patch/actions.rs
+++ b/crates/radicle/src/cob/patch/actions.rs
@@ -5,9 +5,9 @@
use serde::{Deserialize, Serialize};
-use crate::cob::{thread::Edit, ActorId, Embed, Label, Timestamp, Uri};
+use crate::cob::{ActorId, Embed, Label, Timestamp, Uri, thread::Edit};
-use super::{lookup, Error, Patch, ReviewId, Verdict};
+use super::{Error, Patch, ReviewId, Verdict, lookup};
/// A review edit that keeps track of the different versions of actions.
///
diff --git a/crates/radicle/src/cob/patch/cache.rs b/crates/radicle/src/cob/patch/cache.rs
index c6a527f0e..0f17c12d7 100644
--- a/crates/radicle/src/cob/patch/cache.rs
+++ b/crates/radicle/src/cob/patch/cache.rs
@@ -712,7 +712,7 @@ mod tests {
use crate::cob::cache::{Store, Update, Write};
use crate::cob::thread::{Comment, Thread};
- use crate::cob::{migrate, Author, Title};
+ use crate::cob::{Author, Title, migrate};
use crate::patch::{
ByRevision, MergeTarget, Patch, PatchCounts, PatchId, Revision, RevisionId, State, Status,
};
diff --git a/crates/radicle/src/cob/patch/encoding/review.rs b/crates/radicle/src/cob/patch/encoding/review.rs
index bb60b0f1c..ae626effa 100644
--- a/crates/radicle/src/cob/patch/encoding/review.rs
+++ b/crates/radicle/src/cob/patch/encoding/review.rs
@@ -127,7 +127,7 @@ mod test {
use serde_json::json;
use crate::{
- cob::{thread::Edit, Timestamp},
+ cob::{Timestamp, thread::Edit},
patch,
};
diff --git a/crates/radicle/src/cob/store.rs b/crates/radicle/src/cob/store.rs
index 7e092da87..b3bc9819c 100644
--- a/crates/radicle/src/cob/store.rs
+++ b/crates/radicle/src/cob/store.rs
@@ -13,8 +13,8 @@ use crate::cob::{Create, Embed, EntryId, ObjectId, TypeName, Update, Updated, Ur
use crate::git;
use crate::node::device::Device;
use crate::prelude::*;
-use crate::storage::git as storage;
use crate::storage::SignRepository;
+use crate::storage::git as storage;
use crate::{cob, identity};
pub trait CobAction {
@@ -129,7 +129,9 @@ pub enum Error {
#[source]
err: git::raw::Error,
},
- #[error("transaction already contains action {0} which produces an identifier, denying to add action {1} which also produces an identifier")]
+ #[error(
+ "transaction already contains action {0} which produces an identifier, denying to add action {1} which also produces an identifier"
+ )]
ClashingIdentifiers(String, String),
}
@@ -344,7 +346,10 @@ where
/// Return all objects.
pub fn all(
&self,
- ) -> Result<impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + 'a + use<'a, T, R>, Error> {
+ ) -> Result<
+ impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + 'a + use<'a, T, R>,
+ Error,
+ > {
let raw = cob::list::<T, _>(self.repo, self.type_name)?;
Ok(raw.into_iter().map(|o| Ok((*o.id(), o.object))))
diff --git a/crates/radicle/src/cob/stream/iter.rs b/crates/radicle/src/cob/stream/iter.rs
index ef6c59515..760b354ca 100644
--- a/crates/radicle/src/cob/stream/iter.rs
+++ b/crates/radicle/src/cob/stream/iter.rs
@@ -4,11 +4,11 @@ use serde::Deserialize;
use crate::cob::{Op, TypeName};
use crate::git;
-use crate::git::fmt::refspec::PatternString;
use crate::git::Oid;
+use crate::git::fmt::refspec::PatternString;
-use super::error;
use super::CobRange;
+use super::error;
/// A `Walk` specifies a range to construct a [`WalkIter`].
#[derive(Clone, Debug)]
diff --git a/crates/radicle/src/cob/test.rs b/crates/radicle/src/cob/test.rs
index 8ecad448b..7a1c96549 100644
--- a/crates/radicle/src/cob/test.rs
+++ b/crates/radicle/src/cob/test.rs
@@ -9,8 +9,8 @@ use serde::{Deserialize, Serialize};
use crate::cob::op::Op;
use crate::cob::patch::Patch;
use crate::cob::store::encoding;
-use crate::cob::{patch, Title};
use crate::cob::{Entry, History, Manifest, Timestamp, Version};
+use crate::cob::{Title, patch};
use crate::crypto::Signer;
use crate::git::Oid;
use crate::node::device::Device;
@@ -257,7 +257,7 @@ fn encoded<T: Cob, G: Signer>(
) -> (Vec<u8>, crate::git::Oid) {
use radicle_git_metadata::{
author::{Author, Time},
- commit::{headers::Headers, trailers::OwnedTrailer, CommitData},
+ commit::{CommitData, headers::Headers, trailers::OwnedTrailer},
};
let data = encoding::encode(action).unwrap();
diff --git a/crates/radicle/src/cob/thread.rs b/crates/radicle/src/cob/thread.rs
index b0be343b9..572c45281 100644
--- a/crates/radicle/src/cob/thread.rs
+++ b/crates/radicle/src/cob/thread.rs
@@ -3,13 +3,13 @@ use std::collections::{BTreeMap, BTreeSet};
use std::str::FromStr;
use std::sync::LazyLock;
-use serde::{ser::SerializeStruct, Deserialize, Serialize};
+use serde::{Deserialize, Serialize, ser::SerializeStruct};
use thiserror::Error;
use crate::cob;
use crate::cob::common::{Reaction, Timestamp, Uri};
use crate::cob::store::Cob;
-use crate::cob::{op, ActorId, Embed, EntryId, Op};
+use crate::cob::{ActorId, Embed, EntryId, Op, op};
use crate::git;
use crate::prelude::ReadRepository;
@@ -633,8 +633,8 @@ mod tests {
use crate as radicle;
use crate::cob::store::Cob;
use crate::cob::test;
- use crate::crypto::test::signer::MockSigner;
use crate::crypto::Signer;
+ use crate::crypto::test::signer::MockSigner;
use crate::node::device::Device;
use crate::profile::env;
use crate::test::arbitrary;
diff --git a/crates/radicle/src/git.rs b/crates/radicle/src/git.rs
index 0cfd2de17..a1f346452 100644
--- a/crates/radicle/src/git.rs
+++ b/crates/radicle/src/git.rs
@@ -6,7 +6,7 @@ use std::path::Path;
use std::process::Command;
use std::str::FromStr;
-pub use radicle_oid::{str::ParseOidError, Oid};
+pub use radicle_oid::{Oid, str::ParseOidError};
pub extern crate radicle_git_ref_format as fmt;
@@ -705,20 +705,12 @@ pub fn set_upstream(
let branch_remote = format!("branch.{branch}.remote");
let branch_merge = format!("branch.{branch}.merge");
- config.remove_multivar(&branch_remote, ".*").or_else(|e| {
- if e.is_not_found() {
- Ok(())
- } else {
- Err(e)
- }
- })?;
- config.remove_multivar(&branch_merge, ".*").or_else(|e| {
- if e.is_not_found() {
- Ok(())
- } else {
- Err(e)
- }
- })?;
+ config
+ .remove_multivar(&branch_remote, ".*")
+ .or_else(|e| if e.is_not_found() { Ok(()) } else { Err(e) })?;
+ config
+ .remove_multivar(&branch_merge, ".*")
+ .or_else(|e| if e.is_not_found() { Ok(()) } else { Err(e) })?;
config.set_multivar(&branch_remote, ".*", remote)?;
config.set_multivar(&branch_merge, ".*", merge)?;
@@ -768,7 +760,7 @@ pub mod process {
use crate::storage::ReadRepository;
- use super::{run, Oid, Verbosity};
+ use super::{Oid, Verbosity, run};
/// Perform a local fetch, from storage using `git fetch-pack`.
///
diff --git a/crates/radicle/src/git/canonical/convergence.rs b/crates/radicle/src/git/canonical/convergence.rs
index ca5e2deae..90fcba226 100644
--- a/crates/radicle/src/git/canonical/convergence.rs
+++ b/crates/radicle/src/git/canonical/convergence.rs
@@ -3,7 +3,7 @@ use std::{fmt, ops::ControlFlow};
use crate::git::Oid;
use crate::prelude::Did;
-use super::{effects, error, Object};
+use super::{Object, effects, error};
/// Checks for convergence and ensures that compared objects are of the same
/// type, i.e. commit or tag, to the [`Candidate`].
diff --git a/crates/radicle/src/git/canonical/effects.rs b/crates/radicle/src/git/canonical/effects.rs
index de70f9d55..b63a8118e 100644
--- a/crates/radicle/src/git/canonical/effects.rs
+++ b/crates/radicle/src/git/canonical/effects.rs
@@ -1,9 +1,9 @@
use std::collections::{BTreeMap, BTreeSet};
use crate::git;
+use crate::git::Oid;
use crate::git::fmt::Qualified;
use crate::git::raw::ErrorExt as _;
-use crate::git::Oid;
use crate::prelude::Did;
use super::{FoundObjects, GraphAheadBehind, MergeBase, Object};
diff --git a/crates/radicle/src/git/canonical/error.rs b/crates/radicle/src/git/canonical/error.rs
index d6b1529c2..b482f32d3 100644
--- a/crates/radicle/src/git/canonical/error.rs
+++ b/crates/radicle/src/git/canonical/error.rs
@@ -2,20 +2,26 @@ use thiserror::Error;
use crate::git::Oid;
-use super::{effects, ObjectType};
+use super::{ObjectType, effects};
pub use effects::{FindObjectsError, MergeBaseError};
#[derive(Debug, Error)]
pub enum QuorumError {
- #[error("could not determine target for canonical reference '{refname}', found objects of different types")]
+ #[error(
+ "could not determine target for canonical reference '{refname}', found objects of different types"
+ )]
DifferentTypes { refname: String },
#[error(transparent)]
Convergence(#[from] ConvergesError),
#[error(transparent)]
MergeBase(#[from] MergeBaseError),
- #[error("could not determine target for canonical reference '{refname}', no object with at least {threshold} vote(s) found (threshold not met)")]
+ #[error(
+ "could not determine target for canonical reference '{refname}', no object with at least {threshold} vote(s) found (threshold not met)"
+ )]
NoCandidates { refname: String, threshold: usize },
- #[error("could not determine target commit for canonical reference '{refname}', found diverging commits {longest} and {head}, with base commit {base} and threshold {threshold}")]
+ #[error(
+ "could not determine target commit for canonical reference '{refname}', found diverging commits {longest} and {head}, with base commit {base} and threshold {threshold}"
+ )]
DivergingCommits {
refname: String,
threshold: usize,
@@ -23,7 +29,9 @@ pub enum QuorumError {
longest: Oid,
head: Oid,
},
- #[error("could not determine target tag for canonical reference '{refname}', found multiple candidates with threshold {threshold}")]
+ #[error(
+ "could not determine target tag for canonical reference '{refname}', found multiple candidates with threshold {threshold}"
+ )]
DivergingTags {
refname: String,
threshold: usize,
diff --git a/crates/radicle/src/git/canonical/quorum.rs b/crates/radicle/src/git/canonical/quorum.rs
index 5279b0ed1..6e805f76d 100644
--- a/crates/radicle/src/git/canonical/quorum.rs
+++ b/crates/radicle/src/git/canonical/quorum.rs
@@ -239,7 +239,7 @@ pub enum CommitQuorumFailure {
#[allow(clippy::unwrap_used)]
#[cfg(test)]
mod test {
- use crate::git::{canonical::MergeBase, Oid};
+ use crate::git::{Oid, canonical::MergeBase};
use super::MergeBases;
diff --git a/crates/radicle/src/git/canonical/rules.rs b/crates/radicle/src/git/canonical/rules.rs
index 0a9d37a15..ca9353b00 100644
--- a/crates/radicle/src/git/canonical/rules.rs
+++ b/crates/radicle/src/git/canonical/rules.rs
@@ -22,10 +22,10 @@ use thiserror::Error;
use crate::git;
use crate::git::canonical;
use crate::git::canonical::Canonical;
-use crate::git::fmt::refspec::QualifiedPattern;
use crate::git::fmt::Qualified;
-use crate::git::fmt::{refname, RefString};
-use crate::identity::{doc, Did};
+use crate::git::fmt::refspec::QualifiedPattern;
+use crate::git::fmt::{RefString, refname};
+use crate::identity::{Did, doc};
const ASTERISK: char = '*';
@@ -745,18 +745,18 @@ mod tests {
use nonempty::nonempty;
- use crate::crypto::{test::signer::MockSigner, Signer};
+ use crate::Storage;
+ use crate::crypto::{Signer, test::signer::MockSigner};
use crate::git;
- use crate::git::fmt::qualified_pattern;
use crate::git::fmt::RefString;
- use crate::identity::doc::Doc;
+ use crate::git::fmt::qualified_pattern;
use crate::identity::Visibility;
+ use crate::identity::doc::Doc;
use crate::node::device::Device;
use crate::rad;
use crate::storage::refs::{IDENTITY_BRANCH, IDENTITY_ROOT, SIGREFS_BRANCH, SIGREFS_PARENT};
- use crate::storage::{git::transport, ReadStorage};
+ use crate::storage::{ReadStorage, git::transport};
use crate::test::{arbitrary, fixtures};
- use crate::Storage;
use super::*;
@@ -994,7 +994,9 @@ mod tests {
assert_eq!(
patterns,
- [pattern05, pattern06, pattern03, pattern02, pattern04, pattern01]
+ [
+ pattern05, pattern06, pattern03, pattern02, pattern04, pattern01
+ ]
);
}
diff --git a/crates/radicle/src/git/raw.rs b/crates/radicle/src/git/raw.rs
index 5824c8e9e..a27f79e33 100644
--- a/crates/radicle/src/git/raw.rs
+++ b/crates/radicle/src/git/raw.rs
@@ -6,7 +6,7 @@
// Re-exports that are only used within this crate.
pub(crate) use git2::{
- message_trailers_strs, AutotagOption, Blob, FetchOptions, FetchPrune, Object, Revwalk, Sort,
+ AutotagOption, Blob, FetchOptions, FetchPrune, Object, Revwalk, Sort, message_trailers_strs,
};
#[cfg(unix)]
@@ -35,7 +35,7 @@ pub mod build {
pub(crate) mod transport {
pub use git2::transport::{
- register, Service, SmartSubtransport, SmartSubtransportStream, Transport,
+ Service, SmartSubtransport, SmartSubtransportStream, Transport, register,
};
}
diff --git a/crates/radicle/src/identity/crefs.rs b/crates/radicle/src/identity/crefs.rs
index 939d5b16c..9a089fa27 100644
--- a/crates/radicle/src/identity/crefs.rs
+++ b/crates/radicle/src/identity/crefs.rs
@@ -1,8 +1,8 @@
use serde::{Deserialize, Serialize};
use crate::git::canonical::{
- rules::{self, RawRules, Rules, ValidationError},
ValidRule,
+ rules::{self, RawRules, Rules, ValidationError},
};
use super::doc::{Delegates, Payload};
diff --git a/crates/radicle/src/identity/doc.rs b/crates/radicle/src/identity/doc.rs
index f2e331160..f017c9b36 100644
--- a/crates/radicle/src/identity/doc.rs
+++ b/crates/radicle/src/identity/doc.rs
@@ -11,7 +11,7 @@ use std::sync::LazyLock;
use crate::git::Oid;
use nonempty::NonEmpty;
use radicle_cob::type_name::{TypeName, TypeNameParse};
-use serde::{de, Deserialize, Serialize};
+use serde::{Deserialize, Serialize, de};
use thiserror::Error;
use crate::canonical::formatter::CanonicalFormatter;
@@ -21,7 +21,7 @@ use crate::crypto::Signature;
use crate::git;
use crate::git::canonical::rules;
use crate::git::raw::ErrorExt as _;
-use crate::identity::{project::Project, Did};
+use crate::identity::{Did, project::Project};
use crate::node::device::Device;
use crate::storage;
use crate::storage::{ReadRepository, RepositoryError};
@@ -29,8 +29,8 @@ use crate::storage::{ReadRepository, RepositoryError};
pub use crypto::PublicKey;
pub use radicle_core::repo::*;
-use super::crefs::{self, RawCanonicalRefs};
use super::CanonicalRefs;
+use super::crefs::{self, RawCanonicalRefs};
/// Path to the identity document in the identity branch.
pub static PATH: LazyLock<&Path> = LazyLock::new(|| Path::new("radicle.json"));
@@ -974,8 +974,8 @@ mod test {
use crate::assert_matches;
use crate::rad;
- use crate::storage::git::transport;
use crate::storage::git::Storage;
+ use crate::storage::git::transport;
use crate::storage::{ReadStorage as _, RemoteId, WriteStorage as _};
use crate::test::arbitrary;
use crate::test::arbitrary::r#gen;
diff --git a/crates/radicle/src/identity/doc/update.rs b/crates/radicle/src/identity/doc/update.rs
index 70d1d209a..affa76422 100644
--- a/crates/radicle/src/identity/doc/update.rs
+++ b/crates/radicle/src/identity/doc/update.rs
@@ -8,7 +8,7 @@ use crate::{
git,
identity::crefs::GetCanonicalRefs as _,
prelude::Did,
- storage::{self, refs, ReadRepository, RepositoryError},
+ storage::{self, ReadRepository, RepositoryError, refs},
};
use super::{Doc, PayloadError, PayloadId, RawDoc, Visibility};
@@ -206,7 +206,7 @@ pub fn verify(raw: RawDoc) -> Result<Doc, error::DocVerification> {
return Err(error::DocVerification::PayloadError {
id: PayloadId::project(),
err: e.to_string(),
- })
+ });
}
};
// Ensure that if we have canonical reference rules and a project, that no
@@ -279,7 +279,7 @@ mod test {
git,
identity::{
crefs::GetCanonicalRefs,
- doc::{update::error, PayloadId},
+ doc::{PayloadId, update::error},
},
prelude::RawDoc,
test::arbitrary,
diff --git a/crates/radicle/src/identity/doc/update/error.rs b/crates/radicle/src/identity/doc/update/error.rs
index 05dd37036..bf19aca66 100644
--- a/crates/radicle/src/identity/doc/update/error.rs
+++ b/crates/radicle/src/identity/doc/update/error.rs
@@ -2,7 +2,7 @@ use thiserror::Error;
use crate::git;
use crate::git::fmt::RefString;
-use crate::identity::{doc::PayloadId, Did, DocError};
+use crate::identity::{Did, DocError, doc::PayloadId};
#[derive(Debug, Error)]
#[error("'{0}' is not a valid visibility type")]
@@ -28,7 +28,9 @@ pub enum DocVerification {
PayloadError { id: PayloadId, err: String },
#[error(transparent)]
Doc(#[from] DocError),
- #[error("incompatible payloads: The rule(s) xyz.radicle.crefs.rules.{matches:?} matches the value of xyz.radicle.project.defaultBranch ('{default}'). Possible resolutions: Change the name of the default branch or remove the rule(s).")]
+ #[error(
+ "incompatible payloads: The rule(s) xyz.radicle.crefs.rules.{matches:?} matches the value of xyz.radicle.project.defaultBranch ('{default}'). Possible resolutions: Change the name of the default branch or remove the rule(s)."
+ )]
DisallowDefault {
matches: Vec<String>,
default: git::fmt::Qualified<'static>,
diff --git a/crates/radicle/src/identity/project.rs b/crates/radicle/src/identity/project.rs
index 908d8b902..9f2504753 100644
--- a/crates/radicle/src/identity/project.rs
+++ b/crates/radicle/src/identity/project.rs
@@ -1,8 +1,8 @@
use std::{fmt, str::FromStr};
use serde::{
- de::{self, MapAccess, Visitor},
Deserialize, Serialize,
+ de::{self, MapAccess, Visitor},
};
use thiserror::Error;
diff --git a/crates/radicle/src/io.rs b/crates/radicle/src/io.rs
index a446f834d..ab0f56acd 100644
--- a/crates/radicle/src/io.rs
+++ b/crates/radicle/src/io.rs
@@ -1,7 +1,7 @@
use std::io;
#[cfg(unix)]
-use libc::{getrlimit, rlim_t, rlimit, setrlimit, RLIMIT_NOFILE};
+use libc::{RLIMIT_NOFILE, getrlimit, rlim_t, rlimit, setrlimit};
#[cfg(unix)]
type Int = rlim_t;
diff --git a/crates/radicle/src/lib.rs b/crates/radicle/src/lib.rs
index 151699670..e5bd71506 100644
--- a/crates/radicle/src/lib.rs
+++ b/crates/radicle/src/lib.rs
@@ -44,7 +44,7 @@ pub mod prelude {
pub use crypto::PublicKey;
pub use git::BranchName;
- pub use identity::{project::Project, Did, Doc, RawDoc, RepoId};
+ pub use identity::{Did, Doc, RawDoc, RepoId, project::Project};
pub use node::{Alias, NodeId, Timestamp};
pub use profile::Profile;
pub use storage::{ReadRepository, ReadStorage, SignRepository, WriteRepository, WriteStorage};
diff --git a/crates/radicle/src/node.rs b/crates/radicle/src/node.rs
index d6619e5aa..e313e94d0 100644
--- a/crates/radicle/src/node.rs
+++ b/crates/radicle/src/node.rs
@@ -43,11 +43,11 @@ use crate::crypto::PublicKey;
use crate::git;
use crate::identity::RepoId;
use crate::profile;
-use crate::storage::refs::{FeatureLevel, RefsAt};
use crate::storage::RefUpdate;
+use crate::storage::refs::{FeatureLevel, RefsAt};
pub use address::KnownAddress;
-pub use command::{Command, CommandResult, ConnectOptions, Success, DEFAULT_TIMEOUT};
+pub use command::{Command, CommandResult, ConnectOptions, DEFAULT_TIMEOUT, Success};
pub use config::Config;
pub use cyphernet::addr::{HostName, PeerAddr, PeerAddrParseError};
pub use db::Database;
@@ -1049,7 +1049,7 @@ impl<T: DeserializeOwned> Iterator for LineIter<T> {
return Some(Err(Error::InvalidJson {
response: l.clone(),
error: e,
- }))
+ }));
}
Ok(result) => result,
};
diff --git a/crates/radicle/src/node/address/store.rs b/crates/radicle/src/node/address/store.rs
index 55ffbf422..0b508dc0d 100644
--- a/crates/radicle/src/node/address/store.rs
+++ b/crates/radicle/src/node/address/store.rs
@@ -8,8 +8,8 @@ use sqlite as sql;
use thiserror::Error;
use crate::node;
-use crate::node::address::{AddressType, KnownAddress, Node, Source};
use crate::node::UserAgent;
+use crate::node::address::{AddressType, KnownAddress, Node, Source};
use crate::node::{Address, Alias, AliasError, AliasStore, Database, NodeId, Penalty, Severity};
use crate::prelude::Timestamp;
use crate::sql::transaction;
@@ -114,32 +114,33 @@ impl Store for Database {
)?;
stmt.bind((1, node))?;
- match stmt.into_iter().next() { Some(Ok(row)) => {
- let version = row.try_read::<i64, _>("version")?.try_into()?;
- let features = row.try_read::<node::Features, _>("features")?;
- let alias = Alias::from_str(row.try_read::<&str, _>("alias")?)?;
- let timestamp = row.try_read::<Timestamp, _>("timestamp")?;
- let pow = row.try_read::<i64, _>("pow")? as u32;
- let agent = row.try_read::<UserAgent, _>("agent")?;
- let penalty = row.try_read::<i64, _>("penalty")?.min(u8::MAX as i64);
- let penalty = Penalty(penalty as u8);
- let banned = row.try_read::<i64, _>("banned")?.is_positive();
- let addrs = self.addresses_of(node)?;
-
- Ok(Some(Node {
- version,
- features,
- alias,
- pow,
- agent,
- timestamp,
- penalty,
- addrs,
- banned,
- }))
- } _ => {
- Ok(None)
- }}
+ match stmt.into_iter().next() {
+ Some(Ok(row)) => {
+ let version = row.try_read::<i64, _>("version")?.try_into()?;
+ let features = row.try_read::<node::Features, _>("features")?;
+ let alias = Alias::from_str(row.try_read::<&str, _>("alias")?)?;
+ let timestamp = row.try_read::<Timestamp, _>("timestamp")?;
+ let pow = row.try_read::<i64, _>("pow")? as u32;
+ let agent = row.try_read::<UserAgent, _>("agent")?;
+ let penalty = row.try_read::<i64, _>("penalty")?.min(u8::MAX as i64);
+ let penalty = Penalty(penalty as u8);
+ let banned = row.try_read::<i64, _>("banned")?.is_positive();
+ let addrs = self.addresses_of(node)?;
+
+ Ok(Some(Node {
+ version,
+ features,
+ alias,
+ pow,
+ agent,
+ timestamp,
+ penalty,
+ addrs,
+ banned,
+ }))
+ }
+ _ => Ok(None),
+ }
}
fn is_addr_banned(&self, addr: &Address) -> Result<bool, Error> {
@@ -152,15 +153,16 @@ impl Store for Database {
stmt.bind((1, addr))?;
stmt.bind((2, AddressType::from(addr)))?;
- match stmt.into_iter().next() { Some(row) => {
- let row = row?;
- let addr_banned = row.try_read::<i64, _>(0)?.is_positive();
- let node_banned = row.try_read::<i64, _>(1)?.is_positive();
+ match stmt.into_iter().next() {
+ Some(row) => {
+ let row = row?;
+ let addr_banned = row.try_read::<i64, _>(0)?.is_positive();
+ let node_banned = row.try_read::<i64, _>(1)?.is_positive();
- Ok(node_banned || addr_banned)
- } _ => {
- Ok(false)
- }}
+ Ok(node_banned || addr_banned)
+ }
+ _ => Ok(false),
+ }
}
fn is_ip_banned(&self, ip: IpAddr) -> Result<bool, Error> {
diff --git a/crates/radicle/src/node/command.rs b/crates/radicle/src/node/command.rs
index 1ac5ae7f7..aa5dbbf45 100644
--- a/crates/radicle/src/node/command.rs
+++ b/crates/radicle/src/node/command.rs
@@ -17,8 +17,8 @@ use crate::crypto::PublicKey;
use crate::identity::RepoId;
use crate::storage::refs;
-use super::events::Event;
use super::NodeId;
+use super::events::Event;
/// Default timeout when waiting for the node to respond with data.
pub const DEFAULT_TIMEOUT: time::Duration = time::Duration::from_secs(30);
diff --git a/crates/radicle/src/node/config.rs b/crates/radicle/src/node/config.rs
index 9057db799..dfdaa886f 100644
--- a/crates/radicle/src/node/config.rs
+++ b/crates/radicle/src/node/config.rs
@@ -22,7 +22,7 @@ pub type ProtocolVersion = u8;
pub mod seeds {
use std::{str::FromStr, sync::LazyLock};
- use cyphernet::addr::{tor::OnionAddrV3, HostName, NetAddr};
+ use cyphernet::addr::{HostName, NetAddr, tor::OnionAddrV3};
use super::{ConnectAddress, NodeId, PeerAddr};
@@ -767,7 +767,7 @@ wrapper!(
#[allow(clippy::unwrap_used)]
mod test {
use super::{DefaultSeedingPolicy, Scope};
- use crate::node::{policy, Alias};
+ use crate::node::{Alias, policy};
use serde_json::json;
#[test]
diff --git a/crates/radicle/src/node/db.rs b/crates/radicle/src/node/db.rs
index b8b010a9d..5cd30f2a6 100644
--- a/crates/radicle/src/node/db.rs
+++ b/crates/radicle/src/node/db.rs
@@ -16,7 +16,7 @@ use sqlite as sql;
use thiserror::Error;
use crate::node::{
- address, Address, Alias, Features, KnownAddress, NodeId, Timestamp, UserAgent, PROTOCOL_VERSION,
+ Address, Alias, Features, KnownAddress, NodeId, PROTOCOL_VERSION, Timestamp, UserAgent, address,
};
use crate::sql::transaction;
diff --git a/crates/radicle/src/node/device.rs b/crates/radicle/src/node/device.rs
index 7a0f98695..3e2556aea 100644
--- a/crates/radicle/src/node/device.rs
+++ b/crates/radicle/src/node/device.rs
@@ -2,9 +2,9 @@ use std::fmt;
use std::ops::Deref;
use crypto::{
+ Signature,
signature::{Keypair, KeypairRef, Signer, Verifier},
ssh::ExtendedSignature,
- Signature,
};
use crate::crypto;
diff --git a/crates/radicle/src/node/events.rs b/crates/radicle/src/node/events.rs
index 01f7f968f..5100b509e 100644
--- a/crates/radicle/src/node/events.rs
+++ b/crates/radicle/src/node/events.rs
@@ -9,11 +9,11 @@ use std::time;
use crossbeam_channel as chan;
-use crate::git::fmt::Qualified;
use crate::git::Oid;
+use crate::git::fmt::Qualified;
use crate::node;
use crate::prelude::*;
-use crate::storage::{refs, RefUpdate};
+use crate::storage::{RefUpdate, refs};
/// Maximum unconsumed events allowed per subscription.
pub const MAX_PENDING_EVENTS: usize = 8192;
diff --git a/crates/radicle/src/node/features.rs b/crates/radicle/src/node/features.rs
index 2306f8703..a643b2072 100644
--- a/crates/radicle/src/node/features.rs
+++ b/crates/radicle/src/node/features.rs
@@ -116,13 +116,17 @@ mod test {
fn test_operations() {
assert_eq!(Features::NONE.with(Features::SEED), Features::SEED);
- assert!(!Features::from(u64::MAX)
- .without(Features::SEED)
- .has(Features::SEED));
+ assert!(
+ !Features::from(u64::MAX)
+ .without(Features::SEED)
+ .has(Features::SEED)
+ );
- assert!(Features::from(u64::MIN)
- .with(Features::SEED)
- .has(Features::SEED));
+ assert!(
+ Features::from(u64::MIN)
+ .with(Features::SEED)
+ .has(Features::SEED)
+ );
assert_eq!(
Features::NONE.with(Features::SEED).without(Features::SEED),
diff --git a/crates/radicle/src/node/notifications.rs b/crates/radicle/src/node/notifications.rs
index 704a2f946..217712e5e 100644
--- a/crates/radicle/src/node/notifications.rs
+++ b/crates/radicle/src/node/notifications.rs
@@ -7,7 +7,7 @@ use thiserror::Error;
use crate::cob;
use crate::cob::TypedId;
-use crate::git::{fmt::Qualified, BranchName};
+use crate::git::{BranchName, fmt::Qualified};
use crate::prelude::RepoId;
use crate::storage::{RefUpdate, RemoteId};
diff --git a/crates/radicle/src/node/notifications/store.rs b/crates/radicle/src/node/notifications/store.rs
index a2fe85cf1..be7654f41 100644
--- a/crates/radicle/src/node/notifications/store.rs
+++ b/crates/radicle/src/node/notifications/store.rs
@@ -10,9 +10,9 @@ use sqlite as sql;
use thiserror::Error;
use crate::git;
-use crate::git::fmt::RefString;
use crate::git::Oid;
use crate::git::RefError;
+use crate::git::fmt::RefString;
use crate::prelude::RepoId;
use crate::sql::transaction;
use crate::storage::RefUpdate;
@@ -578,9 +578,10 @@ mod test {
assert!(db.insert(&repo, &update1, time).unwrap());
assert!(db.insert(&repo, &update2, time).unwrap());
assert!(db.insert(&repo, &update3, time).unwrap());
- assert!(db
- .set_status(NotificationStatus::ReadAt(time), &[1, 2, 3])
- .unwrap());
+ assert!(
+ db.set_status(NotificationStatus::ReadAt(time), &[1, 2, 3])
+ .unwrap()
+ );
let mut notifs = db.by_repo(&repo, "timestamp").unwrap();
@@ -619,9 +620,10 @@ mod test {
new: master2,
};
assert!(db.insert(&repo, &update1, time1).unwrap());
- assert!(db
- .set_status(NotificationStatus::ReadAt(time1), &[1])
- .unwrap());
+ assert!(
+ db.set_status(NotificationStatus::ReadAt(time1), &[1])
+ .unwrap()
+ );
assert!(db.insert(&repo, &update2, time2).unwrap());
let mut notifs = db.by_repo(&repo, "timestamp").unwrap();
diff --git a/crates/radicle/src/node/refs/store.rs b/crates/radicle/src/node/refs/store.rs
index c1284b7e5..8084ab269 100644
--- a/crates/radicle/src/node/refs/store.rs
+++ b/crates/radicle/src/node/refs/store.rs
@@ -6,8 +6,8 @@ use localtime::LocalTime;
use sqlite as sql;
use thiserror::Error;
-use crate::git::fmt::Qualified;
use crate::git::Oid;
+use crate::git::fmt::Qualified;
use crate::node::Database;
use crate::node::NodeId;
use crate::prelude::RepoId;
@@ -113,21 +113,22 @@ impl Store for Database {
stmt.bind((2, namespace))?;
stmt.bind((3, refname.to_string().as_str()))?;
- match stmt.into_iter().next() { Some(Ok(row)) => {
- let oid = row.try_read::<&str, _>("oid")?;
- let oid = Oid::from_str(oid).map_err(|e| {
- Error::Internal(sql::Error {
- code: None,
- message: Some(format!("sql: invalid oid '{oid}': {e}")),
- })
- })?;
- let timestamp = row.try_read::<i64, _>("timestamp")?;
- let timestamp = LocalTime::from_millis(timestamp as u128);
+ match stmt.into_iter().next() {
+ Some(Ok(row)) => {
+ let oid = row.try_read::<&str, _>("oid")?;
+ let oid = Oid::from_str(oid).map_err(|e| {
+ Error::Internal(sql::Error {
+ code: None,
+ message: Some(format!("sql: invalid oid '{oid}': {e}")),
+ })
+ })?;
+ let timestamp = row.try_read::<i64, _>("timestamp")?;
+ let timestamp = LocalTime::from_millis(timestamp as u128);
- Ok(Some((oid, timestamp)))
- } _ => {
- Ok(None)
- }}
+ Ok(Some((oid, timestamp)))
+ }
+ _ => Ok(None),
+ }
}
fn delete(
@@ -195,15 +196,17 @@ mod test {
assert!(db.is_empty().unwrap());
assert_eq!(db.count().unwrap(), 0);
- assert!(db
- .set(&repo, &namespace, &refname1, oid, timestamp)
- .unwrap());
+ assert!(
+ db.set(&repo, &namespace, &refname1, oid, timestamp)
+ .unwrap()
+ );
assert!(!db.is_empty().unwrap());
assert_eq!(db.count().unwrap(), 1);
- assert!(db
- .set(&repo, &namespace, &refname2, oid, timestamp)
- .unwrap());
+ assert!(
+ db.set(&repo, &namespace, &refname2, oid, timestamp)
+ .unwrap()
+ );
assert_eq!(db.count().unwrap(), 2);
}
@@ -238,21 +241,24 @@ mod test {
let mut timestamp = LocalTime::now();
assert_eq!(db.get(&repo, &namespace, &refname).unwrap(), None);
- assert!(db
- .set(&repo, &namespace, &refname, oid1, timestamp)
- .unwrap());
+ assert!(
+ db.set(&repo, &namespace, &refname, oid1, timestamp)
+ .unwrap()
+ );
assert_eq!(
db.get(&repo, &namespace, &refname).unwrap(),
Some((oid1, timestamp))
);
- assert!(!db
- .set(&repo, &namespace, &refname, oid1, timestamp)
- .unwrap());
+ assert!(
+ !db.set(&repo, &namespace, &refname, oid1, timestamp)
+ .unwrap()
+ );
timestamp.elapse(LocalDuration::from_millis(1));
- assert!(db
- .set(&repo, &namespace, &refname, oid2, timestamp)
- .unwrap());
+ assert!(
+ db.set(&repo, &namespace, &refname, oid2, timestamp)
+ .unwrap()
+ );
assert_eq!(
db.get(&repo, &namespace, &refname).unwrap(),
Some((oid2, timestamp))
diff --git a/crates/radicle/src/node/routing.rs b/crates/radicle/src/node/routing.rs
index c812d563d..008477263 100644
--- a/crates/radicle/src/node/routing.rs
+++ b/crates/radicle/src/node/routing.rs
@@ -320,11 +320,12 @@ mod test {
let mut db = database(":memory:");
for node in &nodes {
- assert!(db
- .add_inventory(&ids, *node, Timestamp::EPOCH)
- .unwrap()
- .iter()
- .all(|(_, r)| *r == InsertResult::SeedAdded));
+ assert!(
+ db.add_inventory(&ids, *node, Timestamp::EPOCH)
+ .unwrap()
+ .iter()
+ .all(|(_, r)| *r == InsertResult::SeedAdded)
+ );
}
let results = db.entries().unwrap().collect::<Vec<_>>();
diff --git a/crates/radicle/src/node/seed/store.rs b/crates/radicle/src/node/seed/store.rs
index 66ecf1b55..c00663cda 100644
--- a/crates/radicle/src/node/seed/store.rs
+++ b/crates/radicle/src/node/seed/store.rs
@@ -6,10 +6,10 @@ use sqlite as sql;
use thiserror::Error;
use crate::git::Oid;
+use crate::node::NodeId;
use crate::node::address;
use crate::node::address::Store as _;
-use crate::node::NodeId;
-use crate::node::{seed::SyncedSeed, Database, SyncedAt};
+use crate::node::{Database, SyncedAt, seed::SyncedSeed};
use crate::prelude::{RepoId, Timestamp};
#[derive(Error, Debug)]
diff --git a/crates/radicle/src/node/timestamp.rs b/crates/radicle/src/node/timestamp.rs
index 9dd1689d1..9af6380c2 100644
--- a/crates/radicle/src/node/timestamp.rs
+++ b/crates/radicle/src/node/timestamp.rs
@@ -76,11 +76,7 @@ impl TryFrom<u64> for Timestamp {
type Error = u64;
fn try_from(u: u64) -> Result<Self, u64> {
- if u <= *Self::MAX {
- Ok(Self(u))
- } else {
- Err(u)
- }
+ if u <= *Self::MAX { Ok(Self(u)) } else { Err(u) }
}
}
diff --git a/crates/radicle/src/profile.rs b/crates/radicle/src/profile.rs
index c7c53efe6..3ccffada4 100644
--- a/crates/radicle/src/profile.rs
+++ b/crates/radicle/src/profile.rs
@@ -22,18 +22,18 @@ use localtime::LocalTime;
use thiserror::Error;
use crate::cob::migrate;
-use crate::crypto::ssh::agent::Agent;
-use crate::crypto::ssh::{keystore, Keystore, Passphrase};
use crate::crypto::PublicKey;
+use crate::crypto::ssh::agent::Agent;
+use crate::crypto::ssh::{Keystore, Passphrase, keystore};
use crate::node::device::{BoxedDevice, Device};
use crate::node::policy::config::store::Read;
use crate::node::{
- notifications, policy, policy::Scope, Alias, AliasStore, Handle as _, Node, UserAgent,
+ Alias, AliasStore, Handle as _, Node, UserAgent, notifications, policy, policy::Scope,
};
use crate::prelude::{Did, NodeId, RepoId};
-use crate::storage::git::transport;
-use crate::storage::git::Storage;
use crate::storage::ReadRepository;
+use crate::storage::git::Storage;
+use crate::storage::git::transport;
use crate::{cob, git, node, storage};
/// Environment variables used by radicle.
@@ -496,8 +496,7 @@ pub fn home() -> Result<Home, io::Error> {
"Environment variables `RAD_HOME` and `HOME` are both unset or not valid Unicode.";
#[cfg(windows)]
- const ERROR_MESSAGE_UNSET: &str =
- "Environment variables `RAD_HOME`, `HOME`, and `USERPROFILE` are all unset or not valid Unicode.";
+ const ERROR_MESSAGE_UNSET: &str = "Environment variables `RAD_HOME`, `HOME`, and `USERPROFILE` are all unset or not valid Unicode.";
struct DetectedHome {
path: String,
diff --git a/crates/radicle/src/profile/config.rs b/crates/radicle/src/profile/config.rs
index 2ca459737..6fb8875db 100644
--- a/crates/radicle/src/profile/config.rs
+++ b/crates/radicle/src/profile/config.rs
@@ -7,9 +7,9 @@ use serde_json as json;
use thiserror::Error;
use crate::explorer::Explorer;
+use crate::node::Alias;
use crate::node::config::DefaultSeedingPolicy;
use crate::node::policy::{Policy, Scope};
-use crate::node::Alias;
use crate::{cli, node, web};
#[derive(Debug, Error)]
@@ -112,7 +112,9 @@ pub enum InitError {
#[derive(Debug, Error)]
pub enum LoadError {
- #[error("failed to open configuration file {path:?}: {err}, perhaps you need to initialise one `rad config init --alias <alias>`")]
+ #[error(
+ "failed to open configuration file {path:?}: {err}, perhaps you need to initialise one `rad config init --alias <alias>`"
+ )]
File {
path: PathBuf,
#[source]
@@ -380,13 +382,11 @@ impl RawConfig {
let mut current = &mut self.0;
for key in config_path.iter() {
current = match current {
- json::Value::Object(map) => {
- map.entry(key).or_insert_with(|| json::json!({}))
- }
+ json::Value::Object(map) => map.entry(key).or_insert_with(|| json::json!({})),
_ => {
return Err(ModifyError::Upsert {
key: key.to_owned(),
- })
+ });
}
}
}
diff --git a/crates/radicle/src/rad.rs b/crates/radicle/src/rad.rs
index ca2994fde..eb5f65ba9 100644
--- a/crates/radicle/src/rad.rs
+++ b/crates/radicle/src/rad.rs
@@ -13,10 +13,10 @@ use crate::identity::doc;
use crate::identity::doc::{DocError, RepoId, Visibility};
use crate::identity::project::{Project, ProjectName};
use crate::node::device::Device;
-use crate::storage::git::transport;
+use crate::storage::RepositoryError;
use crate::storage::git::Repository;
+use crate::storage::git::transport;
use crate::storage::refs::SignedRefs;
-use crate::storage::RepositoryError;
use crate::storage::{ReadRepository as _, RemoteId, SignRepository as _};
use crate::storage::{WriteRepository, WriteStorage};
use crate::{identity, storage};
@@ -230,7 +230,9 @@ where
pub enum CheckoutError {
#[error("failed to fetch to working copy: {0}")]
FetchIo(#[source] std::io::Error),
- #[error("internal fetch failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}")]
+ #[error(
+ "internal fetch failed with exit status {status}, stderr and stdout follow:\n{stderr}\n{stdout}"
+ )]
FetchGit {
status: std::process::ExitStatus,
stderr: String,
@@ -510,8 +512,8 @@ mod tests {
use pretty_assertions::assert_eq;
use crate::identity::Did;
- use crate::storage::git::transport;
use crate::storage::git::Storage;
+ use crate::storage::git::transport;
use crate::storage::{ReadStorage, RemoteRepository as _};
use crate::test::fixtures;
use git::fmt::{component, qualified};
diff --git a/crates/radicle/src/serde_ext.rs b/crates/radicle/src/serde_ext.rs
index bbcc365c1..e39e891c5 100644
--- a/crates/radicle/src/serde_ext.rs
+++ b/crates/radicle/src/serde_ext.rs
@@ -9,7 +9,7 @@ pub mod string {
use std::fmt::Display;
use std::str::FromStr;
- use serde::{de, Deserialize, Deserializer, Serializer};
+ use serde::{Deserialize, Deserializer, Serializer, de};
pub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
where
diff --git a/crates/radicle/src/storage.rs b/crates/radicle/src/storage.rs
index 4fdebd6d0..5156d594a 100644
--- a/crates/radicle/src/storage.rs
+++ b/crates/radicle/src/storage.rs
@@ -1,7 +1,7 @@
pub mod git;
pub mod refs;
-use std::collections::{hash_map, HashSet};
+use std::collections::{HashSet, hash_map};
use std::ops::Deref;
use std::path::{Path, PathBuf};
use std::{fmt, io};
@@ -16,15 +16,15 @@ pub use git::{Validation, Validations};
use crate::cob;
use crate::collections::RandomMap;
+use crate::git::RefError;
use crate::git::canonical;
-use crate::git::fmt::{refspec::PatternString, refspec::Refspec, Qualified, RefStr, RefString};
+use crate::git::fmt::{Qualified, RefStr, RefString, refspec::PatternString, refspec::Refspec};
use crate::git::raw::ErrorExt as _;
-use crate::git::RefError;
-use crate::identity::{doc, Did, PayloadError};
+use crate::identity::{Did, PayloadError, doc};
use crate::identity::{Doc, DocAt, DocError};
use crate::identity::{Identity, RepoId};
-use crate::node::device::Device;
use crate::node::SyncedAt;
+use crate::node::device::Device;
use crate::storage::git::NAMESPACES_GLOB;
use crate::storage::refs::{FeatureLevel, Refs, SignedRefs};
diff --git a/crates/radicle/src/storage/git.rs b/crates/radicle/src/storage/git.rs
index a35c2c50e..37711e65b 100644
--- a/crates/radicle/src/storage/git.rs
+++ b/crates/radicle/src/storage/git.rs
@@ -19,21 +19,21 @@ use crate::identity::{CanonicalRefs, Doc, DocAt, RepoId};
use crate::identity::{Identity, Project};
use crate::node::device::Device;
use crate::storage::refs::{FeatureLevel, Refs, SignedRefs};
-use crate::storage::{refs, SignedRefsInfo};
use crate::storage::{
ReadRepository, ReadStorage, Remote, Remotes, RepositoryInfo, SetHead, SignRepository,
WriteRepository, WriteStorage,
};
+use crate::storage::{SignedRefsInfo, refs};
use crate::{git, git::Oid, node};
-use crate::git::fmt::{
- refname, refspec, refspec::PatternStr, refspec::PatternString, Qualified, RefString,
-};
use crate::git::RefError;
use crate::git::UserInfo;
+use crate::git::fmt::{
+ Qualified, RefString, refname, refspec, refspec::PatternStr, refspec::PatternString,
+};
pub use crate::storage::{Error, RepositoryError};
-use super::refs::{sigrefs, RefsAt};
+use super::refs::{RefsAt, sigrefs};
use super::{RemoteId, RemoteRepository, ValidateRepository};
pub static NAMESPACES_GLOB: LazyLock<PatternString> =
@@ -506,13 +506,16 @@ impl Repository {
}
};
for (refname, _) in refs {
- match self.backend.find_reference(refname.as_str()) { Ok(mut r) => {
- if let Err(e) = r.delete() {
- log::error!(target: "storage", "Failed to clean up reference '{refname}': {e}");
+ match self.backend.find_reference(refname.as_str()) {
+ Ok(mut r) => {
+ if let Err(e) = r.delete() {
+ log::error!(target: "storage", "Failed to clean up reference '{refname}': {e}");
+ }
+ }
+ _ => {
+ log::error!(target: "storage", "Failed to clean up reference '{refname}'");
}
- } _ => {
- log::error!(target: "storage", "Failed to clean up reference '{refname}'");
- }}
+ }
}
deleted.push(id);
}
diff --git a/crates/radicle/src/storage/git/cob.rs b/crates/radicle/src/storage/git/cob.rs
index 889c9c2a6..5c6a8b0f5 100644
--- a/crates/radicle/src/storage/git/cob.rs
+++ b/crates/radicle/src/storage/git/cob.rs
@@ -16,18 +16,18 @@ use crate::git::fmt::*;
use crate::git::*;
use crate::identity;
use crate::identity::doc::DocError;
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
use crate::storage;
use crate::storage::Error;
use crate::storage::{
- git::{Remote, Remotes, Validations},
ReadRepository,
+ git::{Remote, Remotes, Validations},
};
use super::{RemoteId, Repository};
-pub use crate::cob::{store, ObjectId, Store};
+pub use crate::cob::{ObjectId, Store, store};
#[derive(Error, Debug)]
pub enum ObjectsError {
diff --git a/crates/radicle/src/storage/git/transport/local/url.rs b/crates/radicle/src/storage/git/transport/local/url.rs
index 44a922d91..ba07c1486 100644
--- a/crates/radicle/src/storage/git/transport/local/url.rs
+++ b/crates/radicle/src/storage/git/transport/local/url.rs
@@ -123,16 +123,22 @@ mod test {
assert_eq!(url.repo, repo);
assert_eq!(url.namespace, Some(namespace));
- assert!(format!("heartwood://{}", repo.canonical())
- .parse::<Url>()
- .is_err());
- assert!(format!("git://{}", repo.canonical())
- .parse::<Url>()
- .is_err());
+ assert!(
+ format!("heartwood://{}", repo.canonical())
+ .parse::<Url>()
+ .is_err()
+ );
+ assert!(
+ format!("git://{}", repo.canonical())
+ .parse::<Url>()
+ .is_err()
+ );
assert!(format!("rad://{namespace}").parse::<Url>().is_err());
- assert!(format!("rad://{}/{namespace}/fnord", repo.canonical())
- .parse::<Url>()
- .is_err());
+ assert!(
+ format!("rad://{}/{namespace}/fnord", repo.canonical())
+ .parse::<Url>()
+ .is_err()
+ );
}
#[test]
diff --git a/crates/radicle/src/storage/git/transport/remote/mock.rs b/crates/radicle/src/storage/git/transport/remote/mock.rs
index 76066c265..f4256ec84 100644
--- a/crates/radicle/src/storage/git/transport/remote/mock.rs
+++ b/crates/radicle/src/storage/git/transport/remote/mock.rs
@@ -9,8 +9,8 @@ use std::{process, thread};
use super::Url;
use crate::git;
-use crate::storage::git::transport::ChildStream;
use crate::storage::RemoteId;
+use crate::storage::git::transport::ChildStream;
/// Nodes registered with the mock transport.
static NODES: LazyLock<Mutex<HashMap<(ThreadId, RemoteId), PathBuf>>> =
diff --git a/crates/radicle/src/storage/git/transport/remote/url.rs b/crates/radicle/src/storage/git/transport/remote/url.rs
index f22eaf9e6..fd548349f 100644
--- a/crates/radicle/src/storage/git/transport/remote/url.rs
+++ b/crates/radicle/src/storage/git/transport/remote/url.rs
@@ -130,9 +130,11 @@ mod test {
assert!(format!("heartwood://{node}").parse::<Url>().is_err());
assert!(format!("rad://{node}").parse::<Url>().is_err());
- assert!(format!("heartwood://{node}/{namespace}")
- .parse::<Url>()
- .is_err());
+ assert!(
+ format!("heartwood://{node}/{namespace}")
+ .parse::<Url>()
+ .is_err()
+ );
assert!(
format!("heartwood://{node}/{}/{namespace}/fnord", repo.canonical())
.parse::<Url>()
diff --git a/crates/radicle/src/storage/refs.rs b/crates/radicle/src/storage/refs.rs
index e8d455ac3..ee98c9777 100644
--- a/crates/radicle/src/storage/refs.rs
+++ b/crates/radicle/src/storage/refs.rs
@@ -17,11 +17,11 @@ use serde::{Deserialize, Serialize};
use thiserror::Error;
use crate::git;
-use crate::git::raw::ErrorExt as _;
use crate::git::Oid;
+use crate::git::raw::ErrorExt as _;
use crate::storage;
-use crate::storage::refs::sigrefs::read::Tip;
use crate::storage::RemoteId;
+use crate::storage::refs::sigrefs::read::Tip;
pub use crate::git::refs::storage::*;
@@ -495,13 +495,13 @@ pub mod canonical {
#[allow(clippy::unwrap_used)]
mod tests {
use qcheck_macros::quickcheck;
- use storage::{git::transport, RemoteRepository, SignRepository, WriteStorage};
+ use storage::{RemoteRepository, SignRepository, WriteStorage, git::transport};
use super::*;
use crate::assert_matches;
use crate::node::device::Device;
use crate::storage::WriteRepository as _;
- use crate::{cob::identity::Identity, cob::Title, rad, test::fixtures, Storage};
+ use crate::{Storage, cob::Title, cob::identity::Identity, rad, test::fixtures};
#[quickcheck]
fn prop_canonical_roundtrip(refs: Refs) {
diff --git a/crates/radicle/src/storage/refs/sigrefs/git.rs b/crates/radicle/src/storage/refs/sigrefs/git.rs
index a64f1b486..86693302d 100644
--- a/crates/radicle/src/storage/refs/sigrefs/git.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/git.rs
@@ -41,8 +41,8 @@ impl Committer {
#[cfg(not(any(test, feature = "test")))]
{
use crate::profile::env::GIT_COMMITTER_DATE;
- use std::env::var;
use std::env::VarError;
+ use std::env::var;
let timestamp = match var(GIT_COMMITTER_DATE) {
Ok(s) => match s.trim().parse::<u64>() {
@@ -147,7 +147,7 @@ mod git2_impls {
let commit = match self.find_commit(git2::Oid::from(*oid)) {
Ok(c) => c,
Err(e) if e.code() == git2::ErrorCode::NotFound => {
- return Err(ReadBlob::commit_not_found_error(*oid))
+ return Err(ReadBlob::commit_not_found_error(*oid));
}
Err(e) => return Err(ReadBlob::other(e)),
};
diff --git a/crates/radicle/src/storage/refs/sigrefs/property.rs b/crates/radicle/src/storage/refs/sigrefs/property.rs
index 81cf794a7..39e5f8a5a 100644
--- a/crates/radicle/src/storage/refs/sigrefs/property.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/property.rs
@@ -3,14 +3,14 @@
mod mock;
use mock::*;
-use crypto::test::signer::MockSigner;
use crypto::Signer as _;
+use crypto::test::signer::MockSigner;
use qcheck::TestResult;
use qcheck_macros::quickcheck;
+use crate::storage::refs::Refs;
use crate::storage::refs::sigrefs::read::{SignedRefsReader, Tip};
use crate::storage::refs::sigrefs::write::{SignedRefsWriter, Update};
-use crate::storage::refs::Refs;
#[quickcheck]
fn roundtrip(BoundedVec(all_refs): BoundedVec<Refs>) -> TestResult {
diff --git a/crates/radicle/src/storage/refs/sigrefs/property/mock.rs b/crates/radicle/src/storage/refs/sigrefs/property/mock.rs
index f2c04590a..f08538482 100644
--- a/crates/radicle/src/storage/refs/sigrefs/property/mock.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/property/mock.rs
@@ -6,7 +6,7 @@ use tempfile::TempDir;
use crate::identity::doc;
use crate::storage::refs::sigrefs::git::Committer;
-use crate::storage::refs::{Refs, IDENTITY_ROOT};
+use crate::storage::refs::{IDENTITY_ROOT, Refs};
/// A `Vec<T>` whose [`Arbitrary`] instance caps the length at
/// [`Self::MAX_LEN`], preventing the property runner from generating inputs
diff --git a/crates/radicle/src/storage/refs/sigrefs/read.rs b/crates/radicle/src/storage/refs/sigrefs/read.rs
index d01c2483f..3b27411a3 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read.rs
@@ -9,7 +9,7 @@ use std::collections::{BTreeMap, HashMap};
use std::num::NonZeroUsize;
use std::path::Path;
-use crypto::{signature, PublicKey};
+use crypto::{PublicKey, signature};
use nonempty::NonEmpty;
use radicle_core::{NodeId, RepoId};
use radicle_git_metadata::commit::CommitData;
@@ -19,8 +19,8 @@ use crate::git;
use crate::identity::doc;
use crate::storage::refs::sigrefs::git::{object, reference};
use crate::storage::refs::{
- FeatureLevel, Refs, SignedRefs, IDENTITY_ROOT, REFS_BLOB_PATH, SIGNATURE_BLOB_PATH,
- SIGREFS_BRANCH,
+ FeatureLevel, IDENTITY_ROOT, REFS_BLOB_PATH, Refs, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH,
+ SignedRefs,
};
/// A `rad/sigrefs` that has passed the following verification checks:
@@ -422,7 +422,7 @@ impl Commit {
sigrefs_commit: self.oid,
expected,
actual,
- })
+ });
}
};
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/error.rs b/crates/radicle/src/storage/refs/sigrefs/read/error.rs
index b3491fba7..c7a8c0626 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/error.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/error.rs
@@ -8,7 +8,7 @@ use thiserror::Error;
use crate::storage::refs::sigrefs::git::{object, reference};
use crate::storage::refs::sigrefs::read::FeatureLevels;
-use crate::storage::refs::{canonical, FeatureLevel};
+use crate::storage::refs::{FeatureLevel, canonical};
#[derive(Debug, Error)]
#[non_exhaustive]
@@ -114,7 +114,9 @@ pub enum IdentityRoot {
pub enum Verify {
#[error("failed to verify signature over signed references")]
Signature(crypto::signature::Error),
- #[error("expected repository identity {expected}, but found {found} under commit '{identity_commit}' during verification of '{sigrefs_commit}")]
+ #[error(
+ "expected repository identity {expected}, but found {found} under commit '{identity_commit}' during verification of '{sigrefs_commit}"
+ )]
MismatchedIdentity {
identity_commit: Oid,
sigrefs_commit: Oid,
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/iter.rs b/crates/radicle/src/storage/refs/sigrefs/read/iter.rs
index 61decc260..5807575f1 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/iter.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/iter.rs
@@ -2,7 +2,7 @@ use radicle_oid::Oid;
use crate::storage::refs::sigrefs::git::object;
-use super::{error, Commit, CommitReader};
+use super::{Commit, CommitReader, error};
pub(super) struct Walk<'a, R> {
repository: &'a R,
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/commit_reader.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/commit_reader.rs
index 674bdda6e..08d72b10f 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/commit_reader.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/commit_reader.rs
@@ -1,8 +1,8 @@
use radicle_oid::Oid;
-use crate::storage::refs::sigrefs::read::{error, SignedRefsReader, Tip};
-use crate::storage::refs::sigrefs::VerifiedCommit;
use crate::storage::refs::IDENTITY_ROOT;
+use crate::storage::refs::sigrefs::VerifiedCommit;
+use crate::storage::refs::sigrefs::read::{SignedRefsReader, Tip, error};
use super::mock;
use super::mock::{AlwaysVerify, MockRepository};
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/identity_root_reader.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/identity_root_reader.rs
index b2098c1de..0ca378327 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/identity_root_reader.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/identity_root_reader.rs
@@ -2,11 +2,11 @@ use radicle_core::RepoId;
use radicle_oid::Oid;
use crate::git;
+use crate::storage::refs::sigrefs::VerifiedCommit;
use crate::storage::refs::sigrefs::read::{
- error, IdentityRoot, IdentityRootReader, SignedRefsReader, Tip,
+ IdentityRoot, IdentityRootReader, SignedRefsReader, Tip, error,
};
-use crate::storage::refs::sigrefs::VerifiedCommit;
-use crate::storage::refs::{Refs, IDENTITY_ROOT};
+use crate::storage::refs::{IDENTITY_ROOT, Refs};
use super::mock;
use super::mock::{AlwaysVerify, MockRepository};
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/mock.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/mock.rs
index 5424bef36..651c3782a 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/mock.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/mock.rs
@@ -6,15 +6,15 @@ use std::path::{Path, PathBuf};
use radicle_core::NodeId;
use radicle_git_metadata::author::{Author, Time};
+use radicle_git_metadata::commit::CommitData;
use radicle_git_metadata::commit::headers::Headers;
use radicle_git_metadata::commit::trailers::OwnedTrailer;
-use radicle_git_metadata::commit::CommitData;
use radicle_oid::Oid;
use crate::git;
use crate::identity::doc;
use crate::storage::refs::sigrefs::git::{object, reference};
-use crate::storage::refs::{Refs, REFS_BLOB_PATH, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH};
+use crate::storage::refs::{REFS_BLOB_PATH, Refs, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH};
pub(crate) const MOCKED_IDENTITY: u8 = 99u8;
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/resolve_tip.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/resolve_tip.rs
index 65b846152..e7525d758 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/resolve_tip.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/resolve_tip.rs
@@ -1,9 +1,9 @@
use super::mock;
use super::mock::{AlwaysVerify, MockRepository};
-use crate::storage::refs::sigrefs::read::error;
-use crate::storage::refs::sigrefs::read::Tip;
-use crate::storage::refs::sigrefs::SignedRefsReader;
use crate::storage::refs::IDENTITY_ROOT;
+use crate::storage::refs::sigrefs::SignedRefsReader;
+use crate::storage::refs::sigrefs::read::Tip;
+use crate::storage::refs::sigrefs::read::error;
#[test]
fn missing_sigrefs() {
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/signed_refs_reader.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/signed_refs_reader.rs
index a83a43c63..faa20629e 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/signed_refs_reader.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/signed_refs_reader.rs
@@ -1,8 +1,8 @@
use radicle_oid::Oid;
-use crate::storage::refs::sigrefs::read::error::{Read, Verify};
-use crate::storage::refs::sigrefs::read::{error, FeatureLevels, SignedRefsReader, Tip};
use crate::storage::refs::sigrefs::VerifiedCommit;
+use crate::storage::refs::sigrefs::read::error::{Read, Verify};
+use crate::storage::refs::sigrefs::read::{FeatureLevels, SignedRefsReader, Tip, error};
use crate::storage::refs::{FeatureLevel, IDENTITY_ROOT, SIGREFS_PARENT};
use crate::{assert_matches, git};
diff --git a/crates/radicle/src/storage/refs/sigrefs/read/test/tree_reader.rs b/crates/radicle/src/storage/refs/sigrefs/read/test/tree_reader.rs
index a9ced3b34..899b64463 100644
--- a/crates/radicle/src/storage/refs/sigrefs/read/test/tree_reader.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/read/test/tree_reader.rs
@@ -1,8 +1,8 @@
use radicle_oid::Oid;
use crate::git;
-use crate::storage::refs::sigrefs::read::{error, SignedRefsReader, Tip};
use crate::storage::refs::sigrefs::VerifiedCommit;
+use crate::storage::refs::sigrefs::read::{SignedRefsReader, Tip, error};
use crate::storage::refs::{IDENTITY_ROOT, REFS_BLOB_PATH, SIGNATURE_BLOB_PATH};
use super::mock;
diff --git a/crates/radicle/src/storage/refs/sigrefs/write.rs b/crates/radicle/src/storage/refs/sigrefs/write.rs
index 54088d273..caf254275 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write.rs
@@ -5,20 +5,20 @@ mod test;
use std::path::Path;
-use crypto::signature::{self, Signer};
use crypto::PublicKey;
+use crypto::signature::{self, Signer};
use radicle_core::{NodeId, RepoId};
use radicle_git_metadata::author::Author;
-use radicle_git_metadata::commit::{headers::Headers, trailers::OwnedTrailer, CommitData};
+use radicle_git_metadata::commit::{CommitData, headers::Headers, trailers::OwnedTrailer};
use radicle_oid::Oid;
use crate::git;
-use crate::storage::refs::sigrefs::git::{object, reference, Committer};
-use crate::storage::refs::sigrefs::read::CommitReader;
-use crate::storage::refs::sigrefs::{read, VerifiedCommit};
use crate::storage::refs::SignedRefs;
+use crate::storage::refs::sigrefs::git::{Committer, object, reference};
+use crate::storage::refs::sigrefs::read::CommitReader;
+use crate::storage::refs::sigrefs::{VerifiedCommit, read};
use crate::storage::refs::{
- FeatureLevel, Refs, IDENTITY_ROOT, REFS_BLOB_PATH, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH,
+ FeatureLevel, IDENTITY_ROOT, REFS_BLOB_PATH, Refs, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH,
SIGREFS_PARENT,
};
@@ -161,7 +161,7 @@ where
let commit_writer = match head {
Ok(Some(head)) if !force && head.is_unchanged(&refs) => {
- return Ok(Update::unchanged(head.verified))
+ return Ok(Update::unchanged(head.verified));
}
Ok(Some(head)) => CommitWriter::with_parent(
refs,
diff --git a/crates/radicle/src/storage/refs/sigrefs/write/test/commit_writer.rs b/crates/radicle/src/storage/refs/sigrefs/write/test/commit_writer.rs
index 51813a0d6..8d82731d7 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write/test/commit_writer.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write/test/commit_writer.rs
@@ -1,7 +1,7 @@
use super::mock;
use super::mock::MockRepository;
-use crate::storage::refs::sigrefs::write::{error, CommitWriter};
-use crate::storage::refs::{Refs, IDENTITY_ROOT};
+use crate::storage::refs::sigrefs::write::{CommitWriter, error};
+use crate::storage::refs::{IDENTITY_ROOT, Refs};
fn mock_refs() -> Refs {
Refs::from(
diff --git a/crates/radicle/src/storage/refs/sigrefs/write/test/head_reader.rs b/crates/radicle/src/storage/refs/sigrefs/write/test/head_reader.rs
index b7d269fe8..448c21988 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write/test/head_reader.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write/test/head_reader.rs
@@ -2,8 +2,8 @@ use radicle_git_ref_format::Component;
use super::mock::{self, MockRepository};
use crate::storage::refs::sigrefs::read;
-use crate::storage::refs::sigrefs::write::{error, Head, HeadReader};
-use crate::storage::refs::{Refs, IDENTITY_ROOT, SIGREFS_BRANCH};
+use crate::storage::refs::sigrefs::write::{Head, HeadReader, error};
+use crate::storage::refs::{IDENTITY_ROOT, Refs, SIGREFS_BRANCH};
/// Drive `HeadReader` directly via the sigrefs reference for `mock::node_id()`.
fn read(repo: &MockRepository) -> Result<Option<Head>, error::Head> {
diff --git a/crates/radicle/src/storage/refs/sigrefs/write/test/mock.rs b/crates/radicle/src/storage/refs/sigrefs/write/test/mock.rs
index 600b6ded3..23ff266a4 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write/test/mock.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write/test/mock.rs
@@ -4,16 +4,16 @@ use std::str::FromStr as _;
use radicle_core::{NodeId, RepoId};
use radicle_git_metadata::author::{Author, Time};
+use radicle_git_metadata::commit::CommitData;
use radicle_git_metadata::commit::headers::Headers;
use radicle_git_metadata::commit::trailers::OwnedTrailer;
-use radicle_git_metadata::commit::CommitData;
use radicle_oid::Oid;
use crate::git;
use crate::identity::doc;
-use crate::storage::refs::sigrefs::git::{object, reference};
-use crate::storage::refs::{Refs, REFS_BLOB_PATH, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH};
use crate::storage::HasRepoId;
+use crate::storage::refs::sigrefs::git::{object, reference};
+use crate::storage::refs::{REFS_BLOB_PATH, Refs, SIGNATURE_BLOB_PATH, SIGREFS_BRANCH};
const MOCKED_IDENTITY: u8 = 99u8;
diff --git a/crates/radicle/src/storage/refs/sigrefs/write/test/signed_refs_writer.rs b/crates/radicle/src/storage/refs/sigrefs/write/test/signed_refs_writer.rs
index fb6b721d2..d58015a08 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write/test/signed_refs_writer.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write/test/signed_refs_writer.rs
@@ -1,8 +1,8 @@
use radicle_oid::Oid;
use crate::storage::refs::sigrefs::git::Committer;
-use crate::storage::refs::sigrefs::write::{error, SignedRefsWriter, Update};
-use crate::storage::refs::{FeatureLevel, Refs, IDENTITY_ROOT, SIGREFS_BRANCH};
+use crate::storage::refs::sigrefs::write::{SignedRefsWriter, Update, error};
+use crate::storage::refs::{FeatureLevel, IDENTITY_ROOT, Refs, SIGREFS_BRANCH};
use super::mock;
use super::mock::MockRepository;
diff --git a/crates/radicle/src/storage/refs/sigrefs/write/test/tree_writer.rs b/crates/radicle/src/storage/refs/sigrefs/write/test/tree_writer.rs
index 76db00714..91fd2b2a5 100644
--- a/crates/radicle/src/storage/refs/sigrefs/write/test/tree_writer.rs
+++ b/crates/radicle/src/storage/refs/sigrefs/write/test/tree_writer.rs
@@ -1,7 +1,7 @@
use super::mock;
use super::mock::MockRepository;
-use crate::storage::refs::sigrefs::write::{error, Tree, TreeWriter};
use crate::storage::refs::Refs;
+use crate::storage::refs::sigrefs::write::{Tree, TreeWriter, error};
fn mock_refs() -> Refs {
Refs::from([(mock::refs_heads_main(), mock::oid(10))].into_iter())
diff --git a/crates/radicle/src/test.rs b/crates/radicle/src/test.rs
index e6b40ed2a..0c141c248 100644
--- a/crates/radicle/src/test.rs
+++ b/crates/radicle/src/test.rs
@@ -71,14 +71,14 @@ pub fn fetch<W: WriteRepository>(
pub mod setup {
use std::path::{Path, PathBuf};
- use tempfile::{tempdir, TempDir};
+ use tempfile::{TempDir, tempdir};
use super::storage::{Namespaces, RefUpdate};
use crate::crypto::test::signer::MockSigner;
use crate::node::device::Device;
- use crate::storage::git::transport::remote;
use crate::storage::git::Repository;
- use crate::{git, profile::Home, rad::REMOTE_NAME, test::fixtures, Storage};
+ use crate::storage::git::transport::remote;
+ use crate::{Storage, git, profile::Home, rad::REMOTE_NAME, test::fixtures};
use crate::{prelude::*, rad};
/// A node.
diff --git a/crates/radicle/src/test/arbitrary.rs b/crates/radicle/src/test/arbitrary.rs
index a3a2a1098..3d356dc85 100644
--- a/crates/radicle/src/test/arbitrary.rs
+++ b/crates/radicle/src/test/arbitrary.rs
@@ -5,16 +5,16 @@ use std::str::FromStr;
use std::{iter, net};
use crypto::PublicKey;
-use cyphernet::addr::tor::OnionAddrV3;
use cyphernet::EcPk;
+use cyphernet::addr::tor::OnionAddrV3;
use qcheck::Arbitrary;
use crate::identity::doc::Visibility;
use crate::identity::project::ProjectName;
use crate::identity::{
+ Did,
doc::{Doc, DocAt, RawDoc, RepoId},
project::Project,
- Did,
};
use crate::node::address::{AddressType, Source};
use crate::node::{Address, Alias, KnownAddress, Timestamp, UserAgent};
diff --git a/crates/radicle/src/test/assert.rs b/crates/radicle/src/test/assert.rs
index 16b84cc3f..13942dd65 100644
--- a/crates/radicle/src/test/assert.rs
+++ b/crates/radicle/src/test/assert.rs
@@ -125,7 +125,7 @@ macro_rules! _assert_matches_cfg {
#[cfg(test)]
mod test {
- use std::panic::{catch_unwind, UnwindSafe};
+ use std::panic::{UnwindSafe, catch_unwind};
#[derive(Debug)]
enum Foo {
diff --git a/crates/radicle/src/test/fixtures.rs b/crates/radicle/src/test/fixtures.rs
index c7f274ba4..7acc5bd55 100644
--- a/crates/radicle/src/test/fixtures.rs
+++ b/crates/radicle/src/test/fixtures.rs
@@ -3,13 +3,13 @@ use std::str::FromStr;
use crate::crypto::PublicKey;
use crate::git;
-use crate::identity::doc::Visibility;
use crate::identity::RepoId;
-use crate::node::device::Device;
+use crate::identity::doc::Visibility;
use crate::node::Alias;
+use crate::node::device::Device;
use crate::rad;
-use crate::storage::git::transport;
use crate::storage::git::Storage;
+use crate::storage::git::transport;
use crate::storage::refs::SignedRefs;
/// The birth of the radicle project, January 1st, 2018.
diff --git a/crates/radicle/src/test/storage.rs b/crates/radicle/src/test/storage.rs
index 9bc00af7b..4175a67d9 100644
--- a/crates/radicle/src/test/storage.rs
+++ b/crates/radicle/src/test/storage.rs
@@ -10,8 +10,8 @@ pub use crate::git;
use crate::git::fmt;
use crate::identity::doc::{Doc, DocAt, DocError, RawDoc, RepoId};
-use crate::node::device::Device;
use crate::node::NodeId;
+use crate::node::device::Device;
pub use crate::storage::*;
commit 19ab5f4e32b3b7a4bc561746e90098129d0df73f
Author: Lorenz Leutgeb <lorenz.leutgeb@radicle.xyz>
Date: Wed Mar 25 08:09:41 2026 +0100
rust/edition: 2021 → 2024
Switch from Rust 2021 to Rust 2024.
See <https://doc.rust-lang.org/edition-guide/rust-2024/>.
Regarding the added bound `use<>`, see
<https://blog.rust-lang.org/2024/09/05/impl-trait-capture-rules/>.
diff --git a/Cargo.toml b/Cargo.toml
index 533c90923..bf819b4b7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"
[workspace.package]
-edition = "2021"
+edition = "2024"
homepage = "https://radicle.xyz"
license = "MIT OR Apache-2.0"
repository = "https://app.radicle.xyz/seeds/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
diff --git a/crates/radicle-cli/src/commands/auth.rs b/crates/radicle-cli/src/commands/auth.rs
index 100b9a96d..f768ebc61 100644
--- a/crates/radicle-cli/src/commands/auth.rs
+++ b/crates/radicle-cli/src/commands/auth.rs
@@ -129,19 +129,18 @@ pub fn authenticate(args: Args, profile: &Profile) -> anyhow::Result<()> {
term::success!("Radicle key already in ssh-agent");
return Ok(());
}
- let passphrase = if let Some(phrase) = profile::env::passphrase() {
+ let passphrase = match profile::env::passphrase() { Some(phrase) => {
phrase
- } else if args.stdin {
+ } _ => if args.stdin {
term::passphrase_stdin()?
- } else if let Some(passphrase) =
- term::io::passphrase(term::io::PassphraseValidator::new(profile.keystore.clone()))?
- {
+ } else { match term::io::passphrase(term::io::PassphraseValidator::new(profile.keystore.clone()))?
+ { Some(passphrase) => {
passphrase
- } else {
+ } _ => {
anyhow::bail!(
"A passphrase is required to read your Radicle key. Unable to continue."
)
- };
+ }}}};
register(&mut agent, profile, passphrase)?;
term::success!("Radicle key added to {}", term::format::dim("ssh-agent"));
diff --git a/crates/radicle-cli/src/commands/id.rs b/crates/radicle-cli/src/commands/id.rs
index 2194fb2c8..6416601d0 100644
--- a/crates/radicle-cli/src/commands/id.rs
+++ b/crates/radicle-cli/src/commands/id.rs
@@ -526,12 +526,12 @@ fn print_diff(
let diff = repo.diff_tree_to_tree(previous.as_ref(), Some(¤t), Some(&mut opts))?;
let diff = Diff::try_from(diff)?;
- if let Some(modified) = diff.modified().next() {
+ match diff.modified().next() { Some(modified) => {
let diff = modified.diff.to_unified_string()?;
print!("{diff}");
- } else {
+ } _ => {
term::print(term::format::italic("No changes."));
- }
+ }}
Ok(())
}
diff --git a/crates/radicle-cli/src/commands/inbox.rs b/crates/radicle-cli/src/commands/inbox.rs
index 616e3382f..5d5187bb5 100644
--- a/crates/radicle-cli/src/commands/inbox.rs
+++ b/crates/radicle-cli/src/commands/inbox.rs
@@ -66,7 +66,7 @@ fn list(
) -> anyhow::Result<()> {
let repos: Vec<term::VStack<'_>> = match mode {
ListMode::Contextual => {
- if let Ok((_, rid)) = radicle::rad::cwd() {
+ match radicle::rad::cwd() { Ok((_, rid)) => {
list_repo(
notifs,
rid,
@@ -78,9 +78,9 @@ fn list(
)?
.into_iter()
.collect()
- } else {
+ } _ => {
list_all(notifs, sort_by, reverse, show_unknown, storage, profile)?
- }
+ }}
}
ListMode::All => list_all(notifs, sort_by, reverse, show_unknown, storage, profile)?,
ListMode::ByRepo(rid) => list_repo(
@@ -391,11 +391,11 @@ fn clear(notifs: &mut notifications::StoreWriter, mode: ClearMode) -> anyhow::Re
ClearMode::ByRepo(rid) => notifs.clear_by_repo(&rid)?,
ClearMode::All => notifs.clear_all()?,
ClearMode::Contextual => {
- if let Ok((_, rid)) = radicle::rad::cwd() {
+ match radicle::rad::cwd() { Ok((_, rid)) => {
notifs.clear_by_repo(&rid)?
- } else {
+ } _ => {
return Err(anyhow!("not a radicle repository"));
- }
+ }}
}
};
if cleared > 0 {
diff --git a/crates/radicle-cli/src/commands/node/control.rs b/crates/radicle-cli/src/commands/node/control.rs
index cb1473e8e..4111f050c 100644
--- a/crates/radicle-cli/src/commands/node/control.rs
+++ b/crates/radicle-cli/src/commands/node/control.rs
@@ -36,15 +36,15 @@ pub fn start(
// Ask passphrase here, otherwise it'll be a fatal error when running the daemon
// without `RAD_PASSPHRASE`.
let validator = term::io::PassphraseValidator::new(profile.keystore.clone());
- let passphrase = if let Some(phrase) = profile::env::passphrase() {
+ let passphrase = match profile::env::passphrase() { Some(phrase) => {
phrase
- } else if let Some(phrase) = term::io::passphrase(validator)? {
+ } _ => { match term::io::passphrase(validator)? { Some(phrase) => {
phrase
- } else {
+ } _ => {
anyhow::bail!(
"A passphrase is required to read your Radicle key in order to start the node. Unable to continue. Consider setting the environment variable `{RAD_PASSPHRASE}`."
);
- };
+ }}}};
Some((profile::env::RAD_PASSPHRASE, passphrase))
} else {
None
diff --git a/crates/radicle-cli/src/commands/patch/review/builder.rs b/crates/radicle-cli/src/commands/patch/review/builder.rs
index ba5c6b279..226637d65 100644
--- a/crates/radicle-cli/src/commands/patch/review/builder.rs
+++ b/crates/radicle-cli/src/commands/patch/review/builder.rs
@@ -636,16 +636,16 @@ impl<'a> ReviewBuilder<'a> {
} else {
Box::new(io::stderr().lock())
};
- let mut brain = if let Ok(b) = Brain::load(self.patch_id, signer.public_key(), repo) {
+ let mut brain = match Brain::load(self.patch_id, signer.public_key(), repo) { Ok(b) => {
term::success!(
"Loaded existing review {} for patch {}",
term::format::secondary(term::format::parens(term::format::oid(b.head.id()))),
term::format::tertiary(&patch_id)
);
b
- } else {
+ } _ => {
Brain::new(self.patch_id, signer.public_key(), base, repo)?
- };
+ }};
let diff = self.diff(&brain.accepted, &tree, repo, opts)?;
let drafts = DraftStore::new(self.repo, *signer.public_key());
let mut patches = cob::patch::Cache::no_cache(&drafts)?;
diff --git a/crates/radicle-cli/src/main.rs b/crates/radicle-cli/src/main.rs
index 77a42ce87..0ed1fe02d 100644
--- a/crates/radicle-cli/src/main.rs
+++ b/crates/radicle-cli/src/main.rs
@@ -193,7 +193,7 @@ fn run_command(command: Command, ctx: impl term::Context) -> Result<(), anyhow::
}
fn print_completion<G: clap_complete::Generator>(generator: G, cmd: &mut clap::Command) {
- clap_complete::generate(
+ clap_complete::r#generate(
generator,
cmd,
cmd.get_name().to_string(),
@@ -223,7 +223,7 @@ impl ExternalCommand {
exe
}
- fn display_exe(&self) -> impl Display {
+ fn display_exe(&self) -> impl Display + use<> {
match self.exe().into_string() {
Ok(exe) => exe,
Err(exe) => format!("{exe:?}"),
diff --git a/crates/radicle-cob/src/tests.rs b/crates/radicle-cob/src/tests.rs
index 8e08166a4..ad2411252 100644
--- a/crates/radicle-cob/src/tests.rs
+++ b/crates/radicle-cob/src/tests.rs
@@ -22,7 +22,7 @@ mod git {
#[test]
fn roundtrip() {
let storage = test::Storage::new();
- let signer = gen::<MockSigner>(1);
+ let signer = r#gen::<MockSigner>(1);
let terry = test::Person::new(&storage, "terry", *signer.public_key()).unwrap();
let proj = test::Project::new(&storage, "discworld", *signer.public_key()).unwrap();
let proj = test::RemoteProject {
@@ -56,7 +56,7 @@ mod git {
#[test]
fn list_cobs() {
let storage = test::Storage::new();
- let signer = gen::<MockSigner>(1);
+ let signer = r#gen::<MockSigner>(1);
let terry = test::Person::new(&storage, "terry", *signer.public_key()).unwrap();
let proj = test::Project::new(&storage, "discworld", *signer.public_key()).unwrap();
let proj = test::RemoteProject {
@@ -108,7 +108,7 @@ mod git {
#[test]
fn update_cob() {
let storage = test::Storage::new();
- let signer = gen::<MockSigner>(1);
+ let signer = r#gen::<MockSigner>(1);
let terry = test::Person::new(&storage, "terry", *signer.public_key()).unwrap();
let proj = test::Project::new(&storage, "discworld", *signer.public_key()).unwrap();
let proj = test::RemoteProject {
@@ -163,9 +163,9 @@ mod git {
#[test]
fn traverse_cobs() {
let storage = test::Storage::new();
- let neil_signer = gen::<MockSigner>(2);
+ let neil_signer = r#gen::<MockSigner>(2);
let neil = test::Person::new(&storage, "gaiman", *neil_signer.public_key()).unwrap();
- let terry_signer = gen::<MockSigner>(1);
+ let terry_signer = r#gen::<MockSigner>(1);
let terry = test::Person::new(&storage, "pratchett", *terry_signer.public_key()).unwrap();
let proj = test::Project::new(&storage, "discworld", *terry_signer.public_key()).unwrap();
let terry_proj = test::RemoteProject {
@@ -264,10 +264,10 @@ mod git {
Ok(())
}
- fn gen<T: Arbitrary>(size: usize) -> T {
- let mut gen = qcheck::Gen::new(size);
+ fn r#gen<T: Arbitrary>(size: usize) -> T {
+ let mut r#gen = qcheck::Gen::new(size);
- T::arbitrary(&mut gen)
+ T::arbitrary(&mut r#gen)
}
}
diff --git a/crates/radicle-crypto/src/lib.rs b/crates/radicle-crypto/src/lib.rs
index 14207e083..e54cb44db 100644
--- a/crates/radicle-crypto/src/lib.rs
+++ b/crates/radicle-crypto/src/lib.rs
@@ -503,8 +503,8 @@ mod tests {
#[test]
fn test_e25519_dh() {
- let kp_a = KeyPair::generate();
- let kp_b = KeyPair::generate();
+ let kp_a = KeyPair::r#generate();
+ let kp_b = KeyPair::r#generate();
let output_a = SecretKey::from(kp_b.sk).ecdh(&kp_a.pk.into()).unwrap();
let output_b = SecretKey::from(kp_a.sk).ecdh(&kp_b.pk.into()).unwrap();
diff --git a/crates/radicle-crypto/src/ssh/keystore.rs b/crates/radicle-crypto/src/ssh/keystore.rs
index bbece9fe8..17c52b0b4 100644
--- a/crates/radicle-crypto/src/ssh/keystore.rs
+++ b/crates/radicle-crypto/src/ssh/keystore.rs
@@ -284,7 +284,7 @@ impl EcSk for MemorySigner {
where
Self: Sized,
{
- let ms = Self::gen();
+ let ms = Self::r#gen();
let pk = ms.public;
(ms, pk)
@@ -356,8 +356,8 @@ impl MemorySigner {
}
/// Generate a new memory signer.
- pub fn gen() -> Self {
- let keypair = KeyPair::generate();
+ pub fn r#gen() -> Self {
+ let keypair = KeyPair::r#generate();
let sk = keypair.sk;
Self {
diff --git a/crates/radicle-crypto/src/test/signer.rs b/crates/radicle-crypto/src/test/signer.rs
index dbf4822d6..3b770bc9e 100644
--- a/crates/radicle-crypto/src/test/signer.rs
+++ b/crates/radicle-crypto/src/test/signer.rs
@@ -65,7 +65,7 @@ impl From<SecretKey> for MockSigner {
impl Default for MockSigner {
fn default() -> Self {
- let seed = Seed::generate();
+ let seed = Seed::r#generate();
let keypair = KeyPair::from_seed(seed);
let sk = keypair.sk;
diff --git a/crates/radicle-node/src/control.rs b/crates/radicle-node/src/control.rs
index 555e7b842..ab3a1acae 100644
--- a/crates/radicle-node/src/control.rs
+++ b/crates/radicle-node/src/control.rs
@@ -342,8 +342,8 @@ mod tests {
fn test_seed_unseed() {
let tmp = tempfile::tempdir().unwrap();
let socket = tmp.path().join("node.sock");
- let proj = test::arbitrary::gen::<RepoId>(1);
- let peer = test::arbitrary::gen::<NodeId>(1);
+ let proj = test::arbitrary::r#gen::<RepoId>(1);
+ let peer = test::arbitrary::r#gen::<NodeId>(1);
let listener = UnixListener::bind(&socket).unwrap();
let mut handle = Node::new(&socket);
diff --git a/crates/radicle-node/src/runtime.rs b/crates/radicle-node/src/runtime.rs
index 77be42ef5..aa1b57a35 100644
--- a/crates/radicle-node/src/runtime.rs
+++ b/crates/radicle-node/src/runtime.rs
@@ -318,7 +318,8 @@ impl Runtime {
#[cfg(all(feature = "systemd", target_os = "linux"))]
fn receive_listener() -> Option<UnixListener> {
- let fd = match radicle_systemd::listen::fd("control") {
+ // SAFETY: When `fd` is called, no other threads are spawned (yet).
+ let fd = match unsafe { radicle_systemd::listen::fd("control") } {
Ok(Some(fd)) => fd,
Ok(None) => return None,
Err(err) => {
diff --git a/crates/radicle-node/src/test/gossip.rs b/crates/radicle-node/src/test/gossip.rs
index 7c530170d..d8e299d96 100644
--- a/crates/radicle-node/src/test/gossip.rs
+++ b/crates/radicle-node/src/test/gossip.rs
@@ -3,7 +3,7 @@ use std::str::FromStr;
use radicle::node;
use radicle::node::device::Device;
use radicle::node::UserAgent;
-use radicle::test::fixtures::gen;
+use radicle::test::fixtures::r#gen;
use crate::test::arbitrary;
use crate::{
@@ -35,7 +35,7 @@ pub fn messages(count: usize, now: LocalTime, delta: LocalDuration) -> Vec<Messa
version: PROTOCOL_VERSION,
features: node::Features::SEED,
timestamp: time.into(),
- alias: node::Alias::new(gen::string(5)),
+ alias: node::Alias::new(r#gen::string(5)),
addresses: None.into(),
nonce: 0,
agent: UserAgent::from_str("/radicle:test/").unwrap(),
diff --git a/crates/radicle-node/src/test/peer.rs b/crates/radicle-node/src/test/peer.rs
index 52536d9ea..41f10e9e7 100644
--- a/crates/radicle-node/src/test/peer.rs
+++ b/crates/radicle-node/src/test/peer.rs
@@ -434,7 +434,7 @@ where
}
/// Drain outgoing messages sent from this peer to the remote peer.
- pub fn messages(&mut self, remote: NodeId) -> impl Iterator<Item = Message> {
+ pub fn messages(&mut self, remote: NodeId) -> std::vec::IntoIter<Message> {
let mut msgs = Vec::new();
Service::outbox(&mut self.service)
@@ -452,7 +452,7 @@ where
/// Drain outgoing *relayed* announcements to the remote peer. This doesn't include messages
/// originating from our own node.
- pub fn relayed(&mut self, remote: NodeId) -> impl Iterator<Item = Message> {
+ pub fn relayed(&mut self, remote: NodeId) -> std::vec::IntoIter<Message> {
let mut filtered: Vec<Message> = Vec::new();
let nid = *self.nid();
diff --git a/crates/radicle-node/src/test/simulator.rs b/crates/radicle-node/src/test/simulator.rs
index 849a006b2..d914f8114 100644
--- a/crates/radicle-node/src/test/simulator.rs
+++ b/crates/radicle-node/src/test/simulator.rs
@@ -666,7 +666,7 @@ where
canonical: fetch::UpdatedCanonicalRefs::default(),
namespaces: HashSet::new(),
clone: true,
- doc: arbitrary::gen(1),
+ doc: arbitrary::r#gen(1),
})),
),
},
diff --git a/crates/radicle-node/src/tests.rs b/crates/radicle-node/src/tests.rs
index 070c39d1a..4e646a143 100644
--- a/crates/radicle-node/src/tests.rs
+++ b/crates/radicle-node/src/tests.rs
@@ -22,7 +22,7 @@ use radicle::node::Link;
use radicle::node::{ConnectOptions, DEFAULT_TIMEOUT};
use radicle::storage::refs::RefsAt;
use radicle::storage::RefUpdate;
-use radicle::test::arbitrary::gen;
+use radicle::test::arbitrary::r#gen;
use radicle::test::storage::MockRepository;
use radicle_protocol::bounded::BoundedVec;
@@ -78,7 +78,7 @@ pub static TEST_CASES: LazyLock<usize> = LazyLock::new(|| {
#[test]
fn test_inventory_decode() {
- let inventory: Vec<RepoId> = arbitrary::gen(300);
+ let inventory: Vec<RepoId> = arbitrary::r#gen(300);
let timestamp: Timestamp = LocalTime::now().into();
let mut buf = Vec::new();
@@ -414,7 +414,7 @@ fn test_inventory_pruning() {
#[test]
fn test_seeding() {
let mut alice = Peer::new("alice", [7, 7, 7, 7]);
- let proj_id: identity::RepoId = test::arbitrary::gen(1);
+ let proj_id: identity::RepoId = test::arbitrary::r#gen(1);
let (cmd, receiver) = Command::seed(proj_id, policy::Scope::default());
alice.command(cmd);
@@ -722,7 +722,7 @@ fn test_refs_announcement_relay_public() {
.elapse(service::GOSSIP_INTERVAL);
// Pretend Alice cloned Bob's repos.
- let repos = gen::<[MockRepository; 3]>(1);
+ let repos = r#gen::<[MockRepository; 3]>(1);
for (i, mut repo) in repos.into_iter().enumerate() {
repo.doc.doc = repo
.doc
@@ -803,7 +803,7 @@ fn test_refs_announcement_relay_private() {
// The first repo is not visible to Eve.
let repo1 = {
- let mut repo = gen::<MockRepository>(1);
+ let mut repo = r#gen::<MockRepository>(1);
repo.doc.doc = repo
.doc
.doc
@@ -817,7 +817,7 @@ fn test_refs_announcement_relay_private() {
// The second repo is visible to Eve.
let repo2 = {
- let mut repo = gen::<MockRepository>(1);
+ let mut repo = r#gen::<MockRepository>(1);
repo.doc.doc = repo
.doc
.doc
@@ -960,7 +960,7 @@ fn test_refs_announcement_no_subscribe() {
let mut alice = Peer::with_storage("alice", [7, 7, 7, 7], storage);
let bob = Peer::new("bob", [8, 8, 8, 8]);
let eve = Peer::new("eve", [9, 9, 9, 9]);
- let id = arbitrary::gen(1);
+ let id = arbitrary::r#gen(1);
alice.seed(&id, policy::Scope::All).unwrap();
alice.connect_to(&bob);
@@ -1406,7 +1406,7 @@ fn test_maintain_connections_failed_attempt() {
fn test_seed_repo_subscribe() {
let mut alice = Peer::new("alice", [7, 7, 7, 7]);
let bob = Peer::new("bob", [8, 8, 8, 8]);
- let rid = arbitrary::gen::<RepoId>(1);
+ let rid = arbitrary::r#gen::<RepoId>(1);
alice.connect_to(&bob);
let (cmd, recv) = Command::seed(rid, policy::Scope::default());
@@ -1425,7 +1425,7 @@ fn test_seed_repo_subscribe() {
#[test]
fn test_fetch_missing_inventory_on_gossip() {
- let rid = arbitrary::gen::<RepoId>(1);
+ let rid = arbitrary::r#gen::<RepoId>(1);
let mut alice = Peer::new("alice", [7, 7, 7, 7]);
let bob = Peer::new("bob", [8, 8, 8, 8]);
let now = LocalTime::now();
@@ -1450,7 +1450,7 @@ fn test_fetch_missing_inventory_on_gossip() {
#[test]
fn test_fetch_missing_inventory_on_schedule() {
- let rid = arbitrary::gen::<RepoId>(1);
+ let rid = arbitrary::r#gen::<RepoId>(1);
let mut alice = Peer::new("alice", [7, 7, 7, 7]);
let bob = Peer::new("bob", [8, 8, 8, 8]);
let now = LocalTime::now();
@@ -1596,7 +1596,7 @@ fn test_queued_fetch_from_ann_same_rid() {
canonical: fetch::UpdatedCanonicalRefs::default(),
namespaces: [carol.id()].into_iter().collect(),
clone: false,
- doc: arbitrary::gen(1),
+ doc: arbitrary::r#gen(1),
}),
);
// Now the 1st fetch is done, but the 2nd and 3rd fetches are redundant.
@@ -1646,7 +1646,7 @@ fn test_queued_fetch_from_command_same_rid() {
alice.elapse(KEEP_ALIVE_DELTA);
// Finish the 1st fetch.
- alice.fetched(rid1, nid, Ok(arbitrary::gen::<fetch::FetchResult>(1)));
+ alice.fetched(rid1, nid, Ok(arbitrary::r#gen::<fetch::FetchResult>(1)));
// Now the 1st fetch is done, the 2nd fetch is dequeued.
let (rid, nid) = alice.fetches().next().unwrap();
assert_eq!(rid, rid1);
@@ -1656,7 +1656,7 @@ fn test_queued_fetch_from_command_same_rid() {
assert_matches!(alice.fetches().next(), None);
// Finish the 2nd fetch.
- alice.fetched(rid1, nid, Ok(arbitrary::gen::<fetch::FetchResult>(1)));
+ alice.fetched(rid1, nid, Ok(arbitrary::r#gen::<fetch::FetchResult>(1)));
// Now the 2nd fetch is done, the 3rd fetch is dequeued.
assert_matches!(alice.fetches().next(), Some((rid, nid)) if rid == rid1 && peers.remove(&nid));
// All fetches were initiated.
@@ -1909,7 +1909,7 @@ fn prop_inventory_exchange_dense() {
}
}
qcheck::QuickCheck::new()
- .gen(qcheck::Gen::new(5))
+ .r#gen(qcheck::Gen::new(5))
.tests(20)
.quickcheck(property as fn(MockStorage, MockStorage, MockStorage));
}
@@ -1933,7 +1933,7 @@ fn test_announcement_message_amplification() {
failure_rate: 0.,
},
);
- let rid = gen::<RepoId>(1);
+ let rid = r#gen::<RepoId>(1);
// Make sure the node gossip intervals are not accidentally synchronized.
alice.elapse(LocalDuration::from_millis(
@@ -2030,7 +2030,7 @@ fn test_announcement_message_amplification() {
alice
.storage_mut()
.repos
- .insert(rid, gen::<MockRepository>(1));
+ .insert(rid, r#gen::<MockRepository>(1));
let (cmd, _) = Command::add_inventory(rid);
alice.command(cmd);
diff --git a/crates/radicle-node/src/wire.rs b/crates/radicle-node/src/wire.rs
index b2db604ab..822d9d186 100644
--- a/crates/radicle-node/src/wire.rs
+++ b/crates/radicle-node/src/wire.rs
@@ -1203,7 +1203,7 @@ fn session<G: Ecdh<Pk = NodeId>>(
};
let noise = {
- let pair = G::generate_keypair();
+ let pair = G::r#generate_keypair();
let keyset = Keyset {
e: pair.0,
@@ -1297,9 +1297,9 @@ mod test {
}
}
- let rid = radicle::test::arbitrary::gen(1);
- let pk = radicle::test::arbitrary::gen(1);
- let sig: [u8; 64] = radicle::test::arbitrary::gen(1);
+ let rid = radicle::test::arbitrary::r#gen(1);
+ let pk = radicle::test::arbitrary::r#gen(1);
+ let sig: [u8; 64] = radicle::test::arbitrary::r#gen(1);
// Message with extension.
let mut stream = Vec::new();
diff --git a/crates/radicle-node/src/worker/upload_pack.rs b/crates/radicle-node/src/worker/upload_pack.rs
index beea84955..6a9ff260e 100644
--- a/crates/radicle-node/src/worker/upload_pack.rs
+++ b/crates/radicle-node/src/worker/upload_pack.rs
@@ -39,7 +39,7 @@ where
.extra
.iter()
.find_map(|kv| match kv {
- (ref k, Some(v)) if k == "version" => {
+ (k, Some(v)) if k == "version" => {
let version = match v.as_str() {
"2" => 2,
"1" => 1,
diff --git a/crates/radicle-oid/src/lib.rs b/crates/radicle-oid/src/lib.rs
index d2fe7426f..63720aa3d 100644
--- a/crates/radicle-oid/src/lib.rs
+++ b/crates/radicle-oid/src/lib.rs
@@ -108,7 +108,7 @@ impl Oid {
/// See also [`::git2::Oid::is_zero`].
pub fn is_zero(&self) -> bool {
match self {
- Oid::Sha1(ref array) => array.iter().all(|b| *b == 0),
+ Oid::Sha1(array) => array.iter().all(|b| *b == 0),
}
}
}
@@ -116,7 +116,7 @@ impl Oid {
impl AsRef<[u8]> for Oid {
fn as_ref(&self) -> &[u8] {
match self {
- Oid::Sha1(ref array) => array,
+ Oid::Sha1(array) => array,
}
}
}
diff --git a/crates/radicle-protocol/src/bounded.rs b/crates/radicle-protocol/src/bounded.rs
index ef67bd933..cbdbed0c7 100644
--- a/crates/radicle-protocol/src/bounded.rs
+++ b/crates/radicle-protocol/src/bounded.rs
@@ -268,8 +268,10 @@ unsafe impl<const N: usize> bytes::BufMut for BoundedVec<u8, N> {
debug_assert!(len <= N);
- // Addition will not overflow since the sum is at most the capacity.
- self.v.set_len(len);
+ // SAFETY: See bounds check above.
+ unsafe {
+ self.v.set_len(len);
+ }
}
fn chunk_mut(&mut self) -> &mut bytes::buf::UninitSlice {
diff --git a/crates/radicle-protocol/src/deserializer.rs b/crates/radicle-protocol/src/deserializer.rs
index 32adf065c..5f74bd430 100644
--- a/crates/radicle-protocol/src/deserializer.rs
+++ b/crates/radicle-protocol/src/deserializer.rs
@@ -85,7 +85,9 @@ unsafe impl<const B: usize, D: wire::Decode> bytes::BufMut for Deserializer<B, D
}
unsafe fn advance_mut(&mut self, cnt: usize) {
- self.unparsed.advance_mut(cnt);
+ unsafe {
+ self.unparsed.advance_mut(cnt);
+ }
}
fn chunk_mut(&mut self) -> &mut bytes::buf::UninitSlice {
diff --git a/crates/radicle-protocol/src/fetcher/service.rs b/crates/radicle-protocol/src/fetcher/service.rs
index 4d73e5ef7..a0db81474 100644
--- a/crates/radicle-protocol/src/fetcher/service.rs
+++ b/crates/radicle-protocol/src/fetcher/service.rs
@@ -176,8 +176,8 @@ mod tests {
.with_max_concurrency(NonZeroUsize::new(1).unwrap())
.with_max_capacity(MaxQueueSize::new(NonZeroUsize::new(10).unwrap()));
let mut service = FetcherService::<usize>::new(config);
- let node = arbitrary::gen(1);
- let repo = arbitrary::gen(1);
+ let node = arbitrary::r#gen(1);
+ let repo = arbitrary::r#gen(1);
let refs_specific: Vec<RefsAt> = arbitrary::vec(2);
let refs_all = vec![];
let config = FetchConfig::default();
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/helpers.rs b/crates/radicle-protocol/src/fetcher/test/queue/helpers.rs
index 592e92498..3e4c2f0bc 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/helpers.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/helpers.rs
@@ -12,7 +12,7 @@ pub fn create_queue(capacity: usize) -> Queue {
pub fn create_fetch() -> QueuedFetch {
QueuedFetch {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
refs: RefsToFetch::All,
config: FetchConfig::default(),
}
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/properties/merge.rs b/crates/radicle-protocol/src/fetcher/test/queue/properties/merge.rs
index fab94b039..3e2a67e84 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/properties/merge.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/properties/merge.rs
@@ -32,7 +32,7 @@ fn same_rid_merges_anywhere_in_queue(max_size: MaxQueueSize, merge_index: usize)
let target_index = merge_index % items.len();
let same_rid_item = QueuedFetch {
rid: items[target_index].rid,
- refs: vec![arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1)].into(),
config: FetchConfig::default(),
};
@@ -47,9 +47,9 @@ fn combines_refs(base_refs_count: u8, merge_refs_count: u8) -> bool {
let mut queue = create_queue(10);
let config = FetchConfig::default();
- let rid: RepoId = arbitrary::gen(1);
- let base_refs: Vec<RefsAt> = (0..base_refs_count).map(|_| arbitrary::gen(1)).collect();
- let merge_refs: Vec<RefsAt> = (0..merge_refs_count).map(|_| arbitrary::gen(1)).collect();
+ let rid: RepoId = arbitrary::r#gen(1);
+ let base_refs: Vec<RefsAt> = (0..base_refs_count).map(|_| arbitrary::r#gen(1)).collect();
+ let merge_refs: Vec<RefsAt> = (0..merge_refs_count).map(|_| arbitrary::r#gen(1)).collect();
let base_item = QueuedFetch {
rid,
@@ -84,13 +84,13 @@ fn combines_refs(base_refs_count: u8, merge_refs_count: u8) -> bool {
#[quickcheck]
fn empty_refs_fetches_all() -> bool {
let mut queue = create_queue(10);
- let rid: RepoId = arbitrary::gen(1);
+ let rid: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
// First enqueue with specific refs
let item_with_refs = QueuedFetch {
rid,
- refs: vec![arbitrary::gen(1), arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1), arbitrary::r#gen(1)].into(),
config,
};
@@ -114,7 +114,7 @@ fn longer_timeout_preserved(short_secs: u16, long_secs: u16) -> bool {
let long = Duration::from_secs(short_secs.max(long_secs) as u64);
let config = FetchConfig::default();
let mut queue = create_queue(10);
- let rid: RepoId = arbitrary::gen(1);
+ let rid: RepoId = arbitrary::r#gen(1);
let item_short = QueuedFetch {
rid,
@@ -144,18 +144,18 @@ fn longer_timeout_preserved(short_secs: u16, long_secs: u16) -> bool {
#[quickcheck]
fn does_not_increase_queue_length() -> bool {
let mut queue = create_queue(10);
- let rid: RepoId = arbitrary::gen(1);
+ let rid: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
let item1 = QueuedFetch {
rid,
- refs: vec![arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1)].into(),
config: config.with_timeout(Duration::from_secs(30)),
};
let item2 = QueuedFetch {
rid,
- refs: vec![arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1)].into(),
config: config.with_timeout(Duration::from_secs(60)),
};
@@ -175,7 +175,7 @@ fn different_rid_accepted(base_item: QueuedFetch) -> bool {
// Item with different rid should be queued (not merged)
let different_rid = QueuedFetch {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
..base_item
};
@@ -186,7 +186,7 @@ fn different_rid_accepted(base_item: QueuedFetch) -> bool {
fn succeed_when_at_capacity() -> bool {
// When queue is at capacity, merging with existing item should still work
let mut queue = create_queue(2);
- let rid: RepoId = arbitrary::gen(1);
+ let rid: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
let item1 = QueuedFetch {
@@ -196,14 +196,14 @@ fn succeed_when_at_capacity() -> bool {
};
let item2 = QueuedFetch {
- rid: arbitrary::gen(1), // Different rid
+ rid: arbitrary::r#gen(1), // Different rid
refs: RefsToFetch::All,
config: config.with_timeout(Duration::from_secs(30)),
};
let merge_item = QueuedFetch {
rid, // Same as item1
- refs: vec![arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1)].into(),
config: config.with_timeout(Duration::from_secs(60)),
};
diff --git a/crates/radicle-protocol/src/fetcher/test/queue/unit.rs b/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
index 897220ec3..ad6b3c1ec 100644
--- a/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
+++ b/crates/radicle-protocol/src/fetcher/test/queue/unit.rs
@@ -14,7 +14,7 @@ fn zero_timeout_accepted() {
let mut queue = create_queue(10);
let config = FetchConfig::default().with_timeout(Duration::ZERO);
let item = QueuedFetch {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
refs: RefsToFetch::All,
config,
};
@@ -26,7 +26,7 @@ fn max_timeout_accepted() {
let mut queue = create_queue(10);
let config = FetchConfig::default().with_timeout(Duration::MAX);
let item = QueuedFetch {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
refs: RefsToFetch::All,
config,
};
@@ -35,7 +35,7 @@ fn max_timeout_accepted() {
#[test]
fn empty_refs_items_can_be_equal() {
- let rid: RepoId = arbitrary::gen(1);
+ let rid: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
let item1 = QueuedFetch {
@@ -56,9 +56,9 @@ fn empty_refs_items_can_be_equal() {
fn merge_preserves_position_in_queue() {
let mut queue = create_queue(10);
- let rid_first: RepoId = arbitrary::gen(1);
- let rid_second: RepoId = arbitrary::gen(2);
- let rid_third: RepoId = arbitrary::gen(3);
+ let rid_first: RepoId = arbitrary::r#gen(1);
+ let rid_second: RepoId = arbitrary::r#gen(2);
+ let rid_third: RepoId = arbitrary::r#gen(3);
let config = FetchConfig::default();
// Enqueue three items
@@ -81,7 +81,7 @@ fn merge_preserves_position_in_queue() {
// Merge into the second item
let result = queue.enqueue(QueuedFetch {
rid: rid_second,
- refs: vec![arbitrary::gen(1)].into(),
+ refs: vec![arbitrary::r#gen(1)].into(),
config: config.with_timeout(Duration::from_secs(60)),
});
assert_eq!(result, Enqueue::Merged);
diff --git a/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs b/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs
index 449b2e442..7ffc83a61 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs
@@ -8,9 +8,9 @@ use crate::fetcher::{ActiveFetch, FetchConfig, FetcherState};
#[test]
fn single_ongoing() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
@@ -47,28 +47,28 @@ fn single_ongoing() {
#[test]
fn ongoing_and_queued() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -91,7 +91,7 @@ fn ongoing_and_queued() {
#[test]
fn non_existent_returns_unexpected() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_unknown: NodeId = arbitrary::gen(1);
+ let node_unknown: NodeId = arbitrary::r#gen(1);
let event = state.cancel(command::Cancel { from: node_unknown });
@@ -101,22 +101,22 @@ fn non_existent_returns_unexpected() {
#[test]
fn cancellation_is_isolated() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let node_b: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let node_b: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_b,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
diff --git a/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs b/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs
index 1c2fbb637..bbede64e6 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs
@@ -11,9 +11,9 @@ use crate::fetcher::{FetchConfig, RefsToFetch};
#[test]
fn fetch_start_first_fetch_for_node() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(2);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(2);
let config = FetchConfig::default();
let event = state.fetch(command::Fetch {
@@ -44,15 +44,15 @@ fn fetch_start_first_fetch_for_node() {
#[test]
fn fetch_different_repo_same_node_within_capacity() {
let mut state = FetcherState::new(helpers::config(2, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
let event1 = state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(event1, event::Fetch::Started { .. }));
@@ -60,7 +60,7 @@ fn fetch_different_repo_same_node_within_capacity() {
let event2 = state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -72,10 +72,10 @@ fn fetch_different_repo_same_node_within_capacity() {
#[test]
fn fetch_same_repo_different_nodes_queues_second() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let node_b: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let node_b: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(1);
let config = FetchConfig::default();
let event1 = state.fetch(command::Fetch {
@@ -106,9 +106,9 @@ fn fetch_same_repo_different_nodes_queues_second() {
#[test]
fn fetch_duplicate_returns_already_fetching() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(2);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(2);
let config = FetchConfig::default();
state.fetch(command::Fetch {
@@ -137,10 +137,10 @@ fn fetch_duplicate_returns_already_fetching() {
#[test]
fn fetch_same_repo_different_refs_enqueues() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(1);
- let refs_2 = helpers::gen_refs(2);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(1);
+ let refs_2 = helpers::r#gen_refs(2);
let config = FetchConfig::default();
state.fetch(command::Fetch {
@@ -169,22 +169,22 @@ fn fetch_same_repo_different_refs_enqueues() {
#[test]
fn fetch_at_capacity_enqueues() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
let event = state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -202,18 +202,18 @@ fn fetch_at_capacity_enqueues() {
#[test]
fn fetch_queue_rejected_capacity_reached() {
let mut state = FetcherState::new(helpers::config(1, 2));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
- let repo_4: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
+ let repo_4: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
// Fill concurrency
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -221,18 +221,18 @@ fn fetch_queue_rejected_capacity_reached() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
// Exceed queue capacity
- let refs_4 = helpers::gen_refs(1);
+ let refs_4 = helpers::r#gen_refs(1);
let event = state.fetch(command::Fetch {
from: node_a,
rid: repo_4,
@@ -255,17 +255,17 @@ fn fetch_queue_rejected_capacity_reached() {
#[test]
fn fetch_queue_merges_already_queued() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let refs_2a = helpers::gen_refs(1);
- let refs_2b = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let refs_2a = helpers::r#gen_refs(1);
+ let refs_2b = helpers::r#gen_refs(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -315,16 +315,16 @@ fn fetch_queue_merges_already_queued() {
#[test]
fn fetch_queue_merge_empty_refs_fetches_all() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let refs_2 = helpers::gen_refs(2);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let refs_2 = helpers::r#gen_refs(2);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -357,9 +357,9 @@ fn fetch_queue_merge_empty_refs_fetches_all() {
#[test]
fn fetch_queue_merge_takes_longer_timeout() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
let short_timeout = Duration::from_secs(10);
let long_timeout = Duration::from_secs(60);
let config = FetchConfig::default();
@@ -367,7 +367,7 @@ fn fetch_queue_merge_takes_longer_timeout() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: config.with_timeout(short_timeout),
});
@@ -375,7 +375,7 @@ fn fetch_queue_merge_takes_longer_timeout() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: config.with_timeout(short_timeout),
});
@@ -383,7 +383,7 @@ fn fetch_queue_merge_takes_longer_timeout() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: config.with_timeout(long_timeout),
});
@@ -399,9 +399,9 @@ fn fetch_queue_merge_takes_longer_timeout() {
#[test]
fn fetch_after_previous_completed() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
diff --git a/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs b/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs
index fceaabdfb..8ce65b8f8 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs
@@ -8,9 +8,9 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn complete_single_ongoing() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let refs_1 = helpers::gen_refs(2);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let refs_1 = helpers::r#gen_refs(2);
let config = FetchConfig::default();
state.fetch(command::Fetch {
@@ -39,17 +39,17 @@ fn complete_single_ongoing() {
#[test]
fn complete_then_dequeue_fifo() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
- let refs_2 = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
+ let refs_2 = helpers::r#gen_refs(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -63,7 +63,7 @@ fn complete_then_dequeue_fifo() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -85,28 +85,28 @@ fn complete_then_dequeue_fifo() {
#[test]
fn complete_one_of_multiple() {
let mut state = FetcherState::new(helpers::config(3, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -124,8 +124,8 @@ fn complete_one_of_multiple() {
#[test]
fn non_existent_returns_not_found() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let event = state.fetched(command::Fetched {
from: node_a,
diff --git a/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs b/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs
index 006b7fbe8..99556111f 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs
@@ -8,18 +8,18 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn interleaved_operations() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let node_b: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let node_b: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
// fetch(A, r1)
let e1 = state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(e1, event::Fetch::Started { .. }));
@@ -28,7 +28,7 @@ fn interleaved_operations() {
let e2 = state.fetch(command::Fetch {
from: node_b,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(e2, event::Fetch::Started { .. }));
@@ -44,7 +44,7 @@ fn interleaved_operations() {
let e4 = state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(e4, event::Fetch::Started { .. }));
@@ -65,21 +65,21 @@ fn interleaved_operations() {
#[test]
fn fetched_then_cancel() {
let mut state = FetcherState::new(helpers::config(2, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
diff --git a/crates/radicle-protocol/src/fetcher/test/state/config.rs b/crates/radicle-protocol/src/fetcher/test/state/config.rs
index 57e3ba007..c247dfc5b 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/config.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/config.rs
@@ -8,15 +8,15 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn high_concurrency() {
let mut state = FetcherState::new(helpers::config(100, 10));
- let node_a: NodeId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
let config = FetchConfig::default();
for i in 0..100 {
- let repo: RepoId = arbitrary::gen(i + 1);
+ let repo: RepoId = arbitrary::r#gen(i + 1);
let event = state.fetch(command::Fetch {
from: node_a,
rid: repo,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(
@@ -39,23 +39,23 @@ fn high_concurrency() {
#[test]
fn min_queue_size() {
let mut state = FetcherState::new(helpers::config(1, 1));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
let event1 = state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(event1, event::Fetch::Queued { .. }));
@@ -63,7 +63,7 @@ fn min_queue_size() {
let event2 = state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(event2, event::Fetch::QueueAtCapacity { .. }));
diff --git a/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs b/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
index b95e09de8..a5f2a2598 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
@@ -10,16 +10,16 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn cannot_dequeue_while_node_at_capacity() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let refs_2 = helpers::gen_refs(3);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let refs_2 = helpers::r#gen_refs(3);
let timeout_2 = Duration::from_secs(42);
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: FetchConfig::default().with_timeout(Duration::from_secs(10)),
});
@@ -48,17 +48,17 @@ fn cannot_dequeue_while_node_at_capacity() {
#[test]
fn maintains_fifo_order() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let repo_3: RepoId = arbitrary::gen(1);
- let repo_4: RepoId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let repo_3: RepoId = arbitrary::r#gen(1);
+ let repo_4: RepoId = arbitrary::r#gen(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -66,19 +66,19 @@ fn maintains_fifo_order() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_2,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_3,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
state.fetch(command::Fetch {
from: node_a,
rid: repo_4,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
@@ -105,7 +105,7 @@ fn maintains_fifo_order() {
#[test]
fn empty_queue_returns_none() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
assert!(state.dequeue(&node_a).is_none());
}
diff --git a/crates/radicle-protocol/src/fetcher/test/state/helpers.rs b/crates/radicle-protocol/src/fetcher/test/state/helpers.rs
index 1f801ab94..91e912e09 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/helpers.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/helpers.rs
@@ -13,6 +13,6 @@ pub fn config(max_concurrency: usize, max_queue_size: usize) -> Config {
}
pub fn gen_refs(count: usize) -> RefsToFetch {
- let refs: Vec<_> = (0..count).map(|_| arbitrary::gen(1)).collect();
+ let refs: Vec<_> = (0..count).map(|_| arbitrary::r#gen(1)).collect();
refs.into()
}
diff --git a/crates/radicle-protocol/src/fetcher/test/state/invariant.rs b/crates/radicle-protocol/src/fetcher/test/state/invariant.rs
index d5fa723e3..639359b26 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/invariant.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/invariant.rs
@@ -8,17 +8,17 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn queue_integrity_after_merge() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let repo_1: RepoId = arbitrary::gen(1);
- let repo_2: RepoId = arbitrary::gen(1);
- let refs_2a = helpers::gen_refs(1);
- let refs_2b = helpers::gen_refs(1);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
+ let repo_2: RepoId = arbitrary::r#gen(1);
+ let refs_2a = helpers::r#gen_refs(1);
+ let refs_2b = helpers::r#gen_refs(1);
let config = FetchConfig::default();
state.fetch(command::Fetch {
from: node_a,
rid: repo_1,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
diff --git a/crates/radicle-protocol/src/fetcher/test/state/multinode.rs b/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
index b46f46f2e..ec0afe149 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
@@ -8,25 +8,25 @@ use crate::fetcher::{FetchConfig, FetcherState};
#[test]
fn independent_queues() {
let mut state = FetcherState::new(helpers::config(1, 10));
- let node_a: NodeId = arbitrary::gen(1);
- let node_b: NodeId = arbitrary::gen(1);
- let repo_a_active: RepoId = arbitrary::gen(1);
- let repo_b_active: RepoId = arbitrary::gen(2);
- let repo_a_queued: RepoId = arbitrary::gen(10);
- let repo_b_queued: RepoId = arbitrary::gen(20);
+ let node_a: NodeId = arbitrary::r#gen(1);
+ let node_b: NodeId = arbitrary::r#gen(1);
+ let repo_a_active: RepoId = arbitrary::r#gen(1);
+ let repo_b_active: RepoId = arbitrary::r#gen(2);
+ let repo_a_queued: RepoId = arbitrary::r#gen(10);
+ let repo_b_queued: RepoId = arbitrary::r#gen(20);
let fetch_config = FetchConfig::default();
// Fill capacity for both nodes
state.fetch(command::Fetch {
from: node_a,
rid: repo_a_active,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: fetch_config,
});
state.fetch(command::Fetch {
from: node_b,
rid: repo_b_active,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: fetch_config,
});
@@ -34,13 +34,13 @@ fn independent_queues() {
state.fetch(command::Fetch {
from: node_a,
rid: repo_a_queued,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: fetch_config,
});
state.fetch(command::Fetch {
from: node_b,
rid: repo_b_queued,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config: fetch_config,
});
@@ -66,12 +66,12 @@ fn high_count() {
let config = FetchConfig::default();
for i in 0..100 {
- let node: NodeId = arbitrary::gen(i + 1);
- let repo: RepoId = arbitrary::gen(i + 1);
+ let node: NodeId = arbitrary::r#gen(i + 1);
+ let repo: RepoId = arbitrary::r#gen(i + 1);
let event = state.fetch(command::Fetch {
from: node,
rid: repo,
- refs: helpers::gen_refs(1),
+ refs: helpers::r#gen_refs(1),
config,
});
assert!(matches!(event, event::Fetch::Started { .. }));
diff --git a/crates/radicle-protocol/src/service/gossip/store.rs b/crates/radicle-protocol/src/service/gossip/store.rs
index c0732727c..f0035f9a1 100644
--- a/crates/radicle-protocol/src/service/gossip/store.rs
+++ b/crates/radicle-protocol/src/service/gossip/store.rs
@@ -389,8 +389,8 @@ mod test {
#[test]
fn test_announced() {
let mut db = Database::memory().unwrap();
- let nid = arbitrary::gen::<NodeId>(1);
- let rid = arbitrary::gen::<RepoId>(1);
+ let nid = arbitrary::r#gen::<NodeId>(1);
+ let rid = arbitrary::r#gen::<RepoId>(1);
let timestamp = LocalTime::now().into();
let signer = Device::mock();
let refs = AnnouncementMessage::Refs(RefsAnnouncement {
diff --git a/crates/radicle-protocol/src/service/limiter.rs b/crates/radicle-protocol/src/service/limiter.rs
index bd8afa561..d9867bcd4 100644
--- a/crates/radicle-protocol/src/service/limiter.rs
+++ b/crates/radicle-protocol/src/service/limiter.rs
@@ -159,7 +159,7 @@ mod test {
let mut r = RateLimiter::default();
let t = (3, 0.2); // Three tokens burst. One token every 5 seconds.
let a = HostName::Dns(String::from("seed.radicle.example.com"));
- let n = arbitrary::gen::<NodeId>(1);
+ let n = arbitrary::r#gen::<NodeId>(1);
let n = Some(&n);
assert_eq!(r.limit(a.clone(), n, &t, LocalTime::from_secs(0)), false); // Burst capacity
@@ -189,7 +189,7 @@ mod test {
#[rustfmt::skip]
fn test_limiter_multi() {
let t = (1, 1.0); // One token per second. One token burst.
- let n = arbitrary::gen::<NodeId>(1);
+ let n = arbitrary::r#gen::<NodeId>(1);
let n = Some(&n);
let mut r = RateLimiter::default();
let addr1 = HostName::Dns(String::from("seed.radicle.example.com"));
@@ -210,7 +210,7 @@ mod test {
fn test_limiter_different_rates() {
let t1 = (1, 1.0); // One token per second. One token burst.
let t2 = (2, 2.0); // Two tokens per second. Two token burst.
- let n = arbitrary::gen::<NodeId>(1);
+ let n = arbitrary::r#gen::<NodeId>(1);
let n = Some(&n);
let mut r = RateLimiter::default();
let addr1 = HostName::Dns(String::from("seed.radicle.example.com"));
diff --git a/crates/radicle-protocol/src/service/message.rs b/crates/radicle-protocol/src/service/message.rs
index afcea6317..b53bc3a18 100644
--- a/crates/radicle-protocol/src/service/message.rs
+++ b/crates/radicle-protocol/src/service/message.rs
@@ -92,7 +92,7 @@ impl NodeAnnouncement {
.expect("proof-of-work output vector is a valid length");
// Calculate the number of leading zero bits in the output vector.
- if let Some((zero_bytes, non_zero)) = output.iter().enumerate().find(|(_, &x)| x != 0) {
+ if let Some((zero_bytes, non_zero)) = output.iter().enumerate().find(|&(_, &x)| x != 0) {
zero_bytes as u32 * 8 + non_zero.leading_zeros()
} else {
output.len() as u32 * 8
@@ -703,7 +703,7 @@ mod tests {
}
let msg: Message = AnnouncementMessage::from(RefsAnnouncement {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
refs,
timestamp: LocalTime::now().into(),
})
diff --git a/crates/radicle-protocol/src/wire/message.rs b/crates/radicle-protocol/src/wire/message.rs
index 62e22c617..99e7e8c0d 100644
--- a/crates/radicle-protocol/src/wire/message.rs
+++ b/crates/radicle-protocol/src/wire/message.rs
@@ -443,11 +443,11 @@ mod tests {
#[test]
fn test_refs_ann_max_size() {
let signer = Device::mock();
- let refs: [RefsAt; REF_REMOTE_LIMIT] = arbitrary::gen(1);
+ let refs: [RefsAt; REF_REMOTE_LIMIT] = arbitrary::r#gen(1);
let ann = AnnouncementMessage::Refs(RefsAnnouncement {
- rid: arbitrary::gen(1),
+ rid: arbitrary::r#gen(1),
refs: BoundedVec::collect_from(&mut refs.into_iter()),
- timestamp: arbitrary::gen(1),
+ timestamp: arbitrary::r#gen(1),
});
let ann = ann.signed(&signer);
let msg = Message::Announcement(ann);
@@ -459,10 +459,10 @@ mod tests {
#[test]
fn test_inv_ann_max_size() {
let signer = Device::mock();
- let inv: [RepoId; INVENTORY_LIMIT] = arbitrary::gen(1);
+ let inv: [RepoId; INVENTORY_LIMIT] = arbitrary::r#gen(1);
let ann = AnnouncementMessage::Inventory(InventoryAnnouncement {
inventory: BoundedVec::collect_from(&mut inv.into_iter()),
- timestamp: arbitrary::gen(1),
+ timestamp: arbitrary::r#gen(1),
});
let ann = ann.signed(&signer);
let msg = Message::Announcement(ann);
@@ -474,14 +474,14 @@ mod tests {
#[test]
fn test_node_ann_max_size() {
let signer = Device::mock();
- let addrs: [Address; ADDRESS_LIMIT] = arbitrary::gen(1);
+ let addrs: [Address; ADDRESS_LIMIT] = arbitrary::r#gen(1);
let alias = ['@'; radicle::node::MAX_ALIAS_LENGTH];
let ann = AnnouncementMessage::Node(NodeAnnouncement {
version: 1,
features: Default::default(),
alias: radicle::node::Alias::new(String::from_iter(alias)),
addresses: BoundedVec::collect_from(&mut addrs.into_iter()),
- timestamp: arbitrary::gen(1),
+ timestamp: arbitrary::r#gen(1),
nonce: u64::MAX,
agent: UserAgent::default(),
});
@@ -539,7 +539,7 @@ mod tests {
}
qcheck::QuickCheck::new()
- .gen(qcheck::Gen::new(16))
+ .r#gen(qcheck::Gen::new(16))
.quickcheck(property as fn(items: Vec<Message>));
}
diff --git a/crates/radicle-systemd/src/listen.rs b/crates/radicle-systemd/src/listen.rs
index 7405503a6..aa808fb9b 100644
--- a/crates/radicle-systemd/src/listen.rs
+++ b/crates/radicle-systemd/src/listen.rs
@@ -1,4 +1,4 @@
-use std::env::{remove_var, var, VarError};
+use std::env::{VarError, remove_var, var};
use std::os::fd::RawFd;
use std::process::id;
@@ -20,20 +20,28 @@ const SD_LISTEN_FDS_START: RawFd = 3;
/// - <https://github.com/systemd/systemd/blob/v254/src/libsystemd/sd-daemon/sd-daemon.c>
/// - <https://0pointer.de/blog/projects/socket-activation.html>
/// - <https://0pointer.de/blog/projects/socket-activation2.html>
-pub fn fd(name: &str) -> Result<Option<RawFd>, VarError> {
- let fd = match var(LISTEN_PID) {
+///
+/// # Safety
+///
+/// This function calls [`remove_var`] to remove the environment variables
+/// it interpreted in case it returns `Ok(Some(_))`. In this case, this
+/// function inherits the unsafe behavior of [`remove_var`].
+pub unsafe fn fd(name: &str) -> Result<Option<RawFd>, VarError> {
+ match var(LISTEN_PID) {
Err(VarError::NotPresent) => Ok(None),
Err(err) => Err(err),
Ok(pid) if pid != id().to_string() => Ok(None),
_ if var(LISTEN_FDS)? != "1" || var(LISTEN_FDNAMES).ok() != Some(name.to_string()) => {
Ok(None)
}
- _ => Ok(Some(SD_LISTEN_FDS_START)),
- };
+ _ => {
+ unsafe {
+ remove_var(LISTEN_PID);
+ remove_var(LISTEN_FDS);
+ remove_var(LISTEN_FDNAMES);
+ }
- remove_var(LISTEN_PID);
- remove_var(LISTEN_FDS);
- remove_var(LISTEN_FDNAMES);
-
- fd
+ Ok(Some(SD_LISTEN_FDS_START))
+ }
+ }
}
diff --git a/crates/radicle-term/src/io.rs b/crates/radicle-term/src/io.rs
index 38e107086..619631fe8 100644
--- a/crates/radicle-term/src/io.rs
+++ b/crates/radicle-term/src/io.rs
@@ -70,7 +70,7 @@ impl PaintTarget {
#[macro_export]
macro_rules! info {
- ($writer:expr; $($arg:tt)*) => ({
+ ($writer:expr_2021; $($arg:tt)*) => ({
writeln!($writer, $($arg)*).ok();
});
($($arg:tt)*) => ({
@@ -81,7 +81,7 @@ macro_rules! info {
#[macro_export]
macro_rules! success {
// Pattern when a writer is provided.
- ($writer:expr; $($arg:tt)*) => ({
+ ($writer:expr_2021; $($arg:tt)*) => ({
$crate::io::success_args($writer, format_args!($($arg)*));
});
// Pattern without writer.
@@ -100,7 +100,7 @@ macro_rules! tip {
#[macro_export]
macro_rules! notice {
// Pattern when a writer is provided.
- ($writer:expr; $($arg:tt)*) => ({
+ ($writer:expr_2021; $($arg:tt)*) => ({
$crate::io::notice_args($writer, format_args!($($arg)*));
});
($($arg:tt)*) => ({
diff --git a/crates/radicle-term/src/textarea.rs b/crates/radicle-term/src/textarea.rs
index da719a0d7..f115f9c53 100644
--- a/crates/radicle-term/src/textarea.rs
+++ b/crates/radicle-term/src/textarea.rs
@@ -30,7 +30,7 @@ impl TextArea {
}
/// Get the lines of text in this text area.
- pub fn lines(&self) -> impl Iterator<Item = String> {
+ pub fn lines(&self) -> impl Iterator<Item = String> + use<> {
let mut lines: Vec<String> = Vec::new();
let mut fenced = false;
diff --git a/crates/radicle/src/cob/issue.rs b/crates/radicle/src/cob/issue.rs
index 2fcab4397..1a3ffffb6 100644
--- a/crates/radicle/src/cob/issue.rs
+++ b/crates/radicle/src/cob/issue.rs
@@ -1080,8 +1080,8 @@ mod test {
let test::setup::NodeWithRepo { node, repo, .. } = test::setup::NodeWithRepo::default();
let mut issues = Cache::no_cache(&*repo).unwrap();
- let assignee = Did::from(arbitrary::gen::<ActorId>(1));
- let assignee_two = Did::from(arbitrary::gen::<ActorId>(1));
+ let assignee = Did::from(arbitrary::r#gen::<ActorId>(1));
+ let assignee_two = Did::from(arbitrary::r#gen::<ActorId>(1));
let issue = issues
.create(
cob::Title::new("My first issue").unwrap(),
@@ -1119,8 +1119,8 @@ mod test {
let test::setup::NodeWithRepo { node, repo, .. } = test::setup::NodeWithRepo::default();
let mut issues = Cache::no_cache(&*repo).unwrap();
- let assignee = Did::from(arbitrary::gen::<ActorId>(1));
- let assignee_two = Did::from(arbitrary::gen::<ActorId>(1));
+ let assignee = Did::from(arbitrary::r#gen::<ActorId>(1));
+ let assignee_two = Did::from(arbitrary::r#gen::<ActorId>(1));
let mut issue = issues
.create(
cob::Title::new("My first issue").unwrap(),
@@ -1218,8 +1218,8 @@ mod test {
let test::setup::NodeWithRepo { node, repo, .. } = test::setup::NodeWithRepo::default();
let mut issues = Cache::no_cache(&*repo).unwrap();
- let assignee = Did::from(arbitrary::gen::<ActorId>(1));
- let assignee_two = Did::from(arbitrary::gen::<ActorId>(1));
+ let assignee = Did::from(arbitrary::r#gen::<ActorId>(1));
+ let assignee_two = Did::from(arbitrary::r#gen::<ActorId>(1));
let mut issue = issues
.create(
cob::Title::new("My first issue").unwrap(),
diff --git a/crates/radicle/src/cob/issue/cache.rs b/crates/radicle/src/cob/issue/cache.rs
index 655213995..70f5ac6f9 100644
--- a/crates/radicle/src/cob/issue/cache.rs
+++ b/crates/radicle/src/cob/issue/cache.rs
@@ -635,7 +635,7 @@ mod tests {
#[test]
fn test_is_empty() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
assert!(cache.is_empty().unwrap());
@@ -657,10 +657,10 @@ mod tests {
#[test]
fn test_counts() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let n_open = arbitrary::gen::<u8>(0);
- let n_closed = arbitrary::gen::<u8>(1);
+ let n_open = arbitrary::r#gen::<u8>(0);
+ let n_closed = arbitrary::r#gen::<u8>(1);
let open_ids = (0..n_open)
.map(|_| IssueId::from(arbitrary::oid()))
.collect::<BTreeSet<IssueId>>();
@@ -698,12 +698,12 @@ mod tests {
#[test]
fn test_get() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| IssueId::from(arbitrary::oid()))
.collect::<BTreeSet<IssueId>>();
- let missing = (0..arbitrary::gen::<u8>(2))
+ let missing = (0..arbitrary::r#gen::<u8>(2))
.filter_map(|_| {
let id = IssueId::from(arbitrary::oid());
(!ids.contains(&id)).then_some(id)
@@ -733,9 +733,9 @@ mod tests {
#[test]
fn test_list() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| IssueId::from(arbitrary::oid()))
.collect::<BTreeSet<IssueId>>();
let mut issues = Vec::with_capacity(ids.len());
@@ -763,9 +763,9 @@ mod tests {
#[test]
fn test_list_by_status() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| IssueId::from(arbitrary::oid()))
.collect::<BTreeSet<IssueId>>();
let mut issues = Vec::with_capacity(ids.len());
@@ -793,9 +793,9 @@ mod tests {
#[test]
fn test_remove() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| IssueId::from(arbitrary::oid()))
.collect::<BTreeSet<IssueId>>();
diff --git a/crates/radicle/src/cob/patch.rs b/crates/radicle/src/cob/patch.rs
index 47d95e853..98214b9b8 100644
--- a/crates/radicle/src/cob/patch.rs
+++ b/crates/radicle/src/cob/patch.rs
@@ -2999,7 +2999,7 @@ mod test {
use crate::profile::env;
use crate::test;
use crate::test::arbitrary;
- use crate::test::arbitrary::gen;
+ use crate::test::arbitrary::r#gen;
use crate::test::storage::MockRepository;
use cob::migrate;
@@ -3251,9 +3251,9 @@ mod test {
let base = git::Oid::from_str("cb18e95ada2bb38aadd8e6cef0963ce37a87add3").unwrap();
let oid = git::Oid::from_str("518d5069f94c03427f694bb494ac1cd7d1339380").unwrap();
let mut alice = Actor::<MockSigner>::default();
- let rid = gen::<RepoId>(1);
+ let rid = r#gen::<RepoId>(1);
let doc = RawDoc::new(
- gen::<Project>(1),
+ r#gen::<Project>(1),
vec![alice.did()],
1,
identity::Visibility::Public,
@@ -3308,7 +3308,7 @@ mod test {
fn test_revision_edit_redact() {
let base = arbitrary::oid();
let oid = arbitrary::oid();
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let time = env::local_time();
let alice = MockSigner::default();
let bob = MockSigner::default();
@@ -3370,7 +3370,7 @@ mod test {
let base = git::Oid::from_str("cb18e95ada2bb38aadd8e6cef0963ce37a87add3").unwrap();
let oid = git::Oid::from_str("518d5069f94c03427f694bb494ac1cd7d1339380").unwrap();
let mut alice = Actor::<MockSigner>::default();
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let reaction = Reaction::new('👍').expect("failed to create a reaction");
let a1 = alice.op::<Patch>([
diff --git a/crates/radicle/src/cob/patch/cache.rs b/crates/radicle/src/cob/patch/cache.rs
index b0b513891..c6a527f0e 100644
--- a/crates/radicle/src/cob/patch/cache.rs
+++ b/crates/radicle/src/cob/patch/cache.rs
@@ -732,8 +732,8 @@ mod tests {
}
fn revision() -> (RevisionId, Revision) {
- let author = arbitrary::gen::<Did>(1);
- let description = arbitrary::gen::<String>(1);
+ let author = arbitrary::r#gen::<Did>(1);
+ let description = arbitrary::r#gen::<String>(1);
let base = arbitrary::oid();
let oid = arbitrary::oid();
let timestamp = env::local_time();
@@ -763,7 +763,7 @@ mod tests {
#[test]
fn test_is_empty() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
assert!(cache.is_empty().unwrap());
@@ -791,12 +791,12 @@ mod tests {
#[test]
fn test_counts() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let n_open = arbitrary::gen::<u8>(0);
- let n_draft = arbitrary::gen::<u8>(1);
- let n_archived = arbitrary::gen::<u8>(1);
- let n_merged = arbitrary::gen::<u8>(1);
+ let n_open = arbitrary::r#gen::<u8>(0);
+ let n_draft = arbitrary::r#gen::<u8>(1);
+ let n_archived = arbitrary::r#gen::<u8>(1);
+ let n_merged = arbitrary::r#gen::<u8>(1);
let open_ids = (0..n_open)
.map(|_| PatchId::from(arbitrary::oid()))
.collect::<BTreeSet<PatchId>>();
@@ -879,12 +879,12 @@ mod tests {
#[test]
fn test_get() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| PatchId::from(arbitrary::oid()))
.collect::<BTreeSet<PatchId>>();
- let missing = (0..arbitrary::gen::<u8>(2))
+ let missing = (0..arbitrary::r#gen::<u8>(2))
.filter_map(|_| {
let id = PatchId::from(arbitrary::oid());
(!ids.contains(&id)).then_some(id)
@@ -915,10 +915,10 @@ mod tests {
#[test]
fn test_find_by_revision() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
let patch_id = PatchId::from(arbitrary::oid());
- let revisions = (0..arbitrary::gen::<NonZeroU8>(1).into())
+ let revisions = (0..arbitrary::r#gen::<NonZeroU8>(1).into())
.map(|_| revision())
.collect::<BTreeMap<RevisionId, Revision>>();
let (rev_id, rev) = revisions
@@ -957,9 +957,9 @@ mod tests {
#[test]
fn test_list() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| PatchId::from(arbitrary::oid()))
.collect::<BTreeSet<PatchId>>();
let mut patches = Vec::with_capacity(ids.len());
@@ -988,9 +988,9 @@ mod tests {
#[test]
fn test_list_by_status() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| PatchId::from(arbitrary::oid()))
.collect::<BTreeSet<PatchId>>();
let mut patches = Vec::with_capacity(ids.len());
@@ -1019,9 +1019,9 @@ mod tests {
#[test]
fn test_remove() {
- let repo = arbitrary::gen::<MockRepository>(1);
+ let repo = arbitrary::r#gen::<MockRepository>(1);
let mut cache = memory(repo);
- let ids = (0..arbitrary::gen::<u8>(1))
+ let ids = (0..arbitrary::r#gen::<u8>(1))
.map(|_| PatchId::from(arbitrary::oid()))
.collect::<BTreeSet<PatchId>>();
diff --git a/crates/radicle/src/cob/store.rs b/crates/radicle/src/cob/store.rs
index c1695b0c5..7e092da87 100644
--- a/crates/radicle/src/cob/store.rs
+++ b/crates/radicle/src/cob/store.rs
@@ -344,7 +344,7 @@ where
/// Return all objects.
pub fn all(
&self,
- ) -> Result<impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + 'a, Error> {
+ ) -> Result<impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + 'a + use<'a, T, R>, Error> {
let raw = cob::list::<T, _>(self.repo, self.type_name)?;
Ok(raw.into_iter().map(|o| Ok((*o.id(), o.object))))
diff --git a/crates/radicle/src/cob/stream.rs b/crates/radicle/src/cob/stream.rs
index 8772b142e..54e2383ac 100644
--- a/crates/radicle/src/cob/stream.rs
+++ b/crates/radicle/src/cob/stream.rs
@@ -177,7 +177,7 @@ mod tests {
use crate::cob::change::Storage as _;
use crate::crypto::test::signer::MockSigner;
use crate::test::arbitrary;
- use crate::test::arbitrary::gen;
+ use crate::test::arbitrary::r#gen;
use crate::{cob, test};
use super::*;
@@ -188,13 +188,13 @@ mod tests {
fn gen_ops(repo: &git::raw::Repository, signer: &MockSigner) -> Vec<cob::Entry> {
// Number of ops
- let n = gen::<u8>(1).clamp(1, 10);
+ let n = r#gen::<u8>(1).clamp(1, 10);
let mut entries = Vec::with_capacity(n.into());
let mut parent = None;
for _ in 0..n {
// Number of actions in this op
- let m = gen::<u8>(1).clamp(1, 3);
+ let m = r#gen::<u8>(1).clamp(1, 3);
let contents = create_contents((0..m).map(|_| arbitrary::alphanumeric(1)));
let entry = create_entry(repo, signer, contents, parent);
parent = Some(entry.id);
@@ -383,7 +383,7 @@ mod tests {
until: ops.last().unwrap().id.into(),
};
let n = ops.len() - 1;
- let (x, y) = gen::<(usize, usize)>(1);
+ let (x, y) = r#gen::<(usize, usize)>(1);
let x = x.clamp(0, n);
let y = y.clamp(0, n);
let (from, until) = if x <= y {
diff --git a/crates/radicle/src/cob/thread.rs b/crates/radicle/src/cob/thread.rs
index e5af4f399..b0be343b9 100644
--- a/crates/radicle/src/cob/thread.rs
+++ b/crates/radicle/src/cob/thread.rs
@@ -638,7 +638,7 @@ mod tests {
use crate::node::device::Device;
use crate::profile::env;
use crate::test::arbitrary;
- use crate::test::arbitrary::gen;
+ use crate::test::arbitrary::r#gen;
use crate::test::storage::MockRepository;
/// An object that can be used to create and sign changes.
@@ -700,7 +700,7 @@ mod tests {
#[test]
fn test_redact_comment() {
let radicle::test::setup::Node { signer, .. } = radicle::test::setup::Node::default();
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let mut alice = Actor::new(signer);
let a0 = alice.comment("First comment", None);
@@ -725,7 +725,7 @@ mod tests {
#[test]
fn test_edit_comment() {
let mut alice = Actor::<MockSigner>::default();
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let c0 = alice.comment("Hello world!", None);
let c1 = alice.edit(c0.id(), "Goodbye world.");
@@ -747,7 +747,7 @@ mod tests {
let alice = MockSigner::default();
let bob = MockSigner::default();
let eve = MockSigner::default();
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let time = env::local_time();
let mut a = test::history::<Thread, _>(
@@ -812,7 +812,7 @@ mod tests {
#[test]
fn test_duplicate_comments() {
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let alice = MockSigner::default();
let bob = MockSigner::default();
let time = env::local_time();
@@ -856,7 +856,7 @@ mod tests {
#[quickcheck]
fn prop_ordering(timestamp: u64) {
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let alice = MockSigner::default();
let bob = MockSigner::default();
let timestamp = Timestamp::from_secs(timestamp);
@@ -915,7 +915,7 @@ mod tests {
#[test]
fn test_comment_redact_missing() {
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let mut alice = Actor::<MockSigner>::default();
let mut t = Thread::default();
let id = arbitrary::entry_id();
@@ -925,7 +925,7 @@ mod tests {
#[test]
fn test_comment_edit_missing() {
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let mut alice = Actor::<MockSigner>::default();
let mut t = Thread::default();
let id = arbitrary::entry_id();
@@ -935,7 +935,7 @@ mod tests {
#[test]
fn test_comment_edit_redacted() {
- let repo = gen::<MockRepository>(1);
+ let repo = r#gen::<MockRepository>(1);
let mut alice = Actor::<MockSigner>::default();
let a1 = alice.comment("Hi", None);
diff --git a/crates/radicle/src/git/canonical.rs b/crates/radicle/src/git/canonical.rs
index 56702310b..cb54a71aa 100644
--- a/crates/radicle/src/git/canonical.rs
+++ b/crates/radicle/src/git/canonical.rs
@@ -304,7 +304,7 @@ impl<'a, 'b> QuorumFinder<'a, 'b> {
}
}
- fn find_merge_bases(&mut self) -> ControlFlow<(), impl Iterator<Item = (Oid, Oid)>> {
+ fn find_merge_bases(&mut self) -> ControlFlow<(), impl Iterator<Item = (Oid, Oid)> + use<>> {
match self.commit_quorum.next_candidate() {
Some(candidate) => ControlFlow::Continue(candidate),
None => ControlFlow::Break(()),
diff --git a/crates/radicle/src/git/canonical/quorum.rs b/crates/radicle/src/git/canonical/quorum.rs
index d3a9521f1..5279b0ed1 100644
--- a/crates/radicle/src/git/canonical/quorum.rs
+++ b/crates/radicle/src/git/canonical/quorum.rs
@@ -156,7 +156,7 @@ impl CommitQuorum {
///
/// A [`MergeBase`] should be calculated for each, and these should be
/// recorded using [`CommitQuorum::found_merge_bases`].
- pub fn next_candidate(&mut self) -> Option<impl Iterator<Item = (Oid, Oid)>> {
+ pub fn next_candidate(&mut self) -> Option<impl Iterator<Item = (Oid, Oid)> + use<>> {
self.voting.next_candidate()
}
diff --git a/crates/radicle/src/git/canonical/rules.rs b/crates/radicle/src/git/canonical/rules.rs
index f4c50acb4..0a9d37a15 100644
--- a/crates/radicle/src/git/canonical/rules.rs
+++ b/crates/radicle/src/git/canonical/rules.rs
@@ -1026,7 +1026,7 @@ mod tests {
#[test]
fn test_rule_validate_success() {
- let doc = arbitrary::gen::<Doc>(1);
+ let doc = arbitrary::r#gen::<Doc>(1);
let delegates = Allowed::Set(doc.delegates().as_ref().clone());
let threshold = doc.majority();
@@ -1041,7 +1041,7 @@ mod tests {
#[test]
fn test_rule_validate_failures() {
- let doc = arbitrary::gen::<Doc>(1);
+ let doc = arbitrary::r#gen::<Doc>(1);
let pattern = pattern(qualified_pattern!("refs/heads/main"));
assert!(matches!(
diff --git a/crates/radicle/src/git/canonical/voting.rs b/crates/radicle/src/git/canonical/voting.rs
index 51c23d0b3..9d65a6030 100644
--- a/crates/radicle/src/git/canonical/voting.rs
+++ b/crates/radicle/src/git/canonical/voting.rs
@@ -66,7 +66,7 @@ impl CommitVoting {
/// compared to the other commit to see what their common merge base is. The
/// merge base is then recorded using [`MergeBase`] and is recorded using
/// [`CommitVoting::found_merge_base`].
- pub fn next_candidate(&mut self) -> Option<impl Iterator<Item = (Oid, Oid)>> {
+ pub fn next_candidate(&mut self) -> Option<impl Iterator<Item = (Oid, Oid)> + use<>> {
self.candidates
.pop()
.map(|(oid, others)| others.into_iter().map(move |other| (oid, other)))
diff --git a/crates/radicle/src/identity/doc.rs b/crates/radicle/src/identity/doc.rs
index 02e38bc02..f2e331160 100644
--- a/crates/radicle/src/identity/doc.rs
+++ b/crates/radicle/src/identity/doc.rs
@@ -978,7 +978,7 @@ mod test {
use crate::storage::git::Storage;
use crate::storage::{ReadStorage as _, RemoteId, WriteStorage as _};
use crate::test::arbitrary;
- use crate::test::arbitrary::gen;
+ use crate::test::arbitrary::r#gen;
use crate::test::fixtures;
use super::*;
@@ -988,7 +988,7 @@ mod test {
fn test_duplicate_dids() {
let delegate = Device::mock_from_seed([0xff; 32]);
let did = Did::from(delegate.public_key());
- let mut doc = RawDoc::new(gen::<Project>(1), vec![did], 1, Visibility::Public);
+ let mut doc = RawDoc::new(r#gen::<Project>(1), vec![did], 1, Visibility::Public);
doc.delegate(did);
let doc = doc.verified().unwrap();
assert!(doc.delegates().len() == 1, "Duplicate DID was not removed");
@@ -998,11 +998,11 @@ mod test {
#[test]
fn test_max_delegates() {
// Generate more than the max delegates
- let delegates = (0..MAX_DELEGATES + 1).map(gen).collect::<Vec<Did>>();
+ let delegates = (0..MAX_DELEGATES + 1).map(r#gen).collect::<Vec<Did>>();
// A document with max delegates will be fine
let doc = RawDoc::new(
- gen::<Project>(1),
+ r#gen::<Project>(1),
delegates[0..MAX_DELEGATES].into(),
1,
Visibility::Public,
@@ -1010,7 +1010,7 @@ mod test {
assert_matches!(doc.verified(), Ok(_));
// A document that exceeds max delegates should fail
- let doc = RawDoc::new(gen::<Project>(1), delegates, 1, Visibility::Public);
+ let doc = RawDoc::new(r#gen::<Project>(1), delegates, 1, Visibility::Public);
assert_matches!(doc.verified(), Err(DocError::Delegates(DelegatesError(_))));
}
@@ -1149,8 +1149,8 @@ mod test {
fn test_not_found() {
let tempdir = tempfile::tempdir().unwrap();
let storage = Storage::open(tempdir.path().join("storage"), fixtures::user()).unwrap();
- let remote = arbitrary::gen::<RemoteId>(1);
- let proj = arbitrary::gen::<RepoId>(1);
+ let remote = arbitrary::r#gen::<RemoteId>(1);
+ let proj = arbitrary::r#gen::<RepoId>(1);
let repo = storage.create(proj).unwrap();
let oid = git::raw::Oid::from_str("2d52a53ce5e4f141148a5f770cfd3ead2d6a45b8").unwrap();
diff --git a/crates/radicle/src/identity/doc/update.rs b/crates/radicle/src/identity/doc/update.rs
index 313e6b847..70d1d209a 100644
--- a/crates/radicle/src/identity/doc/update.rs
+++ b/crates/radicle/src/identity/doc/update.rs
@@ -289,7 +289,7 @@ mod test {
#[test]
fn test_can_update_crefs() {
- let raw = arbitrary::gen::<RawDoc>(1);
+ let raw = arbitrary::r#gen::<RawDoc>(1);
let raw = super::payload(
raw,
[PayloadUpsert {
@@ -310,7 +310,7 @@ mod test {
#[test]
fn test_cannot_include_default_branch_rule() {
- let raw = arbitrary::gen::<RawDoc>(1);
+ let raw = arbitrary::r#gen::<RawDoc>(1);
let branch = git::fmt::Qualified::from(git::fmt::lit::refs_heads(
raw.project().unwrap().default_branch(),
));
@@ -343,7 +343,7 @@ mod test {
#[test]
fn test_default_branch_rule_exists_after_verification() {
- let raw = arbitrary::gen::<RawDoc>(1);
+ let raw = arbitrary::r#gen::<RawDoc>(1);
let branch = git::fmt::Qualified::from(git::fmt::lit::refs_heads(
raw.project().unwrap().default_branch(),
));
diff --git a/crates/radicle/src/node.rs b/crates/radicle/src/node.rs
index f885c0a81..d6619e5aa 100644
--- a/crates/radicle/src/node.rs
+++ b/crates/radicle/src/node.rs
@@ -488,7 +488,7 @@ impl Address {
self.0.port
}
- pub fn display_compact(&self) -> impl Display {
+ pub fn display_compact(&self) -> impl Display + use<> {
let host = match self.host() {
HostName::Ip(IpAddr::V4(ip)) => ip.to_string(),
HostName::Ip(IpAddr::V6(ip)) => format!("[{ip}]"),
@@ -1420,11 +1420,11 @@ pub(crate) mod properties {
impl AliasInput {
pub fn new() -> Self {
- let short = arbitrary::gen::<Alias>(0);
+ let short = arbitrary::r#gen::<Alias>(0);
let long = {
// Ensure we have a second, unique alias
let mut a = short.to_string();
- a.push_str(arbitrary::gen::<Alias>(1).as_str());
+ a.push_str(arbitrary::r#gen::<Alias>(1).as_str());
Alias::new(a)
};
Self {
diff --git a/crates/radicle/src/node/address/store.rs b/crates/radicle/src/node/address/store.rs
index 6f00f7380..55ffbf422 100644
--- a/crates/radicle/src/node/address/store.rs
+++ b/crates/radicle/src/node/address/store.rs
@@ -114,7 +114,7 @@ impl Store for Database {
)?;
stmt.bind((1, node))?;
- if let Some(Ok(row)) = stmt.into_iter().next() {
+ match stmt.into_iter().next() { Some(Ok(row)) => {
let version = row.try_read::<i64, _>("version")?.try_into()?;
let features = row.try_read::<node::Features, _>("features")?;
let alias = Alias::from_str(row.try_read::<&str, _>("alias")?)?;
@@ -137,9 +137,9 @@ impl Store for Database {
addrs,
banned,
}))
- } else {
+ } _ => {
Ok(None)
- }
+ }}
}
fn is_addr_banned(&self, addr: &Address) -> Result<bool, Error> {
@@ -152,15 +152,15 @@ impl Store for Database {
stmt.bind((1, addr))?;
stmt.bind((2, AddressType::from(addr)))?;
- if let Some(row) = stmt.into_iter().next() {
+ match stmt.into_iter().next() { Some(row) => {
let row = row?;
let addr_banned = row.try_read::<i64, _>(0)?.is_positive();
let node_banned = row.try_read::<i64, _>(1)?.is_positive();
Ok(node_banned || addr_banned)
- } else {
+ } _ => {
Ok(false)
- }
+ }}
}
fn is_ip_banned(&self, ip: IpAddr) -> Result<bool, Error> {
@@ -575,7 +575,7 @@ mod test {
#[test]
fn test_get_none() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let cache = Database::memory().unwrap();
let result = cache.get(&alice).unwrap();
@@ -584,7 +584,7 @@ mod test {
#[test]
fn test_remove_nothing() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let removed = cache.remove(&alice).unwrap();
@@ -593,7 +593,7 @@ mod test {
#[test]
fn test_alias() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let features = node::Features::SEED;
let timestamp = Timestamp::from(LocalTime::now());
@@ -632,7 +632,7 @@ mod test {
#[test]
fn test_insert_and_get() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let version = 2;
let features = node::Features::SEED;
@@ -672,7 +672,7 @@ mod test {
#[test]
fn test_insert_duplicate() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let features = node::Features::SEED;
let timestamp = LocalTime::now().into();
@@ -701,7 +701,7 @@ mod test {
#[test]
fn test_insert_and_update() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let timestamp = LocalTime::now().into();
let features = node::Features::SEED;
@@ -776,8 +776,8 @@ mod test {
#[test]
fn test_insert_and_remove() {
- let alice = arbitrary::gen::<NodeId>(1);
- let bob = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
+ let bob = arbitrary::r#gen::<NodeId>(1);
let mut cache = Database::memory().unwrap();
let timestamp = LocalTime::now().into();
let ua = UserAgent::default();
@@ -868,8 +868,8 @@ mod test {
#[test]
fn test_disconnected() {
- let alice = arbitrary::gen::<NodeId>(1);
- let addr = arbitrary::gen::<Address>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
+ let addr = arbitrary::r#gen::<Address>(1);
let mut cache = Database::memory().unwrap();
let features = node::Features::SEED;
let timestamp = Timestamp::from(LocalTime::now());
@@ -909,16 +909,16 @@ mod test {
#[test]
fn test_disconnected_ban() {
- let alice = arbitrary::gen::<NodeId>(1);
+ let alice = arbitrary::r#gen::<NodeId>(1);
let ua = UserAgent::default();
let ip1: net::Ipv4Addr = [8, 8, 8, 8].into();
let ip2: net::Ipv4Addr = [9, 9, 9, 9].into();
- let ka1 = arbitrary::gen::<KnownAddress>(1);
+ let ka1 = arbitrary::r#gen::<KnownAddress>(1);
let ka1 = KnownAddress {
addr: Address::from(NetAddr::new(ip1.into(), 8776)),
..ka1
};
- let ka2 = arbitrary::gen::<KnownAddress>(1);
+ let ka2 = arbitrary::r#gen::<KnownAddress>(1);
let ka2 = KnownAddress {
addr: Address::from(NetAddr::new(ip2.into(), 8776)),
..ka2
@@ -980,7 +980,7 @@ mod test {
let features = node::Features::SEED;
let agent = UserAgent::default();
let timestamp = Timestamp::from(LocalTime::now());
- let ka = arbitrary::gen::<KnownAddress>(1);
+ let ka = arbitrary::r#gen::<KnownAddress>(1);
for id in short_ids {
db.insert(id, 1, features, short, 16, &agent, timestamp, [ka.clone()])
diff --git a/crates/radicle/src/node/config.rs b/crates/radicle/src/node/config.rs
index 52561227c..9057db799 100644
--- a/crates/radicle/src/node/config.rs
+++ b/crates/radicle/src/node/config.rs
@@ -718,7 +718,7 @@ impl From<LimitGossipMaxAge> for LocalDuration {
/// - `Deserialize`
/// - `From<$name> for $type`, i.e. can convert back into the original type
macro_rules! wrapper {
- ($name:ident, $type:ty, $default:expr $(, $derive:ty)*) => {
+ ($name:ident, $type:ty, $default:expr_2021 $(, $derive:ty)*) => {
#[derive(Clone, Debug, Deserialize, Display, Serialize, From $(, $derive)*)]
#[display("{0}")]
#[serde(transparent)]
diff --git a/crates/radicle/src/node/notifications/store.rs b/crates/radicle/src/node/notifications/store.rs
index 4700e86e4..a2fe85cf1 100644
--- a/crates/radicle/src/node/notifications/store.rs
+++ b/crates/radicle/src/node/notifications/store.rs
@@ -294,7 +294,7 @@ impl<T> Store<T> {
&self,
repo: &RepoId,
order_by: &str,
- ) -> Result<impl Iterator<Item = Result<Notification, Error>> + '_, Error> {
+ ) -> Result<impl Iterator<Item = Result<Notification, Error>> + '_ + use<'_, T>, Error> {
let mut stmt = self.db.prepare(format!(
"SELECT rowid, repo, ref, old, new, status, timestamp
FROM `repository-notifications`
@@ -424,7 +424,7 @@ mod test {
#[test]
fn test_clear() {
let mut db = Store::open(":memory:").unwrap();
- let repo = arbitrary::gen::<RepoId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
let old = arbitrary::oid();
let time = LocalTime::from_millis(32188142);
let master = arbitrary::oid();
@@ -447,8 +447,8 @@ mod test {
#[test]
fn test_counts_by_repo() {
let mut db = Store::open(":memory:").unwrap();
- let repo1 = arbitrary::gen::<RepoId>(1);
- let repo2 = arbitrary::gen::<RepoId>(1);
+ let repo1 = arbitrary::r#gen::<RepoId>(1);
+ let repo2 = arbitrary::r#gen::<RepoId>(1);
let oid = arbitrary::oid();
let time = LocalTime::from_millis(32188142);
@@ -480,7 +480,7 @@ mod test {
#[test]
fn test_branch_notifications() {
- let repo = arbitrary::gen::<RepoId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
let old = arbitrary::oid();
let master = arbitrary::oid();
let other = arbitrary::oid();
@@ -558,7 +558,7 @@ mod test {
#[test]
fn test_notification_status() {
- let repo = arbitrary::gen::<RepoId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
let oid = arbitrary::oid();
let time = LocalTime::from_millis(32188142);
let mut db = Store::open(":memory:").unwrap();
@@ -600,7 +600,7 @@ mod test {
#[test]
fn test_duplicate_notifications() {
- let repo = arbitrary::gen::<RepoId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
let old = arbitrary::oid();
let master1 = arbitrary::oid();
let master2 = arbitrary::oid();
@@ -647,7 +647,7 @@ mod test {
#[test]
fn test_cob_notifications() {
- let repo = arbitrary::gen::<RepoId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
let old = arbitrary::oid();
let new = arbitrary::oid();
let timestamp = LocalTime::from_millis(32189874);
diff --git a/crates/radicle/src/node/policy/store.rs b/crates/radicle/src/node/policy/store.rs
index 237679855..9bd509728 100644
--- a/crates/radicle/src/node/policy/store.rs
+++ b/crates/radicle/src/node/policy/store.rs
@@ -467,7 +467,7 @@ mod test {
#[test]
fn test_follow_and_unfollow_node() {
- let id = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<NodeId>(1);
let mut db = Store::open(":memory:").unwrap();
let eve = Alias::new("eve");
@@ -480,7 +480,7 @@ mod test {
#[test]
fn test_seed_and_unseed_repo() {
- let id = arbitrary::gen::<RepoId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
let mut db = Store::open(":memory:").unwrap();
assert!(db.seed(&id, Scope::All).unwrap());
@@ -520,7 +520,7 @@ mod test {
#[test]
fn test_update_alias() {
- let id = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<NodeId>(1);
let mut db = Store::open(":memory:").unwrap();
assert!(db.follow(&id, Some(&Alias::new("eve"))).unwrap());
@@ -540,7 +540,7 @@ mod test {
#[test]
fn test_update_scope() {
- let id = arbitrary::gen::<RepoId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
let mut db = Store::open(":memory:").unwrap();
assert!(db.seed(&id, Scope::All).unwrap());
@@ -557,7 +557,7 @@ mod test {
#[test]
fn test_repo_policy() {
- let id = arbitrary::gen::<RepoId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
let mut db = Store::open(":memory:").unwrap();
assert!(db.seed(&id, Scope::All).unwrap());
@@ -569,7 +569,7 @@ mod test {
#[test]
fn test_node_policy() {
- let id = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<NodeId>(1);
let mut db = Store::open(":memory:").unwrap();
assert!(db.follow(&id, None).unwrap());
diff --git a/crates/radicle/src/node/refs/store.rs b/crates/radicle/src/node/refs/store.rs
index c9fe0402d..c1284b7e5 100644
--- a/crates/radicle/src/node/refs/store.rs
+++ b/crates/radicle/src/node/refs/store.rs
@@ -113,7 +113,7 @@ impl Store for Database {
stmt.bind((2, namespace))?;
stmt.bind((3, refname.to_string().as_str()))?;
- if let Some(Ok(row)) = stmt.into_iter().next() {
+ match stmt.into_iter().next() { Some(Ok(row)) => {
let oid = row.try_read::<&str, _>("oid")?;
let oid = Oid::from_str(oid).map_err(|e| {
Error::Internal(sql::Error {
@@ -125,9 +125,9 @@ impl Store for Database {
let timestamp = LocalTime::from_millis(timestamp as u128);
Ok(Some((oid, timestamp)))
- } else {
+ } _ => {
Ok(None)
- }
+ }}
}
fn delete(
@@ -186,8 +186,8 @@ mod test {
let mut db = Database::memory().unwrap();
let oid = arbitrary::oid();
- let repo = arbitrary::gen::<RepoId>(1);
- let namespace = arbitrary::gen::<NodeId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
+ let namespace = arbitrary::r#gen::<NodeId>(1);
let refname1 = qualified!("refs/heads/master");
let refname2 = qualified!("refs/heads/main");
let timestamp = LocalTime::now();
@@ -212,8 +212,8 @@ mod test {
let mut db = Database::memory().unwrap();
let oid = arbitrary::oid();
- let repo = arbitrary::gen::<RepoId>(1);
- let namespace = arbitrary::gen::<NodeId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
+ let namespace = arbitrary::r#gen::<NodeId>(1);
let refname = qualified!("refs/heads/master");
let timestamp = LocalTime::now();
@@ -232,8 +232,8 @@ mod test {
assert_ne!(oid1, oid2);
- let repo = arbitrary::gen::<RepoId>(1);
- let namespace = arbitrary::gen::<NodeId>(1);
+ let repo = arbitrary::r#gen::<RepoId>(1);
+ let namespace = arbitrary::r#gen::<NodeId>(1);
let refname = qualified!("refs/heads/master");
let mut timestamp = LocalTime::now();
diff --git a/crates/radicle/src/node/routing.rs b/crates/radicle/src/node/routing.rs
index 10c084d89..c812d563d 100644
--- a/crates/radicle/src/node/routing.rs
+++ b/crates/radicle/src/node/routing.rs
@@ -357,8 +357,8 @@ mod test {
#[test]
fn test_insert_duplicate() {
- let id = arbitrary::gen::<RepoId>(1);
- let node = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
+ let node = arbitrary::r#gen::<NodeId>(1);
let mut db = database(":memory:");
assert_eq!(
@@ -377,8 +377,8 @@ mod test {
#[test]
fn test_insert_existing_updated_time() {
- let id = arbitrary::gen::<RepoId>(1);
- let node = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
+ let node = arbitrary::r#gen::<NodeId>(1);
let mut db = database(":memory:");
assert_eq!(
@@ -398,9 +398,9 @@ mod test {
#[test]
fn test_update_existing_multi() {
- let id1 = arbitrary::gen::<RepoId>(1);
- let id2 = arbitrary::gen::<RepoId>(1);
- let node = arbitrary::gen::<NodeId>(1);
+ let id1 = arbitrary::r#gen::<RepoId>(1);
+ let id2 = arbitrary::r#gen::<RepoId>(1);
+ let node = arbitrary::r#gen::<NodeId>(1);
let mut db = database(":memory:");
assert_eq!(
@@ -427,8 +427,8 @@ mod test {
#[test]
fn test_remove_redundant() {
- let id = arbitrary::gen::<RepoId>(1);
- let node = arbitrary::gen::<NodeId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
+ let node = arbitrary::r#gen::<NodeId>(1);
let mut db = database(":memory:");
assert_eq!(
@@ -441,10 +441,10 @@ mod test {
#[test]
fn test_remove_many() {
- let id1 = arbitrary::gen::<RepoId>(1);
- let id2 = arbitrary::gen::<RepoId>(1);
- let id3 = arbitrary::gen::<RepoId>(1);
- let node = arbitrary::gen::<NodeId>(1);
+ let id1 = arbitrary::r#gen::<RepoId>(1);
+ let id2 = arbitrary::r#gen::<RepoId>(1);
+ let id3 = arbitrary::r#gen::<RepoId>(1);
+ let node = arbitrary::r#gen::<NodeId>(1);
let mut db = database(":memory:");
db.add_inventory([&id1, &id2, &id3], node, Timestamp::EPOCH)
@@ -459,7 +459,7 @@ mod test {
fn test_len() {
let mut db = database(":memory:");
let ids = arbitrary::vec::<RepoId>(10);
- let node = arbitrary::gen(1);
+ let node = arbitrary::r#gen(1);
db.add_inventory(&ids, node, LocalTime::now().into())
.unwrap();
@@ -490,7 +490,7 @@ mod test {
.unwrap();
}
- let pruned = db.prune(now.into(), None, &arbitrary::gen(1)).unwrap();
+ let pruned = db.prune(now.into(), None, &arbitrary::r#gen(1)).unwrap();
assert_eq!(pruned, ids.len() * nodes.len());
for id in &ids {
@@ -503,7 +503,7 @@ mod test {
#[test]
fn test_count() {
- let id = arbitrary::gen::<RepoId>(1);
+ let id = arbitrary::r#gen::<RepoId>(1);
let nodes = arbitrary::set::<NodeId>(5..10);
let mut db = database(":memory:");
diff --git a/crates/radicle/src/node/sync/announce.rs b/crates/radicle/src/node/sync/announce.rs
index 3f134f531..de85cdd08 100644
--- a/crates/radicle/src/node/sync/announce.rs
+++ b/crates/radicle/src/node/sync/announce.rs
@@ -586,7 +586,7 @@ mod test {
#[test]
fn all_synced_nodes_are_preferred_seeds() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(5..=5);
// All preferred seeds, no regular seeds in unsynced
@@ -642,7 +642,7 @@ mod test {
#[test]
fn preferred_seeds_already_synced() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(6..=6);
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -668,7 +668,7 @@ mod test {
#[test]
fn announcer_reached_min_replication_target() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let unsynced = seeds.iter().skip(3).copied().collect::<BTreeSet<_>>();
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -729,7 +729,7 @@ mod test {
#[test]
fn announcer_reached_max_replication_target() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let unsynced = seeds.iter().skip(3).copied().collect::<BTreeSet<_>>();
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -776,7 +776,7 @@ mod test {
#[test]
fn announcer_preferred_seeds_or_replica_factor() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let unsynced = seeds.iter().skip(2).copied().collect::<BTreeSet<_>>();
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -840,7 +840,7 @@ mod test {
#[test]
fn announcer_reached_preferred_seeds() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let unsynced = seeds.iter().skip(2).copied().collect::<BTreeSet<_>>();
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -887,7 +887,7 @@ mod test {
#[test]
fn announcer_timed_out() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let unsynced = seeds.iter().skip(2).copied().collect::<BTreeSet<_>>();
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -948,7 +948,7 @@ mod test {
#[test]
fn announcer_adapts_target_to_reach() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
// Only 3 nodes available
let unsynced = arbitrary::set::<NodeId>(3..=3)
.into_iter()
@@ -968,7 +968,7 @@ mod test {
#[test]
fn announcer_with_replication_factor_zero_and_preferred_seeds() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(5..=5);
let preferred_seeds = seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -1010,11 +1010,11 @@ mod test {
#[test]
fn announcer_synced_with_unknown_node() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(5..=5);
let unsynced = seeds.iter().take(3).copied().collect::<BTreeSet<_>>();
- let unknown_node = arbitrary::gen::<NodeId>(100); // Node not in any set
+ let unknown_node = arbitrary::r#gen::<NodeId>(100); // Node not in any set
let config = AnnouncerConfig::public(
local,
@@ -1054,7 +1054,7 @@ mod test {
#[test]
fn synced_with_same_node_multiple_times() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let unsynced = arbitrary::set::<NodeId>(3..=3)
.into_iter()
.collect::<BTreeSet<_>>();
@@ -1122,7 +1122,7 @@ mod test {
#[test]
fn timed_out_after_reaching_success() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let unsynced = arbitrary::set::<NodeId>(3..=3)
.into_iter()
.collect::<BTreeSet<_>>();
@@ -1170,7 +1170,7 @@ mod test {
fn construct_only_preferred_seeds_provided() {
// Test: preferred_seeds non-empty, synced and unsynced empty
// Expected: preferred seeds should be moved to to_sync, constructor succeeds
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let preferred_seeds = arbitrary::set::<NodeId>(2..=2)
.into_iter()
.collect::<BTreeSet<_>>();
@@ -1193,10 +1193,10 @@ mod test {
#[test]
fn construct_node_appears_in_multiple_input_sets() {
- let local = arbitrary::gen::<NodeId>(0);
- let alice = arbitrary::gen::<NodeId>(1);
- let bob = arbitrary::gen::<NodeId>(2);
- let eve = arbitrary::gen::<NodeId>(3);
+ let local = arbitrary::r#gen::<NodeId>(0);
+ let alice = arbitrary::r#gen::<NodeId>(1);
+ let bob = arbitrary::r#gen::<NodeId>(2);
+ let eve = arbitrary::r#gen::<NodeId>(3);
// alice will appear in synced and unsynced
let synced = [alice].iter().copied().collect::<BTreeSet<_>>();
@@ -1230,7 +1230,7 @@ mod test {
#[test]
fn cannot_construct_announcer() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(10..=10);
let synced = seeds.iter().take(3).copied().collect::<BTreeSet<_>>();
let unsynced = seeds.iter().skip(3).copied().collect::<BTreeSet<_>>();
@@ -1301,7 +1301,7 @@ mod test {
#[test]
fn invariant_progress_should_match_state() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let seeds = arbitrary::set::<NodeId>(6..=6);
// Set up: 2 already synced, 4 unsynced initially
@@ -1375,7 +1375,7 @@ mod test {
#[test]
fn local_node_in_preferred_seeds() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let other_seeds = arbitrary::set::<NodeId>(5..=5);
// Include local node in preferred seeds
@@ -1416,7 +1416,7 @@ mod test {
#[test]
fn local_node_in_synced_set() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let other_seeds = arbitrary::set::<NodeId>(5..=5);
// Include local node in synced set
@@ -1451,7 +1451,7 @@ mod test {
#[test]
fn local_node_in_unsynced_set() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let other_seeds = arbitrary::set::<NodeId>(5..=5);
let synced = other_seeds.iter().take(2).copied().collect::<BTreeSet<_>>();
@@ -1492,7 +1492,7 @@ mod test {
#[test]
fn local_node_in_multiple_sets() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let other_seeds = arbitrary::set::<NodeId>(5..=5);
// Include local node in ALL sets
@@ -1554,7 +1554,7 @@ mod test {
#[test]
fn synced_with_local_node_is_ignored() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let unsynced = arbitrary::set::<NodeId>(3..=3).into_iter().collect();
let config = AnnouncerConfig::public(
@@ -1596,7 +1596,7 @@ mod test {
#[test]
fn local_node_only_in_all_sets_results_in_no_seeds_error() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
// Create sets that contain ONLY the local node
let preferred_seeds = [local].iter().copied().collect::<BTreeSet<_>>();
diff --git a/crates/radicle/src/node/sync/fetch.rs b/crates/radicle/src/node/sync/fetch.rs
index ed8118fe2..b03353425 100644
--- a/crates/radicle/src/node/sync/fetch.rs
+++ b/crates/radicle/src/node/sync/fetch.rs
@@ -545,7 +545,7 @@ mod test {
#[test]
fn all_nodes_are_candidates() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::default();
let seeds = arbitrary::set::<NodeId>(3..=6)
.into_iter()
@@ -574,10 +574,10 @@ mod test {
#[test]
fn ignores_duplicates_and_local_node() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::default();
- let bob = arbitrary::gen::<NodeId>(1);
- let eve = arbitrary::gen::<NodeId>(2);
+ let bob = arbitrary::r#gen::<NodeId>(1);
+ let eve = arbitrary::r#gen::<NodeId>(2);
let seeds = [bob].into_iter().collect::<BTreeSet<_>>();
let extra_candidates = vec![bob, local, eve];
let config = FetcherConfig::public(seeds.clone(), replicas, local)
@@ -597,7 +597,7 @@ mod test {
#[test]
fn all_nodes_are_fetchable() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::default();
let seeds = arbitrary::set::<NodeId>(3..=6)
.into_iter()
@@ -614,7 +614,7 @@ mod test {
.collect::<Vec<_>>();
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
}
while let Some((node, _)) = fetcher.next_fetch() {
@@ -626,7 +626,7 @@ mod test {
#[test]
fn reaches_target_of_preferred_seeds() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::default();
let seeds = arbitrary::set::<NodeId>(3..=3)
.into_iter()
@@ -640,7 +640,7 @@ mod test {
let expected = seeds.into_iter().collect::<Vec<_>>();
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
if let Some((node, _)) = fetcher.next_fetch() {
match fetcher.fetch_complete(
@@ -668,7 +668,7 @@ mod test {
#[test]
fn reaches_target_of_replicas() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::must_reach(3);
let seeds = arbitrary::set::<NodeId>(3..=3)
.into_iter()
@@ -686,7 +686,7 @@ mod test {
.collect::<Vec<_>>();
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
if let Some((node, _)) = fetcher.next_fetch() {
if seeds.contains(&node) {
@@ -718,7 +718,7 @@ mod test {
#[test]
fn reaches_target_of_max_replicas() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::range(1, 3);
let candidates = arbitrary::set::<NodeId>(3..=3);
let seeds = candidates.iter().take(3).copied().collect::<BTreeSet<_>>();
@@ -735,7 +735,7 @@ mod test {
.collect::<Vec<_>>();
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
if let Some((node, _)) = fetcher.next_fetch() {
if seeds.contains(&node) {
@@ -777,7 +777,7 @@ mod test {
#[test]
fn preferred_seeds_target_returned_over_replicas() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::range(1, 3);
let candidates = arbitrary::set::<NodeId>(3..=3);
let seeds = candidates.into_iter().collect::<BTreeSet<_>>();
@@ -787,7 +787,7 @@ mod test {
let mut result = Vec::with_capacity(seeds.len());
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
if let Some((node, _)) = fetcher.next_fetch() {
match fetcher.fetch_complete(
@@ -815,7 +815,7 @@ mod test {
#[test]
fn could_not_reach_target() {
- let local = arbitrary::gen::<NodeId>(0);
+ let local = arbitrary::r#gen::<NodeId>(0);
let replicas = ReplicationFactor::must_reach(4);
let candidates = arbitrary::set::<NodeId>(3..=3);
let seeds = candidates.into_iter().collect::<BTreeSet<_>>();
@@ -824,7 +824,7 @@ mod test {
let mut fetcher = Fetcher::new(config).expect("fetcher should be constructed correctly");
while let Some(node) = fetcher.next_node() {
- fetcher.ready_to_fetch(node, arbitrary::gen::<Address>(0));
+ fetcher.ready_to_fetch(node, arbitrary::r#gen::<Address>(0));
if let Some((node, _)) = fetcher.next_fetch() {
fetcher.fetch_failed(node, "could not connect");
diff --git a/crates/radicle/src/profile.rs b/crates/radicle/src/profile.rs
index 417ede196..c7c53efe6 100644
--- a/crates/radicle/src/profile.rs
+++ b/crates/radicle/src/profile.rs
@@ -145,7 +145,7 @@ pub mod env {
};
crypto::Seed::new(seed)
} else {
- crypto::Seed::generate()
+ crypto::Seed::r#generate()
}
}
@@ -431,7 +431,7 @@ impl Profile {
/// Returns the routing store, with SQLite
/// configuration from [`Self::config`] applied.
- pub fn routing(&self) -> Result<impl node::routing::Store, node::db::Error> {
+ pub fn routing(&self) -> Result<impl node::routing::Store + use<>, node::db::Error> {
self.home.routing(self.config.node.database)
}
}
@@ -721,7 +721,7 @@ impl Home {
pub fn addresses(
&self,
config: node::db::config::Config,
- ) -> Result<impl node::address::Store, node::db::Error> {
+ ) -> Result<impl node::address::Store + use<>, node::db::Error> {
self.database_mut(config)
}
@@ -729,7 +729,7 @@ impl Home {
pub fn routing(
&self,
config: node::db::config::Config,
- ) -> Result<impl node::routing::Store, node::db::Error> {
+ ) -> Result<impl node::routing::Store + use<>, node::db::Error> {
self.database(config)
}
@@ -737,7 +737,7 @@ impl Home {
pub fn routing_mut(
&self,
config: node::db::config::Config,
- ) -> Result<impl node::routing::Store, node::db::Error> {
+ ) -> Result<impl node::routing::Store + use<>, node::db::Error> {
self.database_mut(config)
}
diff --git a/crates/radicle/src/profile/config.rs b/crates/radicle/src/profile/config.rs
index d0de6194f..2ca459737 100644
--- a/crates/radicle/src/profile/config.rs
+++ b/crates/radicle/src/profile/config.rs
@@ -380,7 +380,7 @@ impl RawConfig {
let mut current = &mut self.0;
for key in config_path.iter() {
current = match current {
- json::Value::Object(ref mut map) => {
+ json::Value::Object(map) => {
map.entry(key).or_insert_with(|| json::json!({}))
}
_ => {
diff --git a/crates/radicle/src/storage/git.rs b/crates/radicle/src/storage/git.rs
index dd5da4129..a35c2c50e 100644
--- a/crates/radicle/src/storage/git.rs
+++ b/crates/radicle/src/storage/git.rs
@@ -506,13 +506,13 @@ impl Repository {
}
};
for (refname, _) in refs {
- if let Ok(mut r) = self.backend.find_reference(refname.as_str()) {
+ match self.backend.find_reference(refname.as_str()) { Ok(mut r) => {
if let Err(e) = r.delete() {
log::error!(target: "storage", "Failed to clean up reference '{refname}': {e}");
}
- } else {
+ } _ => {
log::error!(target: "storage", "Failed to clean up reference '{refname}'");
- }
+ }}
}
deleted.push(id);
}
diff --git a/crates/radicle/src/test/arbitrary.rs b/crates/radicle/src/test/arbitrary.rs
index ac49b5364..a3a2a1098 100644
--- a/crates/radicle/src/test/arbitrary.rs
+++ b/crates/radicle/src/test/arbitrary.rs
@@ -23,7 +23,7 @@ use crate::test::storage::{MockRepository, MockStorage};
use crate::{cob, git};
pub fn oid() -> storage::Oid {
- let oid_bytes: [u8; 20] = gen(1);
+ let oid_bytes: [u8; 20] = r#gen(1);
storage::Oid::from_sha1(oid_bytes)
}
@@ -65,9 +65,9 @@ pub fn vec<T: Eq + Arbitrary>(size: usize) -> Vec<T> {
}
pub fn nonempty_storage(size: usize) -> MockStorage {
- let mut storage = gen::<MockStorage>(size);
+ let mut storage = r#gen::<MockStorage>(size);
for _ in 0..size {
- let doc = gen::<DocAt>(1);
+ let doc = r#gen::<DocAt>(1);
let id = RepoId::from(doc.blob);
storage.repos.insert(
id,
@@ -86,32 +86,32 @@ pub fn nonempty_storage(size: usize) -> MockStorage {
pub fn alphanumeric(size: usize) -> String {
let mut s = String::with_capacity(size);
for _ in 0..size {
- let choice = gen::<u8>(size).clamp(0, 3);
+ let choice = r#gen::<u8>(size).clamp(0, 3);
let c = match choice {
// Generate A-Z
- 0 => gen::<u8>(size).clamp(0x41, 0x5A),
+ 0 => r#gen::<u8>(size).clamp(0x41, 0x5A),
// Generate a-z
- 1 => gen::<u8>(size).clamp(0x61, 0x7A),
+ 1 => r#gen::<u8>(size).clamp(0x61, 0x7A),
// Generate 0-9
- _ => gen::<u8>(size).clamp(0x30, 0x39),
+ _ => r#gen::<u8>(size).clamp(0x30, 0x39),
};
s.push(char::from(c));
}
s
}
-pub fn gen<T: Arbitrary>(size: usize) -> T {
- let mut gen = qcheck::Gen::new(size);
+pub fn r#gen<T: Arbitrary>(size: usize) -> T {
+ let mut r#gen = qcheck::Gen::new(size);
- T::arbitrary(&mut gen)
+ T::arbitrary(&mut r#gen)
}
pub fn with_gen<T, F>(size: usize, f: F) -> T
where
F: FnOnce(&mut qcheck::Gen) -> T,
{
- let mut gen = qcheck::Gen::new(size);
- f(&mut gen)
+ let mut r#gen = qcheck::Gen::new(size);
+ f(&mut r#gen)
}
impl Arbitrary for Did {
diff --git a/crates/radicle/src/test/assert.rs b/crates/radicle/src/test/assert.rs
index 4f6ed872a..16b84cc3f 100644
--- a/crates/radicle/src/test/assert.rs
+++ b/crates/radicle/src/test/assert.rs
@@ -40,56 +40,56 @@
///
#[macro_export]
macro_rules! assert_matches {
- ( $e:expr , $($pat:pat_param)|+ ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ ) => {
match $e {
$($pat)|+ => (),
ref e => panic!("assertion failed: `{:?}` does not match `{}`",
e, stringify!($($pat)|+))
}
};
- ( $e:expr , $($pat:pat_param)|+ if $cond:expr ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ if $cond:expr_2021 ) => {
match $e {
$($pat)|+ if $cond => (),
ref e => panic!("assertion failed: `{:?}` does not match `{}`",
e, stringify!($($pat)|+ if $cond))
}
};
- ( $e:expr , $($pat:pat_param)|+ => $arm:expr ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ => $arm:expr_2021 ) => {
match $e {
$($pat)|+ => $arm,
ref e => panic!("assertion failed: `{:?}` does not match `{}`",
e, stringify!($($pat)|+))
}
};
- ( $e:expr , $($pat:pat_param)|+ if $cond:expr => $arm:expr ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ if $cond:expr_2021 => $arm:expr_2021 ) => {
match $e {
$($pat)|+ if $cond => $arm,
ref e => panic!("assertion failed: `{:?}` does not match `{}`",
e, stringify!($($pat)|+ if $cond))
}
};
- ( $e:expr , $($pat:pat_param)|+ , $($arg:tt)* ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ , $($arg:tt)* ) => {
match $e {
$($pat)|+ => (),
ref e => panic!("assertion failed: `{:?}` does not match `{}`: {}",
e, stringify!($($pat)|+), format_args!($($arg)*))
}
};
- ( $e:expr , $($pat:pat_param)|+ if $cond:expr , $($arg:tt)* ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ if $cond:expr_2021 , $($arg:tt)* ) => {
match $e {
$($pat)|+ if $cond => (),
ref e => panic!("assertion failed: `{:?}` does not match `{}`: {}",
e, stringify!($($pat)|+ if $cond), format_args!($($arg)*))
}
};
- ( $e:expr , $($pat:pat_param)|+ => $arm:expr , $($arg:tt)* ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ => $arm:expr_2021 , $($arg:tt)* ) => {
match $e {
$($pat)|+ => $arm,
ref e => panic!("assertion failed: `{:?}` does not match `{}`: {}",
e, stringify!($($pat)|+), format_args!($($arg)*))
}
};
- ( $e:expr , $($pat:pat_param)|+ if $cond:expr => $arm:expr , $($arg:tt)* ) => {
+ ( $e:expr_2021 , $($pat:pat_param)|+ if $cond:expr_2021 => $arm:expr_2021 , $($arg:tt)* ) => {
match $e {
$($pat)|+ if $cond => $arm,
ref e => panic!("assertion failed: `{:?}` does not match `{}`: {}",
diff --git a/crates/radicle/src/test/fixtures.rs b/crates/radicle/src/test/fixtures.rs
index bb80e6bc2..c7f274ba4 100644
--- a/crates/radicle/src/test/fixtures.rs
+++ b/crates/radicle/src/test/fixtures.rs
@@ -244,7 +244,7 @@ pub fn populate(repo: &git::raw::Repository, scale: usize) -> Vec<git::fmt::Qual
}
/// Generate random fixtures.
-pub mod gen {
+pub mod r#gen {
use super::*;
/// Generate a random string of the given length.
Exit code: 0
shell: 'export RUSTDOCFLAGS=''-D warnings'' cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps --all-features cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name 303cc417-da0f-4ca2-ab24-7d05c0431352 -v /opt/radcis/ci.rad.levitte.org/cci/state/303cc417-da0f-4ca2-ab24-7d05c0431352/s:/303cc417-da0f-4ca2-ab24-7d05c0431352/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/303cc417-da0f-4ca2-ab24-7d05c0431352/w:/303cc417-da0f-4ca2-ab24-7d05c0431352/w -w /303cc417-da0f-4ca2-ab24-7d05c0431352/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /303cc417-da0f-4ca2-ab24-7d05c0431352/s/script.sh
+ export 'RUSTDOCFLAGS=-D warnings'
+ RUSTDOCFLAGS='-D warnings'
+ cargo --version
info: syncing channel updates for '1.90-x86_64-unknown-linux-gnu'
info: latest update on 2025-09-18, rust version 1.90.0 (1159e78c4 2025-09-14)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-src'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
cargo 1.90.0 (840b83a10 2025-07-30)
+ rustc --version
rustc 1.90.0 (1159e78c4 2025-09-14)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
Updating crates.io index
Downloading crates ...
Downloaded addr2line v0.25.1
Downloaded gix-error v0.0.0
Downloaded getrandom v0.2.15
Downloaded gix-date v0.13.0
Downloaded getrandom v0.3.3
Downloaded clap_lex v0.7.5
Downloaded git2 v0.20.4
Downloaded gix-date v0.14.0
Downloaded gix-glob v0.24.0
Downloaded elliptic-curve v0.13.8
Downloaded lexopt v0.3.0
Downloaded gix-validate v0.11.0
Downloaded itertools v0.14.0
Downloaded lazy_static v1.5.0
Downloaded itoa v1.0.17
Downloaded icu_properties v1.5.1
Downloaded idna_adapter v1.2.0
Downloaded matchers v0.2.0
Downloaded data-encoding v2.5.0
Downloaded gix-refspec v0.37.0
Downloaded gix-trace v0.1.18
Downloaded heck v0.5.0
Downloaded inout v0.1.3
Downloaded gix-sec v0.13.1
Downloaded normalize-line-endings v0.3.0
Downloaded litrs v0.4.1
Downloaded icu_normalizer v1.5.0
Downloaded newline-converter v0.3.0
Downloaded nonempty v0.9.0
Downloaded opaque-debug v0.3.1
Downloaded bitflags v2.9.1
Downloaded phf_shared v0.11.3
Downloaded pbkdf2 v0.12.2
Downloaded quick-error v1.2.3
Downloaded radicle-git-ext v0.12.0
Downloaded radicle-std-ext v0.2.0
Downloaded gix-packetline v0.21.1
Downloaded ref-cast v1.0.24
Downloaded scopeguard v1.2.0
Downloaded rfc6979 v0.4.0
Downloaded sha1 v0.10.6
Downloaded salsa20 v0.10.2
Downloaded signature v1.6.4
Downloaded sec1 v0.7.3
Downloaded signature v2.2.0
Downloaded quote v1.0.41
Downloaded serde_derive_internals v0.29.1
Downloaded serde_spanned v1.0.4
Downloaded ssh-encoding v0.2.0
Downloaded signal-hook-mio v0.2.4
Downloaded sval_dynamic v2.14.1
Downloaded sval_json v2.14.1
Downloaded siphasher v0.3.11
Downloaded strsim v0.11.1
Downloaded serde-untagged v0.1.7
Downloaded sval_fmt v2.14.1
Downloaded memchr v2.7.2
Downloaded tinyvec_macros v0.1.1
Downloaded sval_nested v2.14.1
Downloaded synstructure v0.13.1
Downloaded thiserror v2.0.18
Downloaded tree-sitter-highlight v0.24.4
Downloaded unicode-display-width v0.3.0
Downloaded typeid v1.0.3
Downloaded thiserror v1.0.69
Downloaded tinystr v0.7.6
Downloaded uuid-simd v0.8.0
Downloaded utf16_iter v1.0.5
Downloaded universal-hash v0.5.1
Downloaded unit-prefix v0.5.1
Downloaded utf8parse v0.2.2
Downloaded toml_writer v1.0.6+spec-1.1.0
Downloaded version_check v0.9.4
Downloaded xattr v1.3.1
Downloaded write16 v1.0.0
Downloaded aho-corasick v1.1.3
Downloaded zerofrom-derive v0.1.6
Downloaded yoke-derive v0.7.5
Downloaded yansi v0.5.1
Downloaded heapless v0.8.0
Downloaded vsimd v0.8.0
Downloaded yoke v0.7.5
Downloaded zeroize v1.7.0
Downloaded unicode-ident v1.0.12
Downloaded radicle-surf v0.27.0
Downloaded zerovec-derive v0.10.3
Downloaded tracing-core v0.1.36
Downloaded url v2.5.4
Downloaded jsonschema v0.30.0
Downloaded schemars v1.0.4
Downloaded uuid v1.20.0
Downloaded ssh-key v0.6.6
Downloaded unicode-normalization v0.1.23
Downloaded p521 v0.13.3
Downloaded tree-sitter v0.24.4
Downloaded icu_properties_data v1.5.1
Downloaded sysinfo v0.37.2
Downloaded zlib-rs v0.6.0
Downloaded zerovec v0.10.4
Downloaded tree-sitter-c v0.23.2
Downloaded unicode-width v0.2.1
Downloaded syn v2.0.106
Downloaded vcpkg v0.2.15
Downloaded regex-syntax v0.8.5
Downloaded tree-sitter-rust v0.23.2
Downloaded tree-sitter-md v0.3.2
Downloaded rustix v0.38.34
Downloaded syn v1.0.109
Downloaded gimli v0.32.3
Downloaded rustix v1.1.3
Downloaded tree-sitter-bash v0.23.3
Downloaded object v0.37.3
Downloaded zerocopy v0.7.35
Downloaded tracing v0.1.44
Downloaded tree-sitter-ruby v0.23.1
Downloaded winnow v0.7.14
Downloaded tree-sitter-python v0.23.4
Downloaded regex-automata v0.4.9
Downloaded tracing-subscriber v0.3.22
Downloaded regex v1.11.1
Downloaded p384 v0.13.0
Downloaded idna v1.0.3
Downloaded serde_json v1.0.140
Downloaded proptest v1.9.0
Downloaded portable-atomic v1.11.0
Downloaded sha1-checked v0.10.0
Downloaded libc v0.2.182
Downloaded jiff v0.2.20
Downloaded hashbrown v0.16.1
Downloaded tree-sitter-typescript v0.23.2
Downloaded tokio v1.47.1
Downloaded unicode-segmentation v1.11.0
Downloaded tree-sitter-go v0.23.4
Downloaded gix-pack v0.65.0
Downloaded sha3 v0.10.8
Downloaded bstr v1.12.0
Downloaded mio v1.0.4
Downloaded chrono v0.4.38
Downloaded serde v1.0.228
Downloaded pretty_assertions v1.4.0
Downloaded zerofrom v0.1.6
Downloaded tar v0.4.40
Downloaded tree-sitter-css v0.23.1
Downloaded hashbrown v0.14.3
Downloaded value-bag v1.11.1
Downloaded socket2 v0.5.7
Downloaded similar v2.5.0
Downloaded sharded-slab v0.1.7
Downloaded rsa v0.9.6
Downloaded rand v0.8.5
Downloaded writeable v0.5.5
Downloaded walkdir v2.5.0
Downloaded toml v0.9.12+spec-1.1.0
Downloaded tempfile v3.25.0
Downloaded structured-logger v1.0.4
Downloaded serde_core v1.0.228
Downloaded serde_derive v1.0.228
Downloaded num-bigint-dig v0.8.4
Downloaded wait-timeout v0.2.1
Downloaded value-bag-serde1 v1.11.1
Downloaded unicode-width v0.1.11
Downloaded typenum v1.17.0
Downloaded value-bag-sval2 v1.11.1
Downloaded toml_datetime v0.7.5+spec-1.1.0
Downloaded libm v0.2.8
Downloaded utf8_iter v1.0.4
Downloaded linux-raw-sys v0.4.13
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded tree-sitter-html v0.23.2
Downloaded tracing-log v0.2.0
Downloaded tinyvec v1.6.0
Downloaded thread_local v1.1.9
Downloaded thiserror-impl v2.0.18
Downloaded systemd-journal-logger v2.2.2
Downloaded rand v0.9.2
Downloaded prodash v31.0.0
Downloaded proc-macro2 v1.0.101
Downloaded tree-sitter-language v0.1.2
Downloaded tree-sitter-json v0.24.8
Downloaded ryu v1.0.17
Downloaded unarray v0.1.4
Downloaded libgit2-sys v0.18.3+1.9.2
Downloaded streaming-iterator v0.1.9
Downloaded num-bigint v0.4.6
Downloaded indexmap v2.2.6
Downloaded gix-transport v0.54.0
Downloaded clap_builder v4.5.44
Downloaded aes-gcm v0.10.3
Downloaded timeago v0.4.2
Downloaded sqlite3-sys v0.18.0
Downloaded spin v0.9.8
Downloaded snapbox-macros v0.3.8
Downloaded smallvec v1.15.1
Downloaded jiff-static v0.2.20
Downloaded indicatif v0.18.0
Downloaded icu_locid v1.5.0
Downloaded spki v0.7.3
Downloaded sha2 v0.10.8
Downloaded snapbox v0.4.17
Downloaded signal-hook v0.3.18
Downloaded gix-ref v0.59.0
Downloaded gix-protocol v0.57.0
Downloaded sval v2.14.1
Downloaded signals_receipts v0.2.0
Downloaded ppv-lite86 v0.2.17
Downloaded thiserror-impl v1.0.69
Downloaded test-log-macros v0.2.19
Downloaded test-log v0.2.19
Downloaded sval_serde v2.14.1
Downloaded sval_ref v2.14.1
Downloaded sval_buffer v2.14.1
Downloaded num-traits v0.2.19
Downloaded stable_deref_trait v1.2.0
Downloaded sqlite v0.37.0
Downloaded schemars_derive v1.0.4
Downloaded rusty-fork v0.3.1
Downloaded rustc-demangle v0.1.26
Downloaded parking_lot v0.12.5
Downloaded gix-path v0.11.1
Downloaded crossterm v0.25.0
Downloaded ssh-cipher v0.2.0
Downloaded rustversion v1.0.20
Downloaded referencing v0.30.0
Downloaded gix-object v0.56.0
Downloaded gix-object v0.55.0
Downloaded rand_chacha v0.9.0
Downloaded parking_lot_core v0.9.12
Downloaded subtle v2.5.0
Downloaded siphasher v1.0.1
Downloaded signal-hook-registry v1.4.5
Downloaded emojis v0.6.4
Downloaded shell-words v1.1.0
Downloaded sqlite3-src v0.7.0
Downloaded linux-raw-sys v0.11.0
Downloaded socks5-client v0.4.1
Downloaded shlex v1.3.0
Downloaded sem_safe v0.2.0
Downloaded ref-cast-impl v1.0.24
Downloaded rand_core v0.6.4
Downloaded rand_core v0.9.3
Downloaded qcheck v1.0.0
Downloaded poly1305 v0.8.0
Downloaded p256 v0.13.2
Downloaded mio v0.8.11
Downloaded log v0.4.27
Downloaded backtrace v0.3.76
Downloaded proc-macro-error2 v2.0.1
Downloaded primeorder v0.13.6
Downloaded paste v1.0.15
Downloaded num-complex v0.4.6
Downloaded litemap v0.7.5
Downloaded icu_provider v1.5.0
Downloaded serde_fmt v1.0.3
Downloaded scrypt v0.11.0
Downloaded num-iter v0.1.45
Downloaded pkcs1 v0.7.5
Downloaded pin-project-lite v0.2.16
Downloaded miniz_oxide v0.8.8
Downloaded icu_collections v1.5.0
Downloaded gix-tempfile v21.0.1
Downloaded same-file v1.0.6
Downloaded fancy-regex v0.14.0
Downloaded rand_xorshift v0.4.0
Downloaded rand_chacha v0.3.1
Downloaded polyval v0.6.2
Downloaded num-rational v0.4.2
Downloaded num-integer v0.1.46
Downloaded icu_locid_transform_data v1.5.1
Downloaded pkg-config v0.3.30
Downloaded pkcs8 v0.10.2
Downloaded der v0.7.9
Downloaded crypto-bigint v0.5.5
Downloaded crossterm v0.29.0
Downloaded crossbeam-channel v0.5.15
Downloaded base64 v0.21.7
Downloaded percent-encoding v2.3.1
Downloaded noise-framework v0.4.0
Downloaded qcheck-macros v1.0.0
Downloaded proc-macro-error-attr2 v2.0.0
Downloaded pem-rfc7468 v0.7.0
Downloaded num-cmp v0.1.0
Downloaded nu-ansi-term v0.50.3
Downloaded aes v0.8.4
Downloaded phf v0.11.3
Downloaded outref v0.5.2
Downloaded once_cell v1.21.3
Downloaded num v0.4.3
Downloaded ahash v0.8.11
Downloaded humantime v2.3.0
Downloaded gix-odb v0.75.0
Downloaded maybe-async v0.2.10
Downloaded human-panic v2.0.6
Downloaded base64 v0.22.1
Downloaded crc32fast v1.5.0
Downloaded inquire v0.7.5
Downloaded gix-lock v21.0.1
Downloaded bcrypt-pbkdf v0.10.0
Downloaded anstyle-parse v0.2.3
Downloaded multibase v0.9.1
Downloaded memmap2 v0.9.8
Downloaded libz-sys v1.1.16
Downloaded lock_api v0.4.14
Downloaded group v0.13.0
Downloaded gix-url v0.35.1
Downloaded displaydoc v0.2.5
Downloaded const-oid v0.9.6
Downloaded gix-hash v0.22.1
Downloaded ghash v0.5.1
Downloaded derive_more-impl v2.0.1
Downloaded bitflags v1.3.2
Downloaded jobserver v0.1.31
Downloaded clap v4.5.44
Downloaded amplify_num v0.5.2
Downloaded gix-prompt v0.13.1
Downloaded hash32 v0.3.1
Downloaded git-ref-format-core v0.6.0
Downloaded env_logger v0.11.8
Downloaded fraction v0.15.3
Downloaded ec25519 v0.1.0
Downloaded console v0.16.0
Downloaded block-buffer v0.10.4
Downloaded bit-vec v0.8.0
Downloaded amplify_derive v4.0.0
Downloaded gix-revwalk v0.27.0
Downloaded data-encoding-macro-internal v0.1.12
Downloaded cyphergraphy v0.3.0
Downloaded cypheraddr v0.4.0
Downloaded gix-quote v0.6.2
Downloaded either v1.11.0
Downloaded anstream v0.6.21
Downloaded anstyle v1.0.13
Downloaded gix-traverse v0.52.0
Downloaded base16ct v0.2.0
Downloaded gix-negotiate v0.27.0
Downloaded gix-hashtable v0.12.0
Downloaded git-ref-format-macro v0.6.0
Downloaded errno v0.3.13
Downloaded equivalent v1.0.1
Downloaded ed25519 v1.5.3
Downloaded ecdsa v0.16.9
Downloaded diff v0.1.13
Downloaded icu_locid_transform v1.5.0
Downloaded gix-revwalk v0.26.0
Downloaded gix-commitgraph v0.32.0
Downloaded fast-glob v0.3.3
Downloaded crypto-common v0.1.6
Downloaded cbc v0.1.2
Downloaded base32 v0.4.0
Downloaded base-x v0.2.11
Downloaded keccak v0.1.6
Downloaded icu_provider_macros v1.5.0
Downloaded icu_normalizer_data v1.5.1
Downloaded iana-time-zone v0.1.60
Downloaded hmac v0.12.1
Downloaded gix-utils v0.3.1
Downloaded gix-shallow v0.8.1
Downloaded gix-commitgraph v0.33.0
Downloaded flate2 v1.1.1
Downloaded fastrand v2.3.0
Downloaded erased-serde v0.4.6
Downloaded env_filter v0.1.3
Downloaded dunce v1.0.5
Downloaded document-features v0.2.11
Downloaded cpufeatures v0.2.12
Downloaded convert_case v0.7.1
Downloaded cipher v0.4.4
Downloaded block-padding v0.3.3
Downloaded autocfg v1.2.0
Downloaded faster-hex v0.10.0
Downloaded escargot v0.5.10
Downloaded cyphernet v0.5.2
Downloaded ct-codecs v1.1.1
Downloaded colorchoice v1.0.0
Downloaded gix-revision v0.41.0
Downloaded gix-fs v0.19.1
Downloaded gix-features v0.46.1
Downloaded gix-actor v0.39.0
Downloaded anyhow v1.0.82
Downloaded aead v0.5.2
Downloaded is_terminal_polyfill v1.70.2
Downloaded gix-error v0.1.0
Downloaded gix-config-value v0.17.1
Downloaded git-ref-format v0.6.0
Downloaded fluent-uri v0.3.2
Downloaded dyn-clone v1.0.17
Downloaded digest v0.10.7
Downloaded derive_more v2.0.1
Downloaded chacha20poly1305 v0.10.1
Downloaded bytes v1.11.1
Downloaded ascii v1.1.0
Downloaded arc-swap v1.8.2
Downloaded data-encoding-macro v0.1.14
Downloaded clap_derive v4.5.41
Downloaded amplify v4.6.0
Downloaded gix-diff v0.58.0
Downloaded gix-command v0.7.1
Downloaded gix-actor v0.38.0
Downloaded form_urlencoded v1.2.1
Downloaded ff v0.13.0
Downloaded crossbeam-utils v0.8.19
Downloaded colored v2.1.0
Downloaded byteorder v1.5.0
Downloaded bit-set v0.8.0
Downloaded anstyle-query v1.0.2
Downloaded amplify_syn v2.0.1
Downloaded gix-credentials v0.36.0
Downloaded gix-chunk v0.6.0
Downloaded gix-chunk v0.5.0
Downloaded fnv v1.0.7
Downloaded email_address v0.2.9
Downloaded ctr v0.9.2
Downloaded cfg-if v1.0.0
Downloaded cc v1.2.2
Downloaded bytesize v2.0.1
Downloaded bloomy v1.2.0
Downloaded base64ct v1.6.0
Downloaded generic-array v0.14.7
Downloaded fxhash v0.2.1
Downloaded clap_complete v4.5.60
Downloaded adler2 v2.0.0
Downloaded chacha20 v0.9.1
Downloaded bytecount v0.6.8
Downloaded borrow-or-share v0.2.2
Downloaded blowfish v0.9.1
Downloaded filetime v0.2.23
Compiling libc v0.2.182
Compiling proc-macro2 v1.0.101
Compiling quote v1.0.41
Compiling unicode-ident v1.0.12
Checking cfg-if v1.0.0
Checking memchr v2.7.2
Compiling version_check v0.9.4
Compiling shlex v1.3.0
Checking regex-syntax v0.8.5
Compiling syn v2.0.106
Checking getrandom v0.2.15
Compiling jobserver v0.1.31
Compiling typenum v1.17.0
Compiling cc v1.2.2
Checking aho-corasick v1.1.3
Compiling generic-array v0.14.7
Checking regex-automata v0.4.9
Checking rand_core v0.6.4
Compiling serde_core v1.0.228
Checking crypto-common v0.1.6
Compiling serde v1.0.228
Checking smallvec v1.15.1
Compiling thiserror v2.0.18
Checking subtle v2.5.0
Checking stable_deref_trait v1.2.0
Checking cpufeatures v0.2.12
Checking fastrand v2.3.0
Compiling parking_lot_core v0.9.12
Checking bstr v1.12.0
Checking scopeguard v1.2.0
Checking lock_api v0.4.14
Checking block-buffer v0.10.4
Checking tinyvec_macros v0.1.1
Checking digest v0.10.7
Checking byteorder v1.5.0
Checking parking_lot v0.12.5
Checking tinyvec v1.6.0
Compiling crc32fast v1.5.0
Checking gix-trace v0.1.18
Checking bitflags v2.9.1
Checking gix-validate v0.11.0
Checking itoa v1.0.17
Compiling typeid v1.0.3
Checking same-file v1.0.6
Checking walkdir v2.5.0
Checking unicode-normalization v0.1.23
Checking prodash v31.0.0
Checking zlib-rs v0.6.0
Compiling serde_derive v1.0.228
Compiling thiserror-impl v2.0.18
Checking gix-utils v0.3.1
Compiling heapless v0.8.0
Checking hash32 v0.3.1
Compiling synstructure v0.13.1
Checking faster-hex v0.10.0
Compiling getrandom v0.3.3
Checking sha1 v0.10.6
Compiling zerofrom-derive v0.1.6
Checking zeroize v1.7.0
Checking gix-path v0.11.1
Checking sha1-checked v0.10.0
Checking gix-features v0.46.1
Compiling yoke-derive v0.7.5
Compiling rustix v1.1.3
Compiling pkg-config v0.3.30
Checking zerofrom v0.1.6
Checking gix-hash v0.22.1
Checking yoke v0.7.5
Compiling zerovec-derive v0.10.3
Checking linux-raw-sys v0.11.0
Compiling displaydoc v0.2.5
Checking erased-serde v0.4.6
Checking serde_fmt v1.0.3
Checking block-padding v0.3.3
Checking once_cell v1.21.3
Checking inout v0.1.3
Checking zerovec v0.10.4
Checking value-bag-serde1 v1.11.1
Compiling syn v1.0.109
Checking value-bag v1.11.1
Checking log v0.4.27
Checking cipher v0.4.4
Checking writeable v0.5.5
Compiling icu_locid_transform_data v1.5.1
Checking litemap v0.7.5
Checking tinystr v0.7.6
Compiling icu_provider_macros v1.5.0
Checking icu_locid v1.5.0
Compiling icu_properties_data v1.5.1
Checking percent-encoding v2.3.1
Checking icu_provider v1.5.0
Compiling thiserror v1.0.69
Compiling icu_normalizer_data v1.5.1
Checking icu_locid_transform v1.5.0
Checking icu_collections v1.5.0
Compiling thiserror-impl v1.0.69
Checking hashbrown v0.14.3
Compiling serde_json v1.0.140
Checking equivalent v1.0.1
Checking icu_properties v1.5.1
Checking indexmap v2.2.6
Checking sha2 v0.10.8
Checking write16 v1.0.0
Compiling ref-cast v1.0.24
Checking utf16_iter v1.0.5
Compiling vcpkg v0.2.15
Checking utf8_iter v1.0.4
Checking ryu v1.0.17
Checking icu_normalizer v1.5.0
Checking tempfile v3.25.0
Compiling libz-sys v1.1.16
Compiling ref-cast-impl v1.0.24
Checking universal-hash v0.5.1
Checking opaque-debug v0.3.1
Checking idna_adapter v1.2.0
Checking dyn-clone v1.0.17
Compiling autocfg v1.2.0
Checking idna v1.0.3
Compiling amplify_syn v2.0.1
Compiling libgit2-sys v0.18.3+1.9.2
Checking signature v1.6.4
Compiling num-traits v0.2.19
Checking ed25519 v1.5.3
Checking form_urlencoded v1.2.1
Compiling serde_derive_internals v0.29.1
Checking aead v0.5.2
Checking ascii v1.1.0
Compiling amplify_derive v4.0.0
Checking amplify_num v0.5.2
Checking ct-codecs v1.1.1
Checking ec25519 v0.1.0
Compiling schemars_derive v1.0.4
Checking url v2.5.4
Checking amplify v4.6.0
Checking git-ref-format-core v0.6.0
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Checking cyphergraphy v0.3.0
Checking polyval v0.6.2
Compiling sqlite3-src v0.7.0
Checking schemars v1.0.4
Checking hmac v0.12.1
Checking keccak v0.1.6
Checking base64ct v1.6.0
Checking sha3 v0.10.8
Checking pem-rfc7468 v0.7.0
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking aes v0.8.4
Checking ctr v0.9.2
Checking rand v0.8.5
Compiling data-encoding v2.5.0
Checking base32 v0.4.0
Checking cypheraddr v0.4.0
Compiling data-encoding-macro-internal v0.1.12
Checking qcheck v1.0.0
Checking aes-gcm v0.10.3
Checking ssh-encoding v0.2.0
Checking chacha20poly1305 v0.10.1
Checking blowfish v0.9.1
Checking cbc v0.1.2
Checking jiff v0.2.20
Checking data-encoding-macro v0.1.14
Checking ssh-cipher v0.2.0
Checking bcrypt-pbkdf v0.10.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Compiling crossbeam-utils v0.8.19
Checking base-x v0.2.11
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking multibase v0.9.1
Checking cyphernet v0.5.2
Checking radicle-ssh v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-ssh)
Checking winnow v0.7.14
Checking crossbeam-channel v0.5.15
Checking hashbrown v0.16.1
Checking lazy_static v1.5.0
Checking gix-hashtable v0.12.0
Checking nonempty v0.9.0
Checking anstyle-query v1.0.2
Checking siphasher v1.0.1
Checking radicle-git-metadata v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-metadata)
Checking gix-error v0.1.0
Checking radicle-dag v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-dag)
Checking memmap2 v0.9.8
Checking utf8parse v0.2.2
Checking anstyle-parse v0.2.3
Checking radicle-git-ref-format v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-ref-format)
Checking colorchoice v1.0.0
Checking is_terminal_polyfill v1.70.2
Checking iana-time-zone v0.1.60
Checking anstyle v1.0.13
Checking base64 v0.21.7
Checking anstream v0.6.21
Checking chrono v0.4.38
Checking colored v2.1.0
Checking radicle-localtime v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-localtime)
Checking serde-untagged v0.1.7
Checking bytesize v2.0.1
Checking gix-error v0.0.0
Checking fast-glob v0.3.3
Checking tree-sitter-language v0.1.2
Checking dunce v1.0.5
Checking gix-date v0.14.0
Checking gix-date v0.13.0
Checking gix-fs v0.19.1
Checking gix-actor v0.39.0
Checking gix-tempfile v21.0.1
Checking gix-object v0.56.0
Checking gix-actor v0.38.0
Checking gix-chunk v0.6.0
Checking mio v1.0.4
Checking gix-quote v0.6.2
Checking gix-commitgraph v0.33.0
Checking gix-object v0.55.0
Checking gix-chunk v0.5.0
Checking errno v0.3.13
Checking sem_safe v0.2.0
Checking shell-words v1.1.0
Checking either v1.11.0
Checking gix-command v0.7.1
Checking signals_receipts v0.2.0
Checking gix-commitgraph v0.32.0
Checking gix-revwalk v0.27.0
Compiling object v0.37.3
Compiling signal-hook v0.3.18
Compiling rustversion v1.0.20
Checking gix-revwalk v0.26.0
Checking gix-lock v21.0.1
Checking gix-url v0.35.1
Checking gix-config-value v0.17.1
Checking gix-sec v0.13.1
Checking signal-hook-registry v1.4.5
Checking adler2 v2.0.0
Checking gimli v0.32.3
Compiling rustix v0.38.34
Checking miniz_oxide v0.8.8
Checking gix-prompt v0.13.1
Checking gix-traverse v0.52.0
Checking addr2line v0.25.1
Checking gix-revision v0.41.0
Checking radicle-signals v0.11.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-signals)
Checking gix-diff v0.58.0
Checking mio v0.8.11
Checking gix-glob v0.24.0
Checking gix-packetline v0.21.1
Compiling tree-sitter v0.24.4
Compiling unicode-segmentation v1.11.0
Compiling linux-raw-sys v0.4.13
Compiling anyhow v1.0.82
Checking rustc-demangle v0.1.26
Checking backtrace v0.3.76
Compiling convert_case v0.7.1
Checking gix-transport v0.54.0
Checking gix-refspec v0.37.0
Checking signal-hook-mio v0.2.4
Checking gix-pack v0.65.0
Checking arc-swap v1.8.2
Checking gix-credentials v0.36.0
Checking gix-ref v0.59.0
Checking gix-shallow v0.8.1
Checking gix-negotiate v0.27.0
Compiling maybe-async v0.2.10
Checking regex v1.11.1
Compiling proc-macro-error-attr2 v2.0.0
Compiling portable-atomic v1.11.0
Checking gix-protocol v0.57.0
Compiling proc-macro-error2 v2.0.1
Checking gix-odb v0.75.0
Compiling xattr v1.3.1
Compiling derive_more-impl v2.0.1
Compiling filetime v0.2.23
Checking uuid v1.20.0
Checking bytes v1.11.1
Checking bitflags v1.3.2
Checking unicode-width v0.2.1
Compiling litrs v0.4.1
Checking console v0.16.0
Checking crossterm v0.25.0
Compiling document-features v0.2.11
Checking derive_more v2.0.1
Compiling tar v0.4.40
Compiling flate2 v1.1.1
Compiling git-ref-format-macro v0.6.0
Checking newline-converter v0.3.0
Checking snapbox-macros v0.3.8
Checking salsa20 v0.10.2
Checking fxhash v0.2.1
Checking clap_lex v0.7.5
Checking unicode-width v0.1.11
Checking similar v2.5.0
Checking siphasher v0.3.11
Checking strsim v0.11.1
Compiling heck v0.5.0
Checking normalize-line-endings v0.3.0
Checking streaming-iterator v0.1.9
Checking unit-prefix v0.5.1
Checking indicatif v0.18.0
Compiling clap_derive v4.5.41
Checking snapbox v0.4.17
Checking clap_builder v4.5.44
Checking bloomy v1.2.0
Checking inquire v0.7.5
Checking scrypt v0.11.0
Compiling radicle-surf v0.27.0
Checking git-ref-format v0.6.0
Checking crossterm v0.29.0
Checking unicode-display-width v0.3.0
Checking systemd-journal-logger v2.2.2
Checking serde_spanned v1.0.4
Checking toml_datetime v0.7.5+spec-1.1.0
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-c v0.23.2
Checking radicle-std-ext v0.2.0
Checking toml_writer v1.0.6+spec-1.1.0
Checking pin-project-lite v0.2.16
Checking toml v0.9.12+spec-1.1.0
Checking tokio v1.47.1
Checking sqlite3-sys v0.18.0
Checking sqlite v0.37.0
Checking radicle-crypto v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-crypto)
Checking clap v4.5.44
Checking sysinfo v0.37.2
Compiling radicle-cli v0.20.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli)
Checking diff v0.1.13
Compiling radicle-node v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-node)
Checking yansi v0.5.1
Checking pretty_assertions v1.4.0
Checking human-panic v2.0.6
Checking clap_complete v4.5.60
Checking structured-logger v1.0.4
Checking radicle-systemd v0.12.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-systemd)
Checking tree-sitter-highlight v0.24.4
Checking itertools v0.14.0
Checking num-integer v0.1.46
Compiling qcheck-macros v1.0.0
Checking socket2 v0.5.7
Checking lexopt v0.3.0
Checking humantime v2.3.0
Checking timeago v0.4.2
Compiling escargot v0.5.10
Checking bit-vec v0.8.0
Checking bit-set v0.8.0
Checking num-bigint v0.4.6
Checking rand_core v0.9.3
Compiling ahash v0.8.11
Checking num-iter v0.1.45
Checking num-complex v0.4.6
Checking env_filter v0.1.3
Checking zerocopy v0.7.35
Checking borrow-or-share v0.2.2
Checking fluent-uri v0.3.2
Checking num-rational v0.4.2
Checking env_logger v0.11.8
Checking num v0.4.3
Checking phf_shared v0.11.3
Compiling test-log-macros v0.2.19
Checking wait-timeout v0.2.1
Compiling radicle-remote-helper v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-remote-helper)
Checking fnv v1.0.7
Checking outref v0.5.2
Checking quick-error v1.2.3
Checking ppv-lite86 v0.2.17
Checking vsimd v0.8.0
Compiling paste v1.0.15
Checking rand_chacha v0.9.0
Checking uuid-simd v0.8.0
Checking rusty-fork v0.3.1
Checking test-log v0.2.19
Checking phf v0.11.3
Checking fraction v0.15.3
Checking referencing v0.30.0
Checking rand_xorshift v0.4.0
Checking rand v0.9.2
Checking fancy-regex v0.14.0
Checking email_address v0.2.9
Checking base64 v0.22.1
Checking bytecount v0.6.8
Checking unarray v0.1.4
Checking num-cmp v0.1.0
Checking proptest v1.9.0
Checking emojis v0.6.4
Checking jsonschema v0.30.0
Checking radicle-windows v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-windows)
Checking git2 v0.20.4
Checking radicle-oid v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-oid)
Checking radicle-git-ext v0.12.0
Checking radicle-term v0.17.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-term)
Checking radicle-core v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-core)
Checking radicle-cob v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cob)
Checking radicle v0.23.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle)
Checking radicle-fetch v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-fetch)
Checking radicle-cli-test v0.13.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli-test)
Checking radicle-schemars v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-schemars)
Checking radicle-protocol v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-protocol)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.37s
+ cargo build --all-targets --workspace
Compiling libc v0.2.182
Compiling cfg-if v1.0.0
Compiling memchr v2.7.2
Compiling shlex v1.3.0
Compiling regex-syntax v0.8.5
Compiling typenum v1.17.0
Compiling aho-corasick v1.1.3
Compiling generic-array v0.14.7
Compiling jobserver v0.1.31
Compiling cc v1.2.2
Compiling getrandom v0.2.15
Compiling rand_core v0.6.4
Compiling serde_core v1.0.228
Compiling regex-automata v0.4.9
Compiling crypto-common v0.1.6
Compiling smallvec v1.15.1
Compiling subtle v2.5.0
Compiling thiserror v2.0.18
Compiling stable_deref_trait v1.2.0
Compiling cpufeatures v0.2.12
Compiling fastrand v2.3.0
Compiling scopeguard v1.2.0
Compiling serde v1.0.228
Compiling lock_api v0.4.14
Compiling parking_lot_core v0.9.12
Compiling block-buffer v0.10.4
Compiling digest v0.10.7
Compiling parking_lot v0.12.5
Compiling bitflags v2.9.1
Compiling byteorder v1.5.0
Compiling tinyvec_macros v0.1.1
Compiling tinyvec v1.6.0
Compiling gix-trace v0.1.18
Compiling crc32fast v1.5.0
Compiling itoa v1.0.17
Compiling same-file v1.0.6
Compiling typeid v1.0.3
Compiling walkdir v2.5.0
Compiling prodash v31.0.0
Compiling zlib-rs v0.6.0
Compiling unicode-normalization v0.1.23
Compiling erased-serde v0.4.6
Compiling gix-utils v0.3.1
Compiling bstr v1.12.0
Compiling hash32 v0.3.1
Compiling serde_fmt v1.0.3
Compiling value-bag-serde1 v1.11.1
Compiling heapless v0.8.0
Compiling gix-validate v0.11.0
Compiling faster-hex v0.10.0
Compiling gix-path v0.11.1
Compiling value-bag v1.11.1
Compiling log v0.4.27
Compiling sha1 v0.10.6
Compiling zeroize v1.7.0
Compiling sha1-checked v0.10.0
Compiling zerofrom v0.1.6
Compiling getrandom v0.3.3
Compiling yoke v0.7.5
Compiling linux-raw-sys v0.11.0
Compiling zerovec v0.10.4
Compiling gix-features v0.46.1
Compiling gix-hash v0.22.1
Compiling block-padding v0.3.3
Compiling once_cell v1.21.3
Compiling inout v0.1.3
Compiling tinystr v0.7.6
Compiling cipher v0.4.4
Compiling rustix v1.1.3
Compiling writeable v0.5.5
Compiling litemap v0.7.5
Compiling percent-encoding v2.3.1
Compiling icu_locid v1.5.0
Compiling icu_locid_transform_data v1.5.1
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling hashbrown v0.14.3
Compiling icu_provider v1.5.0
Compiling equivalent v1.0.1
Compiling indexmap v2.2.6
Compiling icu_normalizer_data v1.5.1
Compiling icu_locid_transform v1.5.0
Compiling sha2 v0.10.8
Compiling write16 v1.0.0
Compiling utf16_iter v1.0.5
Compiling ryu v1.0.17
Compiling utf8_iter v1.0.4
Compiling serde_json v1.0.140
Compiling icu_properties v1.5.1
Compiling libz-sys v1.1.16
Compiling tempfile v3.25.0
Compiling thiserror v1.0.69
Compiling universal-hash v0.5.1
Compiling opaque-debug v0.3.1
Compiling ref-cast v1.0.24
Compiling dyn-clone v1.0.17
Compiling libgit2-sys v0.18.3+1.9.2
Compiling signature v1.6.4
Compiling ed25519 v1.5.3
Compiling form_urlencoded v1.2.1
Compiling aead v0.5.2
Compiling ct-codecs v1.1.1
Compiling icu_normalizer v1.5.0
Compiling ascii v1.1.0
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling amplify_num v0.5.2
Compiling url v2.5.4
Compiling ec25519 v0.1.0
Compiling num-traits v0.2.19
Compiling amplify v4.6.0
Compiling poly1305 v0.8.0
Compiling git-ref-format-core v0.6.0
Compiling chacha20 v0.9.1
Compiling cyphergraphy v0.3.0
Compiling schemars v1.0.4
Compiling polyval v0.6.2
Compiling sqlite3-src v0.7.0
Compiling hmac v0.12.1
Compiling base64ct v1.6.0
Compiling keccak v0.1.6
Compiling pem-rfc7468 v0.7.0
Compiling sha3 v0.10.8
Compiling pbkdf2 v0.12.2
Compiling ghash v0.5.1
Compiling aes v0.8.4
Compiling ctr v0.9.2
Compiling rand v0.8.5
Compiling base32 v0.4.0
Compiling cypheraddr v0.4.0
Compiling qcheck v1.0.0
Compiling aes-gcm v0.10.3
Compiling ssh-encoding v0.2.0
Compiling chacha20poly1305 v0.10.1
Compiling cbc v0.1.2
Compiling blowfish v0.9.1
Compiling jiff v0.2.20
Compiling data-encoding v2.5.0
Compiling data-encoding-macro v0.1.14
Compiling bcrypt-pbkdf v0.10.0
Compiling ssh-cipher v0.2.0
Compiling noise-framework v0.4.0
Compiling socks5-client v0.4.1
Compiling signature v2.2.0
Compiling base-x v0.2.11
Compiling multibase v0.9.1
Compiling ssh-key v0.6.6
Compiling cyphernet v0.5.2
Compiling radicle-ssh v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-ssh)
Compiling crossbeam-utils v0.8.19
Compiling winnow v0.7.14
Compiling crossbeam-channel v0.5.15
Compiling hashbrown v0.16.1
Compiling lazy_static v1.5.0
Compiling gix-hashtable v0.12.0
Compiling nonempty v0.9.0
Compiling anstyle-query v1.0.2
Compiling siphasher v1.0.1
Compiling gix-error v0.1.0
Compiling radicle-dag v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-dag)
Compiling radicle-git-metadata v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-metadata)
Compiling memmap2 v0.9.8
Compiling utf8parse v0.2.2
Compiling anstyle-parse v0.2.3
Compiling radicle-git-ref-format v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-ref-format)
Compiling is_terminal_polyfill v1.70.2
Compiling colorchoice v1.0.0
Compiling anstyle v1.0.13
Compiling iana-time-zone v0.1.60
Compiling base64 v0.21.7
Compiling chrono v0.4.38
Compiling anstream v0.6.21
Compiling colored v2.1.0
Compiling radicle-localtime v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-localtime)
Compiling gix-error v0.0.0
Compiling serde-untagged v0.1.7
Compiling bytesize v2.0.1
Compiling dunce v1.0.5
Compiling tree-sitter-language v0.1.2
Compiling fast-glob v0.3.3
Compiling gix-date v0.14.0
Compiling adler2 v2.0.0
Compiling gix-date v0.13.0
Compiling gix-actor v0.39.0
Compiling gix-fs v0.19.1
Compiling gix-object v0.56.0
Compiling gix-tempfile v21.0.1
Compiling gix-actor v0.38.0
Compiling gix-chunk v0.6.0
Compiling mio v1.0.4
Compiling gix-quote v0.6.2
Compiling gix-commitgraph v0.33.0
Compiling gix-object v0.55.0
Compiling gix-chunk v0.5.0
Compiling sem_safe v0.2.0
Compiling errno v0.3.13
Compiling unicode-segmentation v1.11.0
Compiling either v1.11.0
Compiling shell-words v1.1.0
Compiling gix-command v0.7.1
Compiling signals_receipts v0.2.0
Compiling gix-commitgraph v0.32.0
Compiling gix-revwalk v0.27.0
Compiling gix-revwalk v0.26.0
Compiling gix-lock v21.0.1
Compiling gix-url v0.35.1
Compiling gix-config-value v0.17.1
Compiling gix-sec v0.13.1
Compiling signal-hook-registry v1.4.5
Compiling gimli v0.32.3
Compiling signal-hook v0.3.18
Compiling gix-prompt v0.13.1
Compiling gix-traverse v0.52.0
Compiling gix-revision v0.41.0
Compiling object v0.37.3
Compiling addr2line v0.25.1
Compiling radicle-signals v0.11.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-signals)
Compiling gix-diff v0.58.0
Compiling miniz_oxide v0.8.8
Compiling gix-glob v0.24.0
Compiling mio v0.8.11
Compiling gix-packetline v0.21.1
Compiling tree-sitter v0.24.4
Compiling rustc-demangle v0.1.26
Compiling backtrace v0.3.76
Compiling rustix v0.38.34
Compiling gix-transport v0.54.0
Compiling signal-hook-mio v0.2.4
Compiling gix-refspec v0.37.0
Compiling gix-pack v0.65.0
Compiling arc-swap v1.8.2
Compiling gix-credentials v0.36.0
Compiling gix-shallow v0.8.1
Compiling gix-ref v0.59.0
Compiling sqlite3-sys v0.18.0
Compiling sqlite v0.37.0
Compiling radicle-crypto v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-crypto)
Compiling gix-negotiate v0.27.0
Compiling convert_case v0.7.1
Compiling regex v1.11.1
Compiling gix-protocol v0.57.0
Compiling derive_more-impl v2.0.1
Compiling gix-odb v0.75.0
Compiling xattr v1.3.1
Compiling uuid v1.20.0
Compiling filetime v0.2.23
Compiling bitflags v1.3.2
Compiling unicode-width v0.2.1
Compiling bytes v1.11.1
Compiling console v0.16.0
Compiling crossterm v0.25.0
Compiling tar v0.4.40
Compiling git-ref-format-macro v0.6.0
Compiling flate2 v1.1.1
Compiling derive_more v2.0.1
Compiling anyhow v1.0.82
Compiling portable-atomic v1.11.0
Compiling newline-converter v0.3.0
Compiling snapbox-macros v0.3.8
Compiling salsa20 v0.10.2
Compiling fxhash v0.2.1
Compiling unicode-width v0.1.11
Compiling similar v2.5.0
Compiling clap_lex v0.7.5
Compiling siphasher v0.3.11
Compiling unit-prefix v0.5.1
Compiling normalize-line-endings v0.3.0
Compiling strsim v0.11.1
Compiling streaming-iterator v0.1.9
Compiling snapbox v0.4.17
Compiling clap_builder v4.5.44
Compiling indicatif v0.18.0
Compiling bloomy v1.2.0
Compiling inquire v0.7.5
Compiling radicle-surf v0.27.0
Compiling scrypt v0.11.0
Compiling crossterm v0.29.0
Compiling git-ref-format v0.6.0
Compiling unicode-display-width v0.3.0
Compiling systemd-journal-logger v2.2.2
Compiling toml_datetime v0.7.5+spec-1.1.0
Compiling serde_spanned v1.0.4
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-typescript v0.23.2
Compiling pin-project-lite v0.2.16
Compiling radicle-std-ext v0.2.0
Compiling toml_writer v1.0.6+spec-1.1.0
Compiling toml v0.9.12+spec-1.1.0
Compiling tokio v1.47.1
Compiling clap v4.5.44
Compiling sysinfo v0.37.2
Compiling radicle-node v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-node)
Compiling yansi v0.5.1
Compiling radicle-cli v0.20.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli)
Compiling diff v0.1.13
Compiling pretty_assertions v1.4.0
Compiling human-panic v2.0.6
Compiling clap_complete v4.5.60
Compiling structured-logger v1.0.4
Compiling radicle-systemd v0.12.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-systemd)
Compiling tree-sitter-highlight v0.24.4
Compiling itertools v0.14.0
Compiling num-integer v0.1.46
Compiling socket2 v0.5.7
Compiling lexopt v0.3.0
Compiling timeago v0.4.2
Compiling humantime v2.3.0
Compiling bit-vec v0.8.0
Compiling escargot v0.5.10
Compiling bit-set v0.8.0
Compiling num-bigint v0.4.6
Compiling rand_core v0.9.3
Compiling num-iter v0.1.45
Compiling num-complex v0.4.6
Compiling env_filter v0.1.3
Compiling borrow-or-share v0.2.2
Compiling zerocopy v0.7.35
Compiling num-rational v0.4.2
Compiling ahash v0.8.11
Compiling fluent-uri v0.3.2
Compiling num v0.4.3
Compiling env_logger v0.11.8
Compiling phf_shared v0.11.3
Compiling wait-timeout v0.2.1
Compiling radicle-remote-helper v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-remote-helper)
Compiling ppv-lite86 v0.2.17
Compiling vsimd v0.8.0
Compiling fnv v1.0.7
Compiling outref v0.5.2
Compiling quick-error v1.2.3
Compiling rand_chacha v0.9.0
Compiling rusty-fork v0.3.1
Compiling uuid-simd v0.8.0
Compiling test-log v0.2.19
Compiling phf v0.11.3
Compiling referencing v0.30.0
Compiling fraction v0.15.3
Compiling rand v0.9.2
Compiling rand_xorshift v0.4.0
Compiling fancy-regex v0.14.0
Compiling email_address v0.2.9
Compiling bytecount v0.6.8
Compiling base64 v0.22.1
Compiling git2 v0.20.4
Compiling num-cmp v0.1.0
Compiling unarray v0.1.4
Compiling proptest v1.9.0
Compiling jsonschema v0.30.0
Compiling emojis v0.6.4
Compiling radicle-oid v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-oid)
Compiling radicle-core v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-core)
Compiling radicle-cob v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cob)
Compiling radicle-git-ext v0.12.0
Compiling radicle-term v0.17.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-term)
Compiling radicle v0.23.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle)
Compiling radicle-windows v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-windows)
Compiling radicle-fetch v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-fetch)
Compiling radicle-protocol v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-protocol)
Compiling radicle-cli-test v0.13.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.70s
+ cargo doc --workspace --no-deps --all-features
Checking regex-automata v0.4.9
Compiling syn v1.0.109
Checking idna v1.0.3
Compiling num-traits v0.2.19
Checking radicle-ssh v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-ssh)
Checking url v2.5.4
Checking git2 v0.20.4
Checking proptest v1.9.0
Checking bstr v1.12.0
Compiling amplify_syn v2.0.1
Checking gix-validate v0.11.0
Checking gix-path v0.11.1
Checking git-ref-format-core v0.6.0
Checking gix-features v0.46.1
Compiling amplify_derive v4.0.0
Compiling data-encoding-macro-internal v0.1.12
Checking radicle-git-ref-format v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-ref-format)
Checking gix-hash v0.22.1
Checking gix-error v0.1.0
Checking gix-error v0.0.0
Checking gix-hashtable v0.12.0
Checking data-encoding-macro v0.1.14
Checking radicle-oid v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-oid)
Checking multibase v0.9.1
Checking radicle-dag v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-dag)
Checking radicle-git-metadata v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-metadata)
Checking gix-date v0.14.0
Checking chrono v0.4.38
Checking radicle-localtime v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-localtime)
Checking gix-actor v0.39.0
Checking gix-date v0.13.0
Checking gix-fs v0.19.1
Checking gix-actor v0.38.0
Checking gix-tempfile v21.0.1
Checking gix-object v0.56.0
Checking gix-chunk v0.6.0
Checking gix-quote v0.6.2
Checking gix-commitgraph v0.33.0
Checking gix-object v0.55.0
Checking gix-chunk v0.5.0
Checking amplify v4.6.0
Checking gix-command v0.7.1
Checking gix-commitgraph v0.32.0
Checking cyphergraphy v0.3.0
Checking gix-revwalk v0.27.0
Checking gix-lock v21.0.1
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking gix-url v0.35.1
Checking gix-revwalk v0.26.0
Checking gix-config-value v0.17.1
Checking gix-diff v0.58.0
Checking socks5-client v0.4.1
Checking gix-traverse v0.52.0
Checking cyphernet v0.5.2
Checking gix-revision v0.41.0
Checking gix-prompt v0.13.1
Checking radicle-crypto v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-crypto)
Checking radicle-signals v0.11.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-signals)
Checking gix-glob v0.24.0
Checking gix-packetline v0.21.1
Checking regex v1.11.1
Checking radicle-core v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-core)
Checking radicle-cob v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cob)
Checking gix-refspec v0.37.0
Checking tree-sitter v0.24.4
Checking gix-transport v0.54.0
Checking gix-pack v0.65.0
Checking git-ref-format v0.6.0
Checking gix-credentials v0.36.0
Checking gix-negotiate v0.27.0
Checking radicle v0.23.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle)
Checking gix-shallow v0.8.1
Checking gix-ref v0.59.0
Checking radicle-git-ext v0.12.0
Checking uuid v1.20.0
Compiling radicle-cli v0.20.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli)
Checking human-panic v2.0.6
Checking gix-odb v0.75.0
Checking radicle-surf v0.27.0
Checking gix-protocol v0.57.0
Checking tree-sitter-toml-ng v0.6.0
Checking radicle-term v0.17.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-term)
Checking tree-sitter-highlight v0.24.4
Checking radicle-systemd v0.12.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-systemd)
Documenting radicle-systemd v0.12.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-systemd)
Documenting radicle-term v0.17.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-term)
Documenting radicle v0.23.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle)
Documenting radicle-core v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-core)
Documenting radicle-cob v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cob)
Documenting radicle-crypto v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-crypto)
Documenting radicle-signals v0.11.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-signals)
Documenting radicle-oid v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-oid)
Documenting radicle-git-ref-format v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-ref-format)
Documenting radicle-localtime v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-localtime)
Documenting radicle-ssh v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-dag)
Documenting radicle-git-metadata v0.2.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-git-metadata)
Documenting radicle-windows v0.1.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-windows)
Checking radicle-fetch v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-fetch)
Documenting radicle-cli v0.20.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli)
Documenting radicle-fetch v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-fetch)
Checking radicle-protocol v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-protocol)
Documenting radicle-protocol v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-protocol)
Documenting radicle-node v0.19.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-node)
Documenting radicle-schemars v0.7.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-schemars)
Documenting radicle-cli-test v0.13.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-cli-test)
Documenting radicle-remote-helper v0.16.0 (/303cc417-da0f-4ca2-ab24-7d05c0431352/w/crates/radicle-remote-helper)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.59s
Generated /303cc417-da0f-4ca2-ab24-7d05c0431352/w/target/doc/radicle/index.html and 21 other files
+ cargo test --workspace --no-fail-fast
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
Running unittests src/lib.rs (target/debug/deps/radicle-f34e05c9727b7204)
running 321 tests
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::common::test::test_color ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_emojis ... ok
test cob::common::test::test_title ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::patch::actions::test::test_review_edit ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_react ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_null_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_with_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_without_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_v2 ... ok
test cob::patch::encoding::review::test::test_review_summary ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_review_duplicate ... ok
test cob::patch::test::test_patch_review_edit ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::stream::tests::test_all_from ... ok
test cob::stream::tests::test_all_until ... ok
test cob::stream::tests::test_all_from_until ... ok
test cob::patch::test::test_patch_update ... ok
test cob::stream::tests::test_regression_from_until ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::stream::tests::test_from_until ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_redact_comment ... ok
test git::canonical::quorum::test::merge_base_commutative ... ok
test git::canonical::quorum::test::test_merge_bases ... ok
test cob::thread::tests::test_timeline ... ok
test git::canonical::rules::tests::test_deserialization ... ok
test git::canonical::rules::tests::test_deserialize_extensions ... ok
test git::canonical::rules::tests::test_order ... ok
test git::canonical::rules::tests::test_roundtrip ... ok
test git::canonical::rules::tests::test_canonical ... ok
test git::canonical::rules::tests::test_rule_validate_success ... ok
test git::canonical::rules::tests::test_special_branches ... ok
test git::canonical::tests::test_commit_quorum_fork_of_a_fork ... ok
test git::canonical::tests::test_commit_quorum_forked_merge_commits ... ok
test git::canonical::tests::test_commit_quorum_groups ... ok
test git::canonical::tests::test_commit_quorum_linear ... ok
test git::canonical::tests::test_commit_quorum_merges ... ok
test git::canonical::tests::test_commit_quorum_single ... ok
test git::canonical::tests::test_commit_quorum_three_way_fork ... ok
test git::canonical::tests::test_commit_quorum_two_way_fork ... ok
test git::canonical::tests::test_quorum_different_types ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test git::canonical::tests::test_tag_quorum ... ok
test git::test::test_version_from_str ... ok
test git::test::test_version_ord ... ok
test identity::did::test::test_did_encode_decode ... ok
test identity::did::test::test_did_vectors ... ok
test git::canonical::tests::test_quorum_properties ... ok
test identity::doc::test::test_canonical_doc ... ok
test identity::doc::test::test_canonical_example ... ok
test identity::doc::test::test_duplicate_dids ... ok
test identity::doc::test::test_future_version_error ... ok
test identity::doc::test::test_is_valid_version ... ok
test cob::thread::tests::prop_ordering ... ok
test identity::doc::test::test_not_found ... ok
test identity::doc::test::test_parse_version ... ok
test identity::doc::test::test_visibility_json ... ok
test identity::doc::update::test::test_can_update_crefs ... ok
test identity::doc::update::test::test_cannot_include_default_branch_rule ... ok
test identity::doc::update::test::test_default_branch_rule_exists_after_verification ... ok
test identity::project::test::test_project_name ... ok
test node::address::store::test::test_alias ... ok
test node::address::store::test::test_disconnected ... ok
test node::address::store::test::test_disconnected_ban ... ok
test node::address::store::test::test_empty ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_get_none ... ok
test node::address::store::test::test_insert_and_get ... ok
test node::address::store::test::test_insert_and_remove ... ok
test node::address::store::test::test_insert_and_update ... ok
test node::address::store::test::test_insert_duplicate ... ok
test node::address::store::test::test_node_aliases ... ok
test node::address::store::test::test_remove_nothing ... ok
test node::command::test::command_result ... ok
test node::config::test::deserialize_migrating_scope ... ok
test node::config::test::fetch_level_min ... ok
test node::config::test::partial ... ok
test node::config::test::regression_ipv6_address_brackets ... ok
test node::config::test::regression_ipv6_address_no_brackets ... ok
test node::config::test::serialize_migrating_scope ... ok
test node::db::config::test::database_config_valid_combinations ... ok
test node::db::config::test::invalid ... ok
test node::db::test::migration_8::all_ipv6_formatted_dns_addresses_are_retyped ... ok
test node::db::test::migration_8::dns_address_starting_with_bracket_but_missing_closing_bracket_colon_is_unaffected ... ok
test node::db::test::migration_8::dns_address_with_bracket_not_at_start_is_unaffected ... ok
test node::db::test::migration_8::ipv4_address_is_unaffected ... ok
test node::db::test::migration_8::ipv6_formatted_dns_address_is_deleted_when_correct_ipv6_row_already_exists ... ok
test node::db::test::migration_8::ipv6_formatted_dns_address_is_retyped_to_ipv6 ... ok
test node::db::test::migration_8::migration_applies_to_all_nodes ... ok
test node::db::test::migration_8::plain_dns_hostname_without_brackets_is_unaffected ... ok
test node::db::test::migration_8::retype_preserves_address_metadata ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_notification_status ... ok
test node::policy::store::test::test_follow_and_unfollow_node ... ok
test node::policy::store::test::test_node_aliases ... ok
test identity::doc::test::test_max_delegates ... ok
test node::policy::store::test::test_node_policies ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_node_policy ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_update_scope ... ok
test node::policy::store::test::test_update_alias ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_entries ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_and_remove ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_remove_many ... ok
test node::routing::test::test_remove_redundant ... ok
test node::routing::test::test_update_existing_multi ... ok
test node::sync::announce::test::all_synced_nodes_are_preferred_seeds ... ok
test node::sync::announce::test::announcer_adapts_target_to_reach ... ok
test node::routing::test::test_prune ... ok
test node::sync::announce::test::announcer_preferred_seeds_or_replica_factor ... ok
test node::sync::announce::test::announcer_reached_max_replication_target ... ok
test node::sync::announce::test::announcer_reached_min_replication_target ... ok
test node::sync::announce::test::announcer_reached_preferred_seeds ... ok
test node::sync::announce::test::announcer_synced_with_unknown_node ... ok
test node::sync::announce::test::announcer_timed_out ... ok
test node::sync::announce::test::announcer_with_replication_factor_zero_and_preferred_seeds ... ok
test node::sync::announce::test::construct_node_appears_in_multiple_input_sets ... ok
test node::sync::announce::test::construct_only_preferred_seeds_provided ... ok
test node::sync::announce::test::cannot_construct_announcer ... ok
test node::sync::announce::test::invariant_progress_should_match_state ... ok
test node::sync::announce::test::local_node_in_multiple_sets ... ok
test node::sync::announce::test::local_node_in_preferred_seeds ... ok
test node::sync::announce::test::local_node_in_synced_set ... ok
test node::sync::announce::test::local_node_in_unsynced_set ... ok
test node::sync::announce::test::local_node_only_in_all_sets_results_in_no_seeds_error ... ok
test node::sync::announce::test::synced_with_local_node_is_ignored ... ok
test node::sync::announce::test::preferred_seeds_already_synced ... ok
test node::sync::announce::test::synced_with_same_node_multiple_times ... ok
test node::sync::announce::test::timed_out_after_reaching_success ... ok
test node::sync::fetch::test::all_nodes_are_candidates ... ok
test node::sync::fetch::test::all_nodes_are_fetchable ... ok
test node::sync::fetch::test::could_not_reach_target ... ok
test node::sync::fetch::test::ignores_duplicates_and_local_node ... ok
test node::sync::fetch::test::preferred_seeds_target_returned_over_replicas ... ok
test node::sync::fetch::test::reaches_target_of_max_replicas ... ok
test node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok
test node::sync::fetch::test::reaches_target_of_replicas ... ok
test node::sync::test::ensure_replicas_construction ... ok
test node::sync::test::replicas_constrain_to ... ok
test node::test::test_address ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_init ... ok
test profile::config::test::schema ... ok
test storage::git::tests::test_references_of ... ok
test storage::git::transport::local::url::test::test_url_parse ... ok
test storage::git::transport::local::url::test::test_url_to_string ... ok
test storage::git::transport::remote::url::test::test_url_parse ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test storage::git::tests::test_sign_refs ... ok
test storage::refs::sigrefs::read::test::commit_reader::identity_root_error ... ok
test storage::refs::sigrefs::read::test::commit_reader::missing_commit ... ok
test storage::refs::sigrefs::read::test::commit_reader::read_ok ... ok
test storage::refs::sigrefs::read::test::commit_reader::too_many_parents ... ok
test storage::refs::sigrefs::read::test::commit_reader::tree_error ... ok
test storage::refs::sigrefs::read::test::identity_root_reader::doc_blob_error ... ok
test storage::refs::sigrefs::read::test::identity_root_reader::missing_identity ... ok
test storage::refs::sigrefs::read::test::identity_root_reader::read_ok_none ... ok
test storage::refs::sigrefs::read::test::identity_root_reader::read_ok_some ... ok
test storage::refs::sigrefs::read::test::resolve_tip::find_reference_error ... ok
test storage::refs::sigrefs::read::test::resolve_tip::missing_sigrefs ... ok
test storage::refs::sigrefs::read::test::resolve_tip::resolve_tip_ok ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::detect_parent::root_without_parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::detect_parent::root_without_root ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::restore ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::root ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::root_with_parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::head_commit_error ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::head_verify_mismatched_identity_error ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::head_verify_signature_error ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::invalid_parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_no_parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_parent ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_root ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::replay::alternating ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::replay::chain ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::replay::multiple ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::replay::root_at_head ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::single_commit ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::two_commits ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::walk_commit_error ... ok
test storage::refs::sigrefs::read::test::signed_refs_reader::walk_verify_error ... ok
test storage::refs::sigrefs::read::test::tree_reader::missing_both ... ok
test storage::refs::sigrefs::read::test::tree_reader::missing_refs ... ok
test storage::refs::sigrefs::read::test::tree_reader::missing_signature ... ok
test storage::refs::sigrefs::read::test::tree_reader::parse_refs_error ... ok
test storage::refs::sigrefs::read::test::tree_reader::parse_signature_error ... ok
test storage::refs::sigrefs::read::test::tree_reader::read_ok ... ok
test storage::refs::sigrefs::read::test::tree_reader::read_refs_error ... ok
test storage::refs::sigrefs::read::test::tree_reader::read_signature_error ... ok
test storage::refs::sigrefs::write::test::commit_writer::tree_error ... ok
test storage::refs::sigrefs::write::test::commit_writer::write_commit_error ... ok
test storage::refs::sigrefs::write::test::commit_writer::write_empty_refs ... ok
test storage::refs::sigrefs::write::test::commit_writer::write_root_ok ... ok
test storage::refs::sigrefs::write::test::commit_writer::write_with_parent_ok ... ok
test storage::refs::sigrefs::write::test::head_reader::no_head ... ok
test storage::refs::sigrefs::write::test::head_reader::read_ok ... ok
test storage::refs::sigrefs::write::test::head_reader::reference_error ... ok
test storage::refs::sigrefs::write::test::head_reader::refs_blob_error ... ok
test storage::refs::sigrefs::write::test::head_reader::refs_blob_missing ... ok
test storage::refs::sigrefs::write::test::head_reader::refs_parse_error ... ok
test storage::refs::sigrefs::write::test::head_reader::signature_blob_error ... ok
test storage::refs::sigrefs::write::test::head_reader::signature_blob_missing ... ok
test storage::refs::sigrefs::write::test::head_reader::signature_parse_error ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::commit_error ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::head_error ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::never_write_rad_sigrefs ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::reference_error ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::unchanged ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::unchanged_force_writes_new_commit ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::write_empty_refs ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::write_root_ok ... ok
test storage::refs::sigrefs::write::test::signed_refs_writer::write_with_parent_ok ... ok
test storage::refs::sigrefs::write::test::tree_writer::sign_error ... ok
test storage::refs::sigrefs::write::test::tree_writer::write_ok ... ok
test storage::refs::sigrefs::write::test::tree_writer::write_tree_error ... ok
test storage::refs::tests::prop_canonical_roundtrip ... ok
test storage::refs::tests::test_rid_verification ... ok
test storage::tests::test_storage ... ok
test test::assert::test::assert_with_message ... ok
test test::assert::test::test_assert_no_move ... ok
test test::assert::test::test_assert_panic_0 - should panic ... ok
test test::assert::test::test_assert_panic_1 - should panic ... ok
test test::assert::test::test_assert_panic_2 - should panic ... ok
test test::assert::test::test_assert_succeed ... ok
test test::assert::test::test_panic_message ... ok
test version::test::test_version ... ok
test identity::doc::test::prop_encode_decode ... ok
test storage::refs::sigrefs::property::idempotent ... ok
test storage::refs::sigrefs::property::roundtrip ... ok
test result: ok. 321 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.42s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-ec709e4f9bbe6e62)
running 46 tests
test commands::block::args::test::should_not_parse ... ok
test commands::block::args::test::should_parse_rid ... ok
test commands::block::args::test::should_parse_nid ... ok
test commands::clone::args::test::should_parse_rid_url ... ok
test commands::clone::args::test::should_parse_rid_urn ... ok
test commands::clone::args::test::should_parse_rid_non_urn ... ok
test commands::cob::args::test::should_allow_log_pretty_format ... ok
test commands::cob::args::test::should_allow_show_json_format ... ok
test commands::cob::args::test::should_allow_log_json_format ... ok
test commands::cob::args::test::should_not_allow_show_pretty_format ... ok
test commands::cob::args::test::should_allow_update_json_format ... ok
test commands::cob::args::test::should_not_allow_update_pretty_format ... ok
test commands::fork::args::test::should_not_parse_rid_url ... ok
test commands::fork::args::test::should_parse_rid_urn ... ok
test commands::fork::args::test::should_parse_rid_non_urn ... ok
test commands::id::args::test::should_not_parse_into_payload - should panic ... ok
test commands::id::args::test::should_not_clobber_payload_args ... ok
test commands::id::args::test::should_not_parse_single_payloads ... ok
test commands::id::args::test::should_not_parse_single_payload ... ok
test commands::id::args::test::should_parse_into_payload ... ok
test commands::id::args::test::should_parse_single_payload ... ok
test commands::init::args::test::should_not_parse_rid_url ... ok
test commands::init::args::test::should_parse_rid_urn ... ok
test commands::inspect::test::test_tree ... ok
test commands::id::args::test::should_parse_multiple_payloads ... ok
test commands::patch::review::builder::tests::test_review_comments_basic ... ok
test commands::patch::review::builder::tests::test_review_comments_before ... ok
test commands::init::args::test::should_parse_rid_non_urn ... ok
test commands::patch::review::builder::tests::test_review_comments_multiline ... ok
test commands::patch::review::builder::tests::test_review_comments_split_hunk ... ok
test commands::publish::args::test::should_not_parse_rid_url ... ok
test commands::publish::args::test::should_parse_rid_non_urn ... ok
test commands::publish::args::test::should_parse_rid_urn ... ok
test git::pretty_diff::test::test_pretty ... ignored
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test commands::watch::args::test::should_parse_ref_str ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::args::test::should_not_parse ... ok
test terminal::args::test::should_parse_rid ... ok
test terminal::args::test::should_parse_nid ... ok
test terminal::format::test::test_bytes ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test terminal::patch::test::test_create_display_message ... ok
test terminal::patch::test::test_update_display_message ... ok
test result: ok. 45 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/main.rs (target/debug/deps/rad-19d47406e05c9282)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/commands.rs (target/debug/deps/commands-dba3ca96f7d66000)
running 115 tests
test commands::checkout::rad_checkout ... ok
test commands::clone::rad_clone ... ok
test commands::clone::rad_clone_bare ... ok
test commands::clone::rad_clone_all ... ok
test commands::clone::rad_clone_scope ... ok
test commands::clone::rad_clone_unknown ... ok
test commands::clone::rad_clone_directory ... ok
test commands::clone::test_clone_without_seeds ... ok
test commands::clone::rad_clone_connect ... ok
test commands::cob::rad_cob_multiset ... ok
test commands::clone::rad_clone_partial_fail ... ok
test commands::cob::rad_cob_log ... ok
test commands::cob::rad_cob_migrate ... ok
test commands::cob::rad_cob_operations ... ok
test commands::cob::rad_cob_show ... ok
test commands::cob::rad_cob_update ... ok
test commands::cob::rad_cob_update_identity ... ok
test commands::cob::test_cob_deletion ... ok
test commands::cob::test_cob_replication ... ok
test commands::git::git_push_amend ... ok
test commands::git::git_push_and_fetch ... ok
test commands::git::git_push_canonical_annotated_tags ... ok
test commands::git::git_push_canonical_lightweight_tags ... ok
test commands::git::git_push_diverge ... ok
test commands::git::git_push_force_with_lease ... ok
test commands::id::rad_id ... ok
test commands::id::rad_id_collaboration ... ignored, slow
test commands::git::git_push_rollback ... ok
test commands::git::git_push_converge ... ok
test commands::git::git_tag ... ok
test commands::id::rad_id_private ... ok
test commands::id::rad_id_threshold_soft_fork ... ok
test commands::id::rad_id_conflict ... ok
test commands::id::rad_id_unknown_field ... ok
test commands::id::rad_id_threshold ... ok
test commands::id::rad_id_update_delete_field ... ok
test commands::init::rad_init ... ignored, part of many other tests
test commands::id::rad_id_unauthorized_delegate ... ok
test commands::id::rad_id_multi_delegate ... ok
test commands::init::rad_init_bare ... ok
test commands::init::rad_init_detached_head ... ok
test commands::init::rad_init_existing ... ok
test commands::init::rad_init_no_git ... ok
test commands::init::rad_init_existing_bare ... ok
test commands::init::rad_init_no_seed ... ok
test commands::init::rad_init_private ... ok
test commands::init::rad_init_private_no_seed ... ok
test commands::init::rad_init_private_clone ... ok
test commands::init::rad_init_private_clone_seed ... ok
test commands::init::rad_init_private_seed ... ok
test commands::inbox::rad_inbox ... ok
test commands::init::rad_init_sync_not_connected ... ok
test commands::init::rad_init_sync_preferred ... ok
test commands::init::rad_init_with_existing_remote ... ok
test commands::issue::rad_issue ... ok
test commands::init::rad_publish ... ok
test commands::jj::rad_jj_bare ... ok
test commands::jj::rad_jj_colocated_patch ... ok
test commands::issue::rad_issue_list ... ok
test commands::node::rad_node_connect ... ok
test commands::node::rad_node_connect_without_address ... ok
test commands::patch::rad_merge_after_update ... ok
test commands::node::rad_node ... ok
test commands::patch::rad_merge_no_ff ... ok
test commands::patch::rad_merge_via_push ... ok
test commands::patch::rad_patch ... ok
test commands::patch::rad_patch_ahead_behind ... ok
test commands::patch::rad_patch_change_base ... ok
test commands::patch::rad_patch_checkout ... ok
test commands::patch::rad_patch_checkout_revision ... ok
test commands::init::rad_init_sync_timeout ... ok
test commands::init::rad_init_sync_and_clone ... ok
test commands::patch::rad_patch_checkout_force ... ok
test commands::patch::rad_patch_detached_head ... ok
test commands::patch::rad_patch_diff ... ok
test commands::patch::rad_patch_draft ... ok
test commands::patch::rad_patch_edit ... ok
test commands::patch::rad_patch_fetch_2 ... FAILED
test commands::patch::rad_patch_merge_draft ... ok
test commands::patch::rad_patch_fetch_1 ... ok
test commands::patch::rad_patch_revert_merge ... ok
test commands::patch::rad_patch_delete ... ok
test commands::patch::rad_patch_open_explore ... ok
test commands::patch::rad_patch_update ... ok
test commands::patch::rad_patch_via_push ... FAILED
test commands::policy::rad_block ... ok
test commands::policy::rad_seed_and_follow ... ok
test commands::patch::rad_review_by_hunk ... ok
test commands::policy::rad_seed_policy_allow_no_scope ... ok
test commands::policy::rad_seed_scope ... ok
test commands::policy::rad_unseed ... ok
test commands::policy::rad_seed_many ... ok
test commands::policy::rad_unseed_many ... ok
test commands::patch::rad_push_and_pull_patches ... ok
test commands::remote::rad_remote ... ok
test commands::sync::rad_sync_without_node ... ok
test commands::sync::rad_sync ... ok
test commands::utility::framework_home ... ok
test commands::utility::rad_auth ... ok
test commands::utility::rad_auth_errors ... ok
test commands::utility::rad_clean ... ok
test commands::utility::rad_config ... ok
test commands::patch::rad_patch_pull_update ... ok
test commands::utility::rad_diff ... ok
test commands::utility::rad_help ... ok
test commands::utility::rad_inspect ... ok
test commands::utility::rad_key_mismatch ... ok
test commands::utility::rad_self ... ok
test commands::utility::rad_warn_old_nodes ... ok
test commands::sync::rad_fetch ... ok
test commands::watch::rad_watch ... ok
test rad_remote ... ok
test commands::sync::test_replication_via_seed ... ok
test commands::workflow::rad_workflow ... ok
test commands::utility::rad_fork ... ok
failures:
---- commands::patch::rad_patch_fetch_2 stdout ----
1774879063 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-init:28: `rad init` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-init:35: `rad ls` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-init:46: `rad node inventory` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:6: `git checkout -b alice/1 -q` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:7: `git commit --allow-empty -m Changes #1 -q` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:8: `git push rad -o patch.message=Changes HEAD:refs/patches` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:12: `git checkout master -q` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:13: `git branch -D alice/1 -q` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:14: `git update-ref -d refs/remotes/rad/alice/1` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:15: `git update-ref -d refs/remotes/rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:16: `git gc --prune=now` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:17: `git branch -r` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:22: `git pull` @ /tmp/.tmp88B9ms/alice/work
1774879063 test: rad-patch-fetch-2:24: `git branch -r` @ /tmp/.tmp88B9ms/alice/work
thread 'commands::patch::rad_patch_fetch_2' panicked at crates/radicle-cli-test/src/lib.rs:502:36:
--- Expected
++++ actual: stdout
1 - rad/HEAD -> rad/master
2 1 | rad/master
3 2 | rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb
Exit status: 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- commands::patch::rad_patch_via_push stdout ----
1774879065 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-init:28: `rad init` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-init:35: `rad ls` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-init:46: `rad node inventory` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:7: `git checkout -b feature/1` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:9: `git commit -a -m Add things -q --allow-empty` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:10: `git push -o patch.message=Add things #1 -o patch.message=See commits for details. rad HEAD:refs/patches` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:22: `rad patch show 6035d2f582afbe01ff23ea87528ae523d76875b6` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:45: `git branch -vv` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:53: `git status --short --branch` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:55: `git fetch` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:56: `git push` @ /tmp/.tmpxPFYx4/alice/work
1774879065 test: rad-patch-via-push:62: `git show-ref` @ /tmp/.tmpxPFYx4/alice/work
thread 'commands::patch::rad_patch_via_push' panicked at crates/radicle-cli-test/src/lib.rs:502:36:
--- Expected
++++ actual: stdout
1 1 | 42d894a83c9c356552a57af09ccdbd5587a99045 refs/heads/feature/1
2 2 | f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/heads/master
3 - f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/remotes/rad/HEAD
4 3 | f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/remotes/rad/master
5 4 | 42d894a83c9c356552a57af09ccdbd5587a99045 refs/remotes/rad/patches/6035d2f582afbe01ff23ea87528ae523d76875b6
Exit status: 0
failures:
commands::patch::rad_patch_fetch_2
commands::patch::rad_patch_via_push
test result: FAILED. 111 passed; 2 failed; 2 ignored; 0 measured; 0 filtered out; finished in 69.67s
error: test failed, to rerun pass `-p radicle-cli --test commands`
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-90338f9c3e553cbf)
running 3 tests
test tests::test_parse ... ok
test tests::test_run ... ok
test tests::test_example_spaced_brackets ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_cob-471feae7c52155c6)
running 9 tests
test object::tests::test_serde ... ok
test tests::git::roundtrip ... ok
test tests::invalid_parse_refstr ... ok
test tests::git::traverse_cobs ... ok
test type_name::test::invalid_typenames ... ok
test type_name::test::valid_typenames ... ok
test tests::git::list_cobs ... ok
test tests::parse_refstr ... ok
test tests::git::update_cob ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/lib.rs (target/debug/deps/radicle_core-71c543e62475a20f)
running 4 tests
test repo::test::invalid ... ok
test repo::test::valid ... ok
test repo::test::assert_prop_roundtrip_parse ... ok
test repo::serde_impls::test::assert_prop_roundtrip_serde_json ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_crypto-a664afb80ffca618)
running 12 tests
test ssh::fmt::test::test_fingerprint ... ok
test ssh::fmt::test::test_key ... ok
test ssh::keystore::tests::test_init_no_passphrase ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::test_agent_encoding_sign ... ok
test ssh::test::prop_encode_decode_sk ... ok
test tests::prop_encode_decode ... ok
test tests::test_e25519_dh ... ok
test tests::test_encode_decode ... ok
test tests::prop_key_equality ... ok
test ssh::keystore::tests::test_signer ... ok
test ssh::keystore::tests::test_init_passphrase ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.84s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-05f7457e7194a495)
running 20 tests
test tests::test_contains ... ok
test tests::test_dependencies ... ok
test tests::test_cycle ... ok
test tests::test_fold_multiple_roots ... ok
test tests::test_fold_diamond ... ok
test tests::test_diamond ... ok
test tests::test_fold_reject ... ok
test tests::test_fold_sorting_2 ... ok
test tests::test_fold_sorting_1 ... ok
test tests::test_get ... ok
test tests::test_is_empty ... ok
test tests::test_len ... ok
test tests::test_merge_1 ... ok
test tests::test_merge_2 ... ok
test tests::test_prune_1 ... ok
test tests::test_prune_2 ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_remove ... ok
test tests::test_siblings ... ok
test tests::test_complex ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_fetch-ce82cb5d8ca597dc)
running 1 test
test stage::test::valid_refspecs ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_git_metadata-f234fa7eabe06ba6)
running 24 tests
test commit::parse::test::error::invalid_author ... ok
test commit::parse::test::error::invalid_parent ... ok
test commit::parse::test::error::invalid_committer ... ok
test commit::parse::test::error::invalid_tree ... ok
test commit::parse::test::error::missing_author ... ok
test commit::parse::test::error::missing_committer ... ok
test commit::parse::test::error::invalid_format_continuation_without_preceding_header ... ok
test commit::parse::test::error::missing_header_body_separator ... ok
test commit::parse::test::error::missing_tree_empty_header ... ok
test commit::parse::test::error::missing_tree_wrong_first_line ... ok
test commit::parse::test::success::commit_gpgsig_is_preserved_and_strip_removes_it ... ok
test commit::parse::test::success::commit_with_extra_headers ... ok
test commit::parse::test::success::commit_last_paragraph_kept_in_message_when_not_all_trailers ... ok
test commit::parse::test::success::commit_with_multiline_gpgsig ... ok
test commit::parse::test::success::commit_with_single_parent ... ok
test commit::parse::test::success::root_commit ... ok
test commit::parse::test::success::merge_commit ... ok
test commit::parse::test::success::commit_with_trailers ... ok
test commit::parse::test::success::roundtrip ... ok
test commit::parse::test::unit::body_last_paragraph_not_trailers_stays_in_message ... ok
test commit::parse::test::unit::body_no_paragraph_separator_means_no_trailers ... ok
test commit::parse::test::unit::trailers_accepts_empty_input ... ok
test commit::parse::test::unit::trailers_rejects_invalid_token_chars ... ok
test commit::parse::test::unit::trailers_rejects_line_without_separator ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_git_ref_format-09d2e35a065977f7)
running 9 tests
test test::component ... ok
test test::pattern ... ok
test test::qualified_invalid - should panic ... ok
test test::qualified ... ok
test test::component_invalid - should panic ... ok
test test::qualified_pattern_invalid - should panic ... ok
test test::refname ... ok
test test::refname_invalid - should panic ... ok
test test::qualified_pattern ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_localtime-f75e94d3ba02c400)
running 1 test
test serde_impls::test::test_localtime ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_node-923986bb67f5d933)
running 79 tests
test reactor::timer::tests::test_next ... ok
test reactor::timer::tests::test_wake ... ok
test reactor::timer::tests::test_wake_exact ... ok
test fingerprint::tests::matching ... ok
test control::tests::test_control_socket ... ok
test control::tests::test_seed_unseed ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::fetch_does_not_contain_rad_sigrefs_parent ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_block_prevents_connection ... ok
test tests::e2e::test_block_active_connection ... ok
test tests::e2e::test_block_prevents_fetch ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_clone ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_connection_crossing ... ok
test tests::e2e::test_fetch_followed_remotes ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_fetch_emits_canonical_ref_update ... ok
test tests::e2e::test_large_fetch ... ok
test tests::e2e::test_migrated_clone ... ok
test tests::e2e::test_missing_remote ... ok
test tests::e2e::test_multiple_offline_inits ... ok
test tests::e2e::test_non_fastforward_identity_doc ... ok
test tests::e2e::test_non_fastforward_sigrefs ... ok
test tests::e2e::test_outdated_delegate_sigrefs ... ok
test tests::e2e::test_outdated_sigrefs ... ok
test tests::e2e::test_replication ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_replication_invalid ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_connection_kept_alive ... ok
test tests::test_announcement_relay ... ok
test tests::test_disconnecting_unresponsive_peer ... ok
test tests::test_fetch_missing_inventory_on_gossip ... ok
test tests::test_fetch_missing_inventory_on_schedule ... ok
test tests::test_inbound_connection ... ok
test tests::test_inventory_decode ... ok
test tests::test_init_and_seed ... ok
test tests::test_inventory_relay ... ok
test tests::test_inventory_relay_bad_timestamp ... ok
test tests::test_inventory_sync ... ok
test tests::test_maintain_connections ... ok
test tests::test_maintain_connections_failed_attempt ... ok
test tests::test_maintain_connections_transient ... ok
test tests::test_outbound_connection ... ok
test tests::test_inventory_pruning ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_persistent_peer_reconnect_success ... ok
test tests::test_persistent_peer_reconnect_attempt ... ok
test tests::test_ping_response ... ok
test tests::test_queued_fetch_from_ann_same_rid ... ok
test tests::test_queued_fetch_max_capacity ... ok
test tests::test_queued_fetch_from_command_same_rid ... ok
test tests::test_redundant_connect ... ok
test tests::test_refs_announcement_fetch_trusted_no_inventory ... ok
test tests::test_refs_announcement_followed ... ok
test tests::test_refs_announcement_no_subscribe ... ok
test tests::test_refs_announcement_offline ... ok
test tests::prop_inventory_exchange_dense ... ok
test tests::test_announcement_message_amplification ... ok
test tests::test_seed_repo_subscribe ... ok
test tests::test_refs_announcement_relay_private ... ok
test wire::test::test_inventory_ann_with_extension ... ok
test wire::test::test_pong_message_with_extension ... ok
test tests::test_seeding ... ok
test tests::test_refs_synced_event ... ok
test tests::test_refs_announcement_relay_public ... ok
test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.61s
Running unittests src/main.rs (target/debug/deps/radicle_node-52da137663fa7390)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_oid-8a3ece19594f1498)
running 10 tests
test fmt::test::fixture ... ok
test fmt::test::zero ... ok
test fmt::test::gix ... ok
test git2::test::zero ... ok
test gix::test::zero ... ok
test str::test::fixture ... ok
test fmt::test::git2 ... ok
test str::test::zero ... ok
test str::test::git2_roundtrip ... ok
test str::test::gix_roundrip ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_protocol-545fe92253769780)
running 99 tests
test deserializer::test::test_decode_next ... ok
test deserializer::test::test_unparsed ... ok
test deserializer::test::prop_decode_next ... ok
test fetcher::service::tests::test_fetch_coalescing_different_refs ... ok
test fetcher::test::queue::properties::capacity::bounded ... ok
test fetcher::test::queue::properties::capacity::rejection ... ok
test fetcher::test::queue::properties::dequeue::empty_queue_returns_none ... ok
test fetcher::test::queue::properties::dequeue::enables_reenqueue ... ok
test fetcher::test::queue::properties::dequeue::drained_queue_returns_none ... ok
test fetcher::test::queue::properties::capacity::restored_after_dequeue ... ok
test fetcher::test::queue::properties::capacity::capacity_reached_returns_same_item ... ok
test fetcher::test::queue::properties::fifo::interleaved_operations ... ok
test fetcher::test::queue::properties::fifo::ordering ... ok
test fetcher::test::queue::properties::equality::reflexive ... ok
test fetcher::test::queue::properties::equality::symmetric ... ok
test fetcher::test::queue::properties::merge::different_rid_accepted ... ok
test fetcher::test::queue::properties::equality::transitive ... ok
test fetcher::test::queue::properties::merge::longer_timeout_preserved ... ok
test fetcher::test::queue::properties::merge::combines_refs ... ok
test fetcher::test::queue::properties::merge::empty_refs_fetches_all ... ok
test fetcher::test::queue::unit::capacity_takes_precedence_over_merge_for_new_items ... ok
test fetcher::test::queue::unit::empty_refs_items_can_be_equal ... ok
test fetcher::test::queue::unit::max_timeout_accepted ... ok
test fetcher::test::queue::unit::merge_preserves_position_in_queue ... ok
test fetcher::test::queue::unit::zero_timeout_accepted ... ok
test fetcher::test::state::command::cancel::cancellation_is_isolated ... ok
test fetcher::test::queue::properties::merge::does_not_increase_queue_length ... ok
test fetcher::test::state::command::cancel::non_existent_returns_unexpected ... ok
test fetcher::test::state::command::cancel::ongoing_and_queued ... ok
test fetcher::test::state::command::cancel::single_ongoing ... ok
test fetcher::test::state::command::fetch::fetch_after_previous_completed ... ok
test fetcher::test::state::command::fetch::fetch_at_capacity_enqueues ... ok
test fetcher::test::state::command::fetch::fetch_different_repo_same_node_within_capacity ... ok
test fetcher::test::queue::properties::merge::succeed_when_at_capacity ... ok
test fetcher::test::state::command::fetch::fetch_duplicate_returns_already_fetching ... ok
test fetcher::test::state::command::fetch::fetch_queue_merge_takes_longer_timeout ... ok
test fetcher::test::state::command::fetch::fetch_queue_merge_empty_refs_fetches_all ... ok
test fetcher::test::state::command::fetch::fetch_same_repo_different_nodes_queues_second ... ok
test fetcher::test::state::command::fetch::fetch_queue_merges_already_queued ... ok
test fetcher::test::state::command::fetch::fetch_queue_rejected_capacity_reached ... ok
test fetcher::test::state::command::fetch::fetch_start_first_fetch_for_node ... ok
test fetcher::test::state::command::fetched::complete_one_of_multiple ... ok
test fetcher::test::state::command::fetch::fetch_same_repo_different_refs_enqueues ... ok
test fetcher::test::state::command::fetched::non_existent_returns_not_found ... ok
test fetcher::test::state::command::fetched::complete_then_dequeue_fifo ... ok
test fetcher::test::state::concurrent::fetched_then_cancel ... ok
test fetcher::test::state::command::fetched::complete_single_ongoing ... ok
test fetcher::test::state::concurrent::interleaved_operations ... ok
test fetcher::test::state::config::min_queue_size ... ok
test fetcher::test::state::dequeue::cannot_dequeue_while_node_at_capacity ... ok
test fetcher::test::state::dequeue::empty_queue_returns_none ... ok
test fetcher::test::state::dequeue::maintains_fifo_order ... ok
test fetcher::test::state::invariant::queue_integrity_after_merge ... ok
test fetcher::test::state::multinode::independent_queues ... ok
test fetcher::test::queue::properties::merge::same_rid_merges_anywhere_in_queue ... ok
test service::filter::test::compatible ... ok
test service::filter::test::test_parameters ... ok
test service::gossip::store::test::test_announced ... ok
test service::filter::test::test_sizes ... ok
test service::limiter::test::test_limiter_multi ... ok
test service::limiter::test::test_limiter_different_rates ... ok
test service::limiter::test::test_limiter_refill ... ok
test service::message::tests::test_inventory_limit ... ok
test fetcher::test::state::config::high_concurrency ... ok
test service::message::tests::test_ref_remote_limit ... ok
test wire::frame::test::test_encode_git_large ... ok
test wire::frame::test::test_stream_id ... ok
test fetcher::test::state::multinode::high_count ... ok
test wire::message::tests::prop_roundtrip_address ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test wire::message::tests::test_inv_ann_max_size ... ok
test wire::message::tests::test_node_ann_max_size ... ok
test wire::message::tests::test_ping_encode_size_overflow - should panic ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pong_encode_size_overflow - should panic ... ok
test wire::message::tests::prop_roundtrip_message ... ok
test wire::tests::prop_oid ... ok
test wire::tests::prop_roundtrip_filter ... ok
test wire::tests::prop_roundtrip_publickey ... ok
test wire::tests::prop_roundtrip_refs ... ok
test wire::tests::prop_roundtrip_repoid ... ok
test wire::tests::prop_roundtrip_tuple ... ok
test wire::tests::prop_roundtrip_u16 ... ok
test wire::tests::prop_roundtrip_u32 ... ok
test wire::tests::prop_roundtrip_u64 ... ok
test wire::tests::prop_roundtrip_vec ... ok
test wire::tests::prop_signature ... ok
test wire::tests::prop_string ... ok
test wire::tests::test_alias ... ok
test wire::tests::test_bounded_vec_limit ... ok
test wire::tests::test_filter_invalid ... ok
test wire::tests::test_string ... ok
test wire::varint::test::prop_roundtrip_varint ... ok
test wire::varint::test::test_encode_overflow - should panic ... ok
test wire::varint::test::test_encoding ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::message::tests::prop_message_decoder ... ok
test service::message::tests::test_node_announcement_validate ... ok
test result: ok. 99 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.65s
Running unittests src/main.rs (target/debug/deps/git_remote_rad-7056cd80ed1448fe)
running 12 tests
test protocol::tests::test_capabilities ... ok
test protocol::tests::test_fetch ... ok
test protocol::tests::test_fetch_whitespace ... ok
test protocol::tests::test_empty ... ok
test protocol::tests::test_list ... ok
test protocol::tests::test_invalid ... ok
test protocol::tests::test_option ... ok
test protocol::tests::test_list_for_push ... ok
test protocol::tests::test_push ... ok
test protocol::tests::test_push_force ... ok
test protocol::tests::test_option_whitespace_preservation ... ok
test protocol::tests::test_push_delete ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/debug/deps/radicle_schemars-7ceddc08b92aed27)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_signals-1a2ca7fd33a640da)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_ssh-9f14aadafa88ba9c)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_systemd-e2cf2d080022d36d)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_term-0b9f55c733b570cc)
running 21 tests
test cell::test::test_width ... ok
test ansi::tests::colors_enabled ... ok
test ansi::tests::colors_disabled ... ok
test element::test::test_spaced ... ok
test ansi::tests::wrapping ... ok
test element::test::test_truncate ... ok
test element::test::test_width ... ok
test table::test::test_table ... ok
test table::test::test_table_border ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_truncate ... ok
test table::test::test_table_unicode_truncate ... ok
test table::test::test_table_unicode ... ok
test table::test::test_truncate ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test textarea::test::test_wrapping ... ok
test vstack::test::test_vstack ... ok
test vstack::test::test_vstack_maximize ... ok
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_windows-2c067555aa9e0165)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle
running 1 test
test crates/radicle/src/cob/patch/encoding/review.rs - cob::patch::encoding::review::Review (line 23) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli_test
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cob
running 1 test
test crates/radicle-cob/src/backend/stable.rs - backend::stable::with_advanced_timestamp (line 56) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_core
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_crypto
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_dag
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_fetch
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_git_metadata
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_git_ref_format
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_localtime
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_node
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_oid
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_protocol
running 6 tests
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::with_capacity (line 66) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_signals
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_ssh
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_systemd
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_term
running 1 test
test crates/radicle-term/src/table.rs - table (line 4) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_windows
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: 1 target failed:
`-p radicle-cli --test commands`
Exit code: 101
{
"response": "finished",
"result": "failure"
}