Log from Radicle native CI

Table of contents

Request message

{
  "request": "trigger",
  "version": 1,
  "event_type": "push",
  "repository": {
    "id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
    "name": "heartwood",
    "description": "Radicle Heartwood Protocol & Stack",
    "private": false,
    "default_branch": "master",
    "delegates": [
      "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
      "did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
      "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
      "did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
      "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
    ]
  },
  "pusher": {
    "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
    "alias": "fintohaps"
  },
  "before": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
  "after": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
  "branch": "master",
  "commits": [
    "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
    "e4d23fe56a7f7329ac98991bc55bb043ddede617",
    "547614a5bbdca85e1cbd205b37cae7e25ba01273",
    "3018223328d566c003e2bf37959302c6f314be42",
    "6bbe919c4b6ab9639b1130b12f83457f9fafa61c",
    "a90aabb1fe2c5d6d969f6c3236f45f93bc6bf3c4"
  ]
}

.radicle/native.yaml

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

Run: git clone /home/_rad/.radicle/storage/z3gqcJUoA1n9HaHKufZs5FCSGazv5 /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src

Command arguments:

In directory: /

Exit code: 0

Output (stdout and stderr):

Cloning into '/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src'...
done.

Run: git config advice.detachedHead false

Command arguments:

In directory: /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src

Exit code: 0

Run: git checkout f30760d6bb86d2978a5ed4df8ee45b9aa97778b4

Command arguments:

In directory: /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src

Exit code: 0

Output (stdout and stderr):

HEAD is now at f30760d6bb8 cob: Add CobAction::produces_identifier and validation

Run: git show f30760d6bb86d2978a5ed4df8ee45b9aa97778b4

Command arguments:

In directory: /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src

Exit code: 0

Output (stdout and stderr):

commit f30760d6bb86d2978a5ed4df8ee45b9aa97778b4
Author: Lorenz Leutgeb <lorenz@leutgeb.xyz>
Date:   Mon Apr 28 08:46:20 2025 +0200

    cob: Add CobAction::produces_identifier and validation
    
    Transactions will now fail/deny when adding multiple actions that
    produce an identifier.

diff --git a/radicle/src/cob/identity.rs b/radicle/src/cob/identity.rs
index e1162dfcf64..73dc74e3a1d 100644
--- a/radicle/src/cob/identity.rs
+++ b/radicle/src/cob/identity.rs
@@ -77,7 +77,11 @@ pub enum Action {
     RevisionRedact { revision: RevisionId },
 }
 
-impl CobAction for Action {}
+impl CobAction for Action {
+    fn produces_identifier(&self) -> bool {
+        matches!(self, Self::Revision { .. })
+    }
+}
 
 /// Error applying an operation onto a state.
 #[derive(Error, Debug)]
diff --git a/radicle/src/cob/issue.rs b/radicle/src/cob/issue.rs
index 825c12f2fc0..a53d20c67d5 100644
--- a/radicle/src/cob/issue.rs
+++ b/radicle/src/cob/issue.rs
@@ -935,7 +935,11 @@ pub enum Action {
     },
 }
 
-impl CobAction for Action {}
+impl CobAction for Action {
+    fn produces_identifier(&self) -> bool {
+        matches!(self, Self::Comment { .. })
+    }
+}
 
 #[cfg(test)]
 #[allow(clippy::unwrap_used)]
@@ -946,8 +950,8 @@ mod test {
     use crate::cob::{store::CobWithType, ActorId, Reaction};
     use crate::git::Oid;
     use crate::issue::cache::Issues as _;
-    use crate::test;
     use crate::test::arbitrary;
+    use crate::{assert_matches, test};
 
     #[test]
     fn test_concurrency() {
@@ -1688,6 +1692,29 @@ mod test {
         assert_eq!(issue.comments().count(), 1);
     }
 
+    #[test]
+    fn test_invalid_tx_reference() {
+        let test::setup::NodeWithRepo { node, repo, .. } = test::setup::NodeWithRepo::default();
+        let mut issues = Cache::no_cache(&*repo).unwrap();
+        let issue = issues
+            .create(
+                "My first issue",
+                "Blah blah blah.",
+                &[],
+                &[],
+                [],
+                &node.signer,
+            )
+            .unwrap();
+
+        // Comments require references, so adding two of them to the same transaction errors.
+        let mut tx: Transaction<Issue, test::storage::git::Repository> =
+            Transaction::<Issue, _>::default();
+        tx.comment("First reply", *issue.id, vec![]).unwrap();
+        let err = tx.comment("Second reply", *issue.id, vec![]).unwrap_err();
+        assert_matches!(err, cob::store::Error::ClashingIdentifiers(_, _));
+    }
+
     #[test]
     fn test_invalid_cob() {
         use crate::crypto::test::signer::MockSigner;
diff --git a/radicle/src/cob/patch.rs b/radicle/src/cob/patch.rs
index e700a490e90..1666c1d3970 100644
--- a/radicle/src/cob/patch.rs
+++ b/radicle/src/cob/patch.rs
@@ -320,6 +320,16 @@ impl CobAction for Action {
             _ => vec![],
         }
     }
+
+    fn produces_identifier(&self) -> bool {
+        matches!(
+            self,
+            Self::Revision { .. }
+                | Self::RevisionComment { .. }
+                | Self::Review { .. }
+                | Self::ReviewComment { .. }
+        )
+    }
 }
 
 /// Output of a merge.
diff --git a/radicle/src/cob/store.rs b/radicle/src/cob/store.rs
index 0511f0c7223..bd67b2d3de2 100644
--- a/radicle/src/cob/store.rs
+++ b/radicle/src/cob/store.rs
@@ -22,6 +22,23 @@ pub trait CobAction: Debug {
     fn parents(&self) -> Vec<git::Oid> {
         Vec::new()
     }
+
+    /// The outcome of some actions are to be referred later.
+    /// For example, one action may create a comment, followed by another
+    /// action that may create a reply to the comment, referring to it.
+    /// Since actions are stored as part of [`crate::cob::op::Op`],
+    /// and operations are the smallest identifiable units,
+    /// this may lead to ambiguity.
+    /// It would not be possible to to, say, address one particular comment out
+    /// of two, if the corresponding actions of creations were part of the
+    /// same operation.
+    /// To help avoid this, implementations signal whether specific actions
+    /// require "their own" identifier.
+    /// This allows checking for multiple such actions before creating an
+    /// operation.
+    fn produces_identifier(&self) -> bool {
+        false
+    }
 }
 
 /// A collaborative object. Can be materialized from an operation history.
@@ -111,6 +128,8 @@ pub enum Error {
         #[source]
         err: git::raw::Error,
     },
+    #[error("transaction already contains action {0} which produces an identifier, denying to add action {1} which also produces an identifier")]
+    ClashingIdentifiers(String, String),
 }
 
 /// Storage for collaborative objects of a specific type `T` in a single repository.
