dia-semver 0.2.0

For handling Semantic Versions 2.0.0
Documentation
// License: see LICENSE file at root directory of `master` branch

use std::fs::File;
use std::io::BufReader;
use std::io::Read;
use std::path::Path;

extern crate dia_semver;

use dia_semver::Semver;

#[test]
fn crate_version() {
    let crate_version = Semver::parse(dia_semver::CRATE_VERSION_NAME, true).unwrap();

    // Read and parse version from Cargo.toml
    match ( || -> Option<Semver> {
        let file = File::open(Path::new(file!()).parent().unwrap().with_file_name("Cargo.toml")).unwrap();
        let mut buf_reader = BufReader::new(file);
        let mut content = String::new();
        buf_reader.read_to_string(&mut content).unwrap();

        let mut inside_package = false;
        for l in content.lines() {
            let l = l.trim();
            if l.starts_with('[') {
                match l {
                    "[package]" => inside_package = true,
                    _ if inside_package => return None,
                    _ => (),
                }
            }
            if inside_package && l.starts_with("version") {
                return Some(Semver::parse(l.split('=').skip(1).next().unwrap().trim().replace('"', "").trim(), true).unwrap());
            }
        }

        None
    })() {
        Some(version_in_cargo_toml) => assert_eq!(crate_version, version_in_cargo_toml),
        None => panic!("Can't find version in Cargo.toml"),
    };
}