rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwoodc20ee0879a60f1e79ef1c227ff297289322e2af2
{
"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": "Updated",
"patch": {
"id": "b062d14befcbc6878a35c757d15c1c537f0b42a2",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"title": "Rust 2024",
"state": {
"status": "open",
"conflicts": []
},
"before": "edde15d9ea700a70de04558fafc0b55360e9f5d2",
"after": "c20ee0879a60f1e79ef1c227ff297289322e2af2",
"commits": [
"c20ee0879a60f1e79ef1c227ff297289322e2af2",
"d1364ef28d843db956694507d0e7c98e2a76f50d"
],
"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
},
{
"id": "4fd38c0a3fe12b927ea01f019111b8ef1cd442d1",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Minimize changes",
"base": "edde15d9ea700a70de04558fafc0b55360e9f5d2",
"oid": "c20ee0879a60f1e79ef1c227ff297289322e2af2",
"timestamp": 1774882448
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "596b4c8c-2893-43cd-b523-c6548bf98e45"
},
"info_url": "https://cci.rad.levitte.org//596b4c8c-2893-43cd-b523-c6548bf98e45.html"
}
Started at: 2026-03-30 16:54:22.382800+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/596b4c8c-2893-43cd-b523-c6548bf98e45/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 154 issues · 42 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout b062d14befcbc6878a35c757d15c1c537f0b42a2
✓ Switched to branch patch/b062d14 at revision 4fd38c0
✓ Branch patch/b062d14 setup to track rad/patches/b062d14befcbc6878a35c757d15c1c537f0b42a2
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout c20ee0879a60f1e79ef1c227ff297289322e2af2
HEAD is now at c20ee087 rust/edition/fmt: 2021 → 2024
Exit code: 0
$ rad patch show b062d14befcbc6878a35c757d15c1c537f0b42a2 -p
╭───────────────────────────────────────────────────────────────────────╮
│ Title Rust 2024 │
│ Patch b062d14befcbc6878a35c757d15c1c537f0b42a2 │
│ Author lorenz z6MkkPv…WX5sTEz │
│ Head c20ee0879a60f1e79ef1c227ff297289322e2af2 │
│ 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. │
├───────────────────────────────────────────────────────────────────────┤
│ c20ee08 rust/edition/fmt: 2021 → 2024 │
│ d1364ef rust/edition: 2021 → 2024 │
├───────────────────────────────────────────────────────────────────────┤
│ ● Revision b062d14 @ c301e7c by lorenz z6MkkPv…WX5sTEz 1 hour ago │
│ ↑ Revision 4fd38c0 @ c20ee08 by lorenz z6MkkPv…WX5sTEz 16 seconds ago │
╰───────────────────────────────────────────────────────────────────────╯
commit c20ee0879a60f1e79ef1c227ff297289322e2af2
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 100b9a96d..ccb953743 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;
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 2194fb2c8..f4018f53b 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;
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 616e3382f..91f7ec047 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 _;
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 cb1473e8e..c2805293d 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;
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 5ebfff120..44213c673 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 14207e083..60bd126bd 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 dbf4822d6..b879fee0e 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 2fa9c5ccf..e5ec740c8 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 bfb55396a..21f6dbf9d 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-systemd/src/listen.rs b/crates/radicle-systemd/src/listen.rs
index 500671b1a..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;
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 cf5ffb423..886530697 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,8 @@ where
/// Return all objects.
pub fn all(
&self,
- ) -> Result<impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + use<'a, T, R>, Error> {
+ ) -> Result<impl ExactSizeIterator<Item = Result<(ObjectId, T), Error>> + 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 4c7609fd7..8a683385b 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;
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 e5018b99d..7b859f2e4 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;
@@ -195,15 +195,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 +240,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 99bce2a67..09cbd045e 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 dd5da4129..0286cceb7 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> =
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 d1364ef28d843db956694507d0e7c98e2a76f50d
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/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..5ebfff120 100644
--- a/crates/radicle-cli/src/main.rs
+++ b/crates/radicle-cli/src/main.rs
@@ -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/ssh/keystore.rs b/crates/radicle-crypto/src/ssh/keystore.rs
index bbece9fe8..9e680dcd7 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,7 +356,7 @@ impl MemorySigner {
}
/// Generate a new memory signer.
- pub fn gen() -> Self {
+ pub fn r#gen() -> Self {
let keypair = KeyPair::generate();
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..2fa9c5ccf 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) -> impl Iterator<Item = Message> + use<S, G> {
let mut msgs = Vec::new();
Service::outbox(&mut self.service)
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..bfb55396a 100644
--- a/crates/radicle-node/src/wire.rs
+++ b/crates/radicle-node/src/wire.rs
@@ -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..642f8db42 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/cancel.rs
@@ -8,8 +8,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(1);
let config = FetchConfig::default();
@@ -47,10 +47,10 @@ 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 {
@@ -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,10 +101,10 @@ 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 {
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..cd8189a13 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/fetch.rs
@@ -11,8 +11,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(2);
let config = FetchConfig::default();
@@ -44,9 +44,9 @@ 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 {
@@ -72,9 +72,9 @@ 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 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::gen_refs(1);
let config = FetchConfig::default();
@@ -106,8 +106,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(2);
let config = FetchConfig::default();
@@ -137,8 +137,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(1);
let refs_2 = helpers::gen_refs(2);
let config = FetchConfig::default();
@@ -169,9 +169,9 @@ 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 {
@@ -202,11 +202,11 @@ 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
@@ -255,9 +255,9 @@ 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 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::gen_refs(1);
let refs_2b = helpers::gen_refs(1);
let config = FetchConfig::default();
@@ -315,9 +315,9 @@ 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 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::gen_refs(2);
let config = FetchConfig::default();
@@ -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();
@@ -399,8 +399,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(1);
let config = FetchConfig::default();
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..1c8883c90 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/command/fetched.rs
@@ -8,8 +8,8 @@ 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 node_a: NodeId = arbitrary::r#gen(1);
+ let repo_1: RepoId = arbitrary::r#gen(1);
let refs_1 = helpers::gen_refs(2);
let config = FetchConfig::default();
@@ -39,10 +39,10 @@ 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 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::gen_refs(1);
let config = FetchConfig::default();
@@ -85,10 +85,10 @@ 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 {
@@ -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..ba64c5065 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/concurrent.rs
@@ -8,11 +8,11 @@ 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)
@@ -65,9 +65,9 @@ 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 {
diff --git a/crates/radicle-protocol/src/fetcher/test/state/config.rs b/crates/radicle-protocol/src/fetcher/test/state/config.rs
index 57e3ba007..00ba579ab 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/config.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/config.rs
@@ -8,11 +8,11 @@ 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,
@@ -39,10 +39,10 @@ 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 {
diff --git a/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs b/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
index b95e09de8..258a09ba7 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/dequeue.rs
@@ -10,9 +10,9 @@ 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 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::gen_refs(3);
let timeout_2 = Duration::from_secs(42);
@@ -48,11 +48,11 @@ 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 {
@@ -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..f79cc2cd9 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/invariant.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/invariant.rs
@@ -8,9 +8,9 @@ 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 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::gen_refs(1);
let refs_2b = helpers::gen_refs(1);
let config = FetchConfig::default();
diff --git a/crates/radicle-protocol/src/fetcher/test/state/multinode.rs b/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
index b46f46f2e..fb5c3c4bc 100644
--- a/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
+++ b/crates/radicle-protocol/src/fetcher/test/state/multinode.rs
@@ -8,12 +8,12 @@ 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
@@ -66,8 +66,8 @@ 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,
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..500671b1a 100644
--- a/crates/radicle-systemd/src/listen.rs
+++ b/crates/radicle-systemd/src/listen.rs
@@ -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..cf5ffb423 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>> + 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..4c7609fd7 100644
--- a/crates/radicle/src/node/address/store.rs
+++ b/crates/radicle/src/node/address/store.rs
@@ -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..e5018b99d 100644
--- a/crates/radicle/src/node/refs/store.rs
+++ b/crates/radicle/src/node/refs/store.rs
@@ -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..99bce2a67 100644
--- a/crates/radicle/src/profile.rs
+++ b/crates/radicle/src/profile.rs
@@ -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/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 596b4c8c-2893-43cd-b523-c6548bf98e45 -v /opt/radcis/ci.rad.levitte.org/cci/state/596b4c8c-2893-43cd-b523-c6548bf98e45/s:/596b4c8c-2893-43cd-b523-c6548bf98e45/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/596b4c8c-2893-43cd-b523-c6548bf98e45/w:/596b4c8c-2893-43cd-b523-c6548bf98e45/w -w /596b4c8c-2893-43cd-b523-c6548bf98e45/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /596b4c8c-2893-43cd-b523-c6548bf98e45/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 block-padding v0.3.3
Downloaded bytecount v0.6.8
Downloaded gix-lock v21.0.1
Downloaded bytesize v2.0.1
Downloaded group v0.13.0
Downloaded byteorder v1.5.0
Downloaded arc-swap v1.8.2
Downloaded bytes v1.11.1
Downloaded email_address v0.2.9
Downloaded ec25519 v0.1.0
Downloaded env_filter v0.1.3
Downloaded equivalent v1.0.1
Downloaded erased-serde v0.4.6
Downloaded fastrand v2.3.0
Downloaded clap_lex v0.7.5
Downloaded fast-glob v0.3.3
Downloaded data-encoding-macro v0.1.14
Downloaded bitflags v1.3.2
Downloaded anstream v0.6.21
Downloaded cyphergraphy v0.3.0
Downloaded data-encoding v2.5.0
Downloaded multibase v0.9.1
Downloaded matchers v0.2.0
Downloaded normalize-line-endings v0.3.0
Downloaded maybe-async v0.2.10
Downloaded num-iter v0.1.45
Downloaded fancy-regex v0.14.0
Downloaded outref v0.5.2
Downloaded der v0.7.9
Downloaded percent-encoding v2.3.1
Downloaded pkcs8 v0.10.2
Downloaded parking_lot_core v0.9.12
Downloaded ppv-lite86 v0.2.17
Downloaded quick-error v1.2.3
Downloaded poly1305 v0.8.0
Downloaded quote v1.0.41
Downloaded rand_chacha v0.3.1
Downloaded ref-cast v1.0.24
Downloaded same-file v1.0.6
Downloaded salsa20 v0.10.2
Downloaded rand_core v0.9.3
Downloaded rustc-demangle v0.1.26
Downloaded serde-untagged v0.1.7
Downloaded sha1 v0.10.6
Downloaded schemars_derive v1.0.4
Downloaded serde_spanned v1.0.4
Downloaded signal-hook-mio v0.2.4
Downloaded serde_fmt v1.0.3
Downloaded rsa v0.9.6
Downloaded shlex v1.3.0
Downloaded systemd-journal-logger v2.2.2
Downloaded signal-hook v0.3.18
Downloaded spki v0.7.3
Downloaded sharded-slab v0.1.7
Downloaded stable_deref_trait v1.2.0
Downloaded object v0.37.3
Downloaded tinyvec_macros v0.1.1
Downloaded toml_writer v1.0.6+spec-1.1.0
Downloaded gix-negotiate v0.27.0
Downloaded sval_fmt v2.14.1
Downloaded gix-command v0.7.1
Downloaded sval_serde v2.14.1
Downloaded tree-sitter-html v0.23.2
Downloaded typeid v1.0.3
Downloaded toml_datetime v0.7.5+spec-1.1.0
Downloaded tracing-log v0.2.0
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded thiserror-impl v2.0.18
Downloaded test-log-macros v0.2.19
Downloaded tree-sitter-json v0.24.8
Downloaded unarray v0.1.4
Downloaded tree-sitter-language v0.1.2
Downloaded tinyvec v1.6.0
Downloaded value-bag-sval2 v1.11.1
Downloaded utf16_iter v1.0.5
Downloaded unicode-width v0.1.11
Downloaded version_check v0.9.4
Downloaded unit-prefix v0.5.1
Downloaded xattr v1.3.1
Downloaded uuid-simd v0.8.0
Downloaded write16 v1.0.0
Downloaded walkdir v2.5.0
Downloaded value-bag-serde1 v1.11.1
Downloaded tar v0.4.40
Downloaded wait-timeout v0.2.1
Downloaded toml v0.9.12+spec-1.1.0
Downloaded zerofrom-derive v0.1.6
Downloaded typenum v1.17.0
Downloaded zerofrom v0.1.6
Downloaded zeroize v1.7.0
Downloaded zerovec-derive v0.10.3
Downloaded yoke v0.7.5
Downloaded uuid v1.20.0
Downloaded unicode-segmentation v1.11.0
Downloaded yansi v0.5.1
Downloaded url v2.5.4
Downloaded rustix v0.38.34
Downloaded unicode-normalization v0.1.23
Downloaded tree-sitter v0.24.4
Downloaded syn v1.0.109
Downloaded sysinfo v0.37.2
Downloaded zerocopy v0.7.35
Downloaded zerovec v0.10.4
Downloaded winnow v0.7.14
Downloaded vcpkg v0.2.15
Downloaded zlib-rs v0.6.0
Downloaded getrandom v0.2.15
Downloaded tree-sitter-rust v0.23.2
Downloaded regex-automata v0.4.9
Downloaded universal-hash v0.5.1
Downloaded fnv v1.0.7
Downloaded tree-sitter-bash v0.23.3
Downloaded human-panic v2.0.6
Downloaded writeable v0.5.5
Downloaded iana-time-zone v0.1.60
Downloaded tree-sitter-ruby v0.23.1
Downloaded unicode-ident v1.0.12
Downloaded miniz_oxide v0.8.8
Downloaded indicatif v0.18.0
Downloaded gix-pack v0.65.0
Downloaded jiff-static v0.2.20
Downloaded libm v0.2.8
Downloaded tree-sitter-python v0.23.4
Downloaded jsonschema v0.30.0
Downloaded idna v1.0.3
Downloaded tracing-subscriber v0.3.22
Downloaded hashbrown v0.16.1
Downloaded sha3 v0.10.8
Downloaded icu_properties_data v1.5.1
Downloaded git2 v0.20.4
Downloaded gimli v0.32.3
Downloaded hashbrown v0.14.3
Downloaded tokio v1.47.1
Downloaded sha1-checked v0.10.0
Downloaded tree-sitter-typescript v0.23.2
Downloaded itertools v0.14.0
Downloaded inquire v0.7.5
Downloaded fraction v0.15.3
Downloaded icu_normalizer_data v1.5.1
Downloaded icu_locid v1.5.0
Downloaded icu_collections v1.5.0
Downloaded heapless v0.8.0
Downloaded gix-transport v0.54.0
Downloaded linux-raw-sys v0.4.13
Downloaded gix-protocol v0.57.0
Downloaded gix-odb v0.75.0
Downloaded gix-object v0.55.0
Downloaded gix-diff v0.58.0
Downloaded lock_api v0.4.14
Downloaded indexmap v2.2.6
Downloaded jiff v0.2.20
Downloaded icu_provider v1.5.0
Downloaded icu_properties v1.5.1
Downloaded icu_normalizer v1.5.0
Downloaded icu_locid_transform_data v1.5.1
Downloaded getrandom v0.3.3
Downloaded hmac v0.12.1
Downloaded gix-revision v0.41.0
Downloaded libc v0.2.182
Downloaded gix-ref v0.59.0
Downloaded tracing v0.1.44
Downloaded gix-path v0.11.1
Downloaded gix-features v0.46.1
Downloaded fluent-uri v0.3.2
Downloaded gix-tempfile v21.0.1
Downloaded gix-refspec v0.37.0
Downloaded gix-hash v0.22.1
Downloaded gix-fs v0.19.1
Downloaded gix-actor v0.39.0
Downloaded jobserver v0.1.31
Downloaded gix-revwalk v0.27.0
Downloaded gix-revwalk v0.26.0
Downloaded gix-date v0.14.0
Downloaded gix-date v0.13.0
Downloaded gix-credentials v0.36.0
Downloaded gix-commitgraph v0.33.0
Downloaded gix-commitgraph v0.32.0
Downloaded git-ref-format-core v0.6.0
Downloaded generic-array v0.14.7
Downloaded ff v0.13.0
Downloaded gix-hashtable v0.12.0
Downloaded gix-glob v0.24.0
Downloaded gix-chunk v0.5.0
Downloaded itoa v1.0.17
Downloaded gix-sec v0.13.1
Downloaded keccak v0.1.6
Downloaded is_terminal_polyfill v1.70.2
Downloaded gix-utils v0.3.1
Downloaded git-ref-format v0.6.0
Downloaded tree-sitter-md v0.3.2
Downloaded lexopt v0.3.0
Downloaded icu_provider_macros v1.5.0
Downloaded icu_locid_transform v1.5.0
Downloaded gix-url v0.35.1
Downloaded gix-traverse v0.52.0
Downloaded gix-error v0.0.0
Downloaded unicode-width v0.2.1
Downloaded syn v2.0.106
Downloaded humantime v2.3.0
Downloaded gix-chunk v0.6.0
Downloaded form_urlencoded v1.2.1
Downloaded hash32 v0.3.1
Downloaded tree-sitter-c v0.23.2
Downloaded gix-trace v0.1.18
Downloaded gix-quote v0.6.2
Downloaded gix-config-value v0.17.1
Downloaded rustix v1.1.3
Downloaded fxhash v0.2.1
Downloaded filetime v0.2.23
Downloaded gix-packetline v0.21.1
Downloaded yoke-derive v0.7.5
Downloaded tree-sitter-go v0.23.4
Downloaded ssh-key v0.6.6
Downloaded vsimd v0.8.0
Downloaded value-bag v1.11.1
Downloaded regex-syntax v0.8.5
Downloaded utf8_iter v1.0.4
Downloaded tree-sitter-css v0.23.1
Downloaded utf8parse v0.2.2
Downloaded gix-prompt v0.13.1
Downloaded unicode-display-width v0.3.0
Downloaded tracing-core v0.1.36
Downloaded tinystr v0.7.6
Downloaded thiserror-impl v1.0.69
Downloaded libgit2-sys v0.18.3+1.9.2
Downloaded inout v0.1.3
Downloaded flate2 v1.1.1
Downloaded tree-sitter-highlight v0.24.4
Downloaded timeago v0.4.2
Downloaded sval_dynamic v2.14.1
Downloaded regex v1.11.1
Downloaded synstructure v0.13.1
Downloaded idna_adapter v1.2.0
Downloaded heck v0.5.0
Downloaded git-ref-format-macro v0.6.0
Downloaded sval_nested v2.14.1
Downloaded structured-logger v1.0.4
Downloaded thread_local v1.1.9
Downloaded thiserror v2.0.18
Downloaded thiserror v1.0.69
Downloaded sval_json v2.14.1
Downloaded subtle v2.5.0
Downloaded strsim v0.11.1
Downloaded streaming-iterator v0.1.9
Downloaded ssh-cipher v0.2.0
Downloaded sqlite3-sys v0.18.0
Downloaded spin v0.9.8
Downloaded socket2 v0.5.7
Downloaded smallvec v1.15.1
Downloaded siphasher v1.0.1
Downloaded serde_json v1.0.140
Downloaded proptest v1.9.0
Downloaded test-log v0.2.19
Downloaded tempfile v3.25.0
Downloaded sval_ref v2.14.1
Downloaded sval_buffer v2.14.1
Downloaded sval v2.14.1
Downloaded sqlite v0.37.0
Downloaded signature v1.6.4
Downloaded signal-hook-registry v1.4.5
Downloaded serde v1.0.228
Downloaded lazy_static v1.5.0
Downloaded gix-shallow v0.8.1
Downloaded ssh-encoding v0.2.0
Downloaded snapbox v0.4.17
Downloaded siphasher v0.3.11
Downloaded signals_receipts v0.2.0
Downloaded gix-actor v0.38.0
Downloaded radicle-surf v0.27.0
Downloaded socks5-client v0.4.1
Downloaded snapbox-macros v0.3.8
Downloaded similar v2.5.0
Downloaded serde_derive v1.0.228
Downloaded schemars v1.0.4
Downloaded rand v0.8.5
Downloaded p384 v0.13.0
Downloaded signature v2.2.0
Downloaded serde_core v1.0.228
Downloaded rand v0.9.2
Downloaded portable-atomic v1.11.0
Downloaded ghash v0.5.1
Downloaded shell-words v1.1.0
Downloaded sha2 v0.10.8
Downloaded gix-object v0.56.0
Downloaded serde_derive_internals v0.29.1
Downloaded rusty-fork v0.3.1
Downloaded sec1 v0.7.3
Downloaded scrypt v0.11.0
Downloaded ryu v1.0.17
Downloaded gix-validate v0.11.0
Downloaded referencing v0.30.0
Downloaded sem_safe v0.2.0
Downloaded scopeguard v1.2.0
Downloaded rustversion v1.0.20
Downloaded gix-error v0.1.0
Downloaded rfc6979 v0.4.0
Downloaded rand_core v0.6.4
Downloaded ref-cast-impl v1.0.24
Downloaded radicle-std-ext v0.2.0
Downloaded prodash v31.0.0
Downloaded chrono v0.4.38
Downloaded rand_chacha v0.9.0
Downloaded pretty_assertions v1.4.0
Downloaded rand_xorshift v0.4.0
Downloaded qcheck v1.0.0
Downloaded num-bigint v0.4.6
Downloaded clap_builder v4.5.44
Downloaded radicle-git-ext v0.12.0
Downloaded qcheck-macros v1.0.0
Downloaded proc-macro2 v1.0.101
Downloaded primeorder v0.13.6
Downloaded phf v0.11.3
Downloaded pem-rfc7468 v0.7.0
Downloaded p521 v0.13.3
Downloaded once_cell v1.21.3
Downloaded num-bigint-dig v0.8.4
Downloaded proc-macro-error2 v2.0.1
Downloaded phf_shared v0.11.3
Downloaded pin-project-lite v0.2.16
Downloaded parking_lot v0.12.5
Downloaded proc-macro-error-attr2 v2.0.0
Downloaded pkg-config v0.3.30
Downloaded pkcs1 v0.7.5
Downloaded mio v1.0.4
Downloaded cyphernet v0.5.2
Downloaded polyval v0.6.2
Downloaded p256 v0.13.2
Downloaded cc v1.2.2
Downloaded num-traits v0.2.19
Downloaded num-rational v0.4.2
Downloaded num-integer v0.1.46
Downloaded mio v0.8.11
Downloaded memchr v2.7.2
Downloaded backtrace v0.3.76
Downloaded pbkdf2 v0.12.2
Downloaded paste v1.0.15
Downloaded num-complex v0.4.6
Downloaded num-cmp v0.1.0
Downloaded chacha20poly1305 v0.10.1
Downloaded clap v4.5.44
Downloaded opaque-debug v0.3.1
Downloaded nu-ansi-term v0.50.3
Downloaded nonempty v0.9.0
Downloaded newline-converter v0.3.0
Downloaded memmap2 v0.9.8
Downloaded base64 v0.22.1
Downloaded base64 v0.21.7
Downloaded crossterm v0.29.0
Downloaded clap_complete v4.5.60
Downloaded base64ct v1.6.0
Downloaded ascii v1.1.0
Downloaded num v0.4.3
Downloaded noise-framework v0.4.0
Downloaded log v0.4.27
Downloaded litrs v0.4.1
Downloaded crc32fast v1.5.0
Downloaded escargot v0.5.10
Downloaded console v0.16.0
Downloaded litemap v0.7.5
Downloaded crossterm v0.25.0
Downloaded chacha20 v0.9.1
Downloaded anstyle-parse v0.2.3
Downloaded errno v0.3.13
Downloaded either v1.11.0
Downloaded displaydoc v0.2.5
Downloaded digest v0.10.7
Downloaded colored v2.1.0
Downloaded colorchoice v1.0.0
Downloaded ct-codecs v1.1.1
Downloaded const-oid v0.9.6
Downloaded clap_derive v4.5.41
Downloaded bit-vec v0.8.0
Downloaded amplify_num v0.5.2
Downloaded cypheraddr v0.4.0
Downloaded autocfg v1.2.0
Downloaded anstyle-query v1.0.2
Downloaded anyhow v1.0.82
Downloaded bcrypt-pbkdf v0.10.0
Downloaded base16ct v0.2.0
Downloaded faster-hex v0.10.0
Downloaded env_logger v0.11.8
Downloaded emojis v0.6.4
Downloaded diff v0.1.13
Downloaded cipher v0.4.4
Downloaded elliptic-curve v0.13.8
Downloaded ed25519 v1.5.3
Downloaded dyn-clone v1.0.17
Downloaded crypto-common v0.1.6
Downloaded crypto-bigint v0.5.5
Downloaded crossbeam-channel v0.5.15
Downloaded anstyle v1.0.13
Downloaded document-features v0.2.11
Downloaded derive_more-impl v2.0.1
Downloaded crossbeam-utils v0.8.19
Downloaded bit-set v0.8.0
Downloaded amplify_syn v2.0.1
Downloaded ecdsa v0.16.9
Downloaded dunce v1.0.5
Downloaded derive_more v2.0.1
Downloaded data-encoding-macro-internal v0.1.12
Downloaded ctr v0.9.2
Downloaded base32 v0.4.0
Downloaded base-x v0.2.11
Downloaded cpufeatures v0.2.12
Downloaded convert_case v0.7.1
Downloaded cfg-if v1.0.0
Downloaded bloomy v1.2.0
Downloaded aes-gcm v0.10.3
Downloaded amplify_derive v4.0.0
Downloaded amplify v4.6.0
Downloaded aes v0.8.4
Downloaded aead v0.5.2
Downloaded bstr v1.12.0
Downloaded aho-corasick v1.1.3
Downloaded ahash v0.8.11
Downloaded bitflags v2.9.1
Downloaded borrow-or-share v0.2.2
Downloaded blowfish v0.9.1
Downloaded block-buffer v0.10.4
Downloaded cbc v0.1.2
Downloaded adler2 v2.0.0
Downloaded linux-raw-sys v0.11.0
Downloaded sqlite3-src v0.7.0
Downloaded libz-sys v1.1.16
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
Compiling syn v2.0.106
Checking regex-syntax v0.8.5
Checking getrandom v0.2.15
Compiling typenum v1.17.0
Compiling jobserver v0.1.31
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
Checking smallvec v1.15.1
Compiling serde v1.0.228
Compiling thiserror v2.0.18
Checking subtle v2.5.0
Checking stable_deref_trait v1.2.0
Checking bstr v1.12.0
Checking fastrand v2.3.0
Checking cpufeatures v0.2.12
Compiling parking_lot_core v0.9.12
Checking scopeguard v1.2.0
Checking lock_api v0.4.14
Checking block-buffer v0.10.4
Checking tinyvec_macros v0.1.1
Checking parking_lot v0.12.5
Checking digest v0.10.7
Checking byteorder v1.5.0
Checking tinyvec v1.6.0
Checking bitflags v2.9.1
Compiling crc32fast v1.5.0
Checking gix-trace v0.1.18
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 prodash v31.0.0
Checking unicode-normalization v0.1.23
Compiling serde_derive v1.0.228
Compiling thiserror-impl v2.0.18
Checking zlib-rs v0.6.0
Checking gix-utils v0.3.1
Compiling heapless v0.8.0
Checking hash32 v0.3.1
Compiling synstructure v0.13.1
Checking gix-path v0.11.1
Checking faster-hex v0.10.0
Checking gix-features v0.46.1
Compiling getrandom v0.3.3
Checking sha1 v0.10.6
Checking zeroize v1.7.0
Checking sha1-checked v0.10.0
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Compiling pkg-config v0.3.30
Compiling rustix v1.1.3
Checking gix-hash v0.22.1
Compiling zerovec-derive v0.10.3
Checking zerofrom v0.1.6
Checking linux-raw-sys v0.11.0
Checking yoke v0.7.5
Compiling displaydoc v0.2.5
Checking erased-serde v0.4.6
Checking serde_fmt v1.0.3
Checking block-padding v0.3.3
Checking zerovec v0.10.4
Checking once_cell v1.21.3
Checking value-bag-serde1 v1.11.1
Checking value-bag v1.11.1
Checking inout v0.1.3
Compiling syn v1.0.109
Checking log v0.4.27
Checking cipher v0.4.4
Checking litemap v0.7.5
Checking writeable v0.5.5
Compiling icu_locid_transform_data v1.5.1
Checking tinystr v0.7.6
Compiling icu_provider_macros v1.5.0
Checking icu_locid v1.5.0
Checking percent-encoding v2.3.1
Compiling icu_properties_data v1.5.1
Checking icu_provider v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling thiserror v1.0.69
Checking icu_locid_transform v1.5.0
Checking icu_collections v1.5.0
Compiling thiserror-impl v1.0.69
Compiling serde_json v1.0.140
Checking hashbrown v0.14.3
Checking equivalent v1.0.1
Checking icu_properties v1.5.1
Checking indexmap v2.2.6
Checking sha2 v0.10.8
Compiling ref-cast v1.0.24
Checking utf8_iter v1.0.4
Checking ryu v1.0.17
Checking utf16_iter v1.0.5
Compiling vcpkg v0.2.15
Checking write16 v1.0.0
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
Compiling autocfg v1.2.0
Checking dyn-clone v1.0.17
Checking idna v1.0.3
Compiling amplify_syn v2.0.1
Compiling num-traits v0.2.19
Compiling libgit2-sys v0.18.3+1.9.2
Checking signature v1.6.4
Checking ed25519 v1.5.3
Checking form_urlencoded v1.2.1
Compiling serde_derive_internals v0.29.1
Checking aead v0.5.2
Checking ct-codecs v1.1.1
Checking amplify_num v0.5.2
Compiling amplify_derive v4.0.0
Checking ascii v1.1.0
Compiling schemars_derive v1.0.4
Checking ec25519 v0.1.0
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 schemars v1.0.4
Checking cyphergraphy v0.3.0
Checking polyval v0.6.2
Compiling sqlite3-src v0.7.0
Checking hmac v0.12.1
Checking base64ct v1.6.0
Checking keccak v0.1.6
Checking sha3 v0.10.8
Checking pem-rfc7468 v0.7.0
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking ctr v0.9.2
Checking aes v0.8.4
Checking rand v0.8.5
Checking base32 v0.4.0
Compiling data-encoding v2.5.0
Checking qcheck v1.0.0
Checking cypheraddr v0.4.0
Compiling data-encoding-macro-internal v0.1.12
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 signature v2.2.0
Checking base-x v0.2.11
Checking multibase v0.9.1
Checking ssh-key v0.6.6
Checking cyphernet v0.5.2
Checking radicle-ssh v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 siphasher v1.0.1
Checking anstyle-query v1.0.2
Checking radicle-git-metadata v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-metadata)
Checking gix-error v0.1.0
Checking radicle-dag v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-dag)
Checking memmap2 v0.9.8
Checking utf8parse v0.2.2
Checking radicle-git-ref-format v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-ref-format)
Checking anstyle-parse v0.2.3
Checking colorchoice v1.0.0
Checking base64 v0.21.7
Checking iana-time-zone v0.1.60
Checking anstyle v1.0.13
Checking is_terminal_polyfill v1.70.2
Checking chrono v0.4.38
Checking anstream v0.6.21
Checking colored v2.1.0
Checking radicle-localtime v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-localtime)
Checking serde-untagged v0.1.7
Checking bytesize v2.0.1
Checking gix-error v0.0.0
Checking tree-sitter-language v0.1.2
Checking fast-glob v0.3.3
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-object v0.56.0
Checking gix-tempfile v21.0.1
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 sem_safe v0.2.0
Checking errno v0.3.13
Checking either v1.11.0
Checking shell-words v1.1.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 rustversion v1.0.20
Compiling signal-hook v0.3.18
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 gimli v0.32.3
Checking adler2 v2.0.0
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 anyhow v1.0.82
Checking rustc-demangle v0.1.26
Compiling linux-raw-sys v0.4.13
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-shallow v0.8.1
Checking gix-ref v0.59.0
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
Compiling litrs v0.4.1
Checking bitflags v1.3.2
Checking unicode-width v0.2.1
Checking bytes v1.11.1
Checking console v0.16.0
Compiling document-features v0.2.11
Checking crossterm v0.25.0
Checking derive_more v2.0.1
Compiling flate2 v1.1.1
Compiling tar v0.4.40
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 strsim v0.11.1
Checking clap_lex v0.7.5
Checking streaming-iterator v0.1.9
Checking normalize-line-endings v0.3.0
Checking unicode-width v0.1.11
Checking similar v2.5.0
Checking siphasher v0.3.11
Checking unit-prefix v0.5.1
Compiling heck v0.5.0
Checking snapbox v0.4.17
Compiling clap_derive v4.5.41
Checking indicatif v0.18.0
Checking bloomy v1.2.0
Checking inquire v0.7.5
Checking clap_builder v4.5.44
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 toml_datetime v0.7.5+spec-1.1.0
Checking serde_spanned v1.0.4
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-bash v0.23.3
Checking sqlite3-sys v0.18.0
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-typescript v0.23.2
Checking sqlite v0.37.0
Compiling tree-sitter-go v0.23.4
Checking radicle-crypto v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-crypto)
Compiling tree-sitter-toml-ng v0.6.0
Checking radicle-std-ext v0.2.0
Checking pin-project-lite v0.2.16
Checking toml_writer v1.0.6+spec-1.1.0
Checking toml v0.9.12+spec-1.1.0
Checking tokio v1.47.1
Checking clap v4.5.44
Checking sysinfo v0.37.2
Checking yansi v0.5.1
Compiling radicle-cli v0.20.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli)
Compiling radicle-node v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-node)
Checking diff v0.1.13
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 timeago v0.4.2
Checking humantime v2.3.0
Checking lexopt v0.3.0
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-remote-helper)
Checking outref v0.5.2
Checking vsimd v0.8.0
Checking ppv-lite86 v0.2.17
Checking quick-error v1.2.3
Compiling paste v1.0.15
Checking fnv v1.0.7
Checking rand_chacha v0.9.0
Checking rusty-fork v0.3.1
Checking uuid-simd v0.8.0
Checking test-log v0.2.19
Checking phf v0.11.3
Checking referencing v0.30.0
Checking fraction v0.15.3
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 unarray v0.1.4
Checking num-cmp v0.1.0
Checking bytecount v0.6.8
Checking proptest v1.9.0
Checking emojis v0.6.4
Checking jsonschema v0.30.0
Checking radicle-windows v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-windows)
Checking git2 v0.20.4
Checking radicle-oid v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-oid)
Checking radicle-git-ext v0.12.0
Checking radicle-term v0.17.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-term)
Checking radicle-cob v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cob)
Checking radicle-core v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-core)
Checking radicle v0.23.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle)
Checking radicle-fetch v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-fetch)
Checking radicle-cli-test v0.13.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli-test)
Checking radicle-protocol v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-protocol)
Checking radicle-schemars v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.92s
+ 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 cpufeatures v0.2.12
Compiling stable_deref_trait v1.2.0
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 parking_lot v0.12.5
Compiling digest v0.10.7
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 prodash v31.0.0
Compiling walkdir v2.5.0
Compiling unicode-normalization v0.1.23
Compiling zlib-rs v0.6.0
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 rustix v1.1.3
Compiling once_cell v1.21.3
Compiling inout v0.1.3
Compiling tinystr v0.7.6
Compiling cipher v0.4.4
Compiling litemap v0.7.5
Compiling writeable v0.5.5
Compiling percent-encoding v2.3.1
Compiling icu_locid_transform_data v1.5.1
Compiling icu_locid v1.5.0
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling equivalent v1.0.1
Compiling hashbrown v0.14.3
Compiling icu_provider v1.5.0
Compiling indexmap v2.2.6
Compiling icu_locid_transform v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling sha2 v0.10.8
Compiling ryu v1.0.17
Compiling write16 v1.0.0
Compiling utf8_iter v1.0.4
Compiling utf16_iter v1.0.5
Compiling icu_properties v1.5.1
Compiling serde_json v1.0.140
Compiling tempfile v3.25.0
Compiling libz-sys v1.1.16
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 icu_normalizer v1.5.0
Compiling aead v0.5.2
Compiling ascii v1.1.0
Compiling idna_adapter v1.2.0
Compiling ct-codecs v1.1.1
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 keccak v0.1.6
Compiling base64ct v1.6.0
Compiling sha3 v0.10.8
Compiling pem-rfc7468 v0.7.0
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 blowfish v0.9.1
Compiling cbc v0.1.2
Compiling jiff v0.2.20
Compiling data-encoding v2.5.0
Compiling data-encoding-macro v0.1.14
Compiling ssh-cipher v0.2.0
Compiling bcrypt-pbkdf v0.10.0
Compiling noise-framework v0.4.0
Compiling socks5-client v0.4.1
Compiling base-x v0.2.11
Compiling signature v2.2.0
Compiling ssh-key v0.6.6
Compiling multibase v0.9.1
Compiling cyphernet v0.5.2
Compiling radicle-ssh v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-ssh)
Compiling crossbeam-utils v0.8.19
Compiling winnow v0.7.14
Compiling crossbeam-channel v0.5.15
Compiling lazy_static v1.5.0
Compiling hashbrown v0.16.1
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-dag)
Compiling radicle-git-metadata v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-ref-format)
Compiling colorchoice v1.0.0
Compiling is_terminal_polyfill v1.70.2
Compiling base64 v0.21.7
Compiling iana-time-zone v0.1.60
Compiling anstyle v1.0.13
Compiling chrono v0.4.38
Compiling anstream v0.6.21
Compiling colored v2.1.0
Compiling radicle-localtime v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-localtime)
Compiling gix-error v0.0.0
Compiling serde-untagged v0.1.7
Compiling bytesize v2.0.1
Compiling fast-glob v0.3.3
Compiling dunce v1.0.5
Compiling tree-sitter-language v0.1.2
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 errno v0.3.13
Compiling sem_safe v0.2.0
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 rustix v0.38.34
Compiling backtrace v0.3.76
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-ref v0.59.0
Compiling sqlite3-sys v0.18.0
Compiling sqlite v0.37.0
Compiling radicle-crypto v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-crypto)
Compiling gix-shallow v0.8.1
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 bytes v1.11.1
Compiling unicode-width v0.2.1
Compiling bitflags v1.3.2
Compiling crossterm v0.25.0
Compiling console v0.16.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 portable-atomic v1.11.0
Compiling anyhow v1.0.82
Compiling newline-converter v0.3.0
Compiling snapbox-macros v0.3.8
Compiling salsa20 v0.10.2
Compiling fxhash v0.2.1
Compiling unit-prefix v0.5.1
Compiling normalize-line-endings v0.3.0
Compiling streaming-iterator v0.1.9
Compiling clap_lex v0.7.5
Compiling strsim v0.11.1
Compiling siphasher v0.3.11
Compiling unicode-width v0.1.11
Compiling similar v2.5.0
Compiling bloomy v1.2.0
Compiling inquire v0.7.5
Compiling snapbox v0.4.17
Compiling clap_builder v4.5.44
Compiling indicatif v0.18.0
Compiling scrypt v0.11.0
Compiling radicle-surf v0.27.0
Compiling git-ref-format v0.6.0
Compiling crossterm v0.29.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-bash v0.23.3
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-ruby v0.23.1
Compiling pin-project-lite v0.2.16
Compiling toml_writer v1.0.6+spec-1.1.0
Compiling radicle-std-ext v0.2.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-cli v0.20.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli)
Compiling yansi v0.5.1
Compiling radicle-node v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-node)
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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 humantime v2.3.0
Compiling lexopt v0.3.0
Compiling timeago v0.4.2
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 zerocopy v0.7.35
Compiling num-rational v0.4.2
Compiling borrow-or-share v0.2.2
Compiling fluent-uri v0.3.2
Compiling num v0.4.3
Compiling ahash v0.8.11
Compiling env_logger v0.11.8
Compiling phf_shared v0.11.3
Compiling wait-timeout v0.2.1
Compiling fnv v1.0.7
Compiling ppv-lite86 v0.2.17
Compiling radicle-remote-helper v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-remote-helper)
Compiling outref v0.5.2
Compiling vsimd v0.8.0
Compiling quick-error v1.2.3
Compiling rusty-fork v0.3.1
Compiling rand_chacha v0.9.0
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 base64 v0.22.1
Compiling unarray v0.1.4
Compiling bytecount v0.6.8
Compiling num-cmp v0.1.0
Compiling proptest v1.9.0
Compiling git2 v0.20.4
Compiling jsonschema v0.30.0
Compiling emojis v0.6.4
Compiling radicle-oid v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-oid)
Compiling radicle-core v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-core)
Compiling radicle-cob v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cob)
Compiling radicle-git-ext v0.12.0
Compiling radicle-term v0.17.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-term)
Compiling radicle v0.23.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle)
Compiling radicle-windows v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-windows)
Compiling radicle-fetch v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-fetch)
Compiling radicle-protocol v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-protocol)
Compiling radicle-cli-test v0.13.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.66s
+ 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 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-ssh)
Checking url v2.5.4
Checking git2 v0.20.4
Checking proptest v1.9.0
Checking bstr v1.12.0
Checking gix-validate v0.11.0
Checking git-ref-format-core v0.6.0
Checking gix-path v0.11.1
Checking gix-features v0.46.1
Compiling amplify_syn v2.0.1
Compiling data-encoding-macro-internal v0.1.12
Checking gix-hash v0.22.1
Checking radicle-git-ref-format v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-ref-format)
Checking gix-error v0.1.0
Checking gix-hashtable v0.12.0
Checking radicle-oid v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-oid)
Checking data-encoding-macro v0.1.14
Checking gix-error v0.0.0
Checking multibase v0.9.1
Checking radicle-dag v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-dag)
Checking radicle-git-metadata v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-metadata)
Checking gix-date v0.14.0
Compiling amplify_derive v4.0.0
Checking chrono v0.4.38
Checking radicle-localtime v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/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 gix-command v0.7.1
Checking gix-commitgraph v0.32.0
Checking gix-revwalk v0.27.0
Checking gix-lock v21.0.1
Checking gix-url v0.35.1
Checking amplify v4.6.0
Checking gix-revwalk v0.26.0
Checking gix-config-value v0.17.1
Checking gix-diff v0.58.0
Checking gix-traverse v0.52.0
Checking gix-prompt v0.13.1
Checking cyphergraphy v0.3.0
Checking gix-revision v0.41.0
Checking radicle-signals v0.11.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-signals)
Checking gix-glob v0.24.0
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking gix-packetline v0.21.1
Checking regex v1.11.1
Checking socks5-client v0.4.1
Checking gix-transport v0.54.0
Checking gix-refspec v0.37.0
Checking cyphernet v0.5.2
Checking tree-sitter v0.24.4
Checking radicle-crypto v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-crypto)
Checking gix-pack v0.65.0
Checking git-ref-format v0.6.0
Checking gix-credentials v0.36.0
Checking gix-shallow v0.8.1
Checking radicle-core v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-core)
Checking radicle-cob v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cob)
Checking gix-ref v0.59.0
Checking gix-negotiate v0.27.0
Checking radicle-git-ext v0.12.0
Checking uuid v1.20.0
Checking radicle v0.23.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle)
Checking gix-protocol v0.57.0
Compiling radicle-cli v0.20.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli)
Checking gix-odb v0.75.0
Checking human-panic v2.0.6
Checking radicle-surf v0.27.0
Checking tree-sitter-toml-ng v0.6.0
Checking radicle-term v0.17.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-term)
Checking tree-sitter-highlight v0.24.4
Checking radicle-systemd v0.12.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-systemd)
Documenting radicle-systemd v0.12.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-systemd)
Documenting radicle v0.23.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle)
Documenting radicle-term v0.17.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-term)
Documenting radicle-cob v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cob)
Documenting radicle-core v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-core)
Documenting radicle-crypto v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-crypto)
Documenting radicle-signals v0.11.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-signals)
Documenting radicle-oid v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-oid)
Documenting radicle-git-ref-format v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-ref-format)
Documenting radicle-localtime v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-localtime)
Documenting radicle-ssh v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-dag)
Documenting radicle-git-metadata v0.2.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-git-metadata)
Documenting radicle-windows v0.1.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-windows)
Checking radicle-fetch v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-fetch)
Documenting radicle-cli v0.20.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli)
Documenting radicle-cli-test v0.13.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-cli-test)
Checking radicle-protocol v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-protocol)
Documenting radicle-protocol v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-protocol)
Documenting radicle-node v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-node)
Documenting radicle-fetch v0.19.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-fetch)
Documenting radicle-schemars v0.7.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-schemars)
Documenting radicle-remote-helper v0.16.0 (/596b4c8c-2893-43cd-b523-c6548bf98e45/w/crates/radicle-remote-helper)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.45s
Generated /596b4c8c-2893-43cd-b523-c6548bf98e45/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.15s
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::securesystemslib_asserts ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_color ... ok
test cob::common::test::test_emojis ... ok
test cob::common::test::test_title ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... 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_updates ... ok
test cob::identity::test::test_identity_update_rejected ... 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_embeds_edit ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_change_state ... 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_create_and_reassign ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_label ... 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_react ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::cache::tests::test_get ... 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::issue::test::test_issue_reply ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_review_edit ... ok
test cob::patch::test::test_patch_review_duplicate ... 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_patch_review_edit_comment ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::stream::tests::test_all_from_until ... ok
test cob::stream::tests::test_all_until ... ok
test cob::stream::tests::test_all_from ... ok
test cob::stream::tests::test_regression_from_until ... ok
test cob::stream::tests::test_from_until ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_redact_comment ... ok
test cob::patch::test::test_patch_review_revision_redact ... 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 cob::patch::test::test_patch_update ... ok
test identity::doc::test::test_canonical_doc ... ok
test git::canonical::tests::test_quorum_properties ... 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 identity::doc::test::test_canonical_example ... 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 identity::doc::test::test_max_delegates ... 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::features::test::test_operations ... ok
test node::db::test::test_version ... 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_policies ... ok
test node::policy::store::test::test_node_aliases ... ok
test node::policy::store::test::test_node_policy ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... 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_set_and_delete ... ok
test node::refs::store::test::test_count ... 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_resources ... ok
test node::routing::test::test_insert_and_get ... 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 cob::thread::tests::prop_ordering ... 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_synced_with_unknown_node ... ok
test node::sync::announce::test::announcer_reached_preferred_seeds ... ok
test node::sync::announce::test::announcer_with_replication_factor_zero_and_preferred_seeds ... ok
test node::sync::announce::test::announcer_timed_out ... 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_only_in_all_sets_results_in_no_seeds_error ... 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::synced_with_local_node_is_ignored ... ok
test node::sync::announce::test::preferred_seeds_already_synced ... 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::announce::test::synced_with_same_node_multiple_times ... 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::could_not_reach_target ... ok
test node::sync::fetch::test::all_nodes_are_fetchable ... ok
test node::sync::fetch::test::reaches_target_of_max_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::sync::fetch::test::reaches_target_of_preferred_seeds ... 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 node::sync::fetch::test::reaches_target_of_replicas ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_fork ... ok
test storage::git::tests::test_references_of ... ok
test rad::tests::test_init ... 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 storage::git::tests::test_sign_refs ... ok
test profile::config::test::schema ... 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 storage::refs::sigrefs::property::idempotent ... ok
test identity::doc::test::prop_encode_decode ... 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.34s
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_nid ... ok
test commands::block::args::test::should_parse_rid ... ok
test commands::clone::args::test::should_parse_rid_non_urn ... ok
test commands::clone::args::test::should_parse_rid_urn ... ok
test commands::cob::args::test::should_allow_log_json_format ... ok
test commands::clone::args::test::should_parse_rid_url ... ok
test commands::cob::args::test::should_allow_show_json_format ... ok
test commands::cob::args::test::should_allow_log_pretty_format ... ok
test commands::cob::args::test::should_allow_update_json_format ... ok
test commands::fork::args::test::should_not_parse_rid_url ... ok
test commands::fork::args::test::should_parse_rid_non_urn ... ok
test commands::cob::args::test::should_not_allow_update_pretty_format ... ok
test commands::fork::args::test::should_parse_rid_urn ... ok
test commands::id::args::test::should_not_parse_into_payload - should panic ... ok
test commands::id::args::test::should_not_parse_single_payload ... ok
test commands::cob::args::test::should_not_allow_show_pretty_format ... ok
test commands::id::args::test::should_not_clobber_payload_args ... ok
test commands::id::args::test::should_parse_into_payload ... ok
test commands::id::args::test::should_not_parse_single_payloads ... ok
test commands::id::args::test::should_parse_multiple_payloads ... ok
test commands::init::args::test::should_parse_rid_non_urn ... ok
test commands::init::args::test::should_not_parse_rid_url ... ok
test commands::init::args::test::should_parse_rid_urn ... ok
test commands::id::args::test::should_parse_single_payload ... 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::patch::review::builder::tests::test_review_comments_split_hunk ... ok
test commands::patch::review::builder::tests::test_review_comments_multiline ... ok
test commands::publish::args::test::should_not_parse_rid_url ... ok
test commands::publish::args::test::should_parse_rid_urn ... ok
test commands::publish::args::test::should_parse_rid_non_urn ... ok
test commands::inspect::test::test_tree ... ok
test commands::watch::args::test::should_parse_ref_str ... ok
test git::pretty_diff::test::test_pretty ... ignored
test terminal::args::test::should_not_parse ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test terminal::args::test::should_parse_nid ... ok
test terminal::args::test::should_parse_rid ... ok
test terminal::format::test::test_bytes ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... 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::clone::rad_clone_bare ... ok
test commands::clone::rad_clone ... ok
test commands::checkout::rad_checkout ... 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::rad_clone_connect ... ok
test commands::clone::rad_clone_partial_fail ... ok
test commands::cob::rad_cob_multiset ... ok
test commands::clone::test_clone_without_seeds ... ok
test commands::cob::rad_cob_log ... ok
test commands::cob::rad_cob_operations ... ok
test commands::cob::rad_cob_migrate ... ok
test commands::cob::rad_cob_show ... ok
test commands::cob::rad_cob_update_identity ... ok
test commands::cob::rad_cob_update ... ok
test commands::cob::test_cob_deletion ... ok
test commands::cob::test_cob_replication ... ok
test commands::git::git_push_and_fetch ... ok
test commands::git::git_push_amend ... 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_tag ... ok
test commands::git::git_push_converge ... 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_threshold ... ok
test commands::id::rad_id_unknown_field ... 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_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::id::rad_id_unauthorized_delegate ... ok
test commands::init::rad_init_existing_bare ... ok
test commands::init::rad_init_no_git ... 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::inbox::rad_inbox ... ok
test commands::init::rad_init_private_seed ... ok
test commands::init::rad_init_sync_not_connected ... ok
test commands::init::rad_init_with_existing_remote ... ok
test commands::init::rad_init_sync_preferred ... 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::patch::rad_merge_no_ff ... ok
test commands::node::rad_node ... 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::patch::rad_patch_checkout_force ... ok
test commands::init::rad_init_sync_timeout ... ok
test commands::patch::rad_patch_detached_head ... ok
test commands::init::rad_init_sync_and_clone ... 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_delete ... ok
test commands::patch::rad_patch_fetch_1 ... ok
test commands::patch::rad_patch_revert_merge ... ok
test commands::patch::rad_patch_update ... ok
test commands::patch::rad_patch_open_explore ... 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_unseed_many ... ok
test commands::policy::rad_seed_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 ----
1774882640 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-init:28: `rad init` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-init:35: `rad ls` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-init:46: `rad node inventory` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:6: `git checkout -b alice/1 -q` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:7: `git commit --allow-empty -m Changes #1 -q` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:8: `git push rad -o patch.message=Changes HEAD:refs/patches` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:12: `git checkout master -q` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:13: `git branch -D alice/1 -q` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:14: `git update-ref -d refs/remotes/rad/alice/1` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:15: `git update-ref -d refs/remotes/rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:16: `git gc --prune=now` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:17: `git branch -r` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:22: `git pull` @ /tmp/.tmpeYo5yL/alice/work
1774882640 test: rad-patch-fetch-2:24: `git branch -r` @ /tmp/.tmpeYo5yL/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 ----
1774882641 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-init:28: `rad init` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-init:35: `rad ls` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-init:46: `rad node inventory` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:7: `git checkout -b feature/1` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:9: `git commit -a -m Add things -q --allow-empty` @ /tmp/.tmpiHapkU/alice/work
1774882641 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/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:22: `rad patch show 6035d2f582afbe01ff23ea87528ae523d76875b6` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:45: `git branch -vv` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:53: `git status --short --branch` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:55: `git fetch` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:56: `git push` @ /tmp/.tmpiHapkU/alice/work
1774882641 test: rad-patch-via-push:62: `git show-ref` @ /tmp/.tmpiHapkU/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 68.04s
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.01s
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 tests::parse_refstr ... ok
test type_name::test::invalid_typenames ... ok
test type_name::test::valid_typenames ... ok
test tests::git::list_cobs ... 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::valid ... ok
test repo::test::invalid ... ok
test repo::serde_impls::test::assert_prop_roundtrip_serde_json ... ok
test repo::test::assert_prop_roundtrip_parse ... 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_key ... ok
test ssh::fmt::test::test_fingerprint ... 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.83s
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_diamond ... ok
test tests::test_cycle ... ok
test tests::test_fold_diamond ... ok
test tests::test_fold_reject ... ok
test tests::test_complex ... ok
test tests::test_fold_multiple_roots ... ok
test tests::test_fold_sorting_1 ... ok
test tests::test_fold_sorting_2 ... 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_remove ... ok
test tests::test_siblings ... ok
test tests::test_prune_by_sorting ... 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_committer ... ok
test commit::parse::test::error::invalid_format_continuation_without_preceding_header ... ok
test commit::parse::test::error::invalid_author ... ok
test commit::parse::test::error::invalid_parent ... 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::missing_tree_empty_header ... ok
test commit::parse::test::error::missing_tree_wrong_first_line ... ok
test commit::parse::test::error::missing_header_body_separator ... ok
test commit::parse::test::success::commit_last_paragraph_kept_in_message_when_not_all_trailers ... 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_with_multiline_gpgsig ... ok
test commit::parse::test::success::commit_with_single_parent ... ok
test commit::parse::test::success::commit_with_trailers ... ok
test commit::parse::test::success::merge_commit ... ok
test commit::parse::test::success::root_commit ... ok
test commit::parse::test::unit::body_last_paragraph_not_trailers_stays_in_message ... ok
test commit::parse::test::success::roundtrip ... ok
test commit::parse::test::unit::body_no_paragraph_separator_means_no_trailers ... ok
test commit::parse::test::unit::trailers_rejects_invalid_token_chars ... ok
test commit::parse::test::unit::trailers_accepts_empty_input ... 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::component_invalid - should panic ... ok
test test::qualified_invalid - should panic ... ok
test test::qualified_pattern ... ok
test test::qualified ... ok
test test::qualified_pattern_invalid - should panic ... ok
test test::refname ... ok
test test::refname_invalid - should panic ... 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 control::tests::test_control_socket ... ok
test fingerprint::tests::matching ... ok
test reactor::timer::tests::test_wake_exact ... 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_block_active_connection ... ok
test tests::e2e::test_block_prevents_connection ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_block_prevents_fetch ... ok
test tests::e2e::test_clone ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_fetch_followed_remotes ... ok
test tests::e2e::test_connection_crossing ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_fetch_unseeded ... 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_replication_invalid ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast ... 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_followed ... ok
test tests::test_refs_announcement_fetch_trusted_no_inventory ... 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_refs_announcement_relay_public ... ok
test tests::test_refs_synced_event ... ok
test tests::test_seeding ... 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 git2::test::zero ... ok
test gix::test::zero ... ok
test str::test::fixture ... ok
test fmt::test::gix ... ok
test fmt::test::git2 ... ok
test str::test::git2_roundtrip ... ok
test str::test::zero ... 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::rejection ... ok
test fetcher::test::queue::properties::capacity::bounded ... 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::capacity::capacity_reached_returns_same_item ... 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::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::merge::combines_refs ... ok
test fetcher::test::queue::properties::merge::longer_timeout_preserved ... ok
test fetcher::test::queue::properties::equality::transitive ... ok
test fetcher::test::queue::properties::merge::does_not_increase_queue_length ... 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::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::queue::properties::merge::empty_refs_fetches_all ... ok
test fetcher::test::state::command::fetch::fetch_different_repo_same_node_within_capacity ... ok
test fetcher::test::state::command::fetch::fetch_duplicate_returns_already_fetching ... ok
test fetcher::test::state::command::fetch::fetch_queue_merge_empty_refs_fetches_all ... ok
test fetcher::test::state::command::fetch::fetch_queue_merge_takes_longer_timeout ... 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_same_repo_different_nodes_queues_second ... ok
test fetcher::test::state::command::fetch::fetch_start_first_fetch_for_node ... ok
test fetcher::test::state::command::fetch::fetch_same_repo_different_refs_enqueues ... ok
test fetcher::test::state::command::fetched::complete_one_of_multiple ... ok
test fetcher::test::state::command::fetched::complete_single_ongoing ... ok
test fetcher::test::state::command::fetched::complete_then_dequeue_fifo ... ok
test fetcher::test::state::command::fetched::non_existent_returns_not_found ... ok
test fetcher::test::state::concurrent::fetched_then_cancel ... 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::queue::properties::merge::succeed_when_at_capacity ... ok
test fetcher::test::state::invariant::queue_integrity_after_merge ... ok
test fetcher::test::state::multinode::independent_queues ... ok
test service::filter::test::compatible ... ok
test service::filter::test::test_parameters ... ok
test service::filter::test::test_sizes ... ok
test service::gossip::store::test::test_announced ... ok
test service::limiter::test::test_limiter_different_rates ... ok
test service::limiter::test::test_limiter_multi ... ok
test service::limiter::test::test_limiter_refill ... ok
test fetcher::test::queue::properties::merge::same_rid_merges_anywhere_in_queue ... ok
test fetcher::test::state::config::high_concurrency ... ok
test service::message::tests::test_inventory_limit ... 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.64s
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_empty ... ok
test protocol::tests::test_fetch_whitespace ... ok
test protocol::tests::test_list ... ok
test protocol::tests::test_list_for_push ... ok
test protocol::tests::test_option ... ok
test protocol::tests::test_option_whitespace_preservation ... ok
test protocol::tests::test_push ... ok
test protocol::tests::test_push_delete ... ok
test protocol::tests::test_push_force ... ok
test protocol::tests::test_invalid ... 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 ansi::tests::colors_disabled ... ok
test cell::test::test_width ... ok
test ansi::tests::colors_enabled ... ok
test ansi::tests::wrapping ... ok
test element::test::test_spaced ... ok
test element::test::test_width ... ok
test element::test::test_truncate ... 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_truncate ... ok
test table::test::test_table_unicode ... ok
test table::test::test_truncate ... ok
test table::test::test_table_unicode_truncate ... ok
test table::test::test_table_border_truncated ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test vstack::test::test_vstack ... ok
test vstack::test::test_vstack_maximize ... ok
test textarea::test::test_wrapping_paragraphs ... 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>::truncate (line 50) ... 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>::push (line 122) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... 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>::with_capacity (line 66) ... 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"
}