@@ -340,6 +359,13 @@ pub struct Transaction<T: Cob + cob::Evaluate<R>, R> {
     actions: Vec<T::Action>,
     embeds: Vec<Embed<Uri>>,
 
+    // Internal state kept for validation of the transaction.
+    // If an action that produces an identifier is added to
+    // the transaction, then this will track its index,
+    // so that adding a second action that produces an identifier
+    // can fail with a useful error.
+    produces_identifier: Option<usize>,
+
     repo: PhantomData<R>,
     type_name: TypeName,
 }
@@ -349,6 +375,7 @@ impl<T: Cob + CobWithType + cob::Evaluate<R>, R> Default for Transaction<T, R> {
         Self {
             actions: Vec::new(),
             embeds: Vec::new(),
+            produces_identifier: None,
             repo: PhantomData,
             type_name: T::type_name().clone(),
         }
@@ -363,6 +390,7 @@ where
         Self {
             actions,
             embeds,
+            produces_identifier: None,
             repo: PhantomData,
             type_name,
         }
@@ -405,15 +433,29 @@ where
 {
     /// Add an action to this transaction.
     pub fn push(&mut self, action: T::Action) -> Result<(), Error> {
+        if action.produces_identifier() {
+            if let Some(index) = self.produces_identifier {
+                return Err(Error::ClashingIdentifiers(
+                    serde_json::to_string(&self.actions[index])?,
+                    serde_json::to_string(&action)?,
+                ));
+            } else {
+                self.produces_identifier = Some(self.actions.len())
+            }
+        }
+
         self.actions.push(action);
 
         Ok(())
     }
 
     /// Add actions to this transaction.
-    pub fn extend(&mut self, actions: impl IntoIterator<Item = T::Action>) -> Result<(), Error> {
-        self.actions.extend(actions);
-
+    /// Note that we cannot implement [`std::iter::Extend`] because [`Self::push`]
+    /// validates the action being pushed, and therefore is falliable.
+    pub fn extend<I: IntoIterator<Item = T::Action>>(&mut self, actions: I) -> Result<(), Error> {
+        for action in actions {
+            self.push(action)?;
+        }
         Ok(())
     }
 
diff --git a/radicle/src/cob/thread.rs b/radicle/src/cob/thread.rs
index 08670dc6b22..7ae4c3bf16f 100644
--- a/radicle/src/cob/thread.rs
+++ b/radicle/src/cob/thread.rs
@@ -272,7 +272,11 @@ pub enum Action {
     },
 }
 
-impl cob::store::CobAction for Action {}
+impl cob::store::CobAction for Action {
+    fn produces_identifier(&self) -> bool {
+        matches!(self, Self::Comment { .. })
+    }
+}
 
 impl From<Action> for nonempty::NonEmpty<Action> {
     fn from(action: Action) -> Self {

Run: bash -c set -xeuo pipefail 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

Command arguments:

In directory: /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src

Exit code: 0

Output (stdout and stderr):

+ cargo --version
cargo 1.85.1 (d73d2caf9 2024-12-31)
+ rustc --version
rustc 1.85.1 (4eb161250 2025-03-15)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
   Compiling libc v0.2.155
   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 typenum v1.17.0
    Checking memchr v2.7.2
    Checking regex-syntax v0.8.5
   Compiling serde v1.0.219
    Checking smallvec v1.13.2
    Checking log v0.4.21
    Checking fastrand v2.1.0
   Compiling autocfg v1.2.0
    Checking subtle v2.5.0
    Checking bitflags v2.5.0
   Compiling syn v1.0.109
    Checking stable_deref_trait v1.2.0
    Checking once_cell v1.19.0
    Checking zeroize v1.7.0
    Checking tinyvec_macros v0.1.1
    Checking cpufeatures v0.2.12
   Compiling crc32fast v1.4.0
    Checking writeable v0.5.5
   Compiling icu_locid_transform_data v1.5.1
    Checking tinyvec v1.6.0
    Checking litemap v0.7.5
   Compiling icu_properties_data v1.5.1
   Compiling pkg-config v0.3.30
   Compiling generic-array v0.14.7
   Compiling icu_normalizer_data v1.5.1
   Compiling thiserror v1.0.69
    Checking utf16_iter v1.0.5
    Checking utf8_iter v1.0.4
    Checking write16 v1.0.0
   Compiling rustix v0.38.34
    Checking percent-encoding v2.3.1
    Checking linux-raw-sys v0.4.13
    Checking aho-corasick v1.1.3
    Checking itoa v1.0.11
    Checking hashbrown v0.14.3
    Checking form_urlencoded v1.2.1
   Compiling vcpkg v0.2.15
    Checking opaque-debug v0.3.1
   Compiling data-encoding v2.5.0
    Checking byteorder v1.5.0
    Checking amplify_num v0.5.2
   Compiling quote v1.0.36
    Checking unicode-normalization v0.1.23
    Checking signature v1.6.4
    Checking ascii v1.1.0
    Checking ed25519 v1.5.3
    Checking getrandom v0.2.15
   Compiling jobserver v0.1.31
   Compiling proc-macro-error-attr v1.0.4
   Compiling syn v2.0.89
    Checking ct-codecs v1.1.1
    Checking rand_core v0.6.4
    Checking base-x v0.2.11
   Compiling proc-macro-error v1.0.4
    Checking ec25519 v0.1.0
   Compiling cc v1.2.2
    Checking keccak v0.1.5
    Checking ppv-lite86 v0.2.17
    Checking base32 v0.4.0
   Compiling thiserror v2.0.12
    Checking base64ct v1.6.0
   Compiling crossbeam-utils v0.8.19
    Checking radicle-std-ext v0.1.0
    Checking signature v2.2.0
   Compiling num-traits v0.2.18
    Checking equivalent v1.0.1
   Compiling serde_json v1.0.116
    Checking indexmap v2.2.6
    Checking tree-sitter-language v0.1.2
    Checking pem-rfc7468 v0.7.0
    Checking ryu v1.0.17
    Checking rand_chacha v0.3.1
    Checking siphasher v1.0.1
    Checking crypto-common v0.1.6
    Checking block-padding v0.3.3
    Checking block-buffer v0.10.4
    Checking regex-automata v0.4.9
   Compiling lock_api v0.4.11
    Checking radicle-dag v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-dag)
    Checking inout v0.1.3
   Compiling anyhow v1.0.82
    Checking digest v0.10.7
    Checking universal-hash v0.5.1
    Checking aead v0.5.2
    Checking cipher v0.4.4
    Checking poly1305 v0.8.0
    Checking polyval v0.6.2
    Checking sha2 v0.10.8
    Checking hmac v0.12.1
    Checking sha3 v0.10.8
    Checking rand v0.8.5
   Compiling parking_lot_core v0.9.9
    Checking crossbeam-channel v0.5.15
    Checking chacha20 v0.9.1
    Checking pbkdf2 v0.12.2
    Checking ghash v0.5.1
    Checking ctr v0.9.2
    Checking aes v0.8.4
    Checking blowfish v0.9.1
    Checking cbc v0.1.2
    Checking lazy_static v1.5.0
    Checking ssh-encoding v0.2.0
    Checking chacha20poly1305 v0.10.1
    Checking scopeguard v1.2.0
    Checking bcrypt-pbkdf v0.10.0
    Checking iana-time-zone v0.1.60
    Checking gix-trace v0.1.12
    Checking anstyle-query v1.0.2
    Checking colored v2.1.0
    Checking utf8parse v0.2.1
    Checking base64 v0.21.7
    Checking errno v0.3.9
    Checking sem_safe v0.2.0
    Checking anstyle v1.0.6
    Checking colorchoice v1.0.0
    Checking anstyle-parse v0.2.3
    Checking gix-utils v0.1.14
    Checking adler2 v2.0.0
    Checking signals_receipts v0.2.0
    Checking tempfile v3.10.1
    Checking parking_lot v0.12.1
    Checking aes-gcm v0.10.3
    Checking qcheck v1.0.0
    Checking miniz_oxide v0.8.8
    Checking anstream v0.6.13
    Checking similar v2.5.0
    Checking same-file v1.0.6
    Checking ssh-cipher v0.2.0
    Checking normalize-line-endings v0.3.0
    Checking prodash v29.0.2
    Checking radicle-signals v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-signals)
    Checking walkdir v2.5.0
    Checking ssh-key v0.6.6
    Checking sha1_smol v1.0.0
    Checking snapbox-macros v0.3.8
   Compiling libz-sys v1.1.16
   Compiling libgit2-sys v0.17.0+1.8.1
   Compiling sqlite3-src v0.5.1
   Compiling tree-sitter v0.24.4
    Checking chrono v0.4.38
    Checking flate2 v1.1.1
    Checking numtoa v0.1.0
    Checking diff v0.1.13
    Checking yansi v0.5.1
    Checking unicode-segmentation v1.11.0
    Checking snapbox v0.4.17
   Compiling filetime v0.2.23
   Compiling amplify_syn v2.0.1
    Checking pretty_assertions v1.4.0
    Checking lexopt v0.3.0
   Compiling escargot v0.5.10
    Checking home v0.5.9
    Checking newline-converter v0.3.0
    Checking termion v2.0.3
    Checking fxhash v0.2.1
    Checking dyn-clone v1.0.17
    Checking unicode-width v0.1.11
    Checking streaming-iterator v0.1.9
    Checking unicode-display-width v0.3.0
    Checking termion v3.0.0
   Compiling tree-sitter-bash v0.23.3
   Compiling tree-sitter-toml-ng v0.6.0
    Checking inquire v0.7.5
   Compiling tree-sitter-python v0.23.4
    Checking bstr v1.9.1
    Checking regex v1.11.1
   Compiling tree-sitter-rust v0.23.2
   Compiling tree-sitter-go v0.23.4
   Compiling tree-sitter-typescript v0.23.2
   Compiling tree-sitter-c v0.23.2
   Compiling tree-sitter-css v0.23.1
   Compiling tree-sitter-json v0.24.8
   Compiling tree-sitter-md v0.3.2
   Compiling tree-sitter-ruby v0.23.1
   Compiling tree-sitter-html v0.23.2
   Compiling synstructure v0.13.1
   Compiling data-encoding-macro-internal v0.1.12
   Compiling amplify_derive v4.0.0
   Compiling xattr v1.3.1
   Compiling tar v0.4.40
   Compiling radicle-cli v0.12.1 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli)
    Checking nonempty v0.5.0
    Checking base64 v0.13.1
    Checking data-encoding-macro v0.1.14
    Checking multibase v0.9.1
    Checking timeago v0.4.2
    Checking jiff v0.2.1
    Checking winnow v0.6.26
    Checking memmap2 v0.9.4
    Checking shell-words v1.1.0
    Checking gix-sec v0.10.12
    Checking arc-swap v1.7.1
    Checking popol v3.0.0
    Checking either v1.11.0
    Checking salsa20 v0.10.2
    Checking socket2 v0.5.7
   Compiling radicle-node v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-node)
    Checking siphasher v0.3.11
    Checking scrypt v0.11.0
    Checking radicle-systemd v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-systemd)
   Compiling qcheck-macros v1.0.0
   Compiling radicle-surf v0.22.0
    Checking bloomy v1.2.0
   Compiling radicle-remote-helper v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-remote-helper)
    Checking phf_shared v0.11.3
    Checking phf v0.11.3
    Checking emojis v0.6.4
   Compiling serde_derive v1.0.219
   Compiling zerofrom-derive v0.1.6
   Compiling yoke-derive v0.7.5
   Compiling zerovec-derive v0.10.3
   Compiling displaydoc v0.2.5
   Compiling icu_provider_macros v1.5.0
   Compiling thiserror-impl v1.0.69
    Checking amplify v4.6.0
   Compiling thiserror-impl v2.0.12
    Checking cyphergraphy v0.3.0
   Compiling maybe-async v0.2.10
    Checking io-reactor v0.5.2
    Checking cypheraddr v0.4.0
    Checking noise-framework v0.4.0
    Checking socks5-client v0.4.1
    Checking cyphernet v0.5.2
    Checking netservices v0.8.0
    Checking zerofrom v0.1.6
    Checking yoke v0.7.5
    Checking zerovec v0.10.4
   Compiling git-ref-format-core v0.3.0
    Checking radicle-ssh v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-ssh)
    Checking tree-sitter-highlight v0.24.4
    Checking gix-path v0.10.15
    Checking gix-date v0.9.4
    Checking gix-validate v0.9.4
    Checking gix-chunk v0.4.11
    Checking gix-quote v0.4.15
   Compiling git-ref-format-macro v0.3.0
    Checking gix-command v0.4.1
    Checking gix-config-value v0.14.12
    Checking gix-actor v0.33.2
    Checking tinystr v0.7.6
    Checking icu_collections v1.5.0
    Checking gix-prompt v0.9.1
    Checking icu_locid v1.5.0
    Checking icu_provider v1.5.0
    Checking icu_locid_transform v1.5.0
    Checking icu_properties v1.5.1
    Checking nonempty v0.9.0
    Checking bytesize v2.0.1
    Checking localtime v1.3.1
    Checking faster-hex v0.9.0
    Checking gix-hash v0.15.1
    Checking git-ref-format v0.3.0
    Checking gix-packetline v0.18.4
    Checking gix-features v0.39.1
    Checking gix-hashtable v0.6.0
    Checking gix-object v0.46.1
    Checking gix-commitgraph v0.25.1
    Checking gix-fs v0.12.1
    Checking icu_normalizer v1.5.0
    Checking gix-tempfile v15.0.0
    Checking gix-lock v15.0.1
    Checking gix-shallow v0.1.0
    Checking idna_adapter v1.2.0
    Checking idna v1.0.3
    Checking gix-revwalk v0.17.0
    Checking gix-diff v0.49.0
    Checking gix-ref v0.49.1
    Checking url v2.5.4
    Checking gix-revision v0.31.1
    Checking gix-traverse v0.43.1
    Checking gix-negotiate v0.17.0
    Checking gix-pack v0.56.0
    Checking gix-refspec v0.27.0
    Checking git2 v0.19.0
    Checking gix-url v0.28.2
    Checking gix-transport v0.44.0
    Checking gix-credentials v0.26.0
    Checking gix-protocol v0.47.0
    Checking gix-odb v0.66.0
    Checking radicle-git-ext v0.8.0
    Checking radicle-term v0.12.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-term)
    Checking sqlite3-sys v0.15.2
    Checking sqlite v0.32.0
    Checking radicle-crypto v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crypto)
    Checking radicle-cob v0.13.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cob)
    Checking radicle-crdt v0.1.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crdt)
    Checking radicle v0.14.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle)
    Checking radicle-cli-test v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli-test)
    Checking radicle-fetch v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-fetch)
    Checking radicle-tools v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-tools)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.08s
