rskey 0.4.0

A simple persistent key-value store that wraps HashMap, with a basic CLI tool to list, get, and set key-value pairs.
Documentation
use assert_cmd::Command;
use predicates::prelude::*;
use tempfile::TempDir;

#[test]
fn binary_with_no_args_prints_usage() {
    let mut cmd = Command::cargo_bin("rskey").unwrap();
    cmd.assert()
        .success()
        .stdout(predicate::str::contains("Usage"));
}

#[test]
fn binary_with_set_writes_correct_data_to_new_file() {
    let tmp_dir = TempDir::new().unwrap();
    let mut cmd = Command::cargo_bin("rskey").unwrap();
    cmd.current_dir(&tmp_dir)
        .args(["set", "key1", "value1"])
        .assert()
        .success();
    let mut cmd = Command::cargo_bin("rskey").unwrap();
    cmd.arg("list")
        .current_dir(&tmp_dir)
        .assert()
        .success()
        .stdout(predicate::eq("key1: value1\n"));
}

#[test]
fn binary_with_get_reads_existing_data() {
    let tmp_dir = TempDir::new().unwrap();
    let mut cmd = Command::cargo_bin("rskey").unwrap();
    cmd.current_dir(&tmp_dir)
        .args(["set", "key2", "value2"])
        .assert()
        .success();
    let mut cmd = Command::cargo_bin("rskey").unwrap();
    cmd.args(["get", "key2"])
        .current_dir(&tmp_dir)
        .assert()
        .success()
        .stdout(predicate::eq("key2: value2\n"));
}