Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cli-test: Support '[..]'s which preserve spacing
Slack Coder committed 3 years ago
commit 11d10b4e473a99d005365b04f3633b79d513a38e
parent f11991737fcc3ab3ff7c06324030dd124bac31c4
4 files changed +76 -15
modified radicle-cli-test/src/lib.rs
@@ -163,6 +163,31 @@ impl TestFormula {
        Ok(self)
    }

+
    /// Convert instances of '[..   ]' to '[..]' where the number of ' 's are arbitrary.
+
    ///
+
    /// Supporting these bracket types help support using the '[..]' pattern while preserving
+
    /// spaces important for text alignment.
+
    fn map_spaced_brackets(s: &str) -> String {
+
        let mut ret = String::new();
+
        let mut pos = 0;
+

+
        for c in s.chars() {
+
            match (c, pos) {
+
                ('[', 0) => pos += 1,
+
                (' ', 1) => continue,
+
                ('.', 1) => pos += 1,
+
                ('.', 2) => pos += 1,
+
                ('.', 3) => continue,
+
                (' ', 3) => continue,
+
                (']', 3) => pos = 0,
+
                (_, _) => pos = 0,
+
            }
+
            ret.push(c);
+
        }
+

+
        ret
+
    }
+

    pub fn run(&mut self) -> Result<bool, io::Error> {
        let assert = Assert::new().substitutions(self.subs.clone());

@@ -213,12 +238,14 @@ impl TestFormula {
                match result {
                    Ok(output) => {
                        let assert = OutputAssert::new(output).with_assert(assert.clone());
+
                        let expected = Self::map_spaced_brackets(&assertion.expected);
+
                        let matches = assert.stdout_matches(&expected);
                        match assertion.exit {
                            ExitStatus::Success => {
-
                                assert.stdout_matches(&assertion.expected).success();
+
                                matches.success();
                            }
                            ExitStatus::Failure => {
-
                                assert.stdout_matches(&assertion.expected).failure();
+
                                matches.failure();
                            }
                        }
                    }
@@ -340,4 +367,38 @@ name = "radicle-cli-test"
            .unwrap();
        formula.run().unwrap();
    }
+

+
    #[test]
+
    fn test_example_spaced_brackets() {
+
        let input = r#"
+
Running a simple command such as `head`:
+
```
+
$ echo "    hello"
+
[..]hello
+
$ echo "    hello"
+
[..  ]hello
+
$ echo "    hello"
+
[  ..]hello
+
$ echo "[bug, good-first-issue]"
+
[bug, good-first-issue]
+
$ echo "[bug, good-first-issue]"
+
[bug, [  ..    ]-issue]
+
$ echo "[bug, good-first-issue]"
+
[bug, [  ...   ]-issue]
+
```
+
"#
+
        .trim()
+
        .as_bytes()
+
        .to_owned();
+

+
        let mut formula = TestFormula::new();
+
        formula
+
            .cwd(env!("CARGO_MANIFEST_DIR"))
+
            .read(
+
                Path::new("test.md"),
+
                io::BufReader::new(io::Cursor::new(input)),
+
            )
+
            .unwrap();
+
        formula.run().unwrap();
+
    }
}
modified radicle-cli/examples/rad-patch.md
@@ -44,7 +44,7 @@ $ rad patch
╭─────────────────────────────────────────────────────────────────────────────────────────╮
│ Define power requirements 191a14e R0 3e674d1 (flux-capacitor-power) ahead 1, behind 0   │
├─────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) 3 months ago │
+
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) [..         ]│
╰─────────────────────────────────────────────────────────────────────────────────────────╯
```
```
@@ -57,7 +57,7 @@ $ rad patch show 191a14e520f2eeff7c0e3ee0a5523c5217eecb89
│                                                                                         │
│ See details.                                                                            │
├─────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) 3 months ago │
+
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) [..         ]│
╰─────────────────────────────────────────────────────────────────────────────────────────╯

commit 3e674d1a1df90807e934f9ae5da2591dd6848a33
@@ -117,8 +117,8 @@ $ rad patch
╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Define power requirements 191a14e R1 27857ec (flux-capacitor-power, patch/191a14e) ahead 2, behind 0 │
├──────────────────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) 3 months ago              │
-
│ ↑ updated to b8f7bfbbb3c6a207b349e9f45bf535c706805871 (27857ec) 3 months ago                         │
-
│ ✓ accepted by z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) 3 months ago                    │
+
│ ● opened by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) [..                      ]│
+
│ ↑ updated to b8f7bfbbb3c6a207b349e9f45bf535c706805871 (27857ec) [..                                 ]│
+
│ ✓ accepted by z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) [..                            ]│
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
```
modified radicle-cli/examples/workflow/4-patching-contributor.md
@@ -44,7 +44,7 @@ $ rad patch
╭─────────────────────────────────────────────────────────────────────────────────────────╮
│ Define power requirements a07ef77 R0 3e674d1 (flux-capacitor-power) ahead 1, behind 0   │
├─────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (you) 3 months ago │
+
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (you) [..         ]│
╰─────────────────────────────────────────────────────────────────────────────────────────╯
$ rad patch show a07ef7743a32a2e902672ea3526d1db6ee08108a
╭─────────────────────────────────────────────────────────────────────────────────────────╮
@@ -55,7 +55,7 @@ $ rad patch show a07ef7743a32a2e902672ea3526d1db6ee08108a
│                                                                                         │
│ See details.                                                                            │
├─────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (you) 3 months ago │
+
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (you) [..         ]│
╰─────────────────────────────────────────────────────────────────────────────────────────╯

commit 3e674d1a1df90807e934f9ae5da2591dd6848a33
modified radicle-cli/examples/workflow/5-patching-maintainer.md
@@ -30,8 +30,8 @@ $ rad patch
╭───────────────────────────────────────────────────────────────────────────────────╮
│ Define power requirements a07ef77 R1 27857ec ahead 2, behind 0                    │
├───────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk 3 months ago │
-
│ ↑ updated to 11483929d8714a92992229f65433e06288f3b760 (27857ec) 3 months ago      │
+
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk [..         ]│
+
│ ↑ updated to 11483929d8714a92992229f65433e06288f3b760 (27857ec) [..              ]│
╰───────────────────────────────────────────────────────────────────────────────────╯
```

@@ -80,9 +80,9 @@ $ rad patch --merged
╭───────────────────────────────────────────────────────────────────────────────────────────────╮
│ Define power requirements a07ef77 R2 f6484e0 (flux-capacitor-power, master) ahead 3, behind 0 │
├───────────────────────────────────────────────────────────────────────────────────────────────┤
-
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk 3 months ago             │
-
│ ↑ updated to 11483929d8714a92992229f65433e06288f3b760 (27857ec) 3 months ago                  │
-
│ ↑ updated to 0795d619232479e910f95bb9c873ee1ec305c43c (f6484e0) 3 months ago                  │
-
│ ✓ merged by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) 3 months ago       │
+
│ ● opened by did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk [..                     ]│
+
│ ↑ updated to 11483929d8714a92992229f65433e06288f3b760 (27857ec) [..                          ]│
+
│ ↑ updated to 0795d619232479e910f95bb9c873ee1ec305c43c (f6484e0) [..                          ]│
+
│ ✓ merged by did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (you) [..               ]│
╰───────────────────────────────────────────────────────────────────────────────────────────────╯
```