+ cargo build --all-targets --workspace
   Compiling cfg-if v1.0.0
   Compiling shlex v1.3.0
   Compiling memchr v2.7.2
   Compiling regex-syntax v0.8.5
   Compiling smallvec v1.13.2
   Compiling fastrand v2.1.0
   Compiling log v0.4.21
   Compiling bitflags v2.5.0
   Compiling subtle v2.5.0
   Compiling libc v0.2.155
   Compiling stable_deref_trait v1.2.0
   Compiling typenum v1.17.0
   Compiling once_cell v1.19.0
   Compiling zeroize v1.7.0
   Compiling tinyvec_macros v0.1.1
   Compiling serde v1.0.219
   Compiling zerofrom v0.1.6
   Compiling cpufeatures v0.2.12
   Compiling tinyvec v1.6.0
   Compiling litemap v0.7.5
   Compiling yoke v0.7.5
   Compiling writeable v0.5.5
   Compiling adler2 v2.0.0
   Compiling icu_locid_transform_data v1.5.1
   Compiling crc32fast v1.4.0
   Compiling icu_properties_data v1.5.1
   Compiling icu_normalizer_data v1.5.1
   Compiling miniz_oxide v0.8.8
   Compiling write16 v1.0.0
   Compiling zerovec v0.10.4
   Compiling utf8_iter v1.0.4
   Compiling utf16_iter v1.0.5
   Compiling thiserror v1.0.69
   Compiling linux-raw-sys v0.4.13
   Compiling percent-encoding v2.3.1
   Compiling itoa v1.0.11
   Compiling hashbrown v0.14.3
   Compiling opaque-debug v0.3.1
   Compiling byteorder v1.5.0
   Compiling ascii v1.1.0
   Compiling amplify_num v0.5.2
   Compiling form_urlencoded v1.2.1
   Compiling aho-corasick v1.1.3
   Compiling signature v1.6.4
   Compiling jobserver v0.1.31
   Compiling getrandom v0.2.15
   Compiling data-encoding v2.5.0
   Compiling ed25519 v1.5.3
   Compiling generic-array v0.14.7
   Compiling rand_core v0.6.4
   Compiling cc v1.2.2
   Compiling unicode-normalization v0.1.23
   Compiling rustix v0.38.34
   Compiling ct-codecs v1.1.1
   Compiling base-x v0.2.11
   Compiling data-encoding-macro v0.1.14
   Compiling ec25519 v0.1.0
   Compiling keccak v0.1.5
   Compiling multibase v0.9.1
   Compiling git-ref-format-core v0.3.0
   Compiling base64ct v1.6.0
   Compiling tinystr v0.7.6
   Compiling icu_collections v1.5.0
   Compiling crypto-common v0.1.6
   Compiling block-padding v0.3.3
   Compiling icu_locid v1.5.0
   Compiling block-buffer v0.10.4
   Compiling ppv-lite86 v0.2.17
   Compiling base32 v0.4.0
   Compiling inout v0.1.3
   Compiling universal-hash v0.5.1
   Compiling aead v0.5.2
   Compiling digest v0.10.7
   Compiling cipher v0.4.4
   Compiling poly1305 v0.8.0
   Compiling polyval v0.6.2
   Compiling git-ref-format-macro v0.3.0
   Compiling sha2 v0.10.8
   Compiling sha3 v0.10.8
   Compiling chacha20 v0.9.1
   Compiling hmac v0.12.1
   Compiling ctr v0.9.2
   Compiling pbkdf2 v0.12.2
   Compiling aes v0.8.4
   Compiling icu_provider v1.5.0
   Compiling amplify v4.6.0
   Compiling chacha20poly1305 v0.10.1
   Compiling regex-automata v0.4.9
   Compiling rand_chacha v0.3.1
   Compiling ghash v0.5.1
   Compiling pem-rfc7468 v0.7.0
   Compiling thiserror v2.0.12
   Compiling blowfish v0.9.1
   Compiling cbc v0.1.2
   Compiling radicle-std-ext v0.1.0
   Compiling icu_locid_transform v1.5.0
   Compiling cyphergraphy v0.3.0
   Compiling ssh-encoding v0.2.0
   Compiling aes-gcm v0.10.3
   Compiling rand v0.8.5
   Compiling bcrypt-pbkdf v0.10.0
   Compiling crossbeam-utils v0.8.19
   Compiling libz-sys v1.1.16
   Compiling libgit2-sys v0.17.0+1.8.1
   Compiling sqlite3-src v0.5.1
   Compiling ssh-cipher v0.2.0
   Compiling signature v2.2.0
   Compiling cypheraddr v0.4.0
   Compiling noise-framework v0.4.0
   Compiling tempfile v3.10.1
   Compiling radicle-ssh v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-ssh)
   Compiling socks5-client v0.4.1
   Compiling crossbeam-channel v0.5.15
   Compiling icu_properties v1.5.1
   Compiling cyphernet v0.5.2
   Compiling qcheck v1.0.0
   Compiling ssh-key v0.6.6
   Compiling equivalent v1.0.1
   Compiling tree-sitter-language v0.1.2
   Compiling ryu v1.0.17
   Compiling indexmap v2.2.6
   Compiling num-traits v0.2.18
   Compiling siphasher v1.0.1
   Compiling nonempty v0.9.0
   Compiling radicle-dag v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-dag)
   Compiling lazy_static v1.5.0
   Compiling gix-trace v0.1.12
   Compiling iana-time-zone v0.1.60
   Compiling anstyle-query v1.0.2
   Compiling scopeguard v1.2.0
   Compiling colored v2.1.0
   Compiling parking_lot_core v0.9.9
   Compiling localtime v1.3.1
   Compiling bytesize v2.0.1
   Compiling lock_api v0.4.11
   Compiling base64 v0.21.7
   Compiling utf8parse v0.2.1
   Compiling anyhow v1.0.82
   Compiling anstyle-parse v0.2.3
   Compiling faster-hex v0.9.0
   Compiling sem_safe v0.2.0
   Compiling serde_json v1.0.116
   Compiling parking_lot v0.12.1
   Compiling errno v0.3.9
   Compiling colorchoice v1.0.0
   Compiling chrono v0.4.38
   Compiling anstyle v1.0.6
   Compiling signals_receipts v0.2.0
   Compiling gix-utils v0.1.14
   Compiling gix-hash v0.15.1
   Compiling normalize-line-endings v0.3.0
   Compiling same-file v1.0.6
   Compiling anstream v0.6.13
   Compiling similar v2.5.0
   Compiling walkdir v2.5.0
   Compiling prodash v29.0.2
   Compiling radicle-signals v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-signals)
   Compiling tree-sitter v0.24.4
   Compiling snapbox-macros v0.3.8
   Compiling flate2 v1.1.1
   Compiling sha1_smol v1.0.0
   Compiling diff v0.1.13
   Compiling unicode-segmentation v1.11.0
   Compiling numtoa v0.1.0
   Compiling bstr v1.9.1
   Compiling snapbox v0.4.17
   Compiling gix-features v0.39.1
   Compiling icu_normalizer v1.5.0
   Compiling yansi v0.5.1
   Compiling filetime v0.2.23
   Compiling home v0.5.9
   Compiling pretty_assertions v1.4.0
   Compiling lexopt v0.3.0
   Compiling newline-converter v0.3.0
   Compiling gix-path v0.10.15
   Compiling termion v2.0.3
   Compiling regex v1.11.1
   Compiling fxhash v0.2.1
   Compiling idna_adapter v1.2.0
   Compiling git-ref-format v0.3.0
   Compiling streaming-iterator v0.1.9
   Compiling dyn-clone v1.0.17
   Compiling unicode-width v0.1.11
   Compiling idna v1.0.3
   Compiling inquire v0.7.5
   Compiling escargot v0.5.10
   Compiling unicode-display-width v0.3.0
   Compiling termion v3.0.0
   Compiling tree-sitter-rust v0.23.2
   Compiling tree-sitter-css v0.23.1
   Compiling tree-sitter-go v0.23.4
   Compiling tree-sitter-html v0.23.2
   Compiling url v2.5.4
   Compiling xattr v1.3.1
   Compiling tar v0.4.40
   Compiling tree-sitter-toml-ng v0.6.0
   Compiling tree-sitter-typescript v0.23.2
   Compiling tree-sitter-bash v0.23.3
   Compiling tree-sitter-json v0.24.8
   Compiling tree-sitter-python v0.23.4
   Compiling tree-sitter-c v0.23.2
   Compiling tree-sitter-md v0.3.2
   Compiling tree-sitter-ruby v0.23.1
   Compiling radicle-surf v0.22.0
   Compiling nonempty v0.5.0
   Compiling radicle-cli v0.12.1 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli)
   Compiling base64 v0.13.1
   Compiling tree-sitter-highlight v0.24.4
   Compiling timeago v0.4.2
   Compiling jiff v0.2.1
   Compiling winnow v0.6.26
   Compiling gix-validate v0.9.4
   Compiling gix-hashtable v0.6.0
   Compiling memmap2 v0.9.4
   Compiling gix-chunk v0.4.11
   Compiling gix-fs v0.12.1
   Compiling shell-words v1.1.0
   Compiling gix-url v0.28.2
   Compiling gix-commitgraph v0.25.1
   Compiling gix-command v0.4.1
   Compiling gix-tempfile v15.0.0
   Compiling gix-config-value v0.14.12
   Compiling gix-quote v0.4.15
   Compiling gix-sec v0.10.12
   Compiling gix-packetline v0.18.4
   Compiling gix-lock v15.0.1
   Compiling arc-swap v1.7.1
   Compiling popol v3.0.0
   Compiling gix-prompt v0.9.1
   Compiling gix-transport v0.44.0
   Compiling gix-shallow v0.1.0
   Compiling either v1.11.0
   Compiling io-reactor v0.5.2
   Compiling gix-credentials v0.26.0
   Compiling salsa20 v0.10.2
   Compiling socket2 v0.5.7
   Compiling siphasher v0.3.11
   Compiling radicle-node v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-node)
   Compiling scrypt v0.11.0
   Compiling radicle-systemd v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-systemd)
   Compiling bloomy v1.2.0
   Compiling netservices v0.8.0
   Compiling radicle-remote-helper v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-remote-helper)
   Compiling phf_shared v0.11.3
   Compiling phf v0.11.3
   Compiling emojis v0.6.4
   Compiling gix-date v0.9.4
   Compiling gix-actor v0.33.2
   Compiling gix-object v0.46.1
   Compiling gix-revwalk v0.17.0
   Compiling gix-diff v0.49.0
   Compiling gix-ref v0.49.1
   Compiling gix-traverse v0.43.1
   Compiling gix-revision v0.31.1
   Compiling gix-negotiate v0.17.0
   Compiling gix-pack v0.56.0
   Compiling gix-refspec v0.27.0
   Compiling gix-protocol v0.47.0
   Compiling gix-odb v0.66.0
   Compiling git2 v0.19.0
   Compiling radicle-git-ext v0.8.0
   Compiling radicle-term v0.12.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-term)
   Compiling sqlite3-sys v0.15.2
   Compiling sqlite v0.32.0
   Compiling radicle-crypto v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crypto)
   Compiling radicle-cob v0.13.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cob)
   Compiling radicle-crdt v0.1.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crdt)
   Compiling radicle v0.14.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle)
   Compiling radicle-cli-test v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli-test)
   Compiling radicle-fetch v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-fetch)
   Compiling radicle-tools v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-tools)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.62s
