rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood363faa0c605bbea90d4285070dab2ca91afbcc1c
{
"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": "b80da5304cfc3a6449790f72fc62874b192499cc",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"title": "radicle: Add Version to User Agent",
"state": {
"status": "open",
"conflicts": []
},
"before": "b54fc820e92dd9a264267bcc07a36d5503e29887",
"after": "363faa0c605bbea90d4285070dab2ca91afbcc1c",
"commits": [
"363faa0c605bbea90d4285070dab2ca91afbcc1c"
],
"target": "b54fc820e92dd9a264267bcc07a36d5503e29887",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "b80da5304cfc3a6449790f72fc62874b192499cc",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "The main motivation behind this change is to get just a little\ntelemetry information from nodes on the network, namely the version\nof Radicle they are running.\n\nThis is achieved by rewriting `impl Default for UserAgent` which now\nuses the version information provided by the build script also used\nin other crates.\n\nAlso, a new configuration option `node.userAgent` is added, which\nallows users to override the user agent if they so please, or set\nthe value `null`, which will in turn send the user agent\n`/radicle/`, which is not really helpful, and the default prior to\nthis commit.\n\nCreations of `UserAgent` in the whole workspace is cleaned up. In\norder to do that `UserAgent::test` is introduced.",
"base": "f223afd9d7eb4d1301c7f6fe98bc06418c35c3f5",
"oid": "87a89c958d99390f195240c06e1b6bb640323d47",
"timestamp": 1775046625
},
{
"id": "6d04ea8b7eb9d864798933e9f5a021798aa9d7d5",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Rebase and add test for explicitly setting the default user agent as requested by Fintan.",
"base": "b54fc820e92dd9a264267bcc07a36d5503e29887",
"oid": "363faa0c605bbea90d4285070dab2ca91afbcc1c",
"timestamp": 1775119713
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "8802e74f-1591-4f9d-bab6-a9446613c279"
},
"info_url": "https://cci.rad.levitte.org//8802e74f-1591-4f9d-bab6-a9446613c279.html"
}
Started at: 2026-04-02 10:48:51.615760+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/8802e74f-1591-4f9d-bab6-a9446613c279/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 154 issues · 43 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout b80da5304cfc3a6449790f72fc62874b192499cc
✓ Switched to branch patch/b80da53 at revision 6d04ea8
✓ Branch patch/b80da53 setup to track rad/patches/b80da5304cfc3a6449790f72fc62874b192499cc
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 363faa0c605bbea90d4285070dab2ca91afbcc1c
HEAD is now at 363faa0c radicle: Add Version to User Agent
Exit code: 0
$ rad patch show b80da5304cfc3a6449790f72fc62874b192499cc -p
╭───────────────────────────────────────────────────────────────────────╮
│ Title radicle: Add Version to User Agent │
│ Patch b80da5304cfc3a6449790f72fc62874b192499cc │
│ Author lorenz z6MkkPv…WX5sTEz │
│ Head 363faa0c605bbea90d4285070dab2ca91afbcc1c │
│ Base b54fc820e92dd9a264267bcc07a36d5503e29887 │
│ Branches patch/b80da53 │
│ Commits ahead 1, behind 0 │
│ Status open │
│ │
│ The main motivation behind this change is to get just a little │
│ telemetry information from nodes on the network, namely the version │
│ of Radicle they are running. │
│ │
│ This is achieved by rewriting `impl Default for UserAgent` which now │
│ uses the version information provided by the build script also used │
│ in other crates. │
│ │
│ Also, a new configuration option `node.userAgent` is added, which │
│ allows users to override the user agent if they so please, or set │
│ the value `null`, which will in turn send the user agent │
│ `/radicle/`, which is not really helpful, and the default prior to │
│ this commit. │
│ │
│ Creations of `UserAgent` in the whole workspace is cleaned up. In │
│ order to do that `UserAgent::test` is introduced. │
├───────────────────────────────────────────────────────────────────────┤
│ 363faa0 radicle: Add Version to User Agent │
├───────────────────────────────────────────────────────────────────────┤
│ ● Revision b80da53 @ 87a89c9 by lorenz z6MkkPv…WX5sTEz 20 hours ago │
│ ↑ Revision 6d04ea8 @ 363faa0 by lorenz z6MkkPv…WX5sTEz 20 seconds ago │
╰───────────────────────────────────────────────────────────────────────╯
commit 363faa0c605bbea90d4285070dab2ca91afbcc1c
Author: Lorenz Leutgeb <lorenz.leutgeb@radicle.xyz>
Date: Wed Apr 1 11:11:58 2026 +0200
radicle: Add Version to User Agent
The main motivation behind this change is to get just a little
telemetry information from nodes on the network, namely the version
of Radicle they are running.
This is achieved by rewriting `impl Default for UserAgent` which now
uses the version information provided by the build script also used
in other crates.
Also, a new configuration option `node.userAgent` is added, which
allows users to override the user agent if they so please, or set
the value `null`, which will in turn send the user agent
`/radicle/`, which is not really helpful, and the default prior to
this commit.
Creations of `UserAgent` in the whole workspace is cleaned up. In
order to do that `UserAgent::test` is introduced.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c05b83f1b..6f07b5b03 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## New Features
+
+- Nodes will now advertise the version of Radicle they are running in the node
+ announcement as part of the "user agent", which is shared among the network.
+ For example, the value that will be shared by Radicle 1.9.0 will be
+ `/radicle:1.9.0/`. This value is also customizable by node operators via the
+ configuration value `node.userAgent`. Refer to `rad config schema` for more
+ information on the possible values. Operators that choose to set a custom
+ value are asked to keep the substring `/radicle:{YOUR_VERSION}/` which allows
+ for better telemetry regarding version distribution on the network.
+ To opt-out of sending any meaningful user agent, set `node.userAgent = null`.
+
## 1.8.0
## New Features
diff --git a/crates/radicle-cli/examples/rad-config.md b/crates/radicle-cli/examples/rad-config.md
index 358aa511f..6fba109c8 100644
--- a/crates/radicle-cli/examples/rad-config.md
+++ b/crates/radicle-cli/examples/rad-config.md
@@ -203,6 +203,17 @@ $ rad config schema
"description": "Node alias.",
"$ref": "#/$defs/Alias"
},
+ "userAgent": {
+ "description": "User agent string to advertise in the node announcement, which is sent out to other nodes.",
+ "anyOf": [
+ {
+ "$ref": "#/$defs/UserAgent"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
"listen": {
"description": "Socket address (a combination of IPv4 or IPv6 address and TCP port) to listen on.",
"type": "array",
@@ -329,6 +340,17 @@ $ rad config schema
"description": "Node alias, i.e. a short and memorable name for it.",
"type": "string"
},
+ "UserAgent": {
+ "description": "A user agent string that starts and ends with the symbol '/', and contains segments of the form 'client:version' separated by '/'. The client and version parts must be non-empty, and must consist of printable ASCII characters excluding '/' and ':'. The entire string must be at most 64 characters long.",
+ "type": "string",
+ "minLength": 3,
+ "maxLength": 64,
+ "examples": [
+ "/radicle:1.9.0/",
+ "/example:42.0.0/other-client:2.3.4/"
+ ],
+ "pattern": "^/([^:///s]+((:[^:///s]+))?/)+$"
+ },
"PeerConfig": {
"description": "Peer configuration.",
"oneOf": [
diff --git a/crates/radicle-cli/tests/util/environment.rs b/crates/radicle-cli/tests/util/environment.rs
index e01a89a21..3ad9cd736 100644
--- a/crates/radicle-cli/tests/util/environment.rs
+++ b/crates/radicle-cli/tests/util/environment.rs
@@ -6,7 +6,7 @@ use radicle::crypto::ssh::{Keystore, keystore::MemorySigner};
use radicle::crypto::{KeyPair, Seed};
use radicle::git;
use radicle::node::policy::store as policy;
-use radicle::node::{self, UserAgent};
+use radicle::node::{self};
use radicle::node::{Alias, Config, POLICIES_DB_FILE};
use radicle::profile::Home;
use radicle::profile::{self};
@@ -161,7 +161,7 @@ impl Environment {
&keypair.pk.into(),
config.node.features(),
&alias,
- &UserAgent::default(),
+ &config.node.user_agent(),
LocalTime::now().into(),
config.node.external_addresses.iter(),
)
diff --git a/crates/radicle-node/src/lib.rs b/crates/radicle-node/src/lib.rs
index 3082aedeb..53bb3bb1b 100644
--- a/crates/radicle-node/src/lib.rs
+++ b/crates/radicle-node/src/lib.rs
@@ -19,15 +19,11 @@ pub mod tests;
extern crate radicle_localtime as localtime;
-use std::str::FromStr;
-use std::sync::LazyLock;
-
use radicle::version::Version;
pub use localtime::{LocalDuration, LocalTime};
pub use radicle::node::Link;
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;
@@ -40,12 +36,6 @@ pub const VERSION: Version = Version {
timestamp: env!("SOURCE_DATE_EPOCH"),
};
-/// This node's user agent string.
-pub static USER_AGENT: LazyLock<UserAgent> = LazyLock::new(|| {
- FromStr::from_str(format!("/radicle:{}/", VERSION.version).as_str())
- .expect("user agent is valid")
-});
-
pub mod prelude {
pub use crate::crypto::{PublicKey, Signature};
pub use crate::identity::{Did, RepoId};
diff --git a/crates/radicle-node/src/runtime.rs b/crates/radicle-node/src/runtime.rs
index b824d7198..328c547f5 100644
--- a/crates/radicle-node/src/runtime.rs
+++ b/crates/radicle-node/src/runtime.rs
@@ -3,6 +3,7 @@ pub mod thread;
use std::fmt::Debug;
use std::path::PathBuf;
+use std::str::FromStr as _;
use std::{fs, io, net};
#[cfg(unix)]
@@ -197,7 +198,7 @@ impl Runtime {
radicle::node::Features::SEED,
&alias,
0,
- &UserAgent::default(),
+ &UserAgent::from_str("/radicle/fake/bootstrap/").expect("valid user agent"),
clock.into(),
[node::KnownAddress::new(addr, address::Source::Bootstrap)],
)?;
diff --git a/crates/radicle-node/src/test/gossip.rs b/crates/radicle-node/src/test/gossip.rs
index 87d2698a6..4a774a32f 100644
--- a/crates/radicle-node/src/test/gossip.rs
+++ b/crates/radicle-node/src/test/gossip.rs
@@ -1,5 +1,3 @@
-use std::str::FromStr;
-
use radicle::node;
use radicle::node::UserAgent;
use radicle::node::device::Device;
@@ -34,7 +32,7 @@ pub fn messages(count: usize, now: LocalTime, delta: LocalDuration) -> Vec<Messa
alias: node::Alias::new(r#gen::string(5)),
addresses: None.into(),
nonce: 0,
- agent: UserAgent::from_str("/radicle:test/").unwrap(),
+ agent: UserAgent::test(),
}
.solve(0)
.unwrap(),
diff --git a/crates/radicle-node/src/test/peer.rs b/crates/radicle-node/src/test/peer.rs
index 80378b378..df7b48546 100644
--- a/crates/radicle-node/src/test/peer.rs
+++ b/crates/radicle-node/src/test/peer.rs
@@ -320,7 +320,7 @@ where
alias: Alias::from_str(self.name).unwrap(),
addresses: Some(net::SocketAddr::from((self.ip, node::DEFAULT_PORT)).into()).into(),
nonce: 0,
- agent: UserAgent::from_str("/radicle:test/").unwrap(),
+ agent: UserAgent::test(),
}
.solve(0)
.unwrap(),
diff --git a/crates/radicle-protocol/src/service/gossip.rs b/crates/radicle-protocol/src/service/gossip.rs
index 1efe073b1..65e7a8fca 100644
--- a/crates/radicle-protocol/src/service/gossip.rs
+++ b/crates/radicle-protocol/src/service/gossip.rs
@@ -1,21 +1,11 @@
pub mod store;
-use std::str::FromStr;
-use std::sync::LazyLock;
-
use super::*;
use crate::bounded::BoundedVec;
use radicle::node::PROTOCOL_VERSION;
-use radicle::node::UserAgent;
pub use store::{AnnouncementId, Error, RelayStatus, Store};
-/// This node's user agent string.
-pub static PROTOCOL_VERSION_STRING: LazyLock<UserAgent> = LazyLock::new(|| {
- FromStr::from_str(format!("/radicle:{PROTOCOL_VERSION}/").as_str())
- .expect("user agent is valid")
-});
-
pub fn node(config: &Config, timestamp: Timestamp) -> NodeAnnouncement {
let features = config.features();
let alias = config.alias.clone();
@@ -24,7 +14,9 @@ pub fn node(config: &Config, timestamp: Timestamp) -> NodeAnnouncement {
.clone()
.try_into()
.expect("external addresses are within the limit");
- let agent = PROTOCOL_VERSION_STRING.clone();
+
+ let agent = config.user_agent();
+
let version = PROTOCOL_VERSION;
NodeAnnouncement {
diff --git a/crates/radicle-protocol/src/service/message.rs b/crates/radicle-protocol/src/service/message.rs
index cca54ded8..ed515fe28 100644
--- a/crates/radicle-protocol/src/service/message.rs
+++ b/crates/radicle-protocol/src/service/message.rs
@@ -1,3 +1,4 @@
+use std::str::FromStr;
use std::{fmt, mem};
use bytes::{Buf, BufMut};
@@ -142,7 +143,9 @@ impl wire::Decode for NodeAnnouncement {
let nonce = u64::decode(buf)?;
let agent = match UserAgent::decode(buf) {
Ok(ua) => ua,
- Err(wire::Error::UnexpectedEnd { .. }) => UserAgent::default(),
+ Err(wire::Error::UnexpectedEnd { .. }) => {
+ UserAgent::from_str("/radicle/fake/truncated/").expect("valid user agent")
+ }
Err(e) => return Err(e),
};
@@ -683,7 +686,6 @@ impl qcheck::Arbitrary for ZeroBytes {
#[cfg(test)]
#[allow(clippy::unwrap_used)]
mod tests {
- use std::str::FromStr;
use fastrand;
use localtime::LocalTime;
@@ -784,12 +786,12 @@ mod tests {
alias: Alias::new("alice"),
addresses: BoundedVec::new(),
nonce: 0,
- agent: UserAgent::from_str("/heartwood:1.0.0/").unwrap(),
+ agent: UserAgent::test(),
};
- assert_eq!(ann.work(), 1);
+ assert_eq!(ann.work(), 2);
assert_eq!(ann.clone().solve(1).unwrap().work(), 1);
- assert_eq!(ann.clone().solve(8).unwrap().work(), 10);
+ assert_eq!(ann.clone().solve(8).unwrap().work(), 8);
assert_eq!(ann.solve(14).unwrap().work(), 14);
}
}
diff --git a/crates/radicle/build.rs b/crates/radicle/build.rs
new file mode 120000
index 000000000..c6b197af8
--- /dev/null
+++ b/crates/radicle/build.rs
@@ -0,0 +1 @@
+../../build.rs
\ No newline at end of file
diff --git a/crates/radicle/src/node.rs b/crates/radicle/src/node.rs
index 25f344b2e..b2181f740 100644
--- a/crates/radicle/src/node.rs
+++ b/crates/radicle/src/node.rs
@@ -220,18 +220,56 @@ impl PartialOrd for SyncStatus {
/// Node user agent.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Serialize, Deserialize)]
-pub struct UserAgent(String);
+#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
+#[cfg_attr(
+ feature = "schemars",
+ schemars(description = "\
+ A user agent string that starts and ends with the symbol '/', and contains segments of the form 'client:version' separated by '/'. \
+ The client and version parts must be non-empty, and must consist of printable ASCII characters excluding '/' and ':'. \
+ The entire string must be at most 64 characters long.",
+ extend(
+ "examples" = [
+ "/radicle:1.9.0/",
+ "/example:42.0.0/other-client:2.3.4/",
+ ],
+ "pattern" = r"^/([^:/\s]+((:[^:/\s]+))?/)+$",
+ ),
+))]
+pub struct UserAgent(
+ #[cfg_attr(feature = "schemars", schemars(
+ length(min = 3, max = UserAgent::LEN_MAX),
+ ))]
+ String,
+);
impl UserAgent {
+ const LEN_MAX: usize = 64;
+
/// Return a reference to the user agent string.
pub fn as_str(&self) -> &str {
self.0.as_str()
}
+
+ /// Return a user agent that can be used for testing purposes.
+ #[cfg(any(test, feature = "test"))]
+ pub fn test() -> Self {
+ UserAgent("/radicle:test/".to_owned())
+ }
}
impl Default for UserAgent {
fn default() -> Self {
- UserAgent(String::from("/radicle/"))
+ const NAME: &str = env!("CARGO_PKG_NAME");
+ const VERSION: &str = env!("RADICLE_VERSION");
+
+ // The length check can be performed at compile time.
+ #[allow(clippy::int_plus_one)]
+ const _: () = assert!(1 + NAME.len() + 1 + VERSION.len() + 1 <= UserAgent::LEN_MAX);
+
+ // All other checks are performed by the `FromStr` implementation
+ // at run time.
+ UserAgent::from_str(&format!("/{NAME}:{VERSION}/"))
+ .expect("default user agent should be valid")
}
}
@@ -247,7 +285,7 @@ impl FromStr for UserAgent {
fn from_str(input: &str) -> Result<Self, Self::Err> {
let reserved = ['/', ':'];
- if input.len() > 64 {
+ if input.len() > UserAgent::LEN_MAX {
return Err(input.to_owned());
}
let Some(s) = input.strip_prefix('/') else {
@@ -1502,6 +1540,7 @@ mod test {
assert!(UserAgent::from_str("/radicle/").is_ok());
assert!(UserAgent::from_str("/rad/icle/").is_ok());
assert!(UserAgent::from_str("/rad:ic/le/").is_ok());
+ assert!(UserAgent::from_str("/heartwood:1.8.0-6-gf223afd9d-dirty/").is_ok());
assert!(UserAgent::from_str("/:/").is_err());
assert!(UserAgent::from_str("//").is_err());
diff --git a/crates/radicle/src/node/config.rs b/crates/radicle/src/node/config.rs
index 16c46486c..d82ae479b 100644
--- a/crates/radicle/src/node/config.rs
+++ b/crates/radicle/src/node/config.rs
@@ -8,8 +8,8 @@ use localtime::LocalDuration;
use serde::{Deserialize, Serialize};
use serde_json as json;
-use crate::node;
use crate::node::policy::SeedingPolicy;
+use crate::node::{self, UserAgent};
use crate::node::{Address, Alias, NodeId};
use crate::storage::refs::FeatureLevel;
@@ -530,6 +530,12 @@ impl Fetch {
pub struct Config {
/// Node alias.
pub alias: Alias,
+ /// User agent string to advertise in the node announcement, which is sent out to other nodes.
+ #[serde(
+ default = "crate::serde_ext::some_default::<UserAgent>",
+ skip_serializing_if = "crate::serde_ext::is_some_default"
+ )]
+ pub user_agent: Option<UserAgent>,
/// Socket address (a combination of IPv4 or IPv6 address and TCP port) to listen on.
#[serde(default)]
#[cfg_attr(feature = "schemars", schemars(example = &"127.0.0.1:8776"))]
@@ -603,6 +609,7 @@ impl Config {
pub fn new(alias: Alias) -> Self {
Self {
alias,
+ user_agent: Some(UserAgent::default()),
peers: PeerConfig::default(),
listen: vec![],
connect: HashSet::default(),
@@ -652,6 +659,15 @@ impl Config {
pub fn features(&self) -> node::Features {
node::Features::SEED
}
+
+ /// Return the configured user agent, if set. Otherwise fall back to the
+ /// unintetesting value `"/radicle/"`.
+ pub fn user_agent(&self) -> UserAgent {
+ match self.user_agent.as_ref() {
+ Some(agent) => agent.clone(),
+ None => UserAgent::from_str("/radicle/").expect("valid user agent"),
+ }
+ }
}
#[derive(Clone, Copy, Debug, Display, Deserialize, Serialize, From)]
@@ -781,7 +797,7 @@ wrapper!(
#[allow(clippy::unwrap_used)]
mod test {
use super::{DefaultSeedingPolicy, Scope};
- use crate::node::{Alias, policy};
+ use crate::node::{Alias, UserAgent, policy};
use serde_json::json;
#[test]
@@ -974,4 +990,56 @@ mod test {
.unwrap();
assert_eq!(super::AddressConfig::Drop, actual.onion);
}
+
+ #[test]
+ fn user_agent_opt_out() {
+ let actual: super::Config = serde_json::from_value(json!({
+ "alias": "radicle",
+ "userAgent": null,
+ }))
+ .unwrap();
+ assert_eq!(None, actual.user_agent);
+ }
+
+ #[test]
+ fn user_agent_default() {
+ let actual: super::Config = serde_json::from_value(json!({
+ "alias": "radicle",
+ }))
+ .unwrap();
+ assert_eq!(Some(UserAgent::default()), actual.user_agent);
+ }
+
+ #[test]
+ fn user_agent_custom() {
+ use std::str::FromStr as _;
+
+ let actual: super::Config = serde_json::from_value(json!({
+ "alias": "radicle",
+ "userAgent": "/example:0.1.0/",
+ }))
+ .unwrap();
+ assert_eq!(
+ Some(UserAgent::from_str("/example:0.1.0/").unwrap()),
+ actual.user_agent
+ );
+ }
+
+ #[test]
+ fn user_agent_default_explicit() {
+ use std::str::FromStr as _;
+
+ let default_as_string = UserAgent::default().to_string();
+ assert!(default_as_string.contains(":"));
+
+ let actual: super::Config = serde_json::from_value(json!({
+ "alias": "radicle",
+ "userAgent": default_as_string,
+ }))
+ .unwrap();
+ assert_eq!(
+ Some(UserAgent::from_str(&default_as_string).unwrap()),
+ actual.user_agent
+ );
+ }
}
diff --git a/crates/radicle/src/profile.rs b/crates/radicle/src/profile.rs
index bf029b1dc..ef3eeb787 100644
--- a/crates/radicle/src/profile.rs
+++ b/crates/radicle/src/profile.rs
@@ -28,9 +28,7 @@ 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::{
- Alias, AliasStore, Handle as _, Node, UserAgent, notifications, policy, policy::Scope,
-};
+use crate::node::{Alias, AliasStore, Handle as _, Node, notifications, policy, policy::Scope};
use crate::prelude::{Did, NodeId, RepoId};
use crate::storage::ReadRepository;
use crate::storage::git::Storage;
@@ -257,7 +255,8 @@ impl Profile {
&public_key,
config.node.features(),
&config.node.alias,
- &UserAgent::default(),
+ #[allow(deprecated)]
+ &config.node.user_agent(),
LocalTime::now().into(),
config.node.external_addresses.iter(),
)?;
diff --git a/crates/radicle/src/serde_ext.rs b/crates/radicle/src/serde_ext.rs
index b1b06d235..0ee041ec5 100644
--- a/crates/radicle/src/serde_ext.rs
+++ b/crates/radicle/src/serde_ext.rs
@@ -56,3 +56,15 @@ where
use serde::Deserialize as _;
Ok(Option::deserialize(deserializer)?.unwrap_or_default())
}
+
+/// A helper that makes it easy to use `Option<T>` with the `serde(default)`
+/// attribute, in case a default of `Some(T::default())` is desired instead
+/// of `None`.
+pub(crate) fn some_default<T: Default>() -> Option<T> {
+ Some(T::default())
+}
+
+/// Like [`is_default`], but for use in combination with [`some_default`].
+pub(crate) fn is_some_default<T: Default + PartialEq>(t: &Option<T>) -> bool {
+ t.as_ref() == Some(&T::default())
+}
diff --git a/crates/radicle/src/test/arbitrary.rs b/crates/radicle/src/test/arbitrary.rs
index d08e0954e..449102d07 100644
--- a/crates/radicle/src/test/arbitrary.rs
+++ b/crates/radicle/src/test/arbitrary.rs
@@ -276,7 +276,12 @@ impl Arbitrary for Timestamp {
impl Arbitrary for UserAgent {
fn arbitrary(g: &mut qcheck::Gen) -> Self {
UserAgent::from_str(
- format!("/radicle:1.{}.{}/", u8::arbitrary(g), u8::arbitrary(g)).as_str(),
+ format!(
+ "/radicle:1.{}.{}/fake/arbitrary/",
+ u8::arbitrary(g),
+ u8::arbitrary(g)
+ )
+ .as_str(),
)
.unwrap()
}
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 8802e74f-1591-4f9d-bab6-a9446613c279 -v /opt/radcis/ci.rad.levitte.org/cci/state/8802e74f-1591-4f9d-bab6-a9446613c279/s:/8802e74f-1591-4f9d-bab6-a9446613c279/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/8802e74f-1591-4f9d-bab6-a9446613c279/w:/8802e74f-1591-4f9d-bab6-a9446613c279/w -w /8802e74f-1591-4f9d-bab6-a9446613c279/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /8802e74f-1591-4f9d-bab6-a9446613c279/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 ahash v0.8.11
Downloaded derive_more v2.0.1
Downloaded getrandom v0.2.15
Downloaded filetime v0.2.23
Downloaded erased-serde v0.4.6
Downloaded base64 v0.22.1
Downloaded gix-error v0.0.0
Downloaded gix-utils v0.3.1
Downloaded fluent-uri v0.3.2
Downloaded gix-trace v0.1.18
Downloaded gix-negotiate v0.27.0
Downloaded icu_provider v1.5.0
Downloaded gix-validate v0.11.0
Downloaded gix-config-value v0.17.1
Downloaded jobserver v0.1.31
Downloaded indicatif v0.18.0
Downloaded humantime v2.3.0
Downloaded lock_api v0.4.14
Downloaded gix-shallow v0.8.1
Downloaded keccak v0.1.6
Downloaded gix-prompt v0.13.1
Downloaded itoa v1.0.17
Downloaded gix-hashtable v0.12.0
Downloaded clap v4.5.44
Downloaded outref v0.5.2
Downloaded nu-ansi-term v0.50.3
Downloaded pbkdf2 v0.12.2
Downloaded noise-framework v0.4.0
Downloaded num-traits v0.2.19
Downloaded quick-error v1.2.3
Downloaded num-complex v0.4.6
Downloaded qcheck-macros v1.0.0
Downloaded polyval v0.6.2
Downloaded radicle-std-ext v0.2.0
Downloaded rfc6979 v0.4.0
Downloaded ref-cast-impl v1.0.24
Downloaded pin-project-lite v0.2.16
Downloaded scrypt v0.11.0
Downloaded scopeguard v1.2.0
Downloaded hmac v0.12.1
Downloaded rand_xorshift v0.4.0
Downloaded sha1 v0.10.6
Downloaded snapbox-macros v0.3.8
Downloaded signature v1.6.4
Downloaded sha2 v0.10.8
Downloaded siphasher v1.0.1
Downloaded proc-macro2 v1.0.101
Downloaded socks5-client v0.4.1
Downloaded stable_deref_trait v1.2.0
Downloaded ssh-cipher v0.2.0
Downloaded maybe-async v0.2.10
Downloaded snapbox v0.4.17
Downloaded synstructure v0.13.1
Downloaded tinyvec_macros v0.1.1
Downloaded spki v0.7.3
Downloaded sqlite3-sys v0.18.0
Downloaded sqlite v0.37.0
Downloaded thiserror-impl v1.0.69
Downloaded timeago v0.4.2
Downloaded tinystr v0.7.6
Downloaded sval_fmt v2.14.1
Downloaded rustc-demangle v0.1.26
Downloaded tree-sitter-json v0.24.8
Downloaded p521 v0.13.3
Downloaded unicode-display-width v0.3.0
Downloaded typeid v1.0.3
Downloaded tree-sitter-highlight v0.24.4
Downloaded tree-sitter-language v0.1.2
Downloaded p256 v0.13.2
Downloaded value-bag-serde1 v1.11.1
Downloaded uuid-simd v0.8.0
Downloaded unit-prefix v0.5.1
Downloaded thiserror v1.0.69
Downloaded zerofrom-derive v0.1.6
Downloaded flate2 v1.1.1
Downloaded toml_writer v1.0.6+spec-1.1.0
Downloaded zerofrom v0.1.6
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded writeable v0.5.5
Downloaded walkdir v2.5.0
Downloaded zerovec-derive v0.10.3
Downloaded zeroize v1.7.0
Downloaded systemd-journal-logger v2.2.2
Downloaded tracing-log v0.2.0
Downloaded rsa v0.9.6
Downloaded tree-sitter-css v0.23.1
Downloaded ssh-key v0.6.6
Downloaded url v2.5.4
Downloaded uuid v1.20.0
Downloaded tracing-core v0.1.36
Downloaded jsonschema v0.30.0
Downloaded idna v1.0.3
Downloaded object v0.37.3
Downloaded tree-sitter-python v0.23.4
Downloaded zerovec v0.10.4
Downloaded zerocopy v0.7.35
Downloaded syn v1.0.109
Downloaded winnow v0.7.14
Downloaded tree-sitter-c v0.23.2
Downloaded vcpkg v0.2.15
Downloaded gimli v0.32.3
Downloaded unicode-width v0.2.1
Downloaded tree-sitter-rust v0.23.2
Downloaded rustix v1.1.3
Downloaded tree-sitter-md v0.3.2
Downloaded syn v2.0.106
Downloaded tracing v0.1.44
Downloaded tree-sitter-bash v0.23.3
Downloaded tree-sitter-ruby v0.23.1
Downloaded rustix v0.38.34
Downloaded regex-automata v0.4.9
Downloaded regex-syntax v0.8.5
Downloaded tracing-subscriber v0.3.22
Downloaded regex v1.11.1
Downloaded jiff v0.2.20
Downloaded sha1-checked v0.10.0
Downloaded libc v0.2.182
Downloaded proptest v1.9.0
Downloaded tokio v1.47.1
Downloaded sha3 v0.10.8
Downloaded tree-sitter-typescript v0.23.2
Downloaded git2 v0.20.4
Downloaded tree-sitter v0.24.4
Downloaded sysinfo v0.37.2
Downloaded unicode-normalization v0.1.23
Downloaded itertools v0.14.0
Downloaded icu_properties_data v1.5.1
Downloaded tree-sitter-go v0.23.4
Downloaded hashbrown v0.14.3
Downloaded hashbrown v0.16.1
Downloaded libgit2-sys v0.18.3+1.9.2
Downloaded unicode-segmentation v1.11.0
Downloaded linux-raw-sys v0.4.13
Downloaded gix-transport v0.54.0
Downloaded gix-chunk v0.6.0
Downloaded tar v0.4.40
Downloaded prodash v31.0.0
Downloaded p384 v0.13.0
Downloaded libm v0.2.8
Downloaded inquire v0.7.5
Downloaded value-bag-sval2 v1.11.1
Downloaded typenum v1.17.0
Downloaded schemars v1.0.4
Downloaded rand v0.8.5
Downloaded serde_json v1.0.140
Downloaded jiff-static v0.2.20
Downloaded gix-pack v0.65.0
Downloaded socket2 v0.5.7
Downloaded smallvec v1.15.1
Downloaded similar v2.5.0
Downloaded yansi v0.5.1
Downloaded value-bag v1.11.1
Downloaded unicode-width v0.1.11
Downloaded linux-raw-sys v0.11.0
Downloaded portable-atomic v1.11.0
Downloaded yoke v0.7.5
Downloaded sval_buffer v2.14.1
Downloaded serde_core v1.0.228
Downloaded icu_collections v1.5.0
Downloaded unarray v0.1.4
Downloaded tempfile v3.25.0
Downloaded vsimd v0.8.0
Downloaded heapless v0.8.0
Downloaded yoke-derive v0.7.5
Downloaded radicle-surf v0.27.0
Downloaded toml_datetime v0.7.5+spec-1.1.0
Downloaded sqlite3-src v0.7.0
Downloaded thread_local v1.1.9
Downloaded thiserror-impl v2.0.18
Downloaded serde_derive v1.0.228
Downloaded xattr v1.3.1
Downloaded write16 v1.0.0
Downloaded wait-timeout v0.2.1
Downloaded version_check v0.9.4
Downloaded utf8parse v0.2.2
Downloaded utf8_iter v1.0.4
Downloaded utf16_iter v1.0.5
Downloaded unicode-ident v1.0.12
Downloaded thiserror v2.0.18
Downloaded sval v2.14.1
Downloaded libz-sys v1.1.16
Downloaded escargot v0.5.10
Downloaded bytesize v2.0.1
Downloaded cyphernet v0.5.2
Downloaded structured-logger v1.0.4
Downloaded sval_nested v2.14.1
Downloaded indexmap v2.2.6
Downloaded universal-hash v0.5.1
Downloaded tree-sitter-html v0.23.2
Downloaded toml v0.9.12+spec-1.1.0
Downloaded streaming-iterator v0.1.9
Downloaded gix-odb v0.75.0
Downloaded icu_normalizer v1.5.0
Downloaded tinyvec v1.6.0
Downloaded signal-hook-registry v1.4.5
Downloaded referencing v0.30.0
Downloaded rand v0.9.2
Downloaded chrono v0.4.38
Downloaded serde v1.0.228
Downloaded num-bigint-dig v0.8.4
Downloaded test-log-macros v0.2.19
Downloaded sval_ref v2.14.1
Downloaded sval_json v2.14.1
Downloaded spin v0.9.8
Downloaded signature v2.2.0
Downloaded shlex v1.3.0
Downloaded serde_derive_internals v0.29.1
Downloaded signal-hook v0.3.18
Downloaded icu_properties v1.5.1
Downloaded gix-protocol v0.57.0
Downloaded signals_receipts v0.2.0
Downloaded test-log v0.2.19
Downloaded sval_serde v2.14.1
Downloaded sval_dynamic v2.14.1
Downloaded mio v1.0.4
Downloaded subtle v2.5.0
Downloaded strsim v0.11.1
Downloaded ssh-encoding v0.2.0
Downloaded sharded-slab v0.1.7
Downloaded serde-untagged v0.1.7
Downloaded poly1305 v0.8.0
Downloaded num-bigint v0.4.6
Downloaded icu_normalizer_data v1.5.1
Downloaded gix-url v0.35.1
Downloaded gix-features v0.46.1
Downloaded icu_locid_transform_data v1.5.1
Downloaded icu_locid v1.5.0
Downloaded gix-diff v0.58.0
Downloaded schemars_derive v1.0.4
Downloaded rustversion v1.0.20
Downloaded crossterm v0.29.0
Downloaded ryu v1.0.17
Downloaded qcheck v1.0.0
Downloaded memchr v2.7.2
Downloaded pretty_assertions v1.4.0
Downloaded fraction v0.15.3
Downloaded bloomy v1.2.0
Downloaded siphasher v0.3.11
Downloaded signal-hook-mio v0.2.4
Downloaded shell-words v1.1.0
Downloaded sem_safe v0.2.0
Downloaded pkg-config v0.3.30
Downloaded sec1 v0.7.3
Downloaded rusty-fork v0.3.1
Downloaded quote v1.0.41
Downloaded primeorder v0.13.6
Downloaded mio v0.8.11
Downloaded emojis v0.6.4
Downloaded serde_fmt v1.0.3
Downloaded salsa20 v0.10.2
Downloaded gix-path v0.11.1
Downloaded serde_spanned v1.0.4
Downloaded rand_core v0.6.4
Downloaded proc-macro-error2 v2.0.1
Downloaded pkcs8 v0.10.2
Downloaded crypto-bigint v0.5.5
Downloaded cc v1.2.2
Downloaded rand_core v0.9.3
Downloaded miniz_oxide v0.8.8
Downloaded gix-credentials v0.36.0
Downloaded same-file v1.0.6
Downloaded rand_chacha v0.9.0
Downloaded rand_chacha v0.3.1
Downloaded pkcs1 v0.7.5
Downloaded pem-rfc7468 v0.7.0
Downloaded paste v1.0.15
Downloaded once_cell v1.21.3
Downloaded gix-fs v0.19.1
Downloaded ref-cast v1.0.24
Downloaded proc-macro-error-attr2 v2.0.0
Downloaded gix-traverse v0.52.0
Downloaded gix-revwalk v0.27.0
Downloaded crossbeam-channel v0.5.15
Downloaded radicle-git-ext v0.12.0
Downloaded ppv-lite86 v0.2.17
Downloaded parking_lot_core v0.9.12
Downloaded parking_lot v0.12.5
Downloaded memmap2 v0.9.8
Downloaded gix-ref v0.59.0
Downloaded phf v0.11.3
Downloaded percent-encoding v2.3.1
Downloaded lexopt v0.3.0
Downloaded gix-object v0.56.0
Downloaded derive_more-impl v2.0.1
Downloaded iana-time-zone v0.1.60
Downloaded human-panic v2.0.6
Downloaded gix-commitgraph v0.32.0
Downloaded phf_shared v0.11.3
Downloaded multibase v0.9.1
Downloaded gix-tempfile v21.0.1
Downloaded litrs v0.4.1
Downloaded elliptic-curve v0.13.8
Downloaded chacha20poly1305 v0.10.1
Downloaded icu_locid_transform v1.5.0
Downloaded gix-date v0.14.0
Downloaded log v0.4.27
Downloaded litemap v0.7.5
Downloaded is_terminal_polyfill v1.70.2
Downloaded inout v0.1.3
Downloaded idna_adapter v1.2.0
Downloaded hash32 v0.3.1
Downloaded git-ref-format-macro v0.6.0
Downloaded form_urlencoded v1.2.1
Downloaded autocfg v1.2.0
Downloaded opaque-debug v0.3.1
Downloaded num-rational v0.4.2
Downloaded num-iter v0.1.45
Downloaded num-integer v0.1.46
Downloaded num-cmp v0.1.0
Downloaded num v0.4.3
Downloaded normalize-line-endings v0.3.0
Downloaded nonempty v0.9.0
Downloaded newline-converter v0.3.0
Downloaded matchers v0.2.0
Downloaded lazy_static v1.5.0
Downloaded icu_provider_macros v1.5.0
Downloaded gix-revwalk v0.26.0
Downloaded gix-revision v0.41.0
Downloaded gix-refspec v0.37.0
Downloaded gix-packetline v0.21.1
Downloaded gix-object v0.55.0
Downloaded gix-error v0.1.0
Downloaded gix-date v0.13.0
Downloaded gix-command v0.7.1
Downloaded ed25519 v1.5.3
Downloaded anyhow v1.0.82
Downloaded heck v0.5.0
Downloaded gix-sec v0.13.1
Downloaded gix-glob v0.24.0
Downloaded clap_builder v4.5.44
Downloaded arc-swap v1.8.2
Downloaded gix-chunk v0.5.0
Downloaded ascii v1.1.0
Downloaded git-ref-format-core v0.6.0
Downloaded equivalent v1.0.1
Downloaded displaydoc v0.2.5
Downloaded bitflags v2.9.1
Downloaded gix-lock v21.0.1
Downloaded ecdsa v0.16.9
Downloaded data-encoding-macro v0.1.14
Downloaded group v0.13.0
Downloaded gix-hash v0.22.1
Downloaded fxhash v0.2.1
Downloaded fnv v1.0.7
Downloaded faster-hex v0.10.0
Downloaded fast-glob v0.3.3
Downloaded env_logger v0.11.8
Downloaded clap_derive v4.5.41
Downloaded base64ct v1.6.0
Downloaded gix-actor v0.38.0
Downloaded console v0.16.0
Downloaded chacha20 v0.9.1
Downloaded bitflags v1.3.2
Downloaded anstyle-query v1.0.2
Downloaded fastrand v2.3.0
Downloaded anstyle v1.0.13
Downloaded git-ref-format v0.6.0
Downloaded env_filter v0.1.3
Downloaded ct-codecs v1.1.1
Downloaded crossterm v0.25.0
Downloaded gix-quote v0.6.2
Downloaded gix-commitgraph v0.33.0
Downloaded fancy-regex v0.14.0
Downloaded ec25519 v0.1.0
Downloaded document-features v0.2.11
Downloaded cypheraddr v0.4.0
Downloaded cbc v0.1.2
Downloaded borrow-or-share v0.2.2
Downloaded blowfish v0.9.1
Downloaded dyn-clone v1.0.17
Downloaded data-encoding-macro-internal v0.1.12
Downloaded data-encoding v2.5.0
Downloaded cyphergraphy v0.3.0
Downloaded colored v2.1.0
Downloaded clap_complete v4.5.60
Downloaded ghash v0.5.1
Downloaded getrandom v0.3.3
Downloaded email_address v0.2.9
Downloaded der v0.7.9
Downloaded const-oid v0.9.6
Downloaded bytes v1.11.1
Downloaded block-padding v0.3.3
Downloaded bcrypt-pbkdf v0.10.0
Downloaded backtrace v0.3.76
Downloaded anstyle-parse v0.2.3
Downloaded gix-actor v0.39.0
Downloaded either v1.11.0
Downloaded digest v0.10.7
Downloaded crossbeam-utils v0.8.19
Downloaded colorchoice v1.0.0
Downloaded bstr v1.12.0
Downloaded bit-set v0.8.0
Downloaded base32 v0.4.0
Downloaded zlib-rs v0.6.0
Downloaded dunce v1.0.5
Downloaded diff v0.1.13
Downloaded ctr v0.9.2
Downloaded block-buffer v0.10.4
Downloaded errno v0.3.13
Downloaded crc32fast v1.5.0
Downloaded clap_lex v0.7.5
Downloaded byteorder v1.5.0
Downloaded base64 v0.21.7
Downloaded base-x v0.2.11
Downloaded crypto-common v0.1.6
Downloaded cpufeatures v0.2.12
Downloaded cipher v0.4.4
Downloaded cfg-if v1.0.0
Downloaded bytecount v0.6.8
Downloaded bit-vec v0.8.0
Downloaded aho-corasick v1.1.3
Downloaded aes-gcm v0.10.3
Downloaded aes v0.8.4
Downloaded ff v0.13.0
Downloaded convert_case v0.7.1
Downloaded base16ct v0.2.0
Downloaded amplify_syn v2.0.1
Downloaded amplify v4.6.0
Downloaded addr2line v0.25.1
Downloaded generic-array v0.14.7
Downloaded anstream v0.6.21
Downloaded amplify_derive v4.0.0
Downloaded aead v0.5.2
Downloaded adler2 v2.0.0
Downloaded amplify_num v0.5.2
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 typenum v1.17.0
Checking regex-syntax v0.8.5
Checking getrandom v0.2.15
Compiling syn v2.0.106
Checking aho-corasick v1.1.3
Compiling jobserver v0.1.31
Compiling cc v1.2.2
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
Checking subtle v2.5.0
Compiling thiserror v2.0.18
Checking stable_deref_trait v1.2.0
Checking cpufeatures v0.2.12
Checking fastrand v2.3.0
Compiling parking_lot_core v0.9.12
Checking bstr v1.12.0
Checking scopeguard v1.2.0
Checking lock_api v0.4.14
Checking block-buffer v0.10.4
Checking digest v0.10.7
Checking parking_lot v0.12.5
Checking byteorder v1.5.0
Checking tinyvec_macros v0.1.1
Checking tinyvec v1.6.0
Checking gix-trace v0.1.18
Compiling crc32fast v1.5.0
Checking bitflags v2.9.1
Checking gix-validate v0.11.0
Checking itoa v1.0.17
Compiling typeid v1.0.3
Checking same-file v1.0.6
Checking walkdir v2.5.0
Checking unicode-normalization v0.1.23
Checking prodash v31.0.0
Checking zlib-rs v0.6.0
Compiling serde_derive v1.0.228
Compiling thiserror-impl v2.0.18
Checking gix-utils v0.3.1
Compiling heapless v0.8.0
Checking hash32 v0.3.1
Compiling synstructure v0.13.1
Checking faster-hex v0.10.0
Compiling getrandom v0.3.3
Checking gix-path v0.11.1
Checking sha1 v0.10.6
Checking gix-features v0.46.1
Compiling zerofrom-derive v0.1.6
Checking zeroize v1.7.0
Checking sha1-checked v0.10.0
Compiling yoke-derive v0.7.5
Compiling rustix v1.1.3
Compiling pkg-config v0.3.30
Checking zerofrom v0.1.6
Checking gix-hash v0.22.1
Compiling zerovec-derive v0.10.3
Checking yoke v0.7.5
Checking linux-raw-sys v0.11.0
Compiling displaydoc v0.2.5
Checking erased-serde v0.4.6
Checking serde_fmt v1.0.3
Checking block-padding v0.3.3
Checking once_cell v1.21.3
Checking value-bag-serde1 v1.11.1
Checking value-bag v1.11.1
Checking zerovec v0.10.4
Checking inout v0.1.3
Compiling syn v1.0.109
Checking log v0.4.27
Checking cipher v0.4.4
Checking writeable v0.5.5
Compiling icu_locid_transform_data v1.5.1
Checking litemap v0.7.5
Checking tinystr v0.7.6
Compiling icu_provider_macros v1.5.0
Checking icu_locid v1.5.0
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
Checking equivalent v1.0.1
Checking hashbrown v0.14.3
Compiling serde_json v1.0.140
Checking indexmap v2.2.6
Checking icu_properties v1.5.1
Checking sha2 v0.10.8
Compiling vcpkg v0.2.15
Compiling ref-cast v1.0.24
Checking utf8_iter v1.0.4
Checking utf16_iter v1.0.5
Checking ryu v1.0.17
Checking write16 v1.0.0
Compiling libz-sys v1.1.16
Checking tempfile v3.25.0
Compiling ref-cast-impl v1.0.24
Checking universal-hash v0.5.1
Checking icu_normalizer v1.5.0
Checking opaque-debug v0.3.1
Compiling autocfg v1.2.0
Checking dyn-clone v1.0.17
Compiling amplify_syn v2.0.1
Compiling libgit2-sys v0.18.3+1.9.2
Checking idna_adapter v1.2.0
Compiling num-traits v0.2.19
Checking idna v1.0.3
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 ascii v1.1.0
Compiling amplify_derive v4.0.0
Checking amplify_num v0.5.2
Checking ct-codecs v1.1.1
Checking ec25519 v0.1.0
Compiling schemars_derive v1.0.4
Checking url v2.5.4
Checking amplify v4.6.0
Checking git-ref-format-core v0.6.0
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Checking cyphergraphy v0.3.0
Checking polyval v0.6.2
Checking schemars v1.0.4
Compiling sqlite3-src v0.7.0
Checking hmac v0.12.1
Checking keccak v0.1.6
Checking base64ct v1.6.0
Checking sha3 v0.10.8
Checking pem-rfc7468 v0.7.0
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking 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
Checking signature v2.2.0
Compiling crossbeam-utils v0.8.19
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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-ssh)
Checking winnow v0.7.14
Checking crossbeam-channel v0.5.15
Checking hashbrown v0.16.1
Checking lazy_static v1.5.0
Checking gix-hashtable v0.12.0
Checking nonempty v0.9.0
Checking anstyle-query v1.0.2
Checking siphasher v1.0.1
Checking radicle-git-metadata v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-metadata)
Checking gix-error v0.1.0
Checking radicle-dag v0.10.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-dag)
Checking memmap2 v0.9.8
Checking utf8parse v0.2.2
Checking radicle-git-ref-format v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-ref-format)
Checking anstyle-parse v0.2.3
Checking colorchoice v1.0.0
Checking anstyle v1.0.13
Checking is_terminal_polyfill v1.70.2
Checking iana-time-zone v0.1.60
Compiling radicle v0.23.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle)
Checking base64 v0.21.7
Checking chrono v0.4.38
Checking anstream v0.6.21
Checking colored v2.1.0
Checking radicle-localtime v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/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 dunce v1.0.5
Checking fast-glob v0.3.3
Checking gix-date v0.14.0
Checking gix-date v0.13.0
Checking gix-actor v0.39.0
Checking gix-fs v0.19.1
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 shell-words v1.1.0
Checking either v1.11.0
Checking gix-command v0.7.1
Checking signals_receipts v0.2.0
Checking gix-commitgraph v0.32.0
Checking gix-revwalk v0.27.0
Compiling rustversion v1.0.20
Compiling object v0.37.3
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
Compiling rustix v0.38.34
Checking adler2 v2.0.0
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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-signals)
Checking gix-diff v0.58.0
Checking mio v0.8.11
Checking gix-glob v0.24.0
Checking gix-packetline v0.21.1
Compiling tree-sitter v0.24.4
Compiling unicode-segmentation v1.11.0
Compiling linux-raw-sys v0.4.13
Compiling anyhow v1.0.82
Checking rustc-demangle v0.1.26
Checking backtrace v0.3.76
Compiling convert_case v0.7.1
Checking gix-transport v0.54.0
Checking gix-refspec v0.37.0
Checking signal-hook-mio v0.2.4
Checking gix-pack v0.65.0
Checking arc-swap v1.8.2
Checking gix-credentials v0.36.0
Checking gix-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
Checking bytes v1.11.1
Compiling litrs v0.4.1
Checking bitflags v1.3.2
Checking unicode-width v0.2.1
Checking crossterm v0.25.0
Checking console v0.16.0
Compiling document-features v0.2.11
Checking derive_more v2.0.1
Compiling tar v0.4.40
Compiling flate2 v1.1.1
Compiling git-ref-format-macro v0.6.0
Checking newline-converter v0.3.0
Checking snapbox-macros v0.3.8
Checking salsa20 v0.10.2
Checking fxhash v0.2.1
Checking unit-prefix v0.5.1
Checking clap_lex v0.7.5
Checking unicode-width v0.1.11
Checking strsim v0.11.1
Checking similar v2.5.0
Checking streaming-iterator v0.1.9
Checking normalize-line-endings v0.3.0
Checking siphasher v0.3.11
Compiling heck v0.5.0
Checking bloomy v1.2.0
Compiling clap_derive v4.5.41
Checking snapbox v0.4.17
Checking clap_builder v4.5.44
Checking inquire v0.7.5
Checking indicatif v0.18.0
Compiling radicle-surf v0.27.0
Checking scrypt v0.11.0
Checking git-ref-format v0.6.0
Checking crossterm v0.29.0
Checking unicode-display-width v0.3.0
Checking systemd-journal-logger v2.2.2
Checking serde_spanned v1.0.4
Checking toml_datetime v0.7.5+spec-1.1.0
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-typescript v0.23.2
Checking radicle-std-ext v0.2.0
Checking toml_writer v1.0.6+spec-1.1.0
Checking sqlite3-sys v0.18.0
Checking pin-project-lite v0.2.16
Checking tokio v1.47.1
Checking toml v0.9.12+spec-1.1.0
Checking sqlite v0.37.0
Checking radicle-crypto v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-crypto)
Checking clap v4.5.44
Checking sysinfo v0.37.2
Compiling radicle-cli v0.20.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli)
Compiling radicle-node v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-node)
Checking diff v0.1.13
Checking yansi v0.5.1
Checking pretty_assertions v1.4.0
Checking human-panic v2.0.6
Checking clap_complete v4.5.60
Checking structured-logger v1.0.4
Checking radicle-systemd v0.12.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/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
Compiling escargot v0.5.10
Checking lexopt v0.3.0
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 phf_shared v0.11.3
Compiling test-log-macros v0.2.19
Checking num v0.4.3
Checking wait-timeout v0.2.1
Checking fnv v1.0.7
Compiling radicle-remote-helper v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-remote-helper)
Checking ppv-lite86 v0.2.17
Checking quick-error v1.2.3
Checking vsimd v0.8.0
Compiling paste v1.0.15
Checking outref v0.5.2
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 fraction v0.15.3
Checking phf v0.11.3
Checking referencing v0.30.0
Checking rand_xorshift v0.4.0
Checking rand v0.9.2
Checking fancy-regex v0.14.0
Checking email_address v0.2.9
Checking num-cmp v0.1.0
Checking bytecount v0.6.8
Checking unarray v0.1.4
Checking base64 v0.22.1
Checking emojis v0.6.4
Checking proptest v1.9.0
Checking jsonschema v0.30.0
Checking radicle-windows v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-windows)
Checking git2 v0.20.4
Checking radicle-oid v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-oid)
Checking radicle-git-ext v0.12.0
Checking radicle-term v0.17.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-term)
Checking radicle-core v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-core)
Checking radicle-cob v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cob)
Checking radicle-fetch v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-fetch)
Checking radicle-cli-test v0.13.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli-test)
Checking radicle-schemars v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-schemars)
Checking radicle-protocol v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-protocol)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.06s
+ 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 lock_api v0.4.14
Compiling parking_lot_core v0.9.12
Compiling serde v1.0.228
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 gix-trace v0.1.18
Compiling tinyvec v1.6.0
Compiling crc32fast v1.5.0
Compiling itoa v1.0.17
Compiling same-file v1.0.6
Compiling typeid v1.0.3
Compiling walkdir v2.5.0
Compiling prodash v31.0.0
Compiling zlib-rs v0.6.0
Compiling unicode-normalization v0.1.23
Compiling erased-serde v0.4.6
Compiling gix-utils v0.3.1
Compiling bstr v1.12.0
Compiling hash32 v0.3.1
Compiling serde_fmt v1.0.3
Compiling value-bag-serde1 v1.11.1
Compiling heapless v0.8.0
Compiling gix-validate v0.11.0
Compiling faster-hex v0.10.0
Compiling gix-path v0.11.1
Compiling value-bag v1.11.1
Compiling log v0.4.27
Compiling sha1 v0.10.6
Compiling zeroize v1.7.0
Compiling sha1-checked v0.10.0
Compiling zerofrom v0.1.6
Compiling getrandom v0.3.3
Compiling yoke v0.7.5
Compiling linux-raw-sys v0.11.0
Compiling zerovec v0.10.4
Compiling block-padding v0.3.3
Compiling once_cell v1.21.3
Compiling gix-features v0.46.1
Compiling gix-hash v0.22.1
Compiling inout v0.1.3
Compiling cipher v0.4.4
Compiling rustix v1.1.3
Compiling tinystr v0.7.6
Compiling litemap v0.7.5
Compiling writeable v0.5.5
Compiling percent-encoding v2.3.1
Compiling icu_locid v1.5.0
Compiling icu_locid_transform_data v1.5.1
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling hashbrown v0.14.3
Compiling icu_provider v1.5.0
Compiling equivalent v1.0.1
Compiling indexmap v2.2.6
Compiling icu_normalizer_data v1.5.1
Compiling icu_locid_transform v1.5.0
Compiling sha2 v0.10.8
Compiling ryu v1.0.17
Compiling write16 v1.0.0
Compiling utf8_iter v1.0.4
Compiling utf16_iter v1.0.5
Compiling libz-sys v1.1.16
Compiling icu_properties v1.5.1
Compiling serde_json v1.0.140
Compiling tempfile v3.25.0
Compiling thiserror v1.0.69
Compiling universal-hash v0.5.1
Compiling opaque-debug v0.3.1
Compiling ref-cast v1.0.24
Compiling dyn-clone v1.0.17
Compiling libgit2-sys v0.18.3+1.9.2
Compiling signature v1.6.4
Compiling ed25519 v1.5.3
Compiling form_urlencoded v1.2.1
Compiling aead v0.5.2
Compiling ct-codecs v1.1.1
Compiling ascii v1.1.0
Compiling icu_normalizer v1.5.0
Compiling amplify_num v0.5.2
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling url v2.5.4
Compiling ec25519 v0.1.0
Compiling amplify v4.6.0
Compiling num-traits v0.2.19
Compiling poly1305 v0.8.0
Compiling git-ref-format-core v0.6.0
Compiling chacha20 v0.9.1
Compiling schemars v1.0.4
Compiling cyphergraphy v0.3.0
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 ctr v0.9.2
Compiling aes v0.8.4
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 data-encoding v2.5.0
Compiling jiff v0.2.20
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 (/8802e74f-1591-4f9d-bab6-a9446613c279/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 siphasher v1.0.1
Compiling anstyle-query v1.0.2
Compiling gix-error v0.1.0
Compiling radicle-dag v0.10.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-dag)
Compiling radicle-git-metadata v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-ref-format)
Compiling radicle v0.23.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle)
Compiling anstyle v1.0.13
Compiling colorchoice v1.0.0
Compiling is_terminal_polyfill v1.70.2
Compiling iana-time-zone v0.1.60
Compiling base64 v0.21.7
Compiling chrono v0.4.38
Compiling anstream v0.6.21
Compiling colored v2.1.0
Compiling radicle-localtime v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-localtime)
Compiling gix-error v0.0.0
Compiling serde-untagged v0.1.7
Compiling bytesize v2.0.1
Compiling tree-sitter-language v0.1.2
Compiling fast-glob v0.3.3
Compiling dunce v1.0.5
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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-signals)
Compiling gix-diff v0.58.0
Compiling miniz_oxide v0.8.8
Compiling gix-glob v0.24.0
Compiling mio v0.8.11
Compiling gix-packetline v0.21.1
Compiling tree-sitter v0.24.4
Compiling rustc-demangle v0.1.26
Compiling backtrace v0.3.76
Compiling rustix v0.38.34
Compiling gix-transport v0.54.0
Compiling signal-hook-mio v0.2.4
Compiling gix-refspec v0.37.0
Compiling gix-pack v0.65.0
Compiling arc-swap v1.8.2
Compiling gix-credentials v0.36.0
Compiling sqlite3-sys v0.18.0
Compiling gix-shallow v0.8.1
Compiling sqlite v0.37.0
Compiling radicle-crypto v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-crypto)
Compiling gix-ref v0.59.0
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 unicode-width v0.2.1
Compiling bitflags v1.3.2
Compiling bytes v1.11.1
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 anyhow v1.0.82
Compiling portable-atomic v1.11.0
Compiling newline-converter v0.3.0
Compiling snapbox-macros v0.3.8
Compiling salsa20 v0.10.2
Compiling fxhash v0.2.1
Compiling normalize-line-endings v0.3.0
Compiling strsim v0.11.1
Compiling clap_lex v0.7.5
Compiling unicode-width v0.1.11
Compiling similar v2.5.0
Compiling unit-prefix v0.5.1
Compiling siphasher v0.3.11
Compiling streaming-iterator v0.1.9
Compiling bloomy v1.2.0
Compiling indicatif v0.18.0
Compiling snapbox v0.4.17
Compiling inquire v0.7.5
Compiling clap_builder v4.5.44
Compiling scrypt v0.11.0
Compiling radicle-surf v0.27.0
Compiling crossterm v0.29.0
Compiling git-ref-format v0.6.0
Compiling unicode-display-width v0.3.0
Compiling systemd-journal-logger v2.2.2
Compiling serde_spanned v1.0.4
Compiling toml_datetime v0.7.5+spec-1.1.0
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-md v0.3.2
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 yansi v0.5.1
Compiling diff v0.1.13
Compiling radicle-cli v0.20.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli)
Compiling radicle-node v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-node)
Compiling human-panic v2.0.6
Compiling pretty_assertions v1.4.0
Compiling clap_complete v4.5.60
Compiling structured-logger v1.0.4
Compiling radicle-systemd v0.12.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/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 timeago v0.4.2
Compiling lexopt v0.3.0
Compiling humantime v2.3.0
Compiling bit-vec v0.8.0
Compiling escargot v0.5.10
Compiling bit-set v0.8.0
Compiling num-bigint v0.4.6
Compiling rand_core v0.9.3
Compiling num-iter v0.1.45
Compiling num-complex v0.4.6
Compiling env_filter v0.1.3
Compiling num-rational v0.4.2
Compiling borrow-or-share v0.2.2
Compiling zerocopy v0.7.35
Compiling ahash v0.8.11
Compiling num v0.4.3
Compiling fluent-uri v0.3.2
Compiling env_logger v0.11.8
Compiling phf_shared v0.11.3
Compiling wait-timeout v0.2.1
Compiling outref v0.5.2
Compiling quick-error v1.2.3
Compiling vsimd v0.8.0
Compiling fnv v1.0.7
Compiling ppv-lite86 v0.2.17
Compiling radicle-remote-helper v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-remote-helper)
Compiling uuid-simd v0.8.0
Compiling rand_chacha v0.9.0
Compiling rusty-fork v0.3.1
Compiling referencing v0.30.0
Compiling test-log v0.2.19
Compiling phf v0.11.3
Compiling fraction v0.15.3
Compiling rand v0.9.2
Compiling git2 v0.20.4
Compiling rand_xorshift v0.4.0
Compiling fancy-regex v0.14.0
Compiling email_address v0.2.9
Compiling bytecount v0.6.8
Compiling base64 v0.22.1
Compiling num-cmp v0.1.0
Compiling unarray v0.1.4
Compiling jsonschema v0.30.0
Compiling proptest v1.9.0
Compiling emojis v0.6.4
Compiling radicle-oid v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-oid)
Compiling radicle-git-ext v0.12.0
Compiling radicle-core v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-core)
Compiling radicle-cob v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cob)
Compiling radicle-term v0.17.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-term)
Compiling radicle-windows v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-windows)
Compiling radicle-fetch v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-fetch)
Compiling radicle-protocol v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-protocol)
Compiling radicle-cli-test v0.13.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 57.40s
+ 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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-ssh)
Checking url v2.5.4
Checking git2 v0.20.4
Checking proptest v1.9.0
Checking bstr v1.12.0
Compiling amplify_syn v2.0.1
Checking gix-validate v0.11.0
Checking gix-path v0.11.1
Checking gix-features v0.46.1
Checking git-ref-format-core v0.6.0
Checking gix-hash v0.22.1
Compiling amplify_derive v4.0.0
Compiling data-encoding-macro-internal v0.1.12
Checking radicle-git-ref-format v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-ref-format)
Checking gix-error v0.1.0
Checking gix-hashtable v0.12.0
Checking radicle-oid v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-oid)
Checking gix-error v0.0.0
Checking data-encoding-macro v0.1.14
Checking radicle-dag v0.10.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-dag)
Checking radicle-git-metadata v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-metadata)
Checking multibase v0.9.1
Checking gix-date v0.14.0
Checking chrono v0.4.38
Checking radicle-localtime v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/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 amplify v4.6.0
Checking gix-revwalk v0.27.0
Checking gix-lock v21.0.1
Checking gix-url v0.35.1
Checking cyphergraphy v0.3.0
Checking gix-revwalk v0.26.0
Checking gix-config-value v0.17.1
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking gix-traverse v0.52.0
Checking gix-prompt v0.13.1
Checking gix-diff v0.58.0
Checking gix-revision v0.41.0
Checking socks5-client v0.4.1
Checking radicle-signals v0.11.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-signals)
Checking gix-glob v0.24.0
Checking gix-packetline v0.21.1
Checking cyphernet v0.5.2
Checking radicle-crypto v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-crypto)
Checking regex v1.11.1
Checking gix-refspec v0.37.0
Checking gix-transport v0.54.0
Checking tree-sitter v0.24.4
Checking gix-pack v0.65.0
Checking radicle-cob v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cob)
Checking radicle-core v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-core)
Checking git-ref-format v0.6.0
Checking gix-credentials v0.36.0
Checking gix-ref v0.59.0
Checking gix-shallow v0.8.1
Checking radicle v0.23.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle)
Checking gix-negotiate v0.27.0
Checking radicle-git-ext v0.12.0
Checking gix-odb v0.75.0
Checking uuid v1.20.0
Checking gix-protocol v0.57.0
Compiling radicle-cli v0.20.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli)
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 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-term)
Checking tree-sitter-highlight v0.24.4
Checking radicle-systemd v0.12.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-systemd)
Documenting radicle-systemd v0.12.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-systemd)
Documenting radicle-term v0.17.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-term)
Documenting radicle v0.23.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle)
Documenting radicle-core v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-core)
Documenting radicle-cob v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cob)
Documenting radicle-crypto v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-crypto)
Documenting radicle-signals v0.11.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-signals)
Documenting radicle-oid v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-oid)
Documenting radicle-git-ref-format v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-ref-format)
Documenting radicle-localtime v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-localtime)
Documenting radicle-ssh v0.10.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-dag)
Documenting radicle-git-metadata v0.2.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-git-metadata)
Documenting radicle-windows v0.1.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-windows)
Checking radicle-fetch v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-fetch)
Documenting radicle-cli v0.20.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli)
Documenting radicle-cli-test v0.13.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-cli-test)
Checking radicle-protocol v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-protocol)
Documenting radicle-protocol v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-protocol)
Documenting radicle-node v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-node)
Documenting radicle-schemars v0.7.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-schemars)
Documenting radicle-fetch v0.19.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-fetch)
Documenting radicle-remote-helper v0.16.0 (/8802e74f-1591-4f9d-bab6-a9446613c279/w/crates/radicle-remote-helper)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.66s
Generated /8802e74f-1591-4f9d-bab6-a9446613c279/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.16s
Running unittests src/lib.rs (target/debug/deps/radicle-23438a113d2c0cde)
running 327 tests
test canonical::formatter::test::ordered_nested_object ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test canonical::formatter::test::ascii_control_characters ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_color ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::common::test::test_title ... ok
test cob::common::test::test_emojis ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_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_tx ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_invalid_tx_reference ... 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_change_state ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_react ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::patch::actions::test::test_review_edit ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::cache::tests::test_counts ... 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_list ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_review_duplicate ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_review_edit ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test cob::stream::tests::test_all_from ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::stream::tests::test_all_from_until ... ok
test cob::stream::tests::test_from_until ... ok
test cob::stream::tests::test_all_until ... ok
test cob::stream::tests::test_regression_from_until ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_redact_comment ... ok
test git::canonical::quorum::test::merge_base_commutative ... ok
test git::canonical::quorum::test::test_merge_bases ... ok
test cob::thread::tests::test_timeline ... ok
test git::canonical::rules::tests::test_deserialization ... ok
test git::canonical::rules::tests::test_deserialize_extensions ... ok
test git::canonical::rules::tests::test_order ... ok
test git::canonical::rules::tests::test_roundtrip ... ok
test cob::patch::test::test_patch_update ... 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_forked_merge_commits ... ok
test git::canonical::tests::test_commit_quorum_fork_of_a_fork ... ok
test git::canonical::tests::test_commit_quorum_linear ... ok
test git::canonical::tests::test_commit_quorum_groups ... ok
test git::canonical::tests::test_commit_quorum_single ... ok
test git::canonical::tests::test_commit_quorum_merges ... 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::tests::test_tag_quorum ... ok
test git::test::test_version_from_str ... ok
test git::test::test_version_ord ... ok
test identity::did::test::test_did_encode_decode ... ok
test identity::did::test::test_did_vectors ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test identity::doc::test::test_canonical_doc ... ok
test identity::doc::test::test_canonical_example ... ok
test identity::doc::test::test_duplicate_dids ... ok
test identity::doc::test::test_future_version_error ... ok
test identity::doc::test::test_is_valid_version ... ok
test identity::doc::test::test_max_delegates ... 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::onion_absent ... ok
test node::config::test::onion_null ... 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::config::test::user_agent_custom ... ok
test node::config::test::user_agent_default ... ok
test node::config::test::user_agent_default_explicit ... ok
test node::config::test::user_agent_opt_out ... ok
test node::db::config::test::database_config_valid_combinations ... ok
test node::db::config::test::invalid ... ok
test node::db::test::migration_8::all_ipv6_formatted_dns_addresses_are_retyped ... ok
test node::db::test::migration_8::dns_address_starting_with_bracket_but_missing_closing_bracket_colon_is_unaffected ... ok
test node::db::test::migration_8::dns_address_with_bracket_not_at_start_is_unaffected ... ok
test node::db::test::migration_8::ipv4_address_is_unaffected ... ok
test node::db::test::migration_8::ipv6_formatted_dns_address_is_deleted_when_correct_ipv6_row_already_exists ... ok
test node::db::test::migration_8::ipv6_formatted_dns_address_is_retyped_to_ipv6 ... ok
test node::db::test::migration_8::migration_applies_to_all_nodes ... ok
test node::db::test::migration_8::plain_dns_hostname_without_brackets_is_unaffected ... ok
test node::db::test::migration_8::retype_preserves_address_metadata ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_notification_status ... ok
test node::policy::store::test::test_follow_and_unfollow_node ... ok
test node::policy::store::test::test_node_aliases ... ok
test node::policy::store::test::test_node_policies ... 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_alias ... ok
test node::policy::store::test::test_update_scope ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_entries ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_insert_and_remove ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_prune ... ok
test node::routing::test::test_remove_many ... ok
test node::routing::test::test_remove_redundant ... ok
test node::routing::test::test_update_existing_multi ... ok
test node::sync::announce::test::all_synced_nodes_are_preferred_seeds ... ok
test node::sync::announce::test::announcer_adapts_target_to_reach ... ok
test node::sync::announce::test::announcer_preferred_seeds_or_replica_factor ... ok
test node::sync::announce::test::announcer_reached_max_replication_target ... ok
test node::sync::announce::test::announcer_reached_min_replication_target ... ok
test node::sync::announce::test::announcer_reached_preferred_seeds ... ok
test git::canonical::tests::test_quorum_properties ... ok
test node::sync::announce::test::announcer_synced_with_unknown_node ... 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::cannot_construct_announcer ... ok
test node::sync::announce::test::construct_only_preferred_seeds_provided ... 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::invariant_progress_should_match_state ... ok
test node::sync::announce::test::local_node_in_unsynced_set ... ok
test node::sync::announce::test::local_node_only_in_all_sets_results_in_no_seeds_error ... ok
test node::sync::announce::test::local_node_in_synced_set ... ok
test node::sync::announce::test::synced_with_local_node_is_ignored ... ok
test node::sync::announce::test::synced_with_same_node_multiple_times ... 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_fetchable ... ok
test node::sync::fetch::test::all_nodes_are_candidates ... ok
test node::sync::fetch::test::ignores_duplicates_and_local_node ... ok
test node::sync::fetch::test::could_not_reach_target ... ok
test node::sync::fetch::test::preferred_seeds_target_returned_over_replicas ... ok
test node::sync::fetch::test::reaches_target_of_max_replicas ... ok
test node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok
test node::sync::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_replicas ... 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 cob::thread::tests::prop_ordering ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_init ... ok
test storage::git::tests::test_references_of ... ok
test storage::git::transport::local::url::test::test_url_parse ... ok
test storage::git::transport::local::url::test::test_url_to_string ... ok
test storage::git::transport::remote::url::test::test_url_parse ... ok
test 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. 327 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.44s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-e26be12193611f21)
running 46 tests
test commands::block::args::test::should_not_parse ... ok
test commands::block::args::test::should_parse_rid ... ok
test commands::block::args::test::should_parse_nid ... ok
test commands::clone::args::test::should_parse_rid_non_urn ... ok
test commands::clone::args::test::should_parse_rid_url ... ok
test commands::clone::args::test::should_parse_rid_urn ... ok
test commands::cob::args::test::should_allow_log_json_format ... ok
test commands::cob::args::test::should_allow_log_pretty_format ... ok
test commands::cob::args::test::should_allow_show_json_format ... ok
test commands::fork::args::test::should_not_parse_rid_url ... ok
test commands::cob::args::test::should_not_allow_show_pretty_format ... ok
test commands::fork::args::test::should_parse_rid_non_urn ... ok
test commands::cob::args::test::should_allow_update_json_format ... ok
test commands::fork::args::test::should_parse_rid_urn ... ok
test commands::cob::args::test::should_not_allow_update_pretty_format ... ok
test commands::id::args::test::should_not_parse_into_payload - should panic ... ok
test commands::id::args::test::should_not_clobber_payload_args ... ok
test commands::id::args::test::should_not_parse_single_payload ... ok
test commands::id::args::test::should_not_parse_single_payloads ... ok
test commands::id::args::test::should_parse_into_payload ... ok
test commands::init::args::test::should_not_parse_rid_url ... ok
test commands::id::args::test::should_parse_single_payload ... ok
test commands::id::args::test::should_parse_multiple_payloads ... ok
test commands::inspect::test::test_tree ... ok
test commands::init::args::test::should_parse_rid_urn ... 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_multiline ... ok
test commands::init::args::test::should_parse_rid_non_urn ... ok
test commands::patch::review::builder::tests::test_review_comments_split_hunk ... ok
test commands::publish::args::test::should_not_parse_rid_url ... ok
test commands::publish::args::test::should_parse_rid_non_urn ... ok
test commands::publish::args::test::should_parse_rid_urn ... ok
test git::pretty_diff::test::test_pretty ... ignored
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test commands::watch::args::test::should_parse_ref_str ... ok
test terminal::args::test::should_not_parse ... ok
test terminal::args::test::should_parse_nid ... ok
test terminal::args::test::should_parse_rid ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::format::test::test_bytes ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test terminal::patch::test::test_create_display_message ... ok
test terminal::patch::test::test_update_display_message ... ok
test result: ok. 45 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/main.rs (target/debug/deps/rad-cef36db752f4a7e6)
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-c23cb3b408a5468b)
running 115 tests
test commands::checkout::rad_checkout ... ok
test commands::clone::rad_clone_bare ... ok
test commands::clone::rad_clone ... ok
test commands::clone::rad_clone_all ... ok
test commands::clone::rad_clone_scope ... ok
test commands::clone::rad_clone_connect ... ok
test commands::clone::rad_clone_unknown ... ok
test commands::clone::rad_clone_directory ... 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_amend ... ok
test commands::git::git_push_and_fetch ... ok
test commands::git::git_push_canonical_annotated_tags ... ok
test commands::git::git_push_canonical_lightweight_tags ... ok
test commands::git::git_push_force_with_lease ... ok
test commands::git::git_push_diverge ... ok
test commands::id::rad_id ... ok
test commands::id::rad_id_collaboration ... ignored, slow
test commands::git::git_push_rollback ... ok
test commands::git::git_push_converge ... ok
test commands::git::git_tag ... ok
test commands::id::rad_id_private ... ok
test commands::id::rad_id_threshold_soft_fork ... ok
test commands::id::rad_id_conflict ... ok
test commands::id::rad_id_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_detached_head ... ok
test commands::id::rad_id_unauthorized_delegate ... ok
test commands::init::rad_init_bare ... ok
test commands::init::rad_init_existing ... 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_sync_preferred ... ok
test commands::init::rad_init_with_existing_remote ... ok
test commands::init::rad_publish ... ok
test commands::issue::rad_issue ... 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_and_clone ... ok
test commands::init::rad_init_sync_timeout ... ok
test commands::patch::rad_patch_detached_head ... ok
test commands::patch::rad_patch_diff ... ok
test commands::patch::rad_patch_draft ... ok
test commands::patch::rad_patch_edit ... ok
test commands::patch::rad_patch_fetch_2 ... FAILED
test commands::patch::rad_patch_merge_draft ... ok
test commands::patch::rad_patch_fetch_1 ... ok
test commands::patch::rad_patch_delete ... ok
test commands::patch::rad_patch_revert_merge ... ok
test commands::patch::rad_patch_via_push ... FAILED
test commands::patch::rad_patch_update ... ok
test commands::patch::rad_patch_open_explore ... ok
test commands::policy::rad_block ... ok
test commands::policy::rad_seed_and_follow ... ok
test commands::patch::rad_review_by_hunk ... ok
test commands::policy::rad_seed_policy_allow_no_scope ... ok
test commands::policy::rad_seed_scope ... ok
test commands::policy::rad_unseed ... ok
test commands::policy::rad_seed_many ... ok
test commands::policy::rad_unseed_many ... ok
test commands::patch::rad_push_and_pull_patches ... ok
test commands::remote::rad_remote ... ok
test commands::sync::rad_sync_without_node ... ok
test commands::sync::rad_sync ... ok
test commands::utility::framework_home ... ok
test commands::utility::rad_auth ... ok
test commands::utility::rad_auth_errors ... ok
test commands::utility::rad_clean ... ok
test commands::patch::rad_patch_pull_update ... ok
test commands::utility::rad_config ... 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::workflow::rad_workflow ... ok
test commands::sync::test_replication_via_seed ... ok
test commands::utility::rad_fork ... ok
failures:
---- commands::patch::rad_patch_fetch_2 stdout ----
1775119912 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-init:28: `rad init` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-init:35: `rad ls` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-init:46: `rad node inventory` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:6: `git checkout -b alice/1 -q` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:7: `git commit --allow-empty -m Changes #1 -q` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:8: `git push rad -o patch.message=Changes HEAD:refs/patches` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:12: `git checkout master -q` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:13: `git branch -D alice/1 -q` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:14: `git update-ref -d refs/remotes/rad/alice/1` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:15: `git update-ref -d refs/remotes/rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:16: `git gc --prune=now` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:17: `git branch -r` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:22: `git pull` @ /tmp/.tmpHYL9N3/alice/work
1775119912 test: rad-patch-fetch-2:24: `git branch -r` @ /tmp/.tmpHYL9N3/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 ----
1775119913 test: rad-init:6: `rad init --name heartwood --description Radicle Heartwood Protocol & Stack --no-confirm --public -v` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-init:28: `rad init` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-init:35: `rad ls` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-init:46: `rad node inventory` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:7: `git checkout -b feature/1` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:9: `git commit -a -m Add things -q --allow-empty` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 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/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:22: `rad patch show 6035d2f582afbe01ff23ea87528ae523d76875b6` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:45: `git branch -vv` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:53: `git status --short --branch` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:55: `git fetch` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:56: `git push` @ /tmp/.tmpZ4ny4L/alice/work
1775119913 test: rad-patch-via-push:62: `git show-ref` @ /tmp/.tmpZ4ny4L/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.58s
error: test failed, to rerun pass `-p radicle-cli --test commands`
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-8406cf87773d0655)
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::git::list_cobs ... ok
test tests::invalid_parse_refstr ... ok
test type_name::test::invalid_typenames ... ok
test type_name::test::valid_typenames ... ok
test tests::git::traverse_cobs ... ok
test tests::parse_refstr ... ok
test tests::git::update_cob ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/lib.rs (target/debug/deps/radicle_core-71c543e62475a20f)
running 4 tests
test repo::test::invalid ... ok
test repo::test::valid ... ok
test repo::test::assert_prop_roundtrip_parse ... ok
test repo::serde_impls::test::assert_prop_roundtrip_serde_json ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
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.84s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-05f7457e7194a495)
running 20 tests
test tests::test_cycle ... ok
test tests::test_contains ... ok
test tests::test_diamond ... ok
test tests::test_fold_diamond ... ok
test tests::test_dependencies ... 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_fold_reject ... 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_2 ... ok
test tests::test_prune_1 ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_remove ... ok
test tests::test_siblings ... 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-38e43f9013b6692c)
running 1 test
test stage::test::valid_refspecs ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_git_metadata-f234fa7eabe06ba6)
running 24 tests
test commit::parse::test::error::invalid_author ... ok
test commit::parse::test::error::invalid_format_continuation_without_preceding_header ... ok
test commit::parse::test::error::invalid_committer ... 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_header_body_separator ... ok
test commit::parse::test::error::missing_tree_empty_header ... ok
test commit::parse::test::error::missing_committer ... ok
test commit::parse::test::error::missing_tree_wrong_first_line ... ok
test commit::parse::test::success::commit_gpgsig_is_preserved_and_strip_removes_it ... ok
test commit::parse::test::success::commit_with_extra_headers ... ok
test commit::parse::test::success::commit_last_paragraph_kept_in_message_when_not_all_trailers ... ok
test commit::parse::test::success::commit_with_multiline_gpgsig ... ok
test commit::parse::test::success::commit_with_single_parent ... ok
test commit::parse::test::success::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::trailers_accepts_empty_input ... ok
test commit::parse::test::unit::body_no_paragraph_separator_means_no_trailers ... ok
test commit::parse::test::unit::trailers_rejects_line_without_separator ... ok
test commit::parse::test::unit::trailers_rejects_invalid_token_chars ... 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_pattern_invalid - should panic ... ok
test test::qualified ... ok
test test::qualified_invalid - should panic ... ok
test test::qualified_pattern ... 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-36e04915ab46fd49)
running 79 tests
test control::tests::test_control_socket ... ok
test fingerprint::tests::matching ... ok
test reactor::timer::tests::test_next ... ok
test reactor::timer::tests::test_wake ... ok
test reactor::timer::tests::test_wake_exact ... ok
test control::tests::test_seed_unseed ... ok
test tests::e2e::fetch_does_not_contain_rad_sigrefs_parent ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_block_prevents_connection ... ok
test tests::e2e::test_block_active_connection ... ok
test tests::e2e::test_block_prevents_fetch ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_clone ... 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_unseeded ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_fetch_emits_canonical_ref_update ... ok
test tests::e2e::test_large_fetch ... ok
test tests::e2e::test_migrated_clone ... ok
test tests::e2e::test_missing_remote ... ok
test tests::e2e::test_multiple_offline_inits ... ok
test tests::e2e::test_non_fastforward_identity_doc ... ok
test tests::e2e::test_non_fastforward_sigrefs ... ok
test tests::e2e::test_outdated_delegate_sigrefs ... ok
test tests::e2e::test_outdated_sigrefs ... ok
test tests::e2e::test_replication ... ok
test tests::e2e::test_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_timestamp_filtered ... ok
test tests::test_announcement_rebroadcast_duplicates ... 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_attempt ... ok
test tests::test_persistent_peer_reconnect_success ... 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_refs_announcement_relay_private ... ok
test tests::test_announcement_message_amplification ... ok
test tests::test_refs_announcement_relay_public ... ok
test wire::test::test_inventory_ann_with_extension ... ok
test wire::test::test_pong_message_with_extension ... ok
test tests::test_seeding ... ok
test tests::test_seed_repo_subscribe ... ok
test tests::test_refs_synced_event ... ok
test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 14.90s
Running unittests src/main.rs (target/debug/deps/radicle_node-c0ff36c404a58c20)
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 git2::test::zero ... ok
test fmt::test::zero ... ok
test gix::test::zero ... ok
test str::test::fixture ... ok
test fmt::test::git2 ... ok
test fmt::test::gix ... ok
test str::test::zero ... ok
test str::test::git2_roundtrip ... ok
test str::test::gix_roundrip ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_protocol-b86e38449716550f)
running 99 tests
test deserializer::test::test_unparsed ... ok
test deserializer::test::test_decode_next ... ok
test deserializer::test::prop_decode_next ... ok
test fetcher::service::tests::test_fetch_coalescing_different_refs ... ok
test fetcher::test::queue::properties::capacity::bounded ... ok
test fetcher::test::queue::properties::capacity::rejection ... ok
test fetcher::test::queue::properties::dequeue::empty_queue_returns_none ... ok
test fetcher::test::queue::properties::dequeue::enables_reenqueue ... ok
test fetcher::test::queue::properties::dequeue::drained_queue_returns_none ... ok
test fetcher::test::queue::properties::capacity::capacity_reached_returns_same_item ... 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::merge::different_rid_accepted ... ok
test fetcher::test::queue::properties::equality::symmetric ... 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::empty_refs_fetches_all ... 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::zero_timeout_accepted ... ok
test fetcher::test::queue::unit::merge_preserves_position_in_queue ... ok
test fetcher::test::state::command::cancel::non_existent_returns_unexpected ... ok
test fetcher::test::state::command::cancel::cancellation_is_isolated ... ok
test fetcher::test::state::command::cancel::ongoing_and_queued ... ok
test fetcher::test::state::command::cancel::single_ongoing ... ok
test fetcher::test::state::command::fetch::fetch_after_previous_completed ... ok
test fetcher::test::state::command::fetch::fetch_at_capacity_enqueues ... ok
test fetcher::test::state::command::fetch::fetch_different_repo_same_node_within_capacity ... ok
test fetcher::test::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_same_repo_different_refs_enqueues ... ok
test fetcher::test::state::command::fetch::fetch_start_first_fetch_for_node ... ok
test fetcher::test::state::command::fetched::complete_single_ongoing ... ok
test fetcher::test::state::command::fetched::complete_one_of_multiple ... ok
test fetcher::test::state::command::fetched::non_existent_returns_not_found ... ok
test fetcher::test::state::command::fetched::complete_then_dequeue_fifo ... ok
test fetcher::test::state::concurrent::fetched_then_cancel ... ok
test fetcher::test::state::concurrent::interleaved_operations ... ok
test fetcher::test::state::config::min_queue_size ... ok
test fetcher::test::state::dequeue::cannot_dequeue_while_node_at_capacity ... ok
test fetcher::test::state::dequeue::empty_queue_returns_none ... ok
test fetcher::test::state::dequeue::maintains_fifo_order ... ok
test fetcher::test::state::invariant::queue_integrity_after_merge ... ok
test fetcher::test::queue::properties::merge::same_rid_merges_anywhere_in_queue ... ok
test fetcher::test::state::multinode::independent_queues ... ok
test service::filter::test::compatible ... ok
test service::filter::test::test_parameters ... ok
test fetcher::test::queue::properties::merge::succeed_when_at_capacity ... 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 service::message::tests::test_inventory_limit ... ok
test fetcher::test::state::config::high_concurrency ... ok
test service::message::tests::test_ref_remote_limit ... ok
test wire::frame::test::test_encode_git_large ... ok
test wire::frame::test::test_stream_id ... ok
test fetcher::test::state::multinode::high_count ... ok
test wire::message::tests::prop_roundtrip_address ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test wire::message::tests::test_inv_ann_max_size ... ok
test wire::message::tests::test_node_ann_max_size ... ok
test wire::message::tests::test_ping_encode_size_overflow - should panic ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pong_encode_size_overflow - should panic ... ok
test service::message::tests::test_node_announcement_validate ... 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::prop_roundtrip_message ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::message::tests::prop_message_decoder ... ok
test result: ok. 99 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.94s
Running unittests src/main.rs (target/debug/deps/git_remote_rad-b79185b0964ee536)
running 12 tests
test protocol::tests::test_capabilities ... ok
test protocol::tests::test_empty ... ok
test protocol::tests::test_invalid ... ok
test protocol::tests::test_fetch ... 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 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-e0a33cfc7a498670)
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::wrapping ... ok
test ansi::tests::colors_enabled ... 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_truncated ... ok
test table::test::test_table_unicode ... 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_truncate ... ok
test table::test::test_truncate ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test vstack::test::test_vstack ... ok
test vstack::test::test_vstack_maximize ... ok
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_windows-2c067555aa9e0165)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle
running 1 test
test crates/radicle/src/cob/patch/encoding/review.rs - cob::patch::encoding::review::Review (line 23) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli_test
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cob
running 1 test
test crates/radicle-cob/src/backend/stable.rs - backend::stable::with_advanced_timestamp (line 56) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_core
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_crypto
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_dag
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_fetch
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_git_metadata
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_git_ref_format
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_localtime
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_node
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_oid
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_protocol
running 6 tests
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... 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>::collect_from (line 30) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... 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"
}