From cd0d294c8705b6bbf6df1d75e5e5aecfd12d0a18 Mon Sep 17 00:00:00 2001 From: Kenny Kerr Date: Tue, 1 Feb 2022 13:27:56 -0800 Subject: [PATCH] Split clippy into separate build runner (#1487) --- .github/workflows/build.yml | 86 +++++++++++++++++++++++++++++++- .github/workflows/test.yml | 76 +--------------------------- crates/tools/yml/src/main.rs | 96 ++++++++++++++++++++++++++++++++---- 3 files changed, 172 insertions(+), 86 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 221250aae1..31df29c3e8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ env: RUSTFLAGS: -Dwarnings jobs: - + cargo_fmt: name: Check cargo formatting runs-on: windows-latest @@ -57,3 +57,87 @@ jobs: run: rustup update --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }} - name: Run cargo check run: cargo check -p windows-sys --all-features + + cargo_clippy: + name: Check clippy + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Update toolchain + run: rustup update --no-self-update nightly && rustup default nightly + - name: Install clippy + run: rustup component add clippy + - name: Run cargo clippy + run: | + cargo clippy -p windows-bindgen && + cargo clippy -p windows-implement && + cargo clippy -p windows-metadata && + cargo clippy -p windows-sys && + cargo clippy -p windows-tokens && + cargo clippy -p windows && + cargo clippy -p sample_com_uri && + cargo clippy -p sample_core_app && + cargo clippy -p sample_create_window && + cargo clippy -p sample_create_window_sys && + cargo clippy -p sample_direct2d && + cargo clippy -p sample_direct3d12 && + cargo clippy -p sample_enum_windows && + cargo clippy -p sample_enum_windows_sys && + cargo clippy -p sample_kernel_event && + cargo clippy -p sample_memory_buffer && + cargo clippy -p sample_message_box && + cargo clippy -p sample_ocr && + cargo clippy -p sample_overlapped && + cargo clippy -p sample_rss && + cargo clippy -p sample_simple && + cargo clippy -p sample_spellchecker && + cargo clippy -p sample_uiautomation && + cargo clippy -p sample_xaml_app && + cargo clippy -p sample_xml && + cargo clippy -p windows_aarch64_msvc && + cargo clippy -p windows_i686_gnu && + cargo clippy -p windows_i686_msvc && + cargo clippy -p windows_x86_64_gnu && + cargo clippy -p windows_x86_64_msvc && + cargo clippy -p test_agile && + cargo clippy -p test_alternate_success_code && + cargo clippy -p test_arch && + cargo clippy -p test_arch_feature && + cargo clippy -p test_bstr && + cargo clippy -p test_const_fields && + cargo clippy -p test_core && + cargo clippy -p test_debug && + cargo clippy -p test_deprecated && + cargo clippy -p test_does_not_return && + cargo clippy -p test_enums && + cargo clippy -p test_handles && + cargo clippy -p test_helpers && + cargo clippy -p test_implement && + cargo clippy -p test_implement_class_factory && + cargo clippy -p test_implement_data_object && + cargo clippy -p test_implement_identity && + cargo clippy -p test_implement_map && + cargo clippy -p test_implement_no_use && + cargo clippy -p test_implement_null_result && + cargo clippy -p test_implement_properties && + cargo clippy -p test_implement_winrt && + cargo clippy -p test_interop && + cargo clippy -p test_lib && + cargo clippy -p test_matrix3x2 && + cargo clippy -p test_mshtml && + cargo clippy -p test_ntstatus && + cargo clippy -p test_pwstr && + cargo clippy -p test_return_struct && + cargo clippy -p test_structs && + cargo clippy -p test_sys && + cargo clippy -p test_unions && + cargo clippy -p test_weak && + cargo clippy -p test_win32 && + cargo clippy -p test_win32_arrays && + cargo clippy -p tool_bindings && + cargo clippy -p tool_gnu && + cargo clippy -p tool_msvc && + cargo clippy -p tool_sys && + cargo clippy -p tool_windows && + cargo clippy -p tool_yml \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e9ac74b0ae..dcc6a8a73d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -135,78 +135,4 @@ jobs: cargo test --target ${{ matrix.target }} -p test_implement_properties && cargo test --target ${{ matrix.target }} -p test_implement_winrt if: matrix.version == 'nightly' - - - name: Test clippy - run: | - cargo clippy -p windows-bindgen && - cargo clippy -p windows-implement && - cargo clippy -p windows-metadata && - cargo clippy -p windows-sys && - cargo clippy -p windows-tokens && - cargo clippy -p windows && - cargo clippy -p sample_com_uri && - cargo clippy -p sample_core_app && - cargo clippy -p sample_create_window && - cargo clippy -p sample_create_window_sys && - cargo clippy -p sample_direct2d && - cargo clippy -p sample_direct3d12 && - cargo clippy -p sample_enum_windows && - cargo clippy -p sample_enum_windows_sys && - cargo clippy -p sample_kernel_event && - cargo clippy -p sample_memory_buffer && - cargo clippy -p sample_message_box && - cargo clippy -p sample_ocr && - cargo clippy -p sample_overlapped && - cargo clippy -p sample_rss && - cargo clippy -p sample_simple && - cargo clippy -p sample_spellchecker && - cargo clippy -p sample_uiautomation && - cargo clippy -p sample_xaml_app && - cargo clippy -p sample_xml && - cargo clippy -p windows_aarch64_msvc && - cargo clippy -p windows_i686_gnu && - cargo clippy -p windows_i686_msvc && - cargo clippy -p windows_x86_64_gnu && - cargo clippy -p windows_x86_64_msvc && - cargo clippy -p test_agile && - cargo clippy -p test_alternate_success_code && - cargo clippy -p test_arch && - cargo clippy -p test_arch_feature && - cargo clippy -p test_bstr && - cargo clippy -p test_const_fields && - cargo clippy -p test_core && - cargo clippy -p test_debug && - cargo clippy -p test_deprecated && - cargo clippy -p test_does_not_return && - cargo clippy -p test_enums && - cargo clippy -p test_handles && - cargo clippy -p test_helpers && - cargo clippy -p test_implement && - cargo clippy -p test_implement_class_factory && - cargo clippy -p test_implement_data_object && - cargo clippy -p test_implement_identity && - cargo clippy -p test_implement_map && - cargo clippy -p test_implement_no_use && - cargo clippy -p test_implement_null_result && - cargo clippy -p test_implement_properties && - cargo clippy -p test_implement_winrt && - cargo clippy -p test_interop && - cargo clippy -p test_lib && - cargo clippy -p test_matrix3x2 && - cargo clippy -p test_mshtml && - cargo clippy -p test_ntstatus && - cargo clippy -p test_pwstr && - cargo clippy -p test_return_struct && - cargo clippy -p test_structs && - cargo clippy -p test_sys && - cargo clippy -p test_unions && - cargo clippy -p test_weak && - cargo clippy -p test_win32 && - cargo clippy -p test_win32_arrays && - cargo clippy -p tool_bindings && - cargo clippy -p tool_gnu && - cargo clippy -p tool_msvc && - cargo clippy -p tool_sys && - cargo clippy -p tool_windows && - cargo clippy -p tool_yml - if: matrix.version == 'nightly' && matrix.target == 'x86_64-pc-windows-gnu' + \ No newline at end of file diff --git a/crates/tools/yml/src/main.rs b/crates/tools/yml/src/main.rs index 4edb09c290..25454b87a5 100644 --- a/crates/tools/yml/src/main.rs +++ b/crates/tools/yml/src/main.rs @@ -1,4 +1,9 @@ fn main() { + test_yml(); + build_yml(); +} + +fn test_yml() { let root = std::path::PathBuf::from(metadata::workspace_dir()); let mut yml = r#"name: Test @@ -90,24 +95,95 @@ jobs: yml.push_str( r#" if: matrix.version == 'nightly' - - - name: Test clippy - run: |"#, + "#, ); + std::fs::write(root.join(".github/workflows/test.yml"), yml.as_bytes()).unwrap(); +} + +fn build_yml() { + let root = std::path::PathBuf::from(metadata::workspace_dir()); + let mut yml = r#"name: Build + +on: + pull_request: + push: + branches: + - master + +env: + RUSTFLAGS: -Dwarnings + +jobs: + + cargo_fmt: + name: Check cargo formatting + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run cargo fmt + run: cargo fmt --all -- --check + + cargo_doc: + name: Check cargo docs + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run cargo doc + run: cargo doc --no-deps -p windows + + generation: + name: Check generation of `tool_${{ matrix.generator }}` + runs-on: windows-latest + strategy: + matrix: + generator: [bindings, windows, sys, yml] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run tool_${{ matrix.generator }} + run: cargo run -p tool_${{ matrix.generator }} + - name: Compare + shell: bash + run: git diff --exit-code || (echo '::error::Generated `tool_${{ matrix.generator }}` are out-of-date. Please run `cargo run -p tool_${{ matrix.generator }}`'; exit 1) + + cargo_sys: + name: Check windows-sys + runs-on: windows-latest + strategy: + matrix: + rust: [1.46.0, stable, nightly] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Update toolchain + run: rustup update --no-self-update ${{ matrix.rust }} && rustup default ${{ matrix.rust }} + - name: Run cargo check + run: cargo check -p windows-sys --all-features + + cargo_clippy: + name: Check clippy + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Update toolchain + run: rustup update --no-self-update nightly && rustup default nightly + - name: Install clippy + run: rustup component add clippy + - name: Run cargo clippy + run: |"# + .to_string(); + for name in crates(&root) { yml.push_str(&format!("\n cargo clippy -p {} &&", name)); } yml.truncate(yml.len() - 2); - yml.push_str( - r#" - if: matrix.version == 'nightly' && matrix.target == 'x86_64-pc-windows-gnu' -"#, - ); - - std::fs::write(root.join(".github/workflows/test.yml"), yml.as_bytes()).unwrap(); + std::fs::write(root.join(".github/workflows/build.yml"), yml.as_bytes()).unwrap(); } fn crates(root: &std::path::Path) -> Vec {