+ cargo doc --workspace --no-deps
   Compiling syn v1.0.109
    Checking radicle-ssh v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-ssh)
    Checking radicle-dag v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-dag)
    Checking radicle-signals v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-signals)
   Compiling radicle-cli v0.12.1 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli)
   Compiling radicle-node v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-node)
    Checking radicle-systemd v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-systemd)
 Documenting radicle-signals v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-signals)
 Documenting radicle-ssh v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-ssh)
 Documenting radicle-dag v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-dag)
 Documenting radicle-systemd v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-systemd)
    Checking radicle-term v0.12.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-term)
 Documenting radicle-term v0.12.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-term)
   Compiling amplify_syn v2.0.1
   Compiling proc-macro-error v1.0.4
   Compiling data-encoding-macro-internal v0.1.12
   Compiling git-ref-format-macro v0.3.0
   Compiling amplify_derive v4.0.0
    Checking data-encoding-macro v0.1.14
    Checking git-ref-format v0.3.0
    Checking multibase v0.9.1
    Checking radicle-git-ext v0.8.0
    Checking radicle-surf v0.22.0
    Checking amplify v4.6.0
    Checking cyphergraphy v0.3.0
    Checking io-reactor v0.5.2
    Checking cypheraddr v0.4.0
    Checking noise-framework v0.4.0
    Checking socks5-client v0.4.1
    Checking cyphernet v0.5.2
    Checking radicle-crypto v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crypto)
    Checking netservices v0.8.0
 Documenting radicle-crypto v0.11.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crypto)
    Checking radicle-cob v0.13.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cob)
 Documenting radicle-crdt v0.1.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-crdt)
 Documenting radicle-cob v0.13.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cob)
    Checking radicle v0.14.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle)
 Documenting radicle v0.14.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle)
    Checking radicle-cli-test v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli-test)
    Checking radicle-fetch v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-fetch)
 Documenting radicle-fetch v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-fetch)
 Documenting radicle-cli-test v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli-test)
 Documenting radicle-cli v0.12.1 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-cli)
 Documenting radicle-node v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-node)
    Checking radicle-remote-helper v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-remote-helper)
 Documenting radicle-remote-helper v0.10.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-remote-helper)
 Documenting radicle-tools v0.9.0 (/srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/radicle-tools)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.83s
   Generated /srv/http/f8fa2cf9-215e-4313-b021-694cfe3a8519/src/target/doc/radicle/index.html and 22 other files
