• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tamada / sibling / 9984834471

18 Jul 2024 03:05AM UTC coverage: 60.87% (+15.1%) from 45.736%
9984834471

push

github

web-flow
Merge pull request #28 from tamada/release/v2.0.0-beta-1

Release/v2.0.0 beta 1

45 of 64 new or added lines in 5 files covered. (70.31%)

182 of 299 relevant lines covered (60.87%)

4.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

20.45
/src/printer.rs
1
use std::path::PathBuf;
2

3
use crate::cli::{PrintingOpts, Result};
4
use crate::dirs::Dirs;
5

6
pub(crate) fn result_string(dirs: &Dirs, opts: &PrintingOpts) -> Result<String> {
1✔
7
    if opts.csv {
1✔
8
        csv_string(dirs, opts.absolute)
×
9
    } else if dirs.no_more_dir {
1✔
10
        no_more_dir_string(dirs, opts)
1✔
11
    } else if opts.list {
×
12
        list_string(dirs, opts)
×
13
    } else {
14
        result_string_impl(dirs, opts)
×
15
    }
16
}
1✔
17

18
fn csv_string(dirs: &Dirs, absolute: bool) -> Result<String> {
×
19
    Ok(format!(r##""{}","{}",{},{},{}"##, 
×
20
            pathbuf_to_string(Some(dirs.current_path()), absolute), 
×
21
            pathbuf_to_string(dirs.next_path(), absolute),
×
22
            dirs.current + 1, dirs.next + 1, dirs.dirs.len()))
×
23
}
×
24

25
fn no_more_dir_string(dirs: &Dirs, opts: &PrintingOpts) -> Result<String> {
1✔
26
    if opts.parent {
1✔
27
        Ok(pathbuf_to_string(Some(dirs.parent.clone()), opts.absolute))
×
28
    } else {
29
        Ok(String::from("no more sibling directory"))
1✔
30
    }
31
}
1✔
32

NEW
33
fn list_string(dirs: &Dirs, opts: &PrintingOpts) -> Result<String> {
×
34
    let mut result = vec![];
×
35
    for (i, dir) in dirs.dirs.iter().enumerate() {
×
36
        let prefix = if i == dirs.next as usize { "> " }
×
37
        else if i == dirs.current {
×
38
            "* " 
×
39
        } else {
40
            "  "
×
41
        };
NEW
42
        result.push(format!("{:>4} {}{}", i + 1, prefix, pathbuf_to_string(Some(dir.to_path_buf()), opts.absolute)));
×
43
    }
44
    Ok(result.join("\n"))
×
45
}
×
46

NEW
47
fn result_string_impl(dirs: &Dirs, opts: &PrintingOpts) -> Result<String> {
×
48
    let r = if opts.progress {
×
49
        format!("{} ({}/{})", pathbuf_to_string(dirs.next_path(), opts.absolute), dirs.next + 1, dirs.dirs.len())
×
50
    } else {
51
        pathbuf_to_string(dirs.next_path(), opts.absolute).to_string()
×
52
    };
53
    Ok(r)
×
54
}
×
55

56
fn pathbuf_to_string(path: Option<PathBuf>, absolute: bool) -> String {
×
57
    match path {
×
58
        Some(p) => {
×
59
            if absolute {
×
60
                std::fs::canonicalize(p).unwrap().to_string_lossy().to_string()
×
61
            } else {
62
                p.to_string_lossy().to_string()
×
63
            }
64
        },
65
        None => "".to_string(),
×
66
    }
67
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc