add version check to the unit tests
This commit is contained in:
75
clippy_lints/src/utils/cargo.rs
Normal file
75
clippy_lints/src/utils/cargo.rs
Normal file
@@ -0,0 +1,75 @@
|
||||
use std::collections::HashMap;
|
||||
use std::process::Command;
|
||||
use std::str::{from_utf8, Utf8Error};
|
||||
use std::io;
|
||||
use rustc_serialize::json;
|
||||
|
||||
#[derive(RustcDecodable, Debug)]
|
||||
pub struct Metadata {
|
||||
pub packages: Vec<Package>,
|
||||
resolve: Option<()>,
|
||||
pub version: usize,
|
||||
}
|
||||
|
||||
#[derive(RustcDecodable, Debug)]
|
||||
pub struct Package {
|
||||
pub name: String,
|
||||
pub version: String,
|
||||
id: String,
|
||||
source: Option<()>,
|
||||
pub dependencies: Vec<Dependency>,
|
||||
pub targets: Vec<Target>,
|
||||
features: HashMap<String, Vec<String>>,
|
||||
manifest_path: String,
|
||||
}
|
||||
|
||||
#[derive(RustcDecodable, Debug)]
|
||||
pub struct Dependency {
|
||||
pub name: String,
|
||||
source: Option<String>,
|
||||
pub req: String,
|
||||
kind: Option<String>,
|
||||
optional: bool,
|
||||
uses_default_features: bool,
|
||||
features: Vec<HashMap<String, String>>,
|
||||
target: Option<()>,
|
||||
}
|
||||
|
||||
#[allow(non_camel_case_types)]
|
||||
#[derive(RustcDecodable, Debug)]
|
||||
pub enum Kind {
|
||||
dylib,
|
||||
test,
|
||||
bin,
|
||||
lib,
|
||||
}
|
||||
|
||||
#[derive(RustcDecodable, Debug)]
|
||||
pub struct Target {
|
||||
pub name: String,
|
||||
pub kind: Vec<Kind>,
|
||||
src_path: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Error {
|
||||
Io(io::Error),
|
||||
Utf8(Utf8Error),
|
||||
Json(json::DecoderError),
|
||||
}
|
||||
|
||||
impl From<io::Error> for Error {
|
||||
fn from(err: io::Error) -> Self { Error::Io(err) }
|
||||
}
|
||||
impl From<Utf8Error> for Error {
|
||||
fn from(err: Utf8Error) -> Self { Error::Utf8(err) }
|
||||
}
|
||||
impl From<json::DecoderError> for Error {
|
||||
fn from(err: json::DecoderError) -> Self { Error::Json(err) }
|
||||
}
|
||||
|
||||
pub fn metadata() -> Result<Metadata, Error> {
|
||||
let output = Command::new("cargo").args(&["metadata", "--no-deps"]).output()?;
|
||||
let stdout = from_utf8(&output.stdout)?;
|
||||
Ok(json::decode(stdout)?)
|
||||
}
|
||||
@@ -23,6 +23,7 @@ pub mod conf;
|
||||
mod hir;
|
||||
pub mod paths;
|
||||
pub use self::hir::{SpanlessEq, SpanlessHash};
|
||||
pub mod cargo;
|
||||
|
||||
pub type MethodArgs = HirVec<P<Expr>>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user