+ cargo test --workspace --no-fail-fast
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s
     Running unittests src/lib.rs (target/debug/deps/radicle-cbcedab996359b3f)

running 171 tests
test cob::common::test::test_color ... ok
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::common::test::test_emojis ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::cache::tests::test_check_version ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::issue::cache::tests::test_counts ... 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_get ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_react ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::issue::test::test_issue_label ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::issue::test::test_concurrency ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_redact_comment ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_review_duplicate ... 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 cob::thread::tests::test_timeline ... ok
test identity::did::test::test_did_vectors ... ok
test identity::doc::id::test::prop_from_str ... ok
test git::canonical::tests::test_quorum_merges ... ok
test cob::patch::test::test_patch_redact ... ok
test identity::doc::test::test_duplicate_dids ... ok
test identity::doc::test::test_future_version_error ... ok
test identity::doc::test::test_is_valid_version ... ok
test cob::patch::test::test_patch_review ... 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::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 cob::patch::test::test_patch_review_edit ... ok
test identity::doc::test::test_canonical_doc ... 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 identity::doc::test::test_canonical_example ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_insert_duplicate ... ok
test cob::patch::cache::tests::test_get ... 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::db::test::test_version ... ok
test node::address::store::test::test_remove_nothing ... 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_policy ... ok
test node::address::store::test::test_node_aliases ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_node_policies ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_update_scope ... ok
test node::policy::store::test::test_update_alias ... ok
test node::policy::store::test::test_node_aliases ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_get ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_entries ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test node::routing::test::test_insert_and_remove ... 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 serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test node::routing::test::test_prune ... 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_references_of ... ok
test git::canonical::tests::test_quorum ... ok
test rad::tests::test_init ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_checkout ... ok
test identity::doc::test::test_max_delegates ... ok
test cob::patch::cache::tests::test_counts ... ok
test storage::git::tests::test_remote_refs ... ok
test storage::refs::tests::test_rid_verification ... ok
test cob::patch::test::test_patch_update ... ok
test git::canonical::tests::test_quorum_properties ... ok
test node::address::store::test::test_empty ... ok
test cob::thread::tests::prop_ordering ... ok
test identity::doc::test::prop_encode_decode ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok

