]> git.lizzy.rs Git - rust.git/commitdiff
Check licenses
authorAleksey Kladov <aleksey.kladov@gmail.com>
Tue, 14 Jul 2020 15:14:00 +0000 (17:14 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Tue, 14 Jul 2020 15:14:00 +0000 (17:14 +0200)
xtask/src/lib.rs
xtask/src/not_bash.rs
xtask/tests/tidy.rs

index 747654c1fcb2317058f5ad6caf4bf866d5eaa5ef..94d451e231ecde473a3435332b2160c836abf272 100644 (file)
@@ -20,7 +20,7 @@
 
 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};
index 8844fa2168a9f4229c046ca92f2ee68e31c37c78..0f3a56b25fca2b0fd9aa21c03adbd0f26013347d 100644 (file)
@@ -54,7 +54,8 @@ pub fn create_dir_all<P: AsRef<Path>>(path: P) -> Result<()> {
     }
 }
 
-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: (),
index fcfad609d740e758c2691bac984069bbd8497498..72088e4148ace61d06e84350192d8ace119b2ac7 100644 (file)
@@ -5,7 +5,7 @@
 
 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::<Vec<_>>();
+
+    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::<Vec<_>>();
+    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!).