cursive-multiplex 0.2.14

A tmux like multiplexer for gyscos/cursive views
Documentation
use serde_json::{json, Value};
use std::fs;
use std::process::{Command, Stdio};

#[test]
fn test_end2end() {
    let jest = Command::new("./node_modules/.bin/jest")
        .arg("--color")
        .arg("--json")
        .current_dir("./tests")
        .stderr(Stdio::inherit())
        .output()
        .expect("end2end tests failed");

    let result: Value =
        serde_json::from_slice(&jest.stdout[..]).expect("failed to read end2end tests result");
    let passed = result["numPassedTests"].as_i64().unwrap();
    let total = result["numTotalTests"].as_i64().unwrap();
    let color = match passed as f32 / total as f32 {
        r if r < 0.33 => "red",
        r if r < 0.66 => "orange",
        r if r < 1.0 => "yellow",
        _ => "brightgreen",
    };

    let shield = json!({
        "schemaVersion": 1,
        "label": "shellshot",
        "message": format!("{} / {} tests", passed, total),
        "color": color,
        "isError": true
    });
    fs::create_dir_all("./target/shields").expect("failed to create ./target/shields folders");
    fs::write(
        "./target/shields/shellshot.json",
        serde_json::to_string_pretty(&shield).expect("failed to generate shields endpoint"),
    )
    .expect("failed to save shields endpoint");

    assert!(jest.status.success());
}