test result: ok. 171 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.04s

     Running unittests src/lib.rs (target/debug/deps/radicle_cli-251748f5cc5248ac)

running 14 tests
test git::pretty_diff::test::test_pretty ... ignored
test commands::rad_patch::review::builder::tests::test_review_comments_before ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_split_hunk ... 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_inspect::test::test_tree ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test terminal::format::test::test_bytes ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test terminal::patch::test::test_update_display_message ... ok
test terminal::patch::test::test_create_display_message ... ok

test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running unittests src/main.rs (target/debug/deps/rad-01072814f956d8cf)

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-e9a839806588f1b1)

running 96 tests
test rad_auth_errors ... ok
test framework_home ... ok
test rad_block ... ok
test rad_checkout ... ok
test rad_clone ... ok
test rad_clone_directory ... ok
test rad_clone_all ... ok
test rad_clone_unknown ... ok
test rad_auth ... ok
test rad_cob_multiset ... ok
test rad_cob_log ... ok
test rad_cob_migrate ... ok
test rad_cob_show ... ok
test rad_diff ... ok
test rad_id_collaboration ... ignored, slow
test rad_cob_update ... ok
test git_push_and_fetch ... ok
test rad_cob_update_identity ... ok
test rad_config ... ok
test git_push_amend ... ok
test git_tag ... ok
test rad_clone_connect ... ok
test git_push_diverge ... ok
test rad_clean ... ok
test git_push_rollback ... ok
test rad_id_private ... ok
test rad_id_update_delete_field ... ok
test rad_init ... ok
test rad_init_existing ... ok
test rad_id_unknown_field ... ok
test rad_init_no_git ... ok
test rad_init_no_seed ... ok
test rad_init_private ... ok
test rad_clone_partial_fail ... ok
test rad_init_private_no_seed ... ok
test rad_id ... ok
test rad_id_threshold_soft_fork ... ok
test rad_init_sync_not_connected ... ok
test rad_id_conflict ... ok
test git_push_converge ... ok
test rad_init_with_existing_remote ... ok
test rad_init_private_clone_seed ... ok
test rad_init_private_clone ... ok
test rad_inspect ... ok
test rad_init_private_seed ... ok
test rad_job ... ok
test rad_fetch ... ok
test rad_init_sync_preferred ... ok
test rad_issue ... ok
test rad_fork ... ok
test rad_merge_no_ff ... ok
test rad_merge_after_update ... ok
test rad_id_threshold ... ok
test rad_inbox ... ok
test rad_id_multi_delegate ... ok
test rad_merge_via_push ... ok
test rad_patch_ahead_behind ... ok
test rad_patch_change_base ... ok
test rad_patch_checkout ... ok
test rad_patch_detached_head ... ok
test rad_node_connect ... ok
test rad_node ... ok
test rad_patch_checkout_revision ... ok
test rad_patch ... ok
test rad_patch_draft ... ok
test rad_patch_diff ... ok
test rad_patch_edit ... ok
test rad_patch_fetch_2 ... ok
test rad_patch_merge_draft ... ok
test rad_init_sync_and_clone ... ok
test rad_patch_update ... ok
test rad_patch_revert_merge ... ok
test rad_init_sync_timeout ... ok
test rad_publish ... ok
test rad_patch_via_push ... ok
test rad_review_by_hunk ... ok
test rad_seed_and_follow ... ok
test rad_self ... ok
test rad_patch_fetch_1 ... ok
test rad_unseed ... ok
test rad_patch_checkout_force ... ok
test rad_unseed_many ... ok
test test_clone_without_seeds ... ok
test rad_patch_open_explore ... ok
test rad_sync_without_node ... ok
test rad_seed_many ... ok
test rad_watch ... ok
test test_cob_deletion ... ok
test test_cob_replication ... ok
test rad_remote ... ok
test rad_push_and_pull_patches ... ok
test rad_sync ... ok
test rad_patch_delete ... ok
test rad_patch_pull_update ... ok
test rad_workflow ... ok
test test_replication_via_seed ... ok

test result: ok. 95 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 61.53s

     Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-019416717c61773a)

running 3 tests
test tests::test_parse ... ok
test tests::test_run ... ok
test tests::test_example_spaced_brackets ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/radicle_cob-51e2cb672c60c662)

running 8 tests
test object::tests::test_serde ... ok
test type_name::test::valid_typenames ... ok
test tests::invalid_parse_refstr ... ok
test tests::parse_refstr ... ok
test tests::roundtrip ... ok
test tests::list_cobs ... ok
test tests::traverse_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_crdt-7e149ccf4e56bbfc)

running 24 tests
test immutable::test::test_merge_equal ... ok
test lwwmap::tests::test_insert ... ok
test immutable::test::test_merge_inequal - should panic ... ok
test lwwmap::tests::test_insert_remove ... ok
test lwwmap::tests::test_is_empty ... ok
test lwwmap::tests::test_remove_insert ... ok
test lwwreg::tests::test_merge ... ok
test lwwreg::tests::test_set_get ... ok
test lwwreg::tests::prop_semilattice ... ok
test lwwset::tests::test_insert ... ok
test lwwset::tests::test_insert_remove ... ok
test lwwset::tests::test_remove_insert ... ok
test redactable::test::test_both_present ... ok
test redactable::test::test_redacted ... ok
test redactable::test::prop_invariants ... ok
test tests::prop_bool_laws ... ok
test test::test_generator ... ok
test tests::prop_option_laws ... ok
test tests::test_option ... ok
test tests::test_bool ... ok
test gset::tests::prop_semilattice ... ok
test gmap::tests::prop_semilattice ... ok
test lwwset::tests::prop_semilattice ... ok
test lwwmap::tests::prop_semilattice ... ok

test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

     Running unittests src/lib.rs (target/debug/deps/radicle_crypto-636ff488446c56b4)

running 12 tests
test ssh::fmt::test::test_key ... ok
test ssh::fmt::test::test_fingerprint ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::test_agent_encoding_sign ... ok
test tests::test_encode_decode ... ok
test ssh::keystore::tests::test_init_no_passphrase ... ok
test ssh::test::prop_encode_decode_sk ... ok
test tests::test_e25519_dh ... ok
test tests::prop_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 1.35s

     Running unittests src/lib.rs (target/debug/deps/radicle_dag-569b0a6854e86d64)

