From 239a6012eb97e4ec74ad975266436d6eb4ec9bec Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 14 Jul 2020 17:14:00 +0200 Subject: Check licenses --- xtask/src/lib.rs | 2 +- xtask/src/not_bash.rs | 5 +++-- xtask/tests/tidy.rs | 41 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 44 insertions(+), 4 deletions(-) (limited to 'xtask') diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs index 747654c1f..94d451e23 100644 --- a/xtask/src/lib.rs +++ b/xtask/src/lib.rs @@ -20,7 +20,7 @@ use walkdir::{DirEntry, WalkDir}; use crate::{ codegen::Mode, - not_bash::{fs2, pushd, pushenv, rm_rf, run}, + not_bash::{fs2, pushd, pushenv, rm_rf}, }; pub use anyhow::{bail, Context as _, Result}; diff --git a/xtask/src/not_bash.rs b/xtask/src/not_bash.rs index 8844fa216..0f3a56b25 100644 --- a/xtask/src/not_bash.rs +++ b/xtask/src/not_bash.rs @@ -54,7 +54,8 @@ pub mod fs2 { } } -macro_rules! _run { +#[macro_export] +macro_rules! run { ($($expr:expr),*) => { run!($($expr),*; echo = true) }; @@ -65,7 +66,7 @@ macro_rules! _run { $crate::not_bash::run_process(format!($($expr),*), false, Some($stdin)) }; } -pub(crate) use _run as run; +pub use crate::run; pub struct Pushd { _p: (), diff --git a/xtask/tests/tidy.rs b/xtask/tests/tidy.rs index fcfad609d..72088e414 100644 --- a/xtask/tests/tidy.rs +++ b/xtask/tests/tidy.rs @@ -5,7 +5,7 @@ use std::{ use xtask::{ codegen::{self, Mode}, - not_bash::fs2, + not_bash::{fs2, run}, project_root, run_rustfmt, rust_files, }; @@ -49,6 +49,45 @@ fn rust_files_are_tidy() { tidy_docs.finish(); } +#[test] +fn check_licenses() { + let expected = " +0BSD OR MIT OR Apache-2.0 +Apache-2.0 +Apache-2.0 / MIT +Apache-2.0 OR BSL-1.0 +Apache-2.0 OR MIT +Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT +Apache-2.0/MIT +BSD-2-Clause +BSD-3-Clause +CC0-1.0 +ISC +MIT +MIT / Apache-2.0 +MIT OR Apache-2.0 +MIT/Apache-2.0 +MIT/Apache-2.0 AND BSD-2-Clause +Unlicense OR MIT +Unlicense/MIT +Zlib +" + .lines() + .filter(|it| !it.is_empty()) + .collect::>(); + + let meta = run!("cargo metadata --format-version 1"; echo = false).unwrap(); + let mut licenses = meta + .split(|c| c == ',' || c == '{' || c == '}') + .filter(|it| it.contains(r#""license""#)) + .map(|it| it.trim()) + .map(|it| it[r#""license":"#.len()..].trim_matches('"')) + .collect::>(); + licenses.sort(); + licenses.dedup(); + assert_eq!(licenses, expected); +} + fn check_todo(path: &Path, text: &str) { let need_todo = &[ // This file itself obviously needs to use todo (<- like this!). -- cgit v1.2.3