rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood72581af60a8568e33c9a3859db811c786d16338f
{
"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:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "1b5103d1049e8a4e56f7ac6570d7f61d37931262",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"title": "radicle: Fix panic when reading from SQLite database fails",
"state": {
"status": "merged",
"conflicts": []
},
"before": "a4d83ec8d22a80a4d01381a091967b57fa595018",
"after": "72581af60a8568e33c9a3859db811c786d16338f",
"commits": [
"72581af60a8568e33c9a3859db811c786d16338f"
],
"target": "3fc92f83fe089263c470b328414d923227cf0e4a",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "1b5103d1049e8a4e56f7ac6570d7f61d37931262",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "I was greeted by `rad patch redact` with\n\n called `Result::unwrap()` on an `Err` value:\n\n Error { code: None, message: Some(\"failed to convert\") }\n\n stack backtrace:\n\n [\u2026]\n 3: core::result::Result<T,E>::unwrap\n at \u2026/rust-1.88.0/lib/rustlib/src/rust/library/core/src/result.rs:1137:23\n 4: sqlite::cursor::Row::read\n at \u2026/index.crates.io-1949cf8c6b5b557f/sqlite-0.32.0/src/cursor.rs:136:9\n 5: radicle::cob::patch::cache::query::find_by_revision\n at ./crates/radicle/src/cob/patch/cache.rs:624:65\n 6: <\u2026 as radicle::cob::patch::cache::Patches>::find_by_revision\n at ./crates/radicle/src/cob/patch/cache.rs:553:9\n 7: radicle_cli::commands::rad_patch::redact::run\n at ./crates/radicle-cli/src/commands/patch/redact.rs:23:9\n 8: radicle_cli::commands::rad_patch::run\n at ./crates/radicle-cli/src/commands/patch.rs:1026:13\n [\u2026]\n\nIt turns out that `sqlite::cursor::Row::read` is the panicky version of\n`sqlite::cursor::Row::try_read` (which returns a `Result`).\n\nWhile it is somewhat rare that SQLite reads fail, it is not unheard of.\nIn `radicle-cli` it might not be critical, but also `radicle-protocol`\nand `radicle-fetch` are affected, and they could potentially panic a\n`radicle-node` process.\n\nUse `try_read` instead, and propagate down the error handling.",
"base": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
"oid": "43dd23c597c576c0c140792218c5d2edf3df00da",
"timestamp": 1755978483
},
{
"id": "30b728c3436460095d6974713c4292fe4a1d6955",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "Also handle that one case where I was lazy and `.ok()`'d",
"base": "a4d83ec8d22a80a4d01381a091967b57fa595018",
"oid": "72581af60a8568e33c9a3859db811c786d16338f",
"timestamp": 1756102458
},
{
"id": "5970fcd895125b126a0abe017a774364a873c62c",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "Rebased",
"base": "a568e7f4848729ca02d5d5373dfacba289658493",
"oid": "192cc993a8f2a31e49608e9aeff2ecf04ce602ad",
"timestamp": 1756138475
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "65b2d293-e51c-4c76-aae8-8e8e09e78ac3"
},
"info_url": "https://cci.rad.levitte.org//65b2d293-e51c-4c76-aae8-8e8e09e78ac3.html"
}
Started at: 2026-09-08 08:50:59.237168+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ 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/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 38 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout 1b5103d1049e8a4e56f7ac6570d7f61d37931262
✓ Switched to branch patch/1b5103d at revision 30b728c
✓ Branch patch/1b5103d setup to track rad/patches/1b5103d1049e8a4e56f7ac6570d7f61d37931262
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 72581af60a8568e33c9a3859db811c786d16338f
HEAD is now at 72581af6 radicle: Fix panic when reading from SQLite database fails
Exit code: 0
$ rad patch show 1b5103d1049e8a4e56f7ac6570d7f61d37931262 -p
╭──────────────────────────────────────────────────────────────────────────────────╮
│ Title radicle: Fix panic when reading from SQLite database fails │
│ Patch 1b5103d1049e8a4e56f7ac6570d7f61d37931262 │
│ Author lorenz z6MkkPv…WX5sTEz │
│ Head 72581af60a8568e33c9a3859db811c786d16338f │
│ Base a4d83ec8d22a80a4d01381a091967b57fa595018 │
│ Target master │
│ Branches patch/1b5103d │
│ Commits ahead 1, behind 887 │
│ Status merged │
│ │
│ I was greeted by `rad patch redact` with │
│ │
│ called `Result::unwrap()` on an `Err` value: │
│ │
│ Error { code: None, message: Some("failed to convert") } │
│ │
│ stack backtrace: │
│ │
│ […] │
│ 3: core::result::Result<T,E>::unwrap │
│ at …/rust-1.88.0/lib/rustlib/src/rust/library/core/src/result.rs:1… │
│ 4: sqlite::cursor::Row::read │
│ at …/index.crates.io-1949cf8c6b5b557f/sqlite-0.32.0/src/cursor.rs:… │
│ 5: radicle::cob::patch::cache::query::find_by_revision │
│ at ./crates/radicle/src/cob/patch/cache.rs:624:65 │
│ 6: <… as radicle::cob::patch::cache::Patches>::find_by_revision │
│ at ./crates/radicle/src/cob/patch/cache.rs:553:9 │
│ 7: radicle_cli::commands::rad_patch::redact::run │
│ at ./crates/radicle-cli/src/commands/patch/redact.rs:23:9 │
│ 8: radicle_cli::commands::rad_patch::run │
│ at ./crates/radicle-cli/src/commands/patch.rs:1026:13 │
│ […] │
│ │
│ It turns out that `sqlite::cursor::Row::read` is the panicky version of │
│ `sqlite::cursor::Row::try_read` (which returns a `Result`). │
│ │
│ While it is somewhat rare that SQLite reads fail, it is not unheard of. │
│ In `radicle-cli` it might not be critical, but also `radicle-protocol` │
│ and `radicle-fetch` are affected, and they could potentially panic a │
│ `radicle-node` process. │
│ │
│ Use `try_read` instead, and propagate down the error handling. │
├──────────────────────────────────────────────────────────────────────────────────┤
│ 72581af radicle: Fix panic when reading from SQLite database fails │
├──────────────────────────────────────────────────────────────────────────────────┤
│ ● Revision 1b5103d @ 19a262d..43dd23c by lorenz z6MkkPv…WX5sTEz 1 year ago │
│ ↑ Revision 30b728c @ a4d83ec..72581af by lorenz z6MkkPv…WX5sTEz 1 year ago │
│ ↑ Revision 5970fcd @ a568e7f..192cc99 by fintohaps z6Mkire…SQZ3voM 1 year ago │
│ └─ ✓ merged by fintohaps z6Mkire…SQZ3voM │
╰──────────────────────────────────────────────────────────────────────────────────╯
commit 72581af60a8568e33c9a3859db811c786d16338f
Author: Lorenz Leutgeb <lorenz.leutgeb@radicle.xyz>
Date: Sat Aug 23 21:34:28 2025 +0200
radicle: Fix panic when reading from SQLite database fails
I was greeted by `rad patch redact` with
called `Result::unwrap()` on an `Err` value:
Error { code: None, message: Some("failed to convert") }
stack backtrace:
[…]
3: core::result::Result<T,E>::unwrap
at …/rust-1.88.0/lib/rustlib/src/rust/library/core/src/result.rs:1137:23
4: sqlite::cursor::Row::read
at …/index.crates.io-1949cf8c6b5b557f/sqlite-0.32.0/src/cursor.rs:136:9
5: radicle::cob::patch::cache::query::find_by_revision
at ./crates/radicle/src/cob/patch/cache.rs:624:65
6: <… as radicle::cob::patch::cache::Patches>::find_by_revision
at ./crates/radicle/src/cob/patch/cache.rs:553:9
7: radicle_cli::commands::rad_patch::redact::run
at ./crates/radicle-cli/src/commands/patch/redact.rs:23:9
8: radicle_cli::commands::rad_patch::run
at ./crates/radicle-cli/src/commands/patch.rs:1026:13
[…]
It turns out that `sqlite::cursor::Row::read` is the panicky version of
`sqlite::cursor::Row::try_read` (which returns a `Result`).
While it is somewhat rare that SQLite reads fail, it is not unheard of.
In `radicle-cli` it might not be critical, but also `radicle-protocol`
and `radicle-fetch` are affected, and they could potentially panic a
`radicle-node` process.
Use `try_read` instead, and propagate down the error handling.
diff --git a/crates/radicle-cli/src/commands/follow.rs b/crates/radicle-cli/src/commands/follow.rs
index de5e083a1..7b4f0ff3c 100644
--- a/crates/radicle-cli/src/commands/follow.rs
+++ b/crates/radicle-cli/src/commands/follow.rs
@@ -147,41 +147,45 @@ pub fn following(profile: &Profile, alias: Option<Alias>) -> anyhow::Result<()>
term::format::default(String::from("Policy")),
]);
t.divider();
-
- match alias {
- None => push_policies(&mut t, &aliases, store.follow_policies()?),
- Some(alias) => push_policies(
- &mut t,
- &aliases,
- store
- .follow_policies()?
- .filter(|p| p.alias.as_ref().is_some_and(|alias_| *alias_ == alias)),
- ),
- };
+ push_policies(&mut t, &aliases, store.follow_policies()?, &alias);
t.print();
-
Ok(())
}
fn push_policies(
t: &mut Table<3, Paint<String>>,
aliases: &impl AliasStore,
- policies: impl Iterator<Item = policy::FollowPolicy>,
+ policies: impl Iterator<Item = Result<policy::FollowPolicy, policy::store::Error>>,
+ filter: &Option<Alias>,
) {
- for policy::FollowPolicy {
- nid: id,
- alias,
- policy,
- } in policies
- {
- t.push([
- term::format::highlight(Did::from(id).to_string()),
- match alias {
- None => term::format::secondary(fallback_alias(&id, aliases)),
- Some(alias) => term::format::secondary(alias.to_string()),
- },
- term::format::secondary(policy.to_string()),
- ]);
+ for policy in policies {
+ match policy {
+ Ok(policy::FollowPolicy {
+ nid: id,
+ alias,
+ policy,
+ }) => {
+ if match (filter, &alias) {
+ (None, _) => false,
+ (Some(filter), Some(alias)) => *filter != *alias,
+ (Some(_), None) => true,
+ } {
+ continue;
+ }
+
+ t.push([
+ term::format::highlight(Did::from(id).to_string()),
+ match alias {
+ None => term::format::secondary(fallback_alias(&id, aliases)),
+ Some(alias) => term::format::secondary(alias.to_string()),
+ },
+ term::format::secondary(policy.to_string()),
+ ]);
+ }
+ Err(err) => {
+ term::error(format!("Failed to read a follow policy: {err}"));
+ }
+ }
}
}
diff --git a/crates/radicle-cli/src/commands/seed.rs b/crates/radicle-cli/src/commands/seed.rs
index bfd4c02f0..d0cc083f1 100644
--- a/crates/radicle-cli/src/commands/seed.rs
+++ b/crates/radicle-cli/src/commands/seed.rs
@@ -203,21 +203,28 @@ pub fn seeding(profile: &Profile) -> anyhow::Result<()> {
]);
t.divider();
- for policy::SeedPolicy { rid, policy } in store.seed_policies()? {
- let id = rid.to_string();
- let name = storage
- .repository(rid)
- .and_then(|repo| repo.project().map(|proj| proj.name().to_string()))
- .unwrap_or_default();
- let scope = policy.scope().unwrap_or_default().to_string();
- let policy = term::format::policy(&Policy::from(policy));
-
- t.push([
- term::format::tertiary(id),
- name.into(),
- policy,
- term::format::dim(scope),
- ])
+ for policy in store.seed_policies()? {
+ match policy {
+ Ok(policy::SeedPolicy { rid, policy }) => {
+ let id = rid.to_string();
+ let name = storage
+ .repository(rid)
+ .and_then(|repo| repo.project().map(|proj| proj.name().to_string()))
+ .unwrap_or_default();
+ let scope = policy.scope().unwrap_or_default().to_string();
+ let policy = term::format::policy(&Policy::from(policy));
+
+ t.push([
+ term::format::tertiary(id),
+ name.into(),
+ policy,
+ term::format::dim(scope),
+ ])
+ }
+ Err(err) => {
+ term::error(format!("Failed to read a seeding policy: {err}"));
+ }
+ }
}
if t.is_empty() {
diff --git a/crates/radicle-cli/src/commands/stats.rs b/crates/radicle-cli/src/commands/stats.rs
index ae12648a9..a98a23562 100644
--- a/crates/radicle-cli/src/commands/stats.rs
+++ b/crates/radicle-cli/src/commands/stats.rs
@@ -126,7 +126,7 @@ pub fn run(_options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
.into_iter()
.next()
.unwrap()?;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
stats.repos.unique = count;
}
@@ -141,7 +141,7 @@ pub fn run(_options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
// SAFETY: `COUNT` always returns a row.
let row = stmt.iter().next().unwrap()?;
- stats.nodes.online_daily = row.read::<i64, _>(0) as usize;
+ stats.nodes.online_daily = row.try_read::<i64, _>(0)? as usize;
let since = now - LocalDuration::from_mins(60 * 24 * 7); // 1 week.
stmt.reset()?;
@@ -149,7 +149,7 @@ pub fn run(_options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
stmt.bind((2, now.as_millis() as i64))?;
let row = stmt.iter().next().unwrap()?;
- stats.nodes.online_weekly = row.read::<i64, _>(0) as usize;
+ stats.nodes.online_weekly = row.try_read::<i64, _>(0)? as usize;
}
{
@@ -168,7 +168,7 @@ pub fn run(_options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
.next()
// SAFETY: `COUNT` always returns a row.
.unwrap()?;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
stats.nodes.public_daily = count;
}
@@ -187,7 +187,7 @@ pub fn run(_options: Options, ctx: impl term::Context) -> anyhow::Result<()> {
.next()
// SAFETY: `COUNT` always returns a row.
.unwrap()?;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
stats.nodes.seeding_weekly = count;
}
diff --git a/crates/radicle-fetch/src/policy.rs b/crates/radicle-fetch/src/policy.rs
index 508b5d65f..afc07aca1 100644
--- a/crates/radicle-fetch/src/policy.rs
+++ b/crates/radicle-fetch/src/policy.rs
@@ -30,9 +30,22 @@ impl Allowed {
let nodes = config
.follow_policies()
.map_err(|err| error::Policy::FailedNodes { rid, err })?;
- let followed: HashSet<_> = nodes
- .filter_map(|node| (node.policy == Policy::Allow).then_some(node.nid))
- .collect();
+
+ let mut followed = HashSet::new();
+
+ for node in nodes {
+ let node = match node {
+ Ok(policy) => policy,
+ Err(err) => {
+ log::error!(target: "fetch", "Failed to read follow policy for {rid}: {err}");
+ continue;
+ }
+ };
+
+ if node.policy == Policy::Allow {
+ followed.insert(node.nid);
+ }
+ }
Ok(Allowed::Followed { remotes: followed })
}
@@ -62,10 +75,23 @@ impl BlockList {
}
pub fn from_config(config: &Config<Read>) -> Result<BlockList, error::Blocked> {
- Ok(config
- .follow_policies()?
- .filter_map(|entry| (entry.policy == Policy::Block).then_some(entry.nid))
- .collect())
+ let mut blocked = HashSet::new();
+
+ for entry in config.follow_policies()? {
+ let entry = match entry {
+ Ok(entry) => entry,
+ Err(err) => {
+ log::error!(target: "fetch", "Failed to read follow policy: {err}");
+ continue;
+ }
+ };
+
+ if entry.policy == Policy::Block {
+ blocked.insert(entry.nid);
+ }
+ }
+
+ Ok(BlockList(blocked))
}
}
diff --git a/crates/radicle-protocol/src/service.rs b/crates/radicle-protocol/src/service.rs
index 10d013e25..3c373dd92 100644
--- a/crates/radicle-protocol/src/service.rs
+++ b/crates/radicle-protocol/src/service.rs
@@ -570,13 +570,7 @@ where
// Nb. This is potentially slow if we have lots of repos. We should probably
// only re-compute the filter when we've unseeded a certain amount of repos
// and the filter is really out of date.
- //
- // TODO: Share this code with initialization code.
- self.filter = Filter::new(
- self.policies
- .seed_policies()?
- .filter_map(|t| (t.policy.is_allow()).then_some(t.rid)),
- );
+ self.filter = Filter::allowed_by(self.policies.seed_policies()?);
// Update and announce new inventory.
if let Err(e) = self.remove_inventory(id) {
error!(target: "service", "Error updating inventory after unseed: {e}");
@@ -750,11 +744,7 @@ where
.remove_inventories(private.iter(), &nid)?;
// Setup subscription filter for seeded repos.
- self.filter = Filter::new(
- self.policies
- .seed_policies()?
- .filter_map(|t| (t.policy.is_allow()).then_some(t.rid)),
- );
+ self.filter = Filter::allowed_by(self.policies.seed_policies()?);
// Connect to configured peers.
let addrs = self.config.connect.clone();
for (id, addr) in addrs.into_iter().map(|ca| ca.into()) {
@@ -2510,10 +2500,16 @@ where
/// Fetch all repositories that are seeded but missing from storage.
fn fetch_missing_repositories(&mut self) -> Result<(), Error> {
- // TODO(finto): could filter the policies based on the continue checks
- // below, but `storage.contains` is fallible
let policies = self.policies.seed_policies()?.collect::<Vec<_>>();
for policy in policies {
+ let policy = match policy {
+ Ok(policy) => policy,
+ Err(err) => {
+ log::error!(target: "protocol::filter", "Failed to read seed policy: {err}");
+ continue;
+ }
+ };
+
let rid = policy.rid;
if !policy.is_allow() {
diff --git a/crates/radicle-protocol/src/service/filter.rs b/crates/radicle-protocol/src/service/filter.rs
index c57db7fc6..3b934dfa4 100644
--- a/crates/radicle-protocol/src/service/filter.rs
+++ b/crates/radicle-protocol/src/service/filter.rs
@@ -59,6 +59,30 @@ impl Filter {
Self(bloom)
}
+ pub fn allowed_by(
+ policies: impl Iterator<
+ Item = Result<radicle::node::policy::SeedPolicy, radicle::node::policy::store::Error>,
+ >,
+ ) -> Self {
+ let mut ids = Vec::new();
+
+ for seed in policies {
+ let seed = match seed {
+ Ok(seed) => seed,
+ Err(err) => {
+ log::error!(target: "protocol::filter", "Failed to read seed policy: {err}");
+ continue;
+ }
+ };
+
+ if seed.policy.is_allow() {
+ ids.push(seed.rid);
+ }
+ }
+
+ Self::new(ids)
+ }
+
/// Empty filter with nothing set.
pub fn empty() -> Self {
Self(BloomFilter::from(vec![0x0; FILTER_SIZE_S]))
diff --git a/crates/radicle-protocol/src/service/gossip/store.rs b/crates/radicle-protocol/src/service/gossip/store.rs
index a7288164b..6747aa2a2 100644
--- a/crates/radicle-protocol/src/service/gossip/store.rs
+++ b/crates/radicle-protocol/src/service/gossip/store.rs
@@ -135,7 +135,7 @@ impl Store for Database {
if let Some(row) = stmt.into_iter().next() {
let row = row?;
- let id = row.read::<i64, _>("rowid");
+ let id = row.try_read::<i64, _>("rowid")?;
Ok(Some(id as AnnouncementId))
} else {
@@ -360,9 +360,9 @@ mod parse {
use super::*;
pub fn announcement(row: sql::Row) -> Result<(AnnouncementId, Announcement), Error> {
- let id = row.read::<i64, _>("rowid") as AnnouncementId;
- let node = row.read::<NodeId, _>("node");
- let gt = row.read::<GossipType, _>("type");
+ let id = row.try_read::<i64, _>("rowid")? as AnnouncementId;
+ let node = row.try_read::<NodeId, _>("node")?;
+ let gt = row.try_read::<GossipType, _>("type")?;
let message = match gt {
GossipType::Refs => {
let ann = row.try_read::<RefsAnnouncement, _>("message")?;
@@ -377,8 +377,8 @@ mod parse {
AnnouncementMessage::Node(ann)
}
};
- let signature = row.read::<Signature, _>("signature");
- let timestamp = row.read::<Timestamp, _>("timestamp");
+ let signature = row.try_read::<Signature, _>("signature")?;
+ let timestamp = row.try_read::<Timestamp, _>("timestamp")?;
debug_assert_eq!(timestamp, message.timestamp());
diff --git a/crates/radicle/src/cob/cache/migrations/2.rs b/crates/radicle/src/cob/cache/migrations/2.rs
index e6393cbe4..3be7f088b 100644
--- a/crates/radicle/src/cob/cache/migrations/2.rs
+++ b/crates/radicle/src/cob/cache/migrations/2.rs
@@ -27,8 +27,8 @@ pub fn run(
for row in rows {
let row = row?;
- let id = row.read::<&str, _>("id");
- let mut patch = json::from_str::<json::Value>(row.read::<&str, _>("patch"))
+ let id = row.try_read::<&str, _>("id")?;
+ let mut patch = json::from_str::<json::Value>(row.try_read::<&str, _>("patch")?)
.map_err(Error::MalformedJson)?;
let patch = patch.as_object_mut().ok_or(Error::MalformedJsonSchema)?;
let revisions = patch["revisions"]
@@ -117,7 +117,7 @@ mod tests {
})
.unwrap();
- let patch = row.read::<&str, _>("patch");
+ let patch = row.try_read::<&str, _>("patch").unwrap();
let actual: serde_json::Value = serde_json::from_str(patch).unwrap();
let expected: serde_json::Value = serde_json::from_str(PATCH_V2).unwrap();
diff --git a/crates/radicle/src/cob/issue/cache.rs b/crates/radicle/src/cob/issue/cache.rs
index b986f2463..655213995 100644
--- a/crates/radicle/src/cob/issue/cache.rs
+++ b/crates/radicle/src/cob/issue/cache.rs
@@ -440,8 +440,8 @@ pub struct IssuesIter<'a> {
impl IssuesIter<'_> {
fn parse_row(row: sql::Row) -> Result<(IssueId, Issue), Error> {
- let id = IssueId::from_str(row.read::<&str, _>("id"))?;
- let issue = serde_json::from_str::<Issue>(row.read::<&str, _>("issue"))?;
+ let id = IssueId::from_str(row.try_read::<&str, _>("id")?)?;
+ let issue = serde_json::from_str::<Issue>(row.try_read::<&str, _>("issue")?)?;
Ok((id, issue))
}
}
@@ -537,7 +537,7 @@ mod query {
match stmt.into_iter().next().transpose()? {
None => Ok(None),
Some(row) => {
- let issue = row.read::<&str, _>("issue");
+ let issue = row.try_read::<&str, _>("issue")?;
let issue = serde_json::from_str(issue)?;
Ok(Some(issue))
}
@@ -597,8 +597,8 @@ mod query {
stmt.into_iter()
.try_fold(IssueCounts::default(), |mut counts, row| {
let row = row?;
- let count = row.read::<i64, _>("count") as usize;
- let status = serde_json::from_str::<State>(row.read::<&str, _>("state"))?;
+ let count = row.try_read::<i64, _>("count")? as usize;
+ let status = serde_json::from_str::<State>(row.try_read::<&str, _>("state")?)?;
match status {
State::Closed { .. } => counts.closed += count,
State::Open => counts.open += count,
diff --git a/crates/radicle/src/cob/patch/cache.rs b/crates/radicle/src/cob/patch/cache.rs
index 4e8ff0043..b0b513891 100644
--- a/crates/radicle/src/cob/patch/cache.rs
+++ b/crates/radicle/src/cob/patch/cache.rs
@@ -427,8 +427,8 @@ pub struct PatchesIter<'a> {
impl PatchesIter<'_> {
fn parse_row(row: sql::Row) -> Result<(PatchId, Patch), Error> {
- let id = PatchId::from_str(row.read::<&str, _>("id"))?;
- let patch = serde_json::from_str::<Patch>(row.read::<&str, _>("patch"))
+ let id = PatchId::from_str(row.try_read::<&str, _>("id")?)?;
+ let patch = serde_json::from_str::<Patch>(row.try_read::<&str, _>("patch")?)
.map_err(|e| Error::Object(id, e))?;
Ok((id, patch))
}
@@ -592,7 +592,7 @@ mod query {
match stmt.into_iter().next().transpose()? {
None => Ok(None),
Some(row) => {
- let patch = row.read::<&str, _>("patch");
+ let patch = row.try_read::<&str, _>("patch")?;
let patch = serde_json::from_str(patch).map_err(|e| Error::Object(*id, e))?;
Ok(Some(patch))
}
@@ -618,10 +618,11 @@ mod query {
match stmt.into_iter().next().transpose()? {
None => Ok(None),
Some(row) => {
- let id = PatchId::from_str(row.read::<&str, _>("id"))?;
- let patch = serde_json::from_str::<Patch>(row.read::<&str, _>("patch"))
+ let id = PatchId::from_str(row.try_read::<&str, _>("id")?)?;
+ let patch = serde_json::from_str::<Patch>(row.try_read::<&str, _>("patch")?)
.map_err(|e| Error::Object(id, e))?;
- let revision = serde_json::from_str::<Revision>(row.read::<&str, _>("revision"))?;
+ let revision =
+ serde_json::from_str::<Revision>(row.try_read::<&str, _>("revision")?)?;
Ok(Some(ByRevision {
id,
patch,
@@ -686,8 +687,8 @@ mod query {
stmt.into_iter()
.try_fold(PatchCounts::default(), |mut counts, row| {
let row = row?;
- let count = row.read::<i64, _>("count") as usize;
- let status = serde_json::from_str::<State>(row.read::<&str, _>("state"))?;
+ let count = row.try_read::<i64, _>("count")? as usize;
+ let status = serde_json::from_str::<State>(row.try_read::<&str, _>("state")?)?;
match status {
State::Draft => counts.draft += count,
State::Open { .. } => counts.open += count,
diff --git a/crates/radicle/src/node/address/store.rs b/crates/radicle/src/node/address/store.rs
index e2b5aa2bc..380c3b77a 100644
--- a/crates/radicle/src/node/address/store.rs
+++ b/crates/radicle/src/node/address/store.rs
@@ -115,15 +115,15 @@ impl Store for Database {
stmt.bind((1, node))?;
if let Some(Ok(row)) = stmt.into_iter().next() {
- let version = row.read::<i64, _>("version").try_into()?;
- let features = row.read::<node::Features, _>("features");
- let alias = Alias::from_str(row.read::<&str, _>("alias"))?;
- let timestamp = row.read::<Timestamp, _>("timestamp");
- let pow = row.read::<i64, _>("pow") as u32;
- let agent = row.read::<UserAgent, _>("agent");
- let penalty = row.read::<i64, _>("penalty").min(u8::MAX as i64);
+ let version = row.try_read::<i64, _>("version")?.try_into()?;
+ let features = row.try_read::<node::Features, _>("features")?;
+ let alias = Alias::from_str(row.try_read::<&str, _>("alias")?)?;
+ let timestamp = row.try_read::<Timestamp, _>("timestamp")?;
+ let pow = row.try_read::<i64, _>("pow")? as u32;
+ let agent = row.try_read::<UserAgent, _>("agent")?;
+ let penalty = row.try_read::<i64, _>("penalty")?.min(u8::MAX as i64);
let penalty = Penalty(penalty as u8);
- let banned = row.read::<i64, _>("banned").is_positive();
+ let banned = row.try_read::<i64, _>("banned")?.is_positive();
let addrs = self.addresses_of(node)?;
Ok(Some(Node {
@@ -154,8 +154,8 @@ impl Store for Database {
if let Some(row) = stmt.into_iter().next() {
let row = row?;
- let addr_banned = row.read::<i64, _>(0).is_positive();
- let node_banned = row.read::<i64, _>(1).is_positive();
+ let addr_banned = row.try_read::<i64, _>(0)?.is_positive();
+ let node_banned = row.try_read::<i64, _>(1)?.is_positive();
Ok(node_banned || addr_banned)
} else {
@@ -183,16 +183,16 @@ impl Store for Database {
for row in stmt.into_iter() {
let row = row?;
- let _typ = row.read::<AddressType, _>("type");
- let addr = row.read::<Address, _>("value");
- let source = row.read::<Source, _>("source");
+ let _typ = row.try_read::<AddressType, _>("type")?;
+ let addr = row.try_read::<Address, _>("value")?;
+ let source = row.try_read::<Source, _>("source")?;
let last_attempt = row
.read::<Option<i64>, _>("last_attempt")
.map(|t| LocalTime::from_millis(t as u128));
let last_success = row
.read::<Option<i64>, _>("last_success")
.map(|t| LocalTime::from_millis(t as u128));
- let banned = row.read::<i64, _>("banned").is_positive();
+ let banned = row.try_read::<i64, _>("banned")?.is_positive();
addrs.push(KnownAddress {
addr,
@@ -212,7 +212,7 @@ impl Store for Database {
.into_iter()
.next()
.ok_or(Error::NoRows)??;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
Ok(count)
}
@@ -224,7 +224,7 @@ impl Store for Database {
.into_iter()
.next()
.ok_or(Error::NoRows)??;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
Ok(count)
}
@@ -299,17 +299,17 @@ impl Store for Database {
let mut entries = Vec::new();
while let Some(Ok(row)) = stmt.next() {
- let node = row.read::<NodeId, _>("node");
- let _typ = row.read::<AddressType, _>("type");
- let addr = row.read::<Address, _>("value");
- let source = row.read::<Source, _>("source");
- let last_success = row.read::<Option<i64>, _>("last_success");
- let last_attempt = row.read::<Option<i64>, _>("last_attempt");
+ let node = row.try_read::<NodeId, _>("node")?;
+ let _typ = row.try_read::<AddressType, _>("type")?;
+ let addr = row.try_read::<Address, _>("value")?;
+ let source = row.try_read::<Source, _>("source")?;
+ let last_success = row.try_read::<Option<i64>, _>("last_success")?;
+ let last_attempt = row.try_read::<Option<i64>, _>("last_attempt")?;
let last_success = last_success.map(|t| LocalTime::from_millis(t as u128));
let last_attempt = last_attempt.map(|t| LocalTime::from_millis(t as u128));
- let version = row.read::<i64, _>("version").try_into()?;
- let banned = row.read::<i64, _>("banned").is_positive();
- let penalty = row.read::<i64, _>("penalty");
+ let version = row.try_read::<i64, _>("version")?.try_into()?;
+ let banned = row.try_read::<i64, _>("banned")?.is_positive();
+ let penalty = row.try_read::<i64, _>("penalty")?;
let penalty = Penalty(penalty as u8); // Clamped at `u8::MAX`.
entries.push(AddressEntry {
diff --git a/crates/radicle/src/node/policy/config.rs b/crates/radicle/src/node/policy/config.rs
index 7a34a90e6..ec673d51c 100644
--- a/crates/radicle/src/node/policy/config.rs
+++ b/crates/radicle/src/node/policy/config.rs
@@ -106,9 +106,20 @@ impl<T> Config<T> {
let nodes = self
.follow_policies()
.map_err(|err| FailedNodes { rid: *rid, err })?;
- let mut followed: HashSet<_> = nodes
- .filter_map(|node| (node.policy == Policy::Allow).then_some(node.nid))
- .collect();
+
+ let mut followed: HashSet<_> = HashSet::new();
+ for node in nodes {
+ let node = match node {
+ Ok(node) => node,
+ Err(err) => {
+ log::warn!(target: "service", "Failed to read follow policy: {err}");
+ continue;
+ }
+ };
+ if node.policy == Policy::Allow {
+ followed.insert(node.nid);
+ }
+ }
if let Ok(repo) = storage.repository(*rid) {
let delegates = repo
diff --git a/crates/radicle/src/node/policy/store.rs b/crates/radicle/src/node/policy/store.rs
index ce881a954..bfe0946ae 100644
--- a/crates/radicle/src/node/policy/store.rs
+++ b/crates/radicle/src/node/policy/store.rs
@@ -257,13 +257,13 @@ impl<T> Store<T> {
stmt.bind((1, id))?;
if let Some(Ok(row)) = stmt.into_iter().next() {
- let alias = row.read::<&str, _>("alias");
+ let alias = row.try_read::<&str, _>("alias")?;
let alias = alias
.is_empty()
.not()
.then_some(alias.to_owned())
.and_then(|s| Alias::from_str(&s).ok());
- let policy = row.read::<Policy, _>("policy");
+ let policy = row.try_read::<Policy, _>("policy")?;
return Ok(Some(FollowPolicy {
nid: *id,
@@ -283,9 +283,9 @@ impl<T> Store<T> {
stmt.bind((1, id))?;
if let Some(Ok(row)) = stmt.into_iter().next() {
- let policy = match row.read::<Policy, _>("policy") {
+ let policy = match row.try_read::<Policy, _>("policy")? {
Policy::Allow => SeedingPolicy::Allow {
- scope: row.read::<Scope, _>("scope"),
+ scope: row.try_read::<Scope, _>("scope")?,
},
Policy::Block => SeedingPolicy::Block,
};
@@ -329,25 +329,38 @@ pub struct FollowPolicies<'a> {
}
impl Iterator for FollowPolicies<'_> {
- type Item = FollowPolicy;
+ type Item = Result<FollowPolicy, Error>;
fn next(&mut self) -> Option<Self::Item> {
let row = self.inner.next()?;
let Ok(row) = row else { return self.next() };
- let id = row.read("id");
- let alias = row.read::<&str, _>("alias").to_owned();
+
+ let id = match row.try_read("id") {
+ Ok(id) => id,
+ Err(err) => return Some(Err(err.into())),
+ };
+
+ let alias = match row.try_read::<&str, _>("alias") {
+ Ok(alias) => alias.to_owned(),
+ Err(err) => return Some(Err(err.into())),
+ };
+
let alias = alias
.is_empty()
.not()
.then_some(alias.to_owned())
.and_then(|s| Alias::from_str(&s).ok());
- let policy = row.read::<Policy, _>("policy");
- Some(FollowPolicy {
+ let policy = match row.try_read::<Policy, _>("policy") {
+ Ok(policy) => policy,
+ Err(err) => return Some(Err(err.into())),
+ };
+
+ Some(Ok(FollowPolicy {
nid: id,
alias,
policy,
- })
+ }))
}
}
@@ -356,19 +369,35 @@ pub struct SeedPolicies<'a> {
}
impl Iterator for SeedPolicies<'_> {
- type Item = SeedPolicy;
+ type Item = Result<SeedPolicy, Error>;
fn next(&mut self) -> Option<Self::Item> {
let row = self.inner.next()?;
let Ok(row) = row else { return self.next() };
- let id = row.read("id");
- let policy = match row.read::<Policy, _>("policy") {
- Policy::Allow => SeedingPolicy::Allow {
- scope: row.read::<Scope, _>("scope"),
- },
- Policy::Block => SeedingPolicy::Block,
+
+ let id = match row.try_read("id") {
+ Ok(id) => id,
+ Err(err) => return Some(Err(err.into())),
+ };
+
+ let policy = match row.try_read::<Policy, _>("policy") {
+ Ok(policy) => policy,
+ Err(err) => return Some(Err(err.into())),
};
- Some(SeedPolicy { rid: id, policy })
+
+ match policy {
+ Policy::Allow => match row.try_read::<Scope, _>("scope") {
+ Ok(scope) => Some(Ok(SeedPolicy {
+ rid: id,
+ policy: SeedingPolicy::Allow { scope },
+ })),
+ Err(err) => Some(Err(err.into())),
+ },
+ Policy::Block => Some(Ok(SeedPolicy {
+ rid: id,
+ policy: SeedingPolicy::Block,
+ })),
+ }
}
}
@@ -457,9 +486,9 @@ mod test {
assert!(db.follow(id, None).unwrap());
}
let mut entries = db.follow_policies().unwrap();
- assert_matches!(entries.next(), Some(FollowPolicy { nid, .. }) if nid == ids[0]);
- assert_matches!(entries.next(), Some(FollowPolicy { nid, .. }) if nid == ids[1]);
- assert_matches!(entries.next(), Some(FollowPolicy { nid, .. }) if nid == ids[2]);
+ assert_matches!(entries.next(), Some(Ok(FollowPolicy { nid, .. })) if nid == ids[0]);
+ assert_matches!(entries.next(), Some(Ok(FollowPolicy { nid, .. })) if nid == ids[1]);
+ assert_matches!(entries.next(), Some(Ok(FollowPolicy { nid, .. })) if nid == ids[2]);
}
#[test]
@@ -471,9 +500,9 @@ mod test {
assert!(db.seed(id, Scope::All).unwrap());
}
let mut entries = db.seed_policies().unwrap();
- assert_matches!(entries.next(), Some(SeedPolicy { rid, .. }) if rid == ids[0]);
- assert_matches!(entries.next(), Some(SeedPolicy { rid, .. }) if rid == ids[1]);
- assert_matches!(entries.next(), Some(SeedPolicy { rid, .. }) if rid == ids[2]);
+ assert_matches!(entries.next(), Some(Ok(SeedPolicy { rid, .. })) if rid == ids[0]);
+ assert_matches!(entries.next(), Some(Ok(SeedPolicy { rid, .. })) if rid == ids[1]);
+ assert_matches!(entries.next(), Some(Ok(SeedPolicy { rid, .. })) if rid == ids[2]);
}
#[test]
diff --git a/crates/radicle/src/node/refs/store.rs b/crates/radicle/src/node/refs/store.rs
index 56c67cf7d..deae273f2 100644
--- a/crates/radicle/src/node/refs/store.rs
+++ b/crates/radicle/src/node/refs/store.rs
@@ -154,7 +154,7 @@ impl Store for Database {
.into_iter()
.next()
.ok_or(Error::NoRows)??;
- let count = row.read::<i64, _>(0) as usize;
+ let count = row.try_read::<i64, _>(0)? as usize;
Ok(count)
}
diff --git a/crates/radicle/src/node/routing.rs b/crates/radicle/src/node/routing.rs
index 403e7c0fa..319d21a70 100644
--- a/crates/radicle/src/node/routing.rs
+++ b/crates/radicle/src/node/routing.rs
@@ -108,7 +108,7 @@ impl Store for Database {
stmt.bind((2, node))?;
if let Some(Ok(row)) = stmt.into_iter().next() {
- return Ok(Some(row.read::<Timestamp, _>("timestamp")));
+ return Ok(Some(row.try_read::<Timestamp, _>("timestamp")?));
}
Ok(None)
}
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name 65b2d293-e51c-4c76-aae8-8e8e09e78ac3 -v /opt/radcis/ci.rad.levitte.org/cci/state/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/s:/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w:/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w -w /65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /65b2d293-e51c-4c76-aae8-8e8e09e78ac3/s/script.sh
+ cargo --version
info: syncing channel updates for '1.88-x86_64-unknown-linux-gnu'
info: latest update on 2025-06-26, rust version 1.88.0 (6b00bc388 2025-06-23)
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.88.0 (873a06493 2025-05-10)
+ rustc --version
rustc 1.88.0 (6b00bc388 2025-06-23)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
Updating crates.io index
Downloading crates ...
Downloaded amplify v4.6.0
Downloaded adler2 v2.0.0
Downloaded blowfish v0.9.1
Downloaded bytesize v2.0.1
Downloaded num-traits v0.2.19
Downloaded num-iter v0.1.45
Downloaded data-encoding-macro v0.1.14
Downloaded bit-vec v0.8.0
Downloaded base16ct v0.2.0
Downloaded once_cell v1.21.3
Downloaded proc-macro-error-attr v1.0.4
Downloaded sha1_smol v1.0.0
Downloaded scrypt v0.11.0
Downloaded shell-words v1.1.0
Downloaded same-file v1.0.6
Downloaded gix-utils v0.1.14
Downloaded proc-macro-error v1.0.4
Downloaded gix-sec v0.10.12
Downloaded gix-validate v0.9.4
Downloaded parking_lot v0.12.3
Downloaded phf v0.11.3
Downloaded filetime v0.2.23
Downloaded data-encoding v2.5.0
Downloaded gix-shallow v0.1.0
Downloaded normalize-line-endings v0.3.0
Downloaded ssh-encoding v0.2.0
Downloaded subtle v2.5.0
Downloaded unicode-display-width v0.3.0
Downloaded fxhash v0.2.1
Downloaded serde_derive_internals v0.29.1
Downloaded utf8_iter v1.0.4
Downloaded gix-trace v0.1.12
Downloaded synstructure v0.13.1
Downloaded home v0.5.9
Downloaded jobserver v0.1.31
Downloaded gix-date v0.9.4
Downloaded tinyvec_macros v0.1.1
Downloaded universal-hash v0.5.1
Downloaded ghash v0.5.1
Downloaded xattr v1.3.1
Downloaded generic-array v0.14.7
Downloaded gix-tempfile v15.0.0
Downloaded pin-project-lite v0.2.16
Downloaded tree-sitter-json v0.24.8
Downloaded gix-chunk v0.4.11
Downloaded gix-command v0.4.1
Downloaded signals_receipts v0.2.0
Downloaded gix-actor v0.33.2
Downloaded tree-sitter-highlight v0.24.4
Downloaded git-ref-format-core v0.3.1
Downloaded gix-negotiate v0.17.0
Downloaded lexopt v0.3.0
Downloaded gix-prompt v0.9.1
Downloaded gix-hashtable v0.6.0
Downloaded icu_provider v1.5.0
Downloaded test-log v0.2.18
Downloaded human-panic v2.0.3
Downloaded gix-revwalk v0.17.0
Downloaded icu_locid_transform_data v1.5.1
Downloaded thread_local v1.1.9
Downloaded localtime v1.3.1
Downloaded tracing-core v0.1.34
Downloaded memmap2 v0.9.4
Downloaded gix-object v0.46.1
Downloaded icu_locid v1.5.0
Downloaded tracing v0.1.41
Downloaded tempfile v3.10.1
Downloaded ssh-key v0.6.6
Downloaded miniz_oxide v0.8.8
Downloaded memchr v2.7.2
Downloaded tree-sitter-go v0.23.4
Downloaded zerocopy v0.7.35
Downloaded winnow v0.6.26
Downloaded tree-sitter v0.24.4
Downloaded icu_properties_data v1.5.1
Downloaded tracing-subscriber v0.3.19
Downloaded tree-sitter-c v0.23.2
Downloaded vcpkg v0.2.15
Downloaded regex-syntax v0.6.29
Downloaded regex v1.11.1
Downloaded gimli v0.31.1
Downloaded git2 v0.19.0
Downloaded tree-sitter-md v0.3.2
Downloaded tree-sitter-rust v0.23.2
Downloaded rustix v0.38.34
Downloaded rustix v1.0.7
Downloaded regex-syntax v0.8.5
Downloaded syn v2.0.89
Downloaded tree-sitter-bash v0.23.3
Downloaded syn v1.0.109
Downloaded tree-sitter-ruby v0.23.1
Downloaded p384 v0.13.0
Downloaded bstr v1.9.1
Downloaded tree-sitter-python v0.23.4
Downloaded radicle-surf v0.22.0
Downloaded p521 v0.13.3
Downloaded regex-automata v0.4.9
Downloaded chrono v0.4.38
Downloaded jiff v0.2.1
Downloaded unicode-normalization v0.1.23
Downloaded icu_collections v1.5.0
Downloaded unicode-segmentation v1.11.0
Downloaded mio v0.8.11
Downloaded libc v0.2.174
Downloaded libm v0.2.8
Downloaded zerovec v0.10.4
Downloaded tree-sitter-typescript v0.23.2
Downloaded idna v1.0.3
Downloaded bloomy v1.2.0
Downloaded sha3 v0.10.8
Downloaded gix-odb v0.66.0
Downloaded mio v1.0.4
Downloaded jsonschema v0.30.0
Downloaded serde_json v1.0.140
Downloaded tar v0.4.40
Downloaded gix-protocol v0.47.0
Downloaded tree-sitter-css v0.23.1
Downloaded url v2.5.4
Downloaded num-bigint v0.4.6
Downloaded inquire v0.7.5
Downloaded hashbrown v0.14.3
Downloaded gix-pack v0.56.0
Downloaded cyphernet v0.5.2
Downloaded log v0.4.27
Downloaded icu_properties v1.5.1
Downloaded icu_normalizer_data v1.5.1
Downloaded indexmap v2.2.6
Downloaded schemars v1.0.4
Downloaded rsa v0.9.6
Downloaded emojis v0.6.4
Downloaded maybe-async v0.2.10
Downloaded iana-time-zone v0.1.60
Downloaded tree-sitter-html v0.23.2
Downloaded test-log-macros v0.2.18
Downloaded gix-revision v0.31.1
Downloaded gix-refspec v0.27.0
Downloaded systemd-journal-logger v2.2.2
Downloaded gix-commitgraph v0.25.1
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded gix-path v0.10.15
Downloaded lock_api v0.4.11
Downloaded litrs v0.4.1
Downloaded thiserror-impl v2.0.12
Downloaded typenum v1.17.0
Downloaded linux-raw-sys v0.4.13
Downloaded tinyvec v1.6.0
Downloaded icu_normalizer v1.5.0
Downloaded getrandom v0.3.3
Downloaded regex-automata v0.1.10
Downloaded toml v0.9.5
Downloaded litemap v0.7.5
Downloaded thiserror-impl v1.0.69
Downloaded writeable v0.5.5
Downloaded getrandom v0.2.15
Downloaded thiserror v2.0.12
Downloaded similar v2.5.0
Downloaded tree-sitter-language v0.1.2
Downloaded thiserror v1.0.69
Downloaded gix-transport v0.44.0
Downloaded uuid v1.16.0
Downloaded libgit2-sys v0.17.0+1.8.1
Downloaded serde v1.0.219
Downloaded der v0.7.9
Downloaded walkdir v2.5.0
Downloaded vsimd v0.8.0
Downloaded gix-quote v0.4.15
Downloaded typeid v1.0.3
Downloaded crossterm v0.29.0
Downloaded gix-hash v0.15.1
Downloaded gix-features v0.39.1
Downloaded gix-diff v0.49.0
Downloaded sharded-slab v0.1.7
Downloaded pretty_assertions v1.4.0
Downloaded crossterm v0.25.0
Downloaded gix-lock v15.0.1
Downloaded matchers v0.1.0
Downloaded write16 v1.0.0
Downloaded aes-gcm v0.10.3
Downloaded git-ref-format-macro v0.3.1
Downloaded version_check v0.9.4
Downloaded tinystr v0.7.6
Downloaded timeago v0.4.2
Downloaded git-ref-format v0.3.1
Downloaded unicode-ident v1.0.12
Downloaded socket2 v0.5.7
Downloaded signal-hook v0.3.18
Downloaded flate2 v1.1.1
Downloaded backtrace v0.3.75
Downloaded utf16_iter v1.0.5
Downloaded netservices v0.8.0
Downloaded proc-macro2 v1.0.92
Downloaded pkcs8 v0.10.2
Downloaded lazy_static v1.5.0
Downloaded keccak v0.1.5
Downloaded linux-raw-sys v0.9.4
Downloaded icu_locid_transform v1.5.0
Downloaded yoke v0.7.5
Downloaded yansi v0.5.1
Downloaded unicode-width v0.1.11
Downloaded tracing-log v0.2.0
Downloaded toml_writer v1.0.2
Downloaded toml_datetime v0.7.0
Downloaded noise-framework v0.4.0
Downloaded gix-traverse v0.43.1
Downloaded gix-credentials v0.26.0
Downloaded spin v0.9.8
Downloaded crypto-bigint v0.5.5
Downloaded base64 v0.21.7
Downloaded derive_more v2.0.1
Downloaded base64 v0.22.1
Downloaded smallvec v1.13.2
Downloaded ryu v1.0.17
Downloaded zeroize v1.7.0
Downloaded gix-ref v0.49.1
Downloaded arc-swap v1.7.1
Downloaded zerovec-derive v0.10.3
Downloaded prodash v29.0.2
Downloaded yoke-derive v0.7.5
Downloaded newline-converter v0.3.0
Downloaded multibase v0.9.1
Downloaded gix-url v0.28.2
Downloaded rand v0.8.5
Downloaded p256 v0.13.2
Downloaded object v0.36.7
Downloaded streaming-iterator v0.1.9
Downloaded hmac v0.12.1
Downloaded snapbox v0.4.17
Downloaded serde-untagged v0.1.7
Downloaded referencing v0.30.0
Downloaded poly1305 v0.8.0
Downloaded pkcs1 v0.7.5
Downloaded derive_more-impl v2.0.1
Downloaded gix-fs v0.12.1
Downloaded num v0.4.3
Downloaded nu-ansi-term v0.46.0
Downloaded sec1 v0.7.3
Downloaded elliptic-curve v0.13.8
Downloaded base64 v0.13.1
Downloaded gix-config-value v0.14.12
Downloaded zerofrom-derive v0.1.6
Downloaded zerofrom v0.1.6
Downloaded sem_safe v0.2.0
Downloaded io-reactor v0.5.2
Downloaded shlex v1.3.0
Downloaded rustc-demangle v0.1.26
Downloaded parking_lot_core v0.9.9
Downloaded uuid-simd v0.8.0
Downloaded utf8parse v0.2.1
Downloaded crossbeam-channel v0.5.15
Downloaded stable_deref_trait v1.2.0
Downloaded ssh-cipher v0.2.0
Downloaded inout v0.1.3
Downloaded serde_derive v1.0.219
Downloaded schemars_derive v1.0.4
Downloaded quote v1.0.36
Downloaded primeorder v0.13.6
Downloaded os_info v3.12.0
Downloaded nonempty v0.9.0
Downloaded nonempty v0.5.0
Downloaded spki v0.7.3
Downloaded signal-hook-registry v1.4.5
Downloaded sha2 v0.10.8
Downloaded pkg-config v0.3.30
Downloaded cc v1.2.2
Downloaded itoa v1.0.11
Downloaded gix-packetline v0.18.4
Downloaded signature v2.2.0
Downloaded radicle-std-ext v0.1.0
Downloaded pbkdf2 v0.12.2
Downloaded fluent-uri v0.3.2
Downloaded ascii v1.1.0
Downloaded anyhow v1.0.82
Downloaded anstream v0.6.13
Downloaded amplify_num v0.5.2
Downloaded idna_adapter v1.2.0
Downloaded icu_provider_macros v1.5.0
Downloaded group v0.13.0
Downloaded sqlite v0.32.0
Downloaded socks5-client v0.4.1
Downloaded snapbox-macros v0.3.8
Downloaded siphasher v1.0.1
Downloaded signature v1.6.4
Downloaded signal-hook-mio v0.2.4
Downloaded scopeguard v1.2.0
Downloaded rand_chacha v0.3.1
Downloaded ff v0.13.0
Downloaded ed25519 v1.5.3
Downloaded ecdsa v0.16.9
Downloaded base-x v0.2.11
Downloaded ref-cast-impl v1.0.24
Downloaded phf_shared v0.11.3
Downloaded outref v0.5.2
Downloaded form_urlencoded v1.2.1
Downloaded escargot v0.5.10
Downloaded env_logger v0.11.8
Downloaded anstyle-query v1.0.2
Downloaded anstyle-parse v0.2.3
Downloaded sqlite3-sys v0.15.2
Downloaded siphasher v0.3.11
Downloaded serde_spanned v1.0.0
Downloaded salsa20 v0.10.2
Downloaded qcheck v1.0.0
Downloaded email_address v0.2.9
Downloaded digest v0.10.7
Downloaded diff v0.1.13
Downloaded convert_case v0.7.1
Downloaded base64ct v1.6.0
Downloaded overload v0.1.1
Downloaded faster-hex v0.9.0
Downloaded pem-rfc7468 v0.7.0
Downloaded fast-glob v0.3.3
Downloaded errno v0.3.13
Downloaded dunce v1.0.5
Downloaded data-encoding-macro-internal v0.1.12
Downloaded ct-codecs v1.1.1
Downloaded autocfg v1.2.0
Downloaded rand_core v0.6.4
Downloaded ppv-lite86 v0.2.17
Downloaded percent-encoding v2.3.1
Downloaded fastrand v2.1.0
Downloaded document-features v0.2.11
Downloaded ref-cast v1.0.24
Downloaded popol v3.0.0
Downloaded colorchoice v1.0.0
Downloaded anstyle v1.0.6
Downloaded radicle-git-ext v0.8.1
Downloaded qcheck-macros v1.0.0
Downloaded fancy-regex v0.14.0
Downloaded crossbeam-utils v0.8.19
Downloaded chacha20poly1305 v0.10.1
Downloaded rfc6979 v0.4.0
Downloaded opaque-debug v0.3.1
Downloaded num-bigint-dig v0.8.4
Downloaded fraction v0.15.3
Downloaded equivalent v1.0.1
Downloaded polyval v0.6.2
Downloaded either v1.11.0
Downloaded ctr v0.9.2
Downloaded crypto-common v0.1.6
Downloaded amplify_syn v2.0.1
Downloaded num-integer v0.1.46
Downloaded num-complex v0.4.6
Downloaded cyphergraphy v0.3.0
Downloaded cypheraddr v0.4.0
Downloaded crc32fast v1.4.0
Downloaded erased-serde v0.4.6
Downloaded env_filter v0.1.3
Downloaded dyn-clone v1.0.17
Downloaded displaydoc v0.2.5
Downloaded cpufeatures v0.2.12
Downloaded const-oid v0.9.6
Downloaded colored v2.1.0
Downloaded chacha20 v0.9.1
Downloaded cfg-if v1.0.0
Downloaded bcrypt-pbkdf v0.10.0
Downloaded base32 v0.4.0
Downloaded aho-corasick v1.1.3
Downloaded ahash v0.8.11
Downloaded aes v0.8.4
Downloaded num-rational v0.4.2
Downloaded num-cmp v0.1.0
Downloaded ec25519 v0.1.0
Downloaded cipher v0.4.4
Downloaded cbc v0.1.2
Downloaded bytes v1.10.1
Downloaded bytecount v0.6.8
Downloaded borrow-or-share v0.2.2
Downloaded block-buffer v0.10.4
Downloaded bitflags v2.9.1
Downloaded bitflags v1.3.2
Downloaded byteorder v1.5.0
Downloaded block-padding v0.3.3
Downloaded bit-set v0.8.0
Downloaded amplify_derive v4.0.0
Downloaded addr2line v0.24.2
Downloaded aead v0.5.2
Downloaded sqlite3-src v0.5.1
Downloaded libz-sys v1.1.16
Compiling libc v0.2.174
Compiling proc-macro2 v1.0.92
Compiling unicode-ident v1.0.12
Checking cfg-if v1.0.0
Compiling shlex v1.3.0
Compiling version_check v0.9.4
Compiling serde v1.0.219
Checking memchr v2.7.2
Compiling autocfg v1.2.0
Compiling quote v1.0.36
Checking log v0.4.27
Compiling syn v2.0.89
Checking getrandom v0.2.15
Checking smallvec v1.13.2
Checking aho-corasick v1.1.3
Compiling jobserver v0.1.31
Checking regex-syntax v0.8.5
Compiling cc v1.2.2
Compiling typenum v1.17.0
Compiling generic-array v0.14.7
Checking regex-automata v0.4.9
Checking rand_core v0.6.4
Checking fastrand v2.1.0
Checking bitflags v2.9.1
Compiling lock_api v0.4.11
Compiling parking_lot_core v0.9.9
Checking crypto-common v0.1.6
Checking scopeguard v1.2.0
Checking subtle v2.5.0
Checking stable_deref_trait v1.2.0
Checking once_cell v1.21.3
Checking parking_lot v0.12.3
Compiling synstructure v0.13.1
Checking tinyvec_macros v0.1.1
Compiling syn v1.0.109
Checking tinyvec v1.6.0
Checking zeroize v1.7.0
Checking bstr v1.9.1
Checking cpufeatures v0.2.12
Compiling thiserror v2.0.12
Checking unicode-normalization v0.1.23
Checking writeable v0.5.5
Compiling icu_locid_transform_data v1.5.1
Checking litemap v0.7.5
Compiling crc32fast v1.4.0
Compiling serde_derive v1.0.219
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Compiling zerovec-derive v0.10.3
Checking zerofrom v0.1.6
Checking yoke v0.7.5
Compiling displaydoc v0.2.5
Compiling icu_provider_macros v1.5.0
Checking zerovec v0.10.4
Compiling thiserror-impl v2.0.12
Checking block-padding v0.3.3
Compiling icu_properties_data v1.5.1
Checking inout v0.1.3
Checking tinystr v0.7.6
Checking block-buffer v0.10.4
Checking icu_locid v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling pkg-config v0.3.30
Checking icu_provider v1.5.0
Checking itoa v1.0.11
Checking hashbrown v0.14.3
Checking digest v0.10.7
Checking icu_locid_transform v1.5.0
Checking icu_collections v1.5.0
Checking cipher v0.4.4
Checking utf16_iter v1.0.5
Checking utf8_iter v1.0.4
Checking icu_properties v1.5.1
Compiling thiserror v1.0.69
Checking write16 v1.0.0
Checking adler2 v2.0.0
Checking miniz_oxide v0.8.8
Compiling thiserror-impl v1.0.69
Compiling rustix v0.38.34
Checking percent-encoding v2.3.1
Checking linux-raw-sys v0.4.13
Checking sha2 v0.10.8
Checking form_urlencoded v1.2.1
Checking universal-hash v0.5.1
Checking icu_normalizer v1.5.0
Compiling vcpkg v0.2.15
Checking opaque-debug v0.3.1
Checking idna_adapter v1.2.0
Compiling amplify_syn v2.0.1
Checking idna v1.0.3
Compiling libz-sys v1.1.16
Checking url v2.5.4
Compiling data-encoding v2.5.0
Checking gix-trace v0.1.12
Compiling amplify_derive v4.0.0
Checking tempfile v3.10.1
Checking ascii v1.1.0
Compiling data-encoding-macro-internal v0.1.12
Checking signature v1.6.4
Checking amplify_num v0.5.2
Checking ed25519 v1.5.3
Checking data-encoding-macro v0.1.14
Checking faster-hex v0.9.0
Compiling libgit2-sys v0.17.0+1.8.1
Checking aead v0.5.2
Compiling num-traits v0.2.19
Compiling proc-macro-error-attr v1.0.4
Checking ct-codecs v1.1.1
Checking byteorder v1.5.0
Checking base-x v0.2.11
Checking ec25519 v0.1.0
Checking multibase v0.9.1
Checking amplify v4.6.0
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Checking gix-utils v0.1.14
Compiling proc-macro-error v1.0.4
Checking cyphergraphy v0.3.0
Checking gix-hash v0.15.1
Checking same-file v1.0.6
Compiling crossbeam-utils v0.8.19
Checking keccak v0.1.5
Checking flate2 v1.1.1
Checking sha3 v0.10.8
Checking walkdir v2.5.0
Compiling git-ref-format-core v0.3.1
Checking polyval v0.6.2
Checking hmac v0.12.1
Compiling sqlite3-src v0.5.1
Checking prodash v29.0.2
Checking ppv-lite86 v0.2.17
Checking equivalent v1.0.1
Checking sha1_smol v1.0.0
Compiling serde_json v1.0.140
Checking base64ct v1.6.0
Checking base32 v0.4.0
Checking rand_chacha v0.3.1
Checking pem-rfc7468 v0.7.0
Checking cypheraddr v0.4.0
Checking gix-features v0.39.1
Checking indexmap v2.2.6
Compiling git-ref-format-macro v0.3.1
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking chacha20poly1305 v0.10.1
Checking ctr v0.9.2
Checking aes v0.8.4
Checking ryu v1.0.17
Checking aes-gcm v0.10.3
Checking git-ref-format v0.3.1
Checking noise-framework v0.4.0
Checking crossbeam-channel v0.5.15
Checking socks5-client v0.4.1
Checking rand v0.8.5
Checking ssh-encoding v0.2.0
Checking blowfish v0.9.1
Checking cbc v0.1.2
Checking radicle-std-ext v0.1.0
Checking home v0.5.9
Compiling ref-cast v1.0.24
Checking gix-path v0.10.15
Checking ssh-cipher v0.2.0
Checking bcrypt-pbkdf v0.10.0
Checking cyphernet v0.5.2
Compiling ref-cast-impl v1.0.24
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking qcheck v1.0.0
Checking radicle-ssh v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-ssh)
Checking dyn-clone v1.0.17
Compiling typeid v1.0.3
Checking lazy_static v1.5.0
Checking siphasher v1.0.1
Checking nonempty v0.9.0
Compiling serde_derive_internals v0.29.1
Checking radicle-dag v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-dag)
Checking erased-serde v0.4.6
Checking jiff v0.2.1
Compiling schemars_derive v1.0.4
Checking iana-time-zone v0.1.60
Checking chrono v0.4.38
Checking schemars v1.0.4
Checking gix-date v0.9.4
Checking serde-untagged v0.1.7
Checking colored v2.1.0
Checking localtime v1.3.1
Checking bytesize v2.0.1
Checking winnow v0.6.26
Checking fast-glob v0.3.3
Checking dunce v1.0.5
Checking base64 v0.21.7
Checking tree-sitter-language v0.1.2
Checking anstyle-query v1.0.2
Checking gix-hashtable v0.6.0
Checking gix-validate v0.9.4
Checking utf8parse v0.2.1
Checking anstyle-parse v0.2.3
Checking memmap2 v0.9.4
Compiling anyhow v1.0.82
Checking anstyle v1.0.6
Checking gix-actor v0.33.2
Compiling rustix v1.0.7
Checking gix-object v0.46.1
Checking colorchoice v1.0.0
Checking anstream v0.6.13
Checking gix-chunk v0.4.11
Checking linux-raw-sys v0.9.4
Checking gix-commitgraph v0.25.1
Checking gix-revwalk v0.17.0
Checking gix-fs v0.12.1
Checking errno v0.3.13
Checking sem_safe v0.2.0
Checking signals_receipts v0.2.0
Checking gix-tempfile v15.0.0
Compiling signal-hook v0.3.18
Checking signal-hook-registry v1.4.5
Compiling getrandom v0.3.3
Checking shell-words v1.1.0
Checking gix-command v0.4.1
Checking radicle-signals v0.11.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-signals)
Compiling tree-sitter v0.24.4
Checking mio v1.0.4
Checking mio v0.8.11
Compiling unicode-segmentation v1.11.0
Compiling convert_case v0.7.1
Checking signal-hook-mio v0.2.4
Checking gix-lock v15.0.1
Checking gix-config-value v0.14.12
Checking gix-url v0.28.2
Checking gix-quote v0.4.15
Checking regex v1.11.1
Checking gix-sec v0.10.12
Checking gix-prompt v0.9.1
Checking uuid v1.16.0
Compiling xattr v1.3.1
Compiling derive_more-impl v2.0.1
Compiling filetime v0.2.23
Checking gix-revision v0.31.1
Checking gix-traverse v0.43.1
Checking gix-diff v0.49.0
Checking gix-packetline v0.18.4
Checking lexopt v0.3.0
Checking bitflags v1.3.2
Compiling object v0.36.7
Compiling litrs v0.4.1
Checking crossterm v0.25.0
Compiling document-features v0.2.11
Checking derive_more v2.0.1
Checking gix-transport v0.44.0
Checking gix-pack v0.56.0
Checking gix-refspec v0.27.0
Compiling tar v0.4.40
Checking gix-credentials v0.26.0
Checking newline-converter v0.3.0
Checking gix-ref v0.49.1
Checking gix-shallow v0.1.0
Checking sqlite3-sys v0.15.2
Checking gix-negotiate v0.17.0
Checking sqlite v0.32.0
Checking fxhash v0.2.1
Compiling maybe-async v0.2.10
Checking arc-swap v1.7.1
Checking streaming-iterator v0.1.9
Checking gimli v0.31.1
Checking unicode-width v0.1.11
Checking inquire v0.7.5
Checking gix-protocol v0.47.0
Checking gix-odb v0.66.0
Compiling radicle-surf v0.22.0
Checking crossterm v0.29.0
Checking addr2line v0.24.2
Checking unicode-display-width v0.3.0
Checking serde_spanned v1.0.0
Checking toml_datetime v0.7.0
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-python v0.23.4
Checking either v1.11.0
Checking rustc-demangle v0.1.26
Checking toml_writer v1.0.2
Checking toml v0.9.5
Checking backtrace v0.3.75
Checking snapbox-macros v0.3.8
Checking os_info v3.12.0
Checking salsa20 v0.10.2
Compiling radicle-cli v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli)
Checking nonempty v0.5.0
Checking normalize-line-endings v0.3.0
Checking siphasher v0.3.11
Checking base64 v0.13.1
Checking similar v2.5.0
Checking snapbox v0.4.17
Checking bloomy v1.2.0
Checking scrypt v0.11.0
Checking human-panic v2.0.3
Checking tree-sitter-highlight v0.24.4
Checking systemd-journal-logger v2.2.2
Checking popol v3.0.0
Checking bytes v1.10.1
Checking timeago v0.4.2
Checking io-reactor v0.5.2
Checking socket2 v0.5.7
Compiling radicle-node v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-node)
Checking diff v0.1.13
Checking yansi v0.5.1
Checking netservices v0.8.0
Checking radicle-systemd v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-systemd)
Checking pretty_assertions v1.4.0
Checking num-integer v0.1.46
Compiling escargot v0.5.10
Compiling qcheck-macros v1.0.0
Checking num-bigint v0.4.6
Compiling ahash v0.8.11
Compiling radicle-remote-helper v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-remote-helper)
Checking num-iter v0.1.45
Checking num-complex v0.4.6
Checking env_filter v0.1.3
Checking num-rational v0.4.2
Checking borrow-or-share v0.2.2
Checking zerocopy v0.7.35
Checking bit-vec v0.8.0
Checking bit-set v0.8.0
Checking num v0.4.3
Checking fluent-uri v0.3.2
Checking env_logger v0.11.8
Checking phf_shared v0.11.3
Compiling test-log-macros v0.2.18
Checking outref v0.5.2
Checking vsimd v0.8.0
Checking referencing v0.30.0
Checking phf v0.11.3
Checking test-log v0.2.18
Checking fancy-regex v0.14.0
Checking fraction v0.15.3
Checking uuid-simd v0.8.0
Checking email_address v0.2.9
Checking num-cmp v0.1.0
Checking bytecount v0.6.8
Checking base64 v0.22.1
Checking emojis v0.6.4
Checking jsonschema v0.30.0
Checking git2 v0.19.0
Checking radicle-git-ext v0.8.1
Checking radicle-term v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-term)
Checking radicle-crypto v0.13.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-crypto)
Checking radicle-cob v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cob)
Checking radicle v0.18.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle)
Checking radicle-fetch v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-fetch)
Checking radicle-cli-test v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli-test)
Checking radicle-schemars v0.4.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-schemars)
Checking radicle-protocol v0.2.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-protocol)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.61s
+ cargo build --all-targets --workspace
Compiling cfg-if v1.0.0
Compiling libc v0.2.174
Compiling shlex v1.3.0
Compiling serde v1.0.219
Compiling memchr v2.7.2
Compiling log v0.4.27
Compiling jobserver v0.1.31
Compiling getrandom v0.2.15
Compiling cc v1.2.2
Compiling smallvec v1.13.2
Compiling aho-corasick v1.1.3
Compiling regex-syntax v0.8.5
Compiling typenum v1.17.0
Compiling generic-array v0.14.7
Compiling rand_core v0.6.4
Compiling regex-automata v0.4.9
Compiling bitflags v2.9.1
Compiling crypto-common v0.1.6
Compiling fastrand v2.1.0
Compiling scopeguard v1.2.0
Compiling lock_api v0.4.11
Compiling zerofrom v0.1.6
Compiling parking_lot_core v0.9.9
Compiling subtle v2.5.0
Compiling stable_deref_trait v1.2.0
Compiling yoke v0.7.5
Compiling parking_lot v0.12.3
Compiling once_cell v1.21.3
Compiling tinyvec_macros v0.1.1
Compiling tinyvec v1.6.0
Compiling zerovec v0.10.4
Compiling zeroize v1.7.0
Compiling cpufeatures v0.2.12
Compiling adler2 v2.0.0
Compiling writeable v0.5.5
Compiling unicode-normalization v0.1.23
Compiling tinystr v0.7.6
Compiling litemap v0.7.5
Compiling miniz_oxide v0.8.8
Compiling icu_locid v1.5.0
Compiling block-padding v0.3.3
Compiling bstr v1.9.1
Compiling thiserror v2.0.12
Compiling inout v0.1.3
Compiling icu_provider v1.5.0
Compiling icu_locid_transform_data v1.5.1
Compiling block-buffer v0.10.4
Compiling itoa v1.0.11
Compiling hashbrown v0.14.3
Compiling icu_locid_transform v1.5.0
Compiling digest v0.10.7
Compiling cipher v0.4.4
Compiling crc32fast v1.4.0
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling utf16_iter v1.0.5
Compiling utf8_iter v1.0.4
Compiling write16 v1.0.0
Compiling icu_properties v1.5.1
Compiling percent-encoding v2.3.1
Compiling linux-raw-sys v0.4.13
Compiling thiserror v1.0.69
Compiling sha2 v0.10.8
Compiling rustix v0.38.34
Compiling form_urlencoded v1.2.1
Compiling universal-hash v0.5.1
Compiling opaque-debug v0.3.1
Compiling libz-sys v1.1.16
Compiling gix-trace v0.1.12
Compiling ascii v1.1.0
Compiling data-encoding v2.5.0
Compiling icu_normalizer v1.5.0
Compiling tempfile v3.10.1
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling signature v1.6.4
Compiling amplify_num v0.5.2
Compiling ed25519 v1.5.3
Compiling url v2.5.4
Compiling data-encoding-macro v0.1.14
Compiling libgit2-sys v0.17.0+1.8.1
Compiling aead v0.5.2
Compiling faster-hex v0.9.0
Compiling base-x v0.2.11
Compiling ct-codecs v1.1.1
Compiling byteorder v1.5.0
Compiling ec25519 v0.1.0
Compiling multibase v0.9.1
Compiling poly1305 v0.8.0
Compiling amplify v4.6.0
Compiling chacha20 v0.9.1
Compiling gix-utils v0.1.14
Compiling cyphergraphy v0.3.0
Compiling num-traits v0.2.19
Compiling gix-hash v0.15.1
Compiling same-file v1.0.6
Compiling keccak v0.1.5
Compiling walkdir v2.5.0
Compiling sha3 v0.10.8
Compiling polyval v0.6.2
Compiling git-ref-format-core v0.3.1
Compiling flate2 v1.1.1
Compiling hmac v0.12.1
Compiling sqlite3-src v0.5.1
Compiling prodash v29.0.2
Compiling equivalent v1.0.1
Compiling base32 v0.4.0
Compiling base64ct v1.6.0
Compiling sha1_smol v1.0.0
Compiling ppv-lite86 v0.2.17
Compiling gix-features v0.39.1
Compiling pem-rfc7468 v0.7.0
Compiling rand_chacha v0.3.1
Compiling cypheraddr v0.4.0
Compiling indexmap v2.2.6
Compiling git-ref-format-macro v0.3.1
Compiling pbkdf2 v0.12.2
Compiling ghash v0.5.1
Compiling crossbeam-utils v0.8.19
Compiling chacha20poly1305 v0.10.1
Compiling aes v0.8.4
Compiling ctr v0.9.2
Compiling ryu v1.0.17
Compiling serde_json v1.0.140
Compiling aes-gcm v0.10.3
Compiling git-ref-format v0.3.1
Compiling crossbeam-channel v0.5.15
Compiling noise-framework v0.4.0
Compiling socks5-client v0.4.1
Compiling ssh-encoding v0.2.0
Compiling rand v0.8.5
Compiling blowfish v0.9.1
Compiling cbc v0.1.2
Compiling radicle-std-ext v0.1.0
Compiling home v0.5.9
Compiling gix-path v0.10.15
Compiling ssh-cipher v0.2.0
Compiling bcrypt-pbkdf v0.10.0
Compiling cyphernet v0.5.2
Compiling signature v2.2.0
Compiling ssh-key v0.6.6
Compiling ref-cast v1.0.24
Compiling qcheck v1.0.0
Compiling radicle-ssh v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-ssh)
Compiling lazy_static v1.5.0
Compiling dyn-clone v1.0.17
Compiling siphasher v1.0.1
Compiling typeid v1.0.3
Compiling radicle-dag v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-dag)
Compiling nonempty v0.9.0
Compiling erased-serde v0.4.6
Compiling iana-time-zone v0.1.60
Compiling jiff v0.2.1
Compiling serde-untagged v0.1.7
Compiling chrono v0.4.38
Compiling schemars v1.0.4
Compiling gix-date v0.9.4
Compiling colored v2.1.0
Compiling localtime v1.3.1
Compiling bytesize v2.0.1
Compiling winnow v0.6.26
Compiling tree-sitter-language v0.1.2
Compiling fast-glob v0.3.3
Compiling dunce v1.0.5
Compiling base64 v0.21.7
Compiling anstyle-query v1.0.2
Compiling gix-actor v0.33.2
Compiling gix-hashtable v0.6.0
Compiling gix-validate v0.9.4
Compiling utf8parse v0.2.1
Compiling anstyle-parse v0.2.3
Compiling gix-object v0.46.1
Compiling memmap2 v0.9.4
Compiling colorchoice v1.0.0
Compiling anstyle v1.0.6
Compiling anstream v0.6.13
Compiling gix-chunk v0.4.11
Compiling linux-raw-sys v0.9.4
Compiling gix-commitgraph v0.25.1
Compiling rustix v1.0.7
Compiling gix-revwalk v0.17.0
Compiling anyhow v1.0.82
Compiling gix-fs v0.12.1
Compiling errno v0.3.13
Compiling sem_safe v0.2.0
Compiling unicode-segmentation v1.11.0
Compiling signals_receipts v0.2.0
Compiling gix-tempfile v15.0.0
Compiling signal-hook-registry v1.4.5
Compiling shell-words v1.1.0
Compiling gix-command v0.4.1
Compiling signal-hook v0.3.18
Compiling radicle-signals v0.11.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-signals)
Compiling tree-sitter v0.24.4
Compiling mio v1.0.4
Compiling mio v0.8.11
Compiling signal-hook-mio v0.2.4
Compiling sqlite3-sys v0.15.2
Compiling sqlite v0.32.0
Compiling getrandom v0.3.3
Compiling gix-lock v15.0.1
Compiling convert_case v0.7.1
Compiling gix-config-value v0.14.12
Compiling gix-url v0.28.2
Compiling gix-quote v0.4.15
Compiling regex v1.11.1
Compiling gix-sec v0.10.12
Compiling derive_more-impl v2.0.1
Compiling gix-prompt v0.9.1
Compiling uuid v1.16.0
Compiling xattr v1.3.1
Compiling gix-revision v0.31.1
Compiling gix-traverse v0.43.1
Compiling gix-diff v0.49.0
Compiling gix-packetline v0.18.4
Compiling filetime v0.2.23
Compiling bitflags v1.3.2
Compiling lexopt v0.3.0
Compiling crossterm v0.25.0
Compiling gix-transport v0.44.0
Compiling tar v0.4.40
Compiling gix-pack v0.56.0
Compiling derive_more v2.0.1
Compiling gix-refspec v0.27.0
Compiling gix-credentials v0.26.0
Compiling gix-shallow v0.1.0
Compiling gix-ref v0.49.1
Compiling newline-converter v0.3.0
Compiling gix-negotiate v0.17.0
Compiling fxhash v0.2.1
Compiling streaming-iterator v0.1.9
Compiling unicode-width v0.1.11
Compiling arc-swap v1.7.1
Compiling gimli v0.31.1
Compiling gix-odb v0.66.0
Compiling inquire v0.7.5
Compiling addr2line v0.24.2
Compiling gix-protocol v0.47.0
Compiling radicle-surf v0.22.0
Compiling crossterm v0.29.0
Compiling object v0.36.7
Compiling unicode-display-width v0.3.0
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-ruby v0.23.1
Compiling serde_spanned v1.0.0
Compiling toml_datetime v0.7.0
Compiling rustc-demangle v0.1.26
Compiling toml_writer v1.0.2
Compiling either v1.11.0
Compiling toml v0.9.5
Compiling backtrace v0.3.75
Compiling snapbox-macros v0.3.8
Compiling salsa20 v0.10.2
Compiling os_info v3.12.0
Compiling siphasher v0.3.11
Compiling similar v2.5.0
Compiling nonempty v0.5.0
Compiling radicle-cli v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli)
Compiling normalize-line-endings v0.3.0
Compiling base64 v0.13.1
Compiling snapbox v0.4.17
Compiling bloomy v1.2.0
Compiling human-panic v2.0.3
Compiling scrypt v0.11.0
Compiling tree-sitter-highlight v0.24.4
Compiling systemd-journal-logger v2.2.2
Compiling popol v3.0.0
Compiling bytes v1.10.1
Compiling timeago v0.4.2
Compiling io-reactor v0.5.2
Compiling socket2 v0.5.7
Compiling radicle-node v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-node)
Compiling yansi v0.5.1
Compiling diff v0.1.13
Compiling netservices v0.8.0
Compiling pretty_assertions v1.4.0
Compiling radicle-systemd v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-systemd)
Compiling num-integer v0.1.46
Compiling escargot v0.5.10
Compiling radicle-remote-helper v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-remote-helper)
Compiling num-bigint v0.4.6
Compiling num-iter v0.1.45
Compiling num-complex v0.4.6
Compiling env_filter v0.1.3
Compiling borrow-or-share v0.2.2
Compiling bit-vec v0.8.0
Compiling zerocopy v0.7.35
Compiling num-rational v0.4.2
Compiling ahash v0.8.11
Compiling num v0.4.3
Compiling bit-set v0.8.0
Compiling fluent-uri v0.3.2
Compiling env_logger v0.11.8
Compiling phf_shared v0.11.3
Compiling outref v0.5.2
Compiling vsimd v0.8.0
Compiling referencing v0.30.0
Compiling test-log v0.2.18
Compiling uuid-simd v0.8.0
Compiling phf v0.11.3
Compiling fancy-regex v0.14.0
Compiling fraction v0.15.3
Compiling email_address v0.2.9
Compiling base64 v0.22.1
Compiling num-cmp v0.1.0
Compiling bytecount v0.6.8
Compiling emojis v0.6.4
Compiling jsonschema v0.30.0
Compiling git2 v0.19.0
Compiling radicle-git-ext v0.8.1
Compiling radicle-term v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-term)
Compiling radicle-crypto v0.13.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-crypto)
Compiling radicle-cob v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cob)
Compiling radicle v0.18.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle)
Compiling radicle-fetch v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-fetch)
Compiling radicle-protocol v0.2.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-protocol)
Compiling radicle-cli-test v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.4.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s
+ cargo doc --workspace --no-deps
Checking regex-automata v0.4.9
Compiling syn v1.0.109
Checking idna v1.0.3
Checking radicle-ssh v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-ssh)
Compiling num-traits v0.2.19
Checking url v2.5.4
Checking radicle-dag v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-dag)
Checking git2 v0.19.0
Compiling amplify_syn v2.0.1
Checking bstr v1.9.1
Compiling proc-macro-error v1.0.4
Checking gix-path v0.10.15
Compiling data-encoding-macro-internal v0.1.12
Compiling amplify_derive v4.0.0
Compiling git-ref-format-macro v0.3.1
Checking git-ref-format-core v0.3.1
Checking data-encoding-macro v0.1.14
Checking gix-date v0.9.4
Checking git-ref-format v0.3.1
Checking multibase v0.9.1
Checking radicle-git-ext v0.8.1
Checking gix-validate v0.9.4
Checking gix-actor v0.33.2
Checking chrono v0.4.38
Checking gix-commitgraph v0.25.1
Checking gix-object v0.46.1
Checking gix-command v0.4.1
Checking radicle-signals v0.11.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-signals)
Checking regex v1.11.1
Checking gix-revwalk v0.17.0
Checking gix-config-value v0.14.12
Checking tree-sitter v0.24.4
Checking gix-url v0.28.2
Checking gix-quote v0.4.15
Checking gix-prompt v0.9.1
Checking amplify v4.6.0
Checking gix-revision v0.31.1
Checking gix-traverse v0.43.1
Checking uuid v1.16.0
Checking gix-diff v0.49.0
Checking gix-packetline v0.18.4
Checking radicle-surf v0.22.0
Checking human-panic v2.0.3
Checking cyphergraphy v0.3.0
Checking gix-transport v0.44.0
Compiling radicle-cli v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli)
Checking gix-pack v0.56.0
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking gix-refspec v0.27.0
Checking tree-sitter-toml-ng v0.6.0
Checking socks5-client v0.4.1
Checking tree-sitter-highlight v0.24.4
Checking gix-credentials v0.26.0
Checking cyphernet v0.5.2
Checking gix-negotiate v0.17.0
Checking radicle-crypto v0.13.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-crypto)
Checking gix-ref v0.49.1
Checking gix-shallow v0.1.0
Checking radicle-cob v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cob)
Checking radicle-term v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-term)
Checking gix-odb v0.66.0
Checking radicle v0.18.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle)
Checking io-reactor v0.5.2
Checking gix-protocol v0.47.0
Compiling radicle-node v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-node)
Checking netservices v0.8.0
Checking radicle-systemd v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-systemd)
Documenting radicle-systemd v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-systemd)
Documenting radicle v0.18.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle)
Documenting radicle-cob v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cob)
Documenting radicle-crypto v0.13.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-crypto)
Documenting radicle-term v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-term)
Documenting radicle-signals v0.11.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-signals)
Documenting radicle-ssh v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-dag)
Checking radicle-fetch v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-fetch)
Documenting radicle-cli v0.15.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli)
Documenting radicle-cli-test v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-cli-test)
Checking radicle-protocol v0.2.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-protocol)
Documenting radicle-protocol v0.2.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-protocol)
Documenting radicle-node v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-node)
Documenting radicle-fetch v0.14.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-fetch)
Documenting radicle-remote-helper v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-remote-helper)
Checking radicle-remote-helper v0.12.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-remote-helper)
Documenting radicle-schemars v0.4.0 (/65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/crates/radicle-schemars)
warning: unresolved link to `UnixListener`
--> crates/radicle-node/src/runtime.rs:103:15
|
103 | /// Wraps a [`UnixListener`] but tracks its origin.
| ^^^^^^^^^^^^ no item named `UnixListener` in scope
|
= help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
= note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
warning: `radicle-node` (lib doc) generated 1 warning
Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.08s
Generated /65b2d293-e51c-4c76-aae8-8e8e09e78ac3/w/target/doc/radicle/index.html and 16 other files
+ cargo test --workspace --no-fail-fast
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
Running unittests src/lib.rs (target/debug/deps/radicle-ec77ac8e387e942c)
running 229 tests
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test cob::cache::tests::test_check_version ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::common::test::test_color ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... 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_updates ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_comment_redact ... 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_create_and_get ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_react ... ok
test cob::issue::test::test_ordering ... ok
test cob::patch::actions::test::test_review_edit ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_issue_label ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::cache::tests::test_remove ... 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::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_merge ... 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_duplicate ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::stream::tests::test_all_from ... ok
test cob::stream::tests::test_all_from_until ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::stream::tests::test_all_until ... ok
test cob::stream::tests::test_from_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_edit_redacted ... ok
test cob::patch::test::test_patch_update ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_redact_comment ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_timeline ... ok
test git::canonical::rules::tests::test_deserialization ... ok
test git::canonical::rules::tests::test_deserialize_extensions ... ok
test git::canonical::rules::tests::test_order ... ok
test git::canonical::rules::tests::test_roundtrip ... ok
test git::canonical::rules::tests::test_canonical ... ok
test git::canonical::rules::tests::test_rule_validate_success ... ok
test git::canonical::rules::tests::test_special_branches ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test git::canonical::tests::test_quorum_groups ... ok
test git::canonical::tests::test_quorum_merges ... ok
test git::canonical::tests::test_quorum ... ok
test git::canonical::tests::test_quorum_tag ... 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 identity::doc::id::test::prop_from_str ... ok
test cob::thread::tests::prop_ordering ... 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 git::canonical::tests::test_quorum_properties ... 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::config::test::partial ... 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 identity::doc::test::test_max_delegates ... ok
test node::routing::test::test_entries ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_and_remove ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_remove_many ... ok
test node::routing::test::test_remove_redundant ... ok
test node::routing::test::test_update_existing_multi ... ok
test node::sync::announce::test::all_synced_nodes_are_preferred_seeds ... ok
test node::sync::announce::test::announcer_adapts_target_to_reach ... ok
test node::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::routing::test::test_prune ... ok
test node::sync::announce::test::announcer_synced_with_unknown_node ... ok
test node::sync::announce::test::announcer_reached_preferred_seeds ... ok
test node::sync::announce::test::announcer_with_replication_factor_zero_and_preferred_seeds ... ok
test node::sync::announce::test::cannot_construct_announcer ... ok
test node::sync::announce::test::announcer_timed_out ... ok
test node::sync::announce::test::construct_only_preferred_seeds_provided ... ok
test node::sync::announce::test::construct_node_appears_in_multiple_input_sets ... ok
test node::sync::announce::test::local_node_in_multiple_sets ... ok
test node::sync::announce::test::invariant_progress_should_match_state ... ok
test node::sync::announce::test::local_node_in_synced_set ... ok
test node::sync::announce::test::local_node_in_preferred_seeds ... ok
test node::sync::announce::test::local_node_only_in_all_sets_results_in_no_seeds_error ... ok
test node::sync::announce::test::preferred_seeds_already_synced ... 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::timed_out_after_reaching_success ... ok
test node::sync::fetch::test::all_nodes_are_candidates ... ok
test node::sync::announce::test::local_node_in_unsynced_set ... ok
test node::sync::fetch::test::could_not_reach_target ... ok
test node::sync::fetch::test::ignores_duplicates_and_local_node ... ok
test node::sync::fetch::test::preferred_seeds_target_returned_over_replicas ... ok
test node::sync::fetch::test::reaches_target_of_max_replicas ... ok
test node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok
test node::sync::fetch::test::all_nodes_are_fetchable ... ok
test node::sync::test::ensure_replicas_construction ... ok
test node::sync::test::replicas_constrain_to ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test node::sync::fetch::test::reaches_target_of_replicas ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test rad::tests::test_checkout ... ok
test profile::config::test::schema ... ok
test rad::tests::test_fork ... ok
test serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test identity::doc::test::prop_encode_decode ... ok
test storage::git::tests::test_references_of ... ok
test rad::tests::test_init ... ok
test storage::git::transport::local::url::test::test_url_parse ... ok
test storage::git::transport::local::url::test::test_url_to_string ... ok
test storage::git::transport::remote::url::test::test_url_parse ... ok
test storage::refs::tests::prop_canonical_roundtrip ... ok
test storage::git::tests::test_sign_refs ... 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::git::tests::test_remote_refs ... ok
test storage::refs::tests::test_rid_verification ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test result: ok. 229 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.67s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-f8dd795bc37ed550)
running 14 tests
test commands::rad_patch::review::builder::tests::test_review_comments_before ... ok
test commands::rad_inspect::test::test_tree ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_multiline ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_basic ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_split_hunk ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::pretty_diff::test::test_pretty ... ignored
test git::unified_diff::test::test_diff_content_encode_decode_content ... 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. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/debug/deps/rad-a289f7ed8659ae22)
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-15a49647099454c2)
running 102 tests
test framework_home ... ok
test git_push_amend ... ok
test git_push_and_fetch ... ok
test git_push_canonical_annotated_tags ... ok
test git_push_canonical_lightweight_tags ... ok
test git_push_diverge ... ok
test rad_auth ... ok
test rad_auth_errors ... ok
test rad_block ... ok
test rad_checkout ... ok
test git_tag ... ok
test git_push_rollback ... ok
test git_push_converge ... ok
test rad_clone ... ok
test rad_clean ... ok
test rad_clone_connect ... ok
test rad_clone_unknown ... ok
test rad_clone_directory ... ok
test rad_clone_all ... ok
test rad_cob_multiset ... ok
test rad_cob_log ... ok
test rad_cob_migrate ... ok
test rad_cob_operations ... ok
test rad_cob_update_identity ... ok
test rad_cob_show ... ok
test rad_clone_partial_fail ... ok
test rad_cob_update ... ok
test rad_config ... ok
test rad_diff ... ok
test rad_id_collaboration ... ignored, slow
test rad_id ... ok
test rad_id_conflict ... ok
test rad_id_missing_commits ... ok
test rad_id_private ... ok
test rad_id_multi_delegate ... ok
test rad_id_threshold ... ok
test rad_id_threshold_soft_fork ... ok
test rad_id_unknown_field ... ok
test rad_id_update_delete_field ... ok
test rad_init ... ignored, part of many other tests
test rad_init_detached_head ... ok
test rad_init_existing ... ok
test rad_init_no_git ... ok
test rad_init_no_seed ... ok
test rad_init_private ... ok
test rad_init_private_clone ... ok
test rad_inbox ... ok
test rad_fetch ... ok
test rad_init_private_no_seed ... ok
test rad_fork ... ok
test rad_init_private_clone_seed ... ok
test rad_init_sync_not_connected ... ok
test rad_init_private_seed ... ok
test rad_init_with_existing_remote ... ok
test rad_init_sync_preferred ... ok
test rad_inspect ... ok
test rad_issue ... ok
test rad_merge_after_update ... ok
test rad_merge_no_ff ... ok
test rad_merge_via_push ... ok
test rad_node_connect ... ok
test rad_node_connect_without_address ... ok
test rad_patch ... ok
test rad_node ... ok
test rad_patch_ahead_behind ... ok
test rad_patch_change_base ... ok
test rad_patch_checkout ... ok
test rad_patch_checkout_revision ... ok
test rad_patch_checkout_force ... ok
test rad_patch_detached_head ... ok
test rad_patch_diff ... ok
test rad_patch_draft ... ok
test rad_init_sync_timeout ... ok
test rad_init_sync_and_clone ... ok
test rad_patch_edit ... ok
test rad_patch_merge_draft ... ok
test rad_patch_fetch_2 ... ok
test rad_patch_delete ... ok
test rad_patch_fetch_1 ... ok
test rad_patch_revert_merge ... ok
test rad_patch_update ... ok
test rad_publish ... ok
test rad_patch_open_explore ... ok
test rad_patch_via_push ... ok
test rad_review_by_hunk ... ok
test rad_seed_and_follow ... ok
test rad_remote ... ok
test rad_seed_many ... ok
test rad_self ... ok
test rad_sync_without_node ... ok
test rad_unseed ... ok
test rad_push_and_pull_patches ... ok
test rad_warn_old_nodes ... ok
test rad_unseed_many ... ok
test rad_sync ... ok
test rad_watch ... ok
test test_clone_without_seeds ... ok
test test_cob_deletion ... ok
test test_cob_replication ... ok
test rad_workflow ... ok
test rad_patch_pull_update ... ok
test test_replication_via_seed ... ok
test result: ok. 100 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 75.80s
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-b96fb2279f7a3226)
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-2ed645dea51744bb)
running 8 tests
test object::tests::test_serde ... ok
test tests::invalid_parse_refstr ... ok
test tests::parse_refstr ... ok
test tests::traverse_cobs ... ok
test type_name::test::valid_typenames ... ok
test tests::roundtrip ... ok
test tests::list_cobs ... ok
test tests::update_cob ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running unittests src/lib.rs (target/debug/deps/radicle_crypto-b4d9cbb5b8695904)
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::prop_encode_decode_sk ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::test_agent_encoding_sign ... 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.80s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-7d941d2839407890)
running 20 tests
test tests::test_dependencies ... ok
test tests::test_contains ... ok
test tests::test_cycle ... ok
test tests::test_fold_diamond ... ok
test tests::test_complex ... ok
test tests::test_diamond ... ok
test tests::test_fold_multiple_roots ... ok
test tests::test_fold_reject ... ok
test tests::test_fold_sorting_1 ... ok
test tests::test_get ... ok
test tests::test_len ... ok
test tests::test_is_empty ... ok
test tests::test_merge_1 ... ok
test tests::test_merge_2 ... ok
test tests::test_fold_sorting_2 ... ok
test tests::test_prune_2 ... ok
test tests::test_prune_1 ... ok
test tests::test_siblings ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_remove ... 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-1bca959eefba4a81)
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_node-85ec7f657a193eee)
running 69 tests
test control::tests::test_control_socket ... ok
test control::tests::test_seed_unseed ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_background_foreground_fetch ... 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_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... 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_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_replication_ref_in_sigrefs ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_announcement_relay ... ok
test tests::test_disconnecting_unresponsive_peer ... ok
test tests::test_connection_kept_alive ... ok
test tests::test_fetch_missing_inventory_on_gossip ... ok
test tests::test_fetch_missing_inventory_on_schedule ... ok
test tests::test_inbound_connection ... ok
test tests::test_inventory_decode ... ok
test tests::test_init_and_seed ... ok
test tests::test_inventory_relay ... ok
test tests::test_inventory_relay_bad_timestamp ... ok
test tests::test_inventory_sync ... ok
test tests::test_maintain_connections ... ok
test tests::test_maintain_connections_failed_attempt ... ok
test tests::test_maintain_connections_transient ... ok
test tests::test_outbound_connection ... ok
test tests::test_inventory_pruning ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_persistent_peer_reconnect_success ... ok
test tests::test_persistent_peer_reconnect_attempt ... ok
test tests::test_ping_response ... ok
test tests::test_queued_fetch_from_command_same_rid ... ok
test tests::test_queued_fetch_from_ann_same_rid ... ok
test tests::test_redundant_connect ... ok
test tests::test_queued_fetch_max_capacity ... 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::test_refs_announcement_relay_private ... ok
test tests::test_refs_announcement_relay_public ... ok
test tests::test_refs_synced_event ... ok
test tests::test_seed_repo_subscribe ... 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::prop_inventory_exchange_dense ... ok
test tests::test_announcement_message_amplification ... ok
test result: ok. 69 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.38s
Running unittests src/main.rs (target/debug/deps/radicle_node-713549e8febd8f63)
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_protocol-9332fe9eb151ac09)
running 45 tests
test deserializer::test::test_unparsed ... ok
test deserializer::test::test_decode_next ... ok
test service::filter::test::test_parameters ... ok
test deserializer::test::prop_decode_next ... ok
test service::limiter::test::test_limitter_different_rates ... ok
test service::limiter::test::test_limitter_multi ... ok
test service::gossip::store::test::test_announced ... ok
test service::filter::test::test_sizes ... ok
test service::limiter::test::test_limitter_refill ... ok
test service::message::tests::test_ref_remote_limit ... ok
test wire::frame::test::test_stream_id ... ok
test service::message::tests::test_inventory_limit ... ok
test wire::message::tests::prop_addr ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test wire::message::tests::test_inv_ann_max_size ... ok
test wire::message::tests::test_node_ann_max_size ... ok
test wire::message::tests::test_ping_encode_size_overflow - should panic ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pong_encode_size_overflow - should panic ... ok
test wire::message::tests::prop_message_encode_decode ... ok
test wire::tests::prop_filter ... ok
test wire::tests::prop_id ... ok
test wire::tests::prop_oid ... ok
test wire::tests::prop_pubkey ... ok
test wire::tests::prop_refs ... ok
test wire::tests::prop_signature ... ok
test wire::tests::prop_signed_refs ... ok
test wire::tests::prop_string ... ok
test wire::tests::prop_tuple ... ok
test wire::tests::prop_u16 ... ok
test wire::tests::prop_u32 ... ok
test wire::tests::prop_u64 ... ok
test wire::tests::prop_u8 ... ok
test wire::tests::prop_vec ... 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_encode_decode ... ok
test wire::varint::test::test_encode_overflow - should panic ... ok
test wire::varint::test::test_encoding ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::message::tests::prop_message_decoder ... ok
test service::message::tests::test_node_announcement_validate ... ok
test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.42s
Running unittests src/lib.rs (target/debug/deps/radicle_remote_helper-968b926f067f11bd)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/git-remote-rad.rs (target/debug/deps/git_remote_rad-2e0057d90282bec9)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/debug/deps/radicle_schemars-9d8f76979dc4ebc2)
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-3340fefd7bdb5980)
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-45829b725338b561)
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-fc0dd6bce1d89188)
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-7a06c171a2f669f6)
running 20 tests
test cell::test::test_width ... ok
test ansi::tests::colors_disabled ... ok
test element::test::test_truncate ... ok
test element::test::test_width ... ok
test ansi::tests::wrapping ... ok
test ansi::tests::colors_enabled ... ok
test table::test::test_table ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border ... ok
test table::test::test_table_truncate ... ok
test table::test::test_table_unicode ... ok
test table::test::test_truncate ... ok
test table::test::test_table_unicode_truncate ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test vstack::test::test_vstack ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test vstack::test::test_vstack_maximize ... ok
test result: ok. 20 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/git/stable.rs - backend::git::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_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_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_protocol
running 6 tests
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>::truncate (line 50) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::with_capacity (line 66) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
Doc-tests radicle_remote_helper
running 0 tests
test result: ok. 0 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.45s
Exit code: 0
{
"response": "finished",
"result": "success"
}