running 20 tests
test tests::test_contains ... ok
test tests::test_cycle ... ok
test tests::test_dependencies ... ok
test tests::test_diamond ... ok
test tests::test_fold_multiple_roots ... ok
test tests::test_fold_diamond ... ok
test tests::test_fold_reject ... ok
test tests::test_fold_sorting_1 ... ok
test tests::test_get ... ok
test tests::test_fold_sorting_2 ... ok
test tests::test_is_empty ... ok
test tests::test_len ... ok
test tests::test_complex ... ok
test tests::test_merge_1 ... ok
test tests::test_merge_2 ... ok
test tests::test_prune_1 ... ok
test tests::test_remove ... ok
test tests::test_prune_2 ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_siblings ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/lib.rs (target/debug/deps/radicle_fetch-05fcd46c986cb4cd)

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-a9151bc25a4f93b5)

running 113 tests
test deserializer::test::test_decode_next ... ok
test service::filter::test::test_parameters ... ok
test deserializer::test::test_unparsed ... ok
test deserializer::test::prop_decode_next ... ok
test service::limiter::test::test_limitter_multi ... ok
test service::limiter::test::test_limitter_different_rates ... ok
test service::limiter::test::test_limitter_refill ... ok
test control::tests::test_control_socket ... ok
test control::tests::test_seed_unseed ... ok
test service::message::tests::test_ref_remote_limit ... ok
test service::gossip::store::test::test_announced ... ok
test service::filter::test::test_sizes ... ok
test service::message::tests::test_inventory_limit ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test service::message::tests::test_node_announcement_validate ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_connection_crossing ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_clone ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_fetch_followed_remotes ... 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_replication ... 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_replication_invalid ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::e2e::test_large_fetch ... ok
test tests::e2e::test_non_fastforward_sigrefs ... ok
test tests::test_connection_kept_alive ... ok
test tests::test_disconnecting_unresponsive_peer ... ok
test tests::test_inventory_decode ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_outdated_delegate_sigrefs ... ok
test tests::e2e::test_outdated_sigrefs ... ok
test tests::test_fetch_missing_inventory_on_gossip ... ok
test tests::test_fetch_missing_inventory_on_schedule ... ok
test tests::test_announcement_relay ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_inventory_relay_bad_timestamp ... ok
test tests::test_inbound_connection ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::test_inventory_sync ... ok
test tests::test_maintain_connections_failed_attempt ... ok
test tests::test_inventory_relay ... ok
test tests::test_persistent_peer_reconnect_success ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_outbound_connection ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_ping_response ... ok
test tests::test_redundant_connect ... ok
test tests::test_maintain_connections_transient ... ok
test tests::test_persistent_peer_reconnect_attempt ... ok
test tests::test_queued_fetch_max_capacity ... ok
test tests::test_refs_announcement_followed ... ok
test wire::frame::test::test_stream_id ... ok
test wire::message::tests::prop_addr ... ok
test tests::test_seeding ... ok
test tests::test_refs_announcement_fetch_trusted_no_inventory ... ok
test tests::test_refs_announcement_no_subscribe ... 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_pingpong_encode_max_size ... ok
test wire::message::tests::test_pingpong_encode_size_overflow ... ok
test wire::message::tests::prop_message_encode_decode ... ok
test wire::protocol::test::test_inventory_ann_with_extension ... ok
test wire::protocol::test::test_pong_message_with_extension ... ok
test wire::tests::prop_filter ... ok
test wire::tests::prop_id ... ok
test wire::tests::prop_oid ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test tests::test_seed_repo_subscribe ... ok
test wire::tests::prop_signature ... ok
test wire::tests::prop_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_pubkey ... 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::tests::prop_vec ... ok
test wire::tests::prop_signed_refs ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test tests::test_queued_fetch_from_command_same_rid ... ok
test tests::test_refs_announcement_offline ... ok
test tests::test_queued_fetch_from_ann_same_rid ... ok
test tests::test_maintain_connections ... ok
test wire::message::tests::prop_message_decoder ... ok
test tests::test_refs_synced_event ... ok
test tests::test_init_and_seed ... ok
test tests::test_refs_announcement_relay_private ... ok
test tests::test_refs_announcement_relay_public ... ok
test tests::test_inventory_pruning ... ok
test tests::prop_inventory_exchange_dense has been running for over 60 seconds
test tests::test_announcement_message_amplification has been running for over 60 seconds
test tests::prop_inventory_exchange_dense ... ok
test tests::test_announcement_message_amplification ... ok

test result: ok. 113 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 88.50s

     Running unittests src/main.rs (target/debug/deps/radicle_node-4820984cdb5701fb)

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_remote_helper-ec4b110573be437b)

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-6e1e6e7941f73781)

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-85fbd454a3bf0ac6)

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-9b2e5dfee304f504)

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-1b4159ebc8f1d2b1)

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-96f7925768df62cb)

running 20 tests
test ansi::tests::colors_disabled ... ok
test ansi::tests::wrapping ... ok
test cell::test::test_width ... ok
test ansi::tests::colors_enabled ... ok
test element::test::test_width ... ok
test table::test::test_table ... ok
test element::test::test_truncate ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_truncate ... ok
test table::test::test_table_unicode ... ok
test table::test::test_table_border ... ok
test table::test::test_truncate ... ok
test table::test::test_table_unicode_truncate ... 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 ... ok
test vstack::test::test_vstack_maximize ... ok
test textarea::test::test_wrapping_paragraphs ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-agent.rs (target/debug/deps/rad_agent-ebde29902276e4db)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-cli-demo.rs (target/debug/deps/rad_cli_demo-b4888d9c25fd0e5a)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-init.rs (target/debug/deps/rad_init-247a667ed33dcb00)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-merge.rs (target/debug/deps/rad_merge-02c7555617034abf)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-push.rs (target/debug/deps/rad_push-3ff35bc35af21c62)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-self.rs (target/debug/deps/rad_self-b8e8c77c09a2ee71)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/rad-set-canonical-refs.rs (target/debug/deps/rad_set_canonical_refs-81969bf711bec567)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests radicle

running 0 tests

test result: ok. 0 passed; 0 failed; 0 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 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_crdt

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests radicle_crypto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests radicle_dag

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests radicle_fetch

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests radicle_node

running 6 tests
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::with_capacity (line 66) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test radicle-node/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.70s

   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 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.69s