grab_github 0.1.0

Obtain a list of files from a GitHub repository and download them to a folder using the GitHub API.
Documentation
use grab_github::Filter;

#[test]
pub fn only_included() {
    let filter = Filter::new(vec!["src/**", "test", "*/any", "other/*"], vec![]);

    assert!(filter.check("src/test.rs"));
    assert!(filter.check("src/other"));
    assert!(filter.check("src/"));
    assert!(filter.check("src/test/test"));
    assert!(filter.check("test"));
    assert!(filter.check("one/any"));
    assert!(filter.check("two/any"));
    assert!(filter.check("other/one"));
    assert!(!filter.check("src"));
    assert!(!filter.check("wrong/test.rs"));
    assert!(!filter.check("wrong/test"));
    assert!(!filter.check("wrong.rs"));
    assert!(!filter.check("other/one/two"));
    assert!(!filter.check("one/any/other"));
}

#[test]
pub fn only_excluded() {
    let filter = Filter::new(vec![], vec!["src/**", "test", "*/any", "other/*"]);

    assert!(!filter.check("src/test.rs"));
    assert!(!filter.check("src/other"));
    assert!(!filter.check("src/"));
    assert!(!filter.check("src/test/test"));
    assert!(!filter.check("test"));
    assert!(!filter.check("one/any"));
    assert!(!filter.check("two/any"));
    assert!(!filter.check("other/one"));
    assert!(filter.check("src"));
    assert!(filter.check("wrong/test.rs"));
    assert!(filter.check("wrong/test"));
    assert!(filter.check("wrong.rs"));
    assert!(filter.check("other/one/two"));
    assert!(filter.check("one/any/other"));
}

#[test]
pub fn both() {
    let filter = Filter::new(
        vec!["src/**", "test", "*/any", "other/*"],
        vec!["**/other", "one/*", "src/test/test"],
    );

    assert!(filter.check("src/test.rs"));
    assert!(filter.check("src/"));
    assert!(filter.check("test"));
    assert!(filter.check("two/any"));
    assert!(filter.check("other/one"));
    assert!(!filter.check("one/any"));
    assert!(!filter.check("src/test/test"));
    assert!(!filter.check("src/other"));
    assert!(!filter.check("src"));
    assert!(!filter.check("wrong/test.rs"));
    assert!(!filter.check("wrong/test"));
    assert!(!filter.check("wrong.rs"));
    assert!(!filter.check("other/one/two"));
    assert!(!filter.check("one/any/other"));
}

#[test]
pub fn neither() {
    let filter = Filter::all();

    assert!(filter.check("src/test.rs"));
    assert!(filter.check("src/"));
    assert!(filter.check("test"));
    assert!(filter.check("two/any"));
    assert!(filter.check("other/one"));
    assert!(filter.check("one/any"));
    assert!(filter.check("src/test/test"));
    assert!(filter.check("src/other"));
    assert!(filter.check("src"));
    assert!(filter.check("wrong/test.rs"));
    assert!(filter.check("wrong/test"));
    assert!(filter.check("wrong.rs"));
    assert!(filter.check("other/one/two"));
    assert!(filter.check("one/any/other"));
}