Skip to content
This repository was archived by the owner on Oct 23, 2025. It is now read-only.

Commit b188f4c

Browse files
committed
Shorten cli example and some tests
1 parent 440ea64 commit b188f4c

File tree

2 files changed

+33
-55
lines changed

2 files changed

+33
-55
lines changed

examples/cli.rs

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
extern crate failure;
2+
#[macro_use]
23
extern crate output;
34

45
use output::{
5-
components::{span, text},
6+
components::{newline, text},
67
human, json,
78
};
89

@@ -13,35 +14,16 @@ fn main() -> Result<(), failure::Error> {
1314

1415
let x = 42;
1516

16-
out.print(&text(x.to_string()))?;
17-
18-
out.print(
19-
&span()
20-
.fg("blue")?
21-
.bg("yellow")?
22-
.underline(true)
23-
.bold(true)
24-
.intense(true)
25-
.add_item(text("mixed style")),
26-
)?;
27-
28-
out.print(
29-
&span()
30-
.intense(true)
31-
.fg("green")?
32-
.add_item(text("color with intense")),
33-
)?;
34-
35-
out.print(
36-
&span()
37-
.intense(false)
38-
.fg("green")?
39-
.add_item(text("color without intense")),
40-
)?;
41-
42-
out.print(&span().bold(true).add_item(text("bold")))?;
43-
44-
out.print(&span().underline(true).add_item(text("underline")))?;
17+
out.print(text(x.to_string()))?;
18+
out.print(span!([
19+
span!(fg = "blue", bg = "yellow", ["colorful text",]),
20+
newline(),
21+
span!(bold = true, ["bold text",]),
22+
newline(),
23+
span!(underline = true, ["underlined text",]),
24+
newline(),
25+
span!(intense = true, ["intense text",]),
26+
]))?;
4527

4628
Ok(())
4729
}

src/components/span.rs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -123,75 +123,71 @@ impl Render for Span {
123123
mod test {
124124
use super::span;
125125
use components::text;
126-
use {human, json, Render};
126+
use {human, json, Error, Render};
127127

128128
#[test]
129-
fn renders_span_children() {
129+
fn renders_span_children() -> Result<(), Error> {
130130
let item = span()
131131
.add_item(text("one"))
132132
.add_item(text("two"))
133133
.add_item(span().add_item(text("three")));
134134

135135
let human_output = human::test();
136-
item.render_for_humans(&mut human_output.formatter())
137-
.unwrap();
136+
item.render_for_humans(&mut human_output.formatter())?;
138137
assert_eq!(&human_output.to_string(), "onetwothree");
139138

140139
let json = json::test();
141-
item.render_json(&mut json.formatter()).unwrap();
140+
item.render_json(&mut json.formatter())?;
142141
assert_eq!(json.to_string(), "\"one\"\n\"two\"\n\"three\"\n");
142+
Ok(())
143143
}
144144

145145
#[test]
146-
fn test_colored_output() {
146+
fn test_colored_output() -> Result<(), Error> {
147147
let test_target = human::test_with_color();
148148
let mut out = ::new().add_target(test_target.target());
149-
out.print(
150-
span()
151-
.add_item("hello")
152-
.fg("green")
153-
.unwrap()
154-
.bg("blue")
155-
.unwrap(),
156-
).unwrap();
149+
out.print(span().add_item("hello").fg("green")?.bg("blue")?)?;
157150
assert_eq!(
158151
test_target.to_string(),
159152
"\u{1b}[0m\u{1b}[32m\u{1b}[44mhello\u{1b}[0m\n"
160-
)
153+
);
154+
Ok(())
161155
}
162156

163157
#[test]
164-
fn test_bold_output() {
158+
fn test_bold_output() -> Result<(), Error> {
165159
let test_target = human::test_with_color();
166160
let mut out = ::new().add_target(test_target.target());
167-
out.print(span().add_item("hello").bold(true)).unwrap();
161+
out.print(span().add_item("hello").bold(true)?)?;
168162
assert_eq!(
169163
test_target.to_string(),
170164
"\u{1b}[0m\u{1b}[1mhello\u{1b}[0m\n"
171-
)
165+
);
166+
Ok(())
172167
}
173168

174169
#[test]
175-
fn test_intense_output() {
170+
fn test_intense_output() -> Result<(), Error> {
176171
let test_target = human::test_with_color();
177172
let mut out = ::new().add_target(test_target.target());
178-
out.print(span().add_item("hello").fg("green").unwrap().intense(true))
179-
.unwrap();
173+
out.print(span().add_item("hello").fg("green")?.intense(true)?)?;
180174
assert_eq!(
181175
test_target.to_string(),
182176
"\u{1b}[0m\u{1b}[38;5;10mhello\u{1b}[0m\n"
183-
)
177+
);
178+
Ok(())
184179
}
185180

186181
#[test]
187-
fn test_underline_output() {
182+
fn test_underline_output() -> Result<(), Error> {
188183
let test_target = human::test_with_color();
189184
let mut out = ::new().add_target(test_target.target());
190-
out.print(span().add_item("hello").underline(true)).unwrap();
185+
out.print(span().add_item("hello").underline(true)?)?;
191186
assert_eq!(
192187
test_target.to_string(),
193188
"\u{1b}[0m\u{1b}[4mhello\u{1b}[0m\n"
194-
)
189+
);
190+
Ok(())
195191
}
196192

197193
// TODO: Add proptest tests

0 commit comments

Comments
 (0)