From 69fa0268a44a9859c4db98a6692369c0e8719146 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:59:55 +0000 Subject: [PATCH 01/67] chore(deps): update actions/setup-python action to v5 --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 8044750..9551407 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -19,5 +19,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 - uses: pre-commit/action@v3.0.0 From 82c9aa7bddef20e9705d3d404403e59b2cd7e8e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 00:59:58 +0000 Subject: [PATCH 02/67] chore(deps): update github/codeql-action action to v3 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19efcf9..1b09d21 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,7 +134,7 @@ jobs: | sarif-fmt continue-on-error: true - name: Upload - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: clippy-results.sarif wait-for-processing: true From a4c062667d3b0c94928d285052795637de0a7227 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 2 Jan 2024 09:56:35 -0600 Subject: [PATCH 03/67] chore: Make renovate commits to match --- .github/renovate.json5 | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 3119c42..e5a5de0 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -3,6 +3,7 @@ 'before 5am on the first day of the month', ], semanticCommits: 'enabled', + commitMessageLowerCase: 'never', configMigration: true, dependencyDashboard: true, customManagers: [ From 61250a36135d0032ceda4316b43d3a62d8b07643 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 3 Jan 2024 08:27:59 -0600 Subject: [PATCH 04/67] chore(ci): Optimize CI runs --- .github/workflows/ci.yml | 2 +- .github/workflows/rust-next.yml | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b09d21..943becf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: toolchain: ${{ matrix.rust }} - uses: Swatinem/rust-cache@v2 - name: Build - run: cargo test --no-run --workspace --all-features + run: cargo test --workspace --no-run - name: Default features run: cargo test --workspace - name: All features diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index d8c2d25..43b4ec8 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -32,6 +32,8 @@ jobs: with: toolchain: ${{ matrix.rust }} - uses: Swatinem/rust-cache@v2 + - name: Build + run: cargo test --workspace --no-run - name: Default features run: cargo test --workspace - name: All features @@ -51,9 +53,11 @@ jobs: - uses: Swatinem/rust-cache@v2 - name: Update dependencues run: cargo update + - name: Build + run: cargo test --workspace --no-run - name: Default features - run: cargo test --workspace --all-targets + run: cargo test --workspace - name: All features - run: cargo test --workspace --all-targets --all-features + run: cargo test --workspace --all-features - name: No-default features - run: cargo test --workspace --all-targets --no-default-features + run: cargo test --workspace --no-default-features From e819db4af62e231bcedd976faa488b4e6f46f312 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 18 Jan 2024 09:22:25 -0600 Subject: [PATCH 05/67] chore(ci): Cancel prior CI runs --- .github/workflows/audit.yml | 4 ++++ .github/workflows/ci.yml | 4 ++++ .github/workflows/committed.yml | 4 ++++ .github/workflows/pre-commit.yml | 4 ++++ .github/workflows/rust-next.yml | 4 ++++ .github/workflows/spelling.yml | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index ccee1fe..07c70ee 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -17,6 +17,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: security_audit: permissions: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 943becf..2bbd5a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: ci: permissions: diff --git a/.github/workflows/committed.yml b/.github/workflows/committed.yml index 0462558..e7a50fb 100644 --- a/.github/workflows/committed.yml +++ b/.github/workflows/committed.yml @@ -11,6 +11,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: committed: name: Lint Commits diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 9551407..7d77328 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -12,6 +12,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: pre-commit: permissions: diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index 43b4ec8..f0febc9 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -12,6 +12,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: test: name: Test diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml index 12f7585..8e58d9e 100644 --- a/.github/workflows/spelling.yml +++ b/.github/workflows/spelling.yml @@ -10,6 +10,10 @@ env: CARGO_TERM_COLOR: always CLICOLOR: 1 +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + jobs: spelling: name: Spell Check with Typos From 0b029063fe83d818e3a79819b88bee8b8314f752 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 24 Jan 2024 08:40:56 -0600 Subject: [PATCH 06/67] chore(ci): Be explicit in renovate updates --- .github/renovate.json5 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index e5a5de0..32d3628 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -73,6 +73,7 @@ matchCurrentVersion: '>=1.0.0', matchUpdateTypes: [ 'minor', + 'patch', ], enabled: false, }, @@ -100,6 +101,7 @@ matchCurrentVersion: '>=1.0.0', matchUpdateTypes: [ 'minor', + 'patch', ], automerge: true, groupName: 'compatible (dev)', From 131de55d50284af7a54287d34699347b74d75709 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 31 Jan 2024 12:07:12 -0600 Subject: [PATCH 07/67] chore(ci): Add m1 runners See https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/ --- .github/workflows/ci.yml | 2 +- .github/workflows/rust-next.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bbd5a5..a8826b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: name: Test strategy: matrix: - os: ["ubuntu-latest", "windows-latest", "macos-latest"] + os: ["ubuntu-latest", "windows-latest", "macos-latest", "macos-14"] rust: ["stable"] continue-on-error: ${{ matrix.rust != 'stable' }} runs-on: ${{ matrix.os }} diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index f0febc9..49e5d8c 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -21,7 +21,7 @@ jobs: name: Test strategy: matrix: - os: ["ubuntu-latest", "windows-latest", "macos-latest"] + os: ["ubuntu-latest", "windows-latest", "macos-latest", "macos-14"] rust: ["stable", "beta"] include: - os: ubuntu-latest From 9a5af5c8d21d549a7eb785343ae055d931952075 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 8 Feb 2024 07:45:48 -0600 Subject: [PATCH 08/67] chore(ci): Only check intel mac on schedule --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8826b0..af065d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: name: Test strategy: matrix: - os: ["ubuntu-latest", "windows-latest", "macos-latest", "macos-14"] + os: ["ubuntu-latest", "windows-latest", "macos-14"] rust: ["stable"] continue-on-error: ${{ matrix.rust != 'stable' }} runs-on: ${{ matrix.os }} From da56001fd6cabdb744f25b021c9efd230472f671 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 8 Feb 2024 07:48:29 -0600 Subject: [PATCH 09/67] chore(ci): Gather coverage --- .github/workflows/ci.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index af065d5..7849a73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,3 +144,22 @@ jobs: wait-for-processing: true - name: Report status run: cargo clippy --workspace --all-features --all-targets -- -D warnings --allow deprecated + coverage: + name: Coverage + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: "1.75" # STABLE + - uses: Swatinem/rust-cache@v2 + - name: Install cargo-tarpaulin + run: cargo install cargo-tarpaulin + - name: Gather coverage + run: cargo tarpaulin --output-dir coverage --out lcov + - name: Publish to Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} From 1313256db3e9a31a3e0647abaacc9a8e4edb51b1 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 8 Feb 2024 09:07:52 -0600 Subject: [PATCH 10/67] chore(ci): Use latest for coverage --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7849a73..2e6597e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -153,7 +153,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.75" # STABLE + toolchain: stable - uses: Swatinem/rust-cache@v2 - name: Install cargo-tarpaulin run: cargo install cargo-tarpaulin From 51a98a25b6c30dd2fbdd74795432006525d1d84a Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 15 Feb 2024 09:57:26 -0600 Subject: [PATCH 11/67] chore(ci): Defer to package.rust-version for clippy --- .clippy.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/.clippy.toml b/.clippy.toml index 090e2be..293c14f 100644 --- a/.clippy.toml +++ b/.clippy.toml @@ -1,4 +1,3 @@ -msrv = "1.65.0" # MSRV warn-on-all-wildcard-imports = true allow-expect-in-tests = true allow-unwrap-in-tests = true From 4db293d99b81e9c7da8fb030b1471e4e96dc91ef Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 15 Feb 2024 09:58:01 -0600 Subject: [PATCH 12/67] chore(ci): Only verify MSRV for published packages --- .github/workflows/ci.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e6597e..03a4fc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: - name: No-default features run: cargo test --workspace --no-default-features msrv: - name: "Check MSRV: 1.65.0" + name: "Check MSRV" runs-on: ubuntu-latest steps: - name: Checkout repository @@ -61,14 +61,15 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.65.0" # MSRV + toolchain: stable - uses: Swatinem/rust-cache@v2 + - uses: taiki-e/install-action@cargo-hack - name: Default features - run: cargo check --workspace --all-targets + run: cargo hack check --rust-version --ignore-private --workspace --all-targets - name: All features - run: cargo check --workspace --all-targets --all-features + run: cargo hack check --rust-version --ignore-private --workspace --all-targets --all-features - name: No-default features - run: cargo check --workspace --all-targets --no-default-features + run: cargo hack check --rust-version --ignore-private --workspace --all-targets --no-default-features lockfile: runs-on: ubuntu-latest steps: From 779496bb002837bf4e115ae3a33e7c819abdf293 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 15 Feb 2024 10:03:14 -0600 Subject: [PATCH 13/67] chore(ci): Run the latest clippy --- .github/renovate.json5 | 37 +++++++++++++++++++++++++++++++++++-- .github/workflows/ci.yml | 2 +- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 32d3628..06c1d63 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -21,7 +21,25 @@ 'MSRV.*?(?\\d+\\.\\d+(\\.\\d+)?)', '(?\\d+\\.\\d+(\\.\\d+)?).*?MSRV', ], - depNameTemplate: 'rust', + depNameTemplate: 'MSRV', + packageNameTemplate: 'rust-lang/rust', + datasourceTemplate: 'github-releases', + }, + { + customType: 'regex', + fileMatch: [ + '^rust-toolchain\\.toml$', + 'Cargo.toml$', + 'clippy.toml$', + '\\.clippy.toml$', + '^\\.github/workflows/ci.yml$', + '^\\.github/workflows/rust-next.yml$', + ], + matchStrings: [ + 'STABLE.*?(?\\d+\\.\\d+(\\.\\d+)?)', + '(?\\d+\\.\\d+(\\.\\d+)?).*?STABLE', + ], + depNameTemplate: 'STABLE', packageNameTemplate: 'rust-lang/rust', datasourceTemplate: 'github-releases', }, @@ -33,7 +51,7 @@ 'custom.regex', ], matchPackageNames: [ - 'rust', + 'MSRV', ], minimumReleaseAge: '336 days', // 8 releases * 6 weeks per release * 7 days per week internalChecksFilter: 'strict', @@ -41,6 +59,21 @@ schedule: [ '* * * * *', ], + groupName: 'rust-version', + }, + { + commitMessageTopic: 'STABLE', + matchManagers: [ + 'custom.regex', + ], + matchPackageNames: [ + 'STABLE', + ], + extractVersion: '^(?\\d+\\.\\d+)', // Drop the patch version + schedule: [ + '* * * * *', + ], + groupName: 'rust-version', }, // Goals: // - Keep version reqs low, ignoring compatible normal/build dependencies diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03a4fc0..1c18ca6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,7 +124,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.65.0" # MSRV + toolchain: "1.76" # STABLE components: clippy - uses: Swatinem/rust-cache@v2 - name: Install SARIF tools From c977df514987a625772ca04df9fc100ba8b7576f Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 20 Feb 2024 20:22:05 -0600 Subject: [PATCH 14/67] chore(ci): Prevent cargo-hack from blowing away our lockfile See taiki-e/cargo-hack#234 --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c18ca6..12d398c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,11 +65,11 @@ jobs: - uses: Swatinem/rust-cache@v2 - uses: taiki-e/install-action@cargo-hack - name: Default features - run: cargo hack check --rust-version --ignore-private --workspace --all-targets + run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets - name: All features - run: cargo hack check --rust-version --ignore-private --workspace --all-targets --all-features + run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets --all-features - name: No-default features - run: cargo hack check --rust-version --ignore-private --workspace --all-targets --no-default-features + run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets --no-default-features lockfile: runs-on: ubuntu-latest steps: From 7846c5130e5459ce452bd4fdb17373d83f45dff3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:30:14 +0000 Subject: [PATCH 15/67] chore(deps): Update pre-commit/action action to v3.0.1 --- .github/workflows/pre-commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 7d77328..1b000ab 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -24,4 +24,4 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 - - uses: pre-commit/action@v3.0.0 + - uses: pre-commit/action@v3.0.1 From 3d5ead81cf3962997045915cd9b137086d35d1a9 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 21 Mar 2024 10:46:56 -0500 Subject: [PATCH 16/67] chore(ci): Configure standard lints --- Cargo.toml | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 2 ++ 2 files changed, 86 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index b8ecde1..e51c5dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,87 @@ include = [ "examples/**/*" ] +[workspace.lints.rust] +missing_docs = "warn" +rust_2018_idioms = "warn" +unreachable_pub = "warn" +unsafe-op-in-unsafe-fn = "warn" +unsafe_code = "warn" +unused-crate-dependencies = "warn" +unused-lifetimes = "warn" +unused-macro-rules = "warn" +unused-qualifications = "warn" + +[workspace.lints.clippy] +bool_assert_comparison = "allow" +branches_sharing_code = "allow" +checked_conversions = "warn" +collapsible_else_if = "allow" +create_dir = "warn" +dbg_macro = "warn" +debug_assert_with_mut_call = "warn" +doc_markdown = "warn" +empty_enum = "warn" +enum_glob_use = "warn" +exhaustive_enums = "warn" +exhaustive_structs = "warn" +exit = "warn" +expl_impl_clone_on_copy = "warn" +explicit_deref_methods = "warn" +explicit_into_iter_loop = "warn" +fallible_impl_from = "warn" +filter_map_next = "warn" +flat_map_option = "warn" +float_cmp_const = "warn" +fn_params_excessive_bools = "warn" +from_iter_instead_of_collect = "warn" +if_same_then_else = "allow" +implicit_clone = "warn" +imprecise_flops = "warn" +inconsistent_struct_constructor = "warn" +inefficient_to_string = "warn" +infinite_loop = "warn" +invalid_upcast_comparisons = "warn" +items_after_statements = "warn" +large_digit_groups = "warn" +large_stack_arrays = "warn" +large_types_passed_by_value = "warn" +let_and_return = "allow" # sometimes good to name what you are returning +linkedlist = "warn" +lossy_float_literal = "warn" +macro_use_imports = "warn" +match_wildcard_for_single_variants = "warn" +mem_forget = "warn" +mutex_integer = "warn" +needless_continue = "warn" +needless_for_each = "warn" +negative_feature_names = "warn" +path_buf_push_overwrite = "warn" +print_stderr = "warn" +print_stdout = "warn" +ptr_as_ptr = "warn" +rc_mutex = "warn" +redundant_feature_names = "warn" +ref_option_ref = "warn" +rest_pat_in_fully_bound_structs = "warn" +return_self_not_must_use = "warn" +same_functions_in_if_condition = "warn" +self_named_module_files = "warn" +semicolon_if_nothing_returned = "warn" +single_match_else = "warn" +str_to_string = "warn" +string_add = "warn" +string_add_assign = "warn" +string_lit_as_bytes = "warn" +string_to_string = "warn" +tests_outside_test_module = "warn" +todo = "warn" +trait_duplication_in_bounds = "warn" +unwrap_used = "warn" +verbose_file_reads = "warn" +wildcard_imports = "warn" +zero_sized_map_values = "warn" + [package] name = "PROJECT" version = "0.0.1" @@ -46,3 +127,6 @@ default = [] [dependencies] [dev-dependencies] + +[lints] +workspace = true diff --git a/src/lib.rs b/src/lib.rs index 45bf577..8ce46b5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,2 +1,4 @@ +//! > DESCRIPTION + #![cfg_attr(docsrs, feature(doc_auto_cfg))] #![allow(non_snake_case)] // TODO: Delete me From ace6e07683db64f05a237d8c833e2320a951b5d4 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 21 Mar 2024 12:20:47 -0500 Subject: [PATCH 17/67] chore(ci): Don't update stable and MSRV together We might want to hold one or the other back --- .github/renovate.json5 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 06c1d63..373fc0e 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -59,10 +59,9 @@ schedule: [ '* * * * *', ], - groupName: 'rust-version', }, { - commitMessageTopic: 'STABLE', + commitMessageTopic: 'Rust Stable', matchManagers: [ 'custom.regex', ], @@ -73,7 +72,6 @@ schedule: [ '* * * * *', ], - groupName: 'rust-version', }, // Goals: // - Keep version reqs low, ignoring compatible normal/build dependencies From 8ec86ab9a22aa7333af26113d8b725333966635f Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 25 Mar 2024 12:33:58 -0500 Subject: [PATCH 18/67] chore: Normalize clippy lint names --- Cargo.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e51c5dd..d03936f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,12 +20,12 @@ include = [ missing_docs = "warn" rust_2018_idioms = "warn" unreachable_pub = "warn" -unsafe-op-in-unsafe-fn = "warn" +unsafe_op_in_unsafe_fn = "warn" unsafe_code = "warn" -unused-crate-dependencies = "warn" -unused-lifetimes = "warn" -unused-macro-rules = "warn" -unused-qualifications = "warn" +unused_crate_dependencies = "warn" +unused_lifetimes = "warn" +unused_macro_rules = "warn" +unused_qualifications = "warn" [workspace.lints.clippy] bool_assert_comparison = "allow" From 8e647d9cd40a6891d524737d97d93a43a9e7b965 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:35:59 -0500 Subject: [PATCH 19/67] chore: Encourage use of workspace.dependencies --- Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index d03936f..e07a473 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,8 @@ include = [ "examples/**/*" ] +[workspace.dependencies] + [workspace.lints.rust] missing_docs = "warn" rust_2018_idioms = "warn" From 126eb3d4dc4f59bcbee11d9d55545f01f75fb734 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:48:35 -0500 Subject: [PATCH 20/67] chore: Encourage a single test binary --- Cargo.lock | 49 ++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ tests/testsuite/delete_me.rs | 0 tests/testsuite/main.rs | 1 + 4 files changed, 52 insertions(+) create mode 100644 tests/testsuite/delete_me.rs create mode 100644 tests/testsuite/main.rs diff --git a/Cargo.lock b/Cargo.lock index 49c1f2d..e50f286 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,3 +5,52 @@ version = 3 [[package]] name = "PROJECT" version = "0.0.1" +dependencies = [ + "automod", +] + +[[package]] +name = "automod" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/Cargo.toml b/Cargo.toml index e07a473..d5e3b01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ include = [ ] [workspace.dependencies] +automod = "1.0.14" [workspace.lints.rust] missing_docs = "warn" @@ -129,6 +130,7 @@ default = [] [dependencies] [dev-dependencies] +automod.workspace = true [lints] workspace = true diff --git a/tests/testsuite/delete_me.rs b/tests/testsuite/delete_me.rs new file mode 100644 index 0000000..e69de29 diff --git a/tests/testsuite/main.rs b/tests/testsuite/main.rs new file mode 100644 index 0000000..4441374 --- /dev/null +++ b/tests/testsuite/main.rs @@ -0,0 +1 @@ +automod::dir!("tests/testsuite"); From c8b190be3a7397d63ffb175f8387ef98e7896b5a Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:50:22 -0500 Subject: [PATCH 21/67] chore(ci): Use latest SARIF Now that we run clippy on stable, we can do this --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12d398c..52ce7f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -128,9 +128,9 @@ jobs: components: clippy - uses: Swatinem/rust-cache@v2 - name: Install SARIF tools - run: cargo install clippy-sarif --version 0.3.4 --locked # Held back due to msrv + run: cargo install clippy-sarif --locked - name: Install SARIF tools - run: cargo install sarif-fmt --version 0.3.4 --locked # Held back due to msrv + run: cargo install sarif-fmt --locked - name: Check run: > cargo clippy --workspace --all-features --all-targets --message-format=json -- -D warnings --allow deprecated From 9b1b56620156971664aaf0f7a693bf3bc72ca0cb Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:51:51 -0500 Subject: [PATCH 22/67] chore(ci): Fix all rust-version-specific checks to stable --- .github/workflows/ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 52ce7f2..42c6be7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,7 +91,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: stable + toolchain: "1.76" # STABLE - uses: Swatinem/rust-cache@v2 - name: Check documentation env: @@ -106,9 +106,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - # Not MSRV because its harder to jump between versions and people are - # more likely to have stable - toolchain: stable + toolchain: "1.76" # STABLE components: rustfmt - uses: Swatinem/rust-cache@v2 - name: Check formatting From 92d486c4b03efa984a9d03aa7279a1febe84d816 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:53:02 -0500 Subject: [PATCH 23/67] chore(ci): Speed up lockfile check --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42c6be7..7a455a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ jobs: toolchain: stable - uses: Swatinem/rust-cache@v2 - name: "Is lockfile updated?" - run: cargo fetch --locked + run: cargo update --workspace --locked docs: name: Docs runs-on: ubuntu-latest From 9258d9af7b87bc0394ef09be7e65bf6152d99f4b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:57:23 -0500 Subject: [PATCH 24/67] chore(ci): More exhaustively check features --- .github/workflows/ci.yml | 15 ++++----------- .github/workflows/rust-next.yml | 18 ++++++------------ 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a455a4..134c317 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,14 +44,11 @@ jobs: with: toolchain: ${{ matrix.rust }} - uses: Swatinem/rust-cache@v2 + - uses: taiki-e/install-action@cargo-hack - name: Build run: cargo test --workspace --no-run - - name: Default features - run: cargo test --workspace - - name: All features - run: cargo test --workspace --all-features - - name: No-default features - run: cargo test --workspace --no-default-features + - name: Test + run: cargo hack test --feature-powerset --workspace msrv: name: "Check MSRV" runs-on: ubuntu-latest @@ -65,11 +62,7 @@ jobs: - uses: Swatinem/rust-cache@v2 - uses: taiki-e/install-action@cargo-hack - name: Default features - run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets - - name: All features - run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets --all-features - - name: No-default features - run: cargo hack check --locked --rust-version --ignore-private --workspace --all-targets --no-default-features + run: cargo hack check --feature-powerset --locked --rust-version --ignore-private --workspace --all-targets lockfile: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index 49e5d8c..e673b65 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -36,14 +36,11 @@ jobs: with: toolchain: ${{ matrix.rust }} - uses: Swatinem/rust-cache@v2 + - uses: taiki-e/install-action@cargo-hack - name: Build run: cargo test --workspace --no-run - - name: Default features - run: cargo test --workspace - - name: All features - run: cargo test --workspace --all-features - - name: No-default features - run: cargo test --workspace --no-default-features + - name: Test + run: cargo hack test --feature-powerset --workspace latest: name: "Check latest dependencies" runs-on: ubuntu-latest @@ -55,13 +52,10 @@ jobs: with: toolchain: stable - uses: Swatinem/rust-cache@v2 + - uses: taiki-e/install-action@cargo-hack - name: Update dependencues run: cargo update - name: Build run: cargo test --workspace --no-run - - name: Default features - run: cargo test --workspace - - name: All features - run: cargo test --workspace --all-features - - name: No-default features - run: cargo test --workspace --no-default-features + - name: Test + run: cargo hack test --feature-powerset --workspace From 2714cca7c31a9c73716e88a93693c119c527d7f1 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 09:58:31 -0500 Subject: [PATCH 25/67] chore(ci): Don't check for unused crates --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d5e3b01..4097fef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,6 @@ rust_2018_idioms = "warn" unreachable_pub = "warn" unsafe_op_in_unsafe_fn = "warn" unsafe_code = "warn" -unused_crate_dependencies = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" From 314eef7f5fb7e415e8cd92887e5e878e9bfa929b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 10:38:57 -0500 Subject: [PATCH 26/67] chore: Dont check must_use See https://github.com/rust-lang/rust-clippy/issues/8339 --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4097fef..666e6e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,7 +81,6 @@ rc_mutex = "warn" redundant_feature_names = "warn" ref_option_ref = "warn" rest_pat_in_fully_bound_structs = "warn" -return_self_not_must_use = "warn" same_functions_in_if_condition = "warn" self_named_module_files = "warn" semicolon_if_nothing_returned = "warn" From 6a9d2bf50fa78d8f277b77be836b48fad8c7c764 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 12:45:57 -0500 Subject: [PATCH 27/67] chore: Don't warn on unsafe This works well when a package is a safe abstraction but to universally apply in a template to all members of a workspace doesn't make sense. --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 666e6e3..50bfea5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,6 @@ missing_docs = "warn" rust_2018_idioms = "warn" unreachable_pub = "warn" unsafe_op_in_unsafe_fn = "warn" -unsafe_code = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" From 8d4b1b6c8daf3c32828bf92725811cf433917081 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 13:24:28 -0500 Subject: [PATCH 28/67] chore: Remove clippy::tests_outside_test_module See https://github.com/rust-lang/rust-clippy/issues/11024 --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 50bfea5..ed593eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,6 @@ string_add = "warn" string_add_assign = "warn" string_lit_as_bytes = "warn" string_to_string = "warn" -tests_outside_test_module = "warn" todo = "warn" trait_duplication_in_bounds = "warn" unwrap_used = "warn" From 99e034bbbbae7d60bb68d68c6d0db8338a97b030 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 28 Mar 2024 15:10:58 -0500 Subject: [PATCH 29/67] chore: Move print lints to lib.rs While there is a config for ignoring these in tests, it doesn't help with examples. --- Cargo.toml | 2 -- src/lib.rs | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ed593eb..faf1e63 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,8 +73,6 @@ needless_continue = "warn" needless_for_each = "warn" negative_feature_names = "warn" path_buf_push_overwrite = "warn" -print_stderr = "warn" -print_stdout = "warn" ptr_as_ptr = "warn" rc_mutex = "warn" redundant_feature_names = "warn" diff --git a/src/lib.rs b/src/lib.rs index 8ce46b5..2eabbd0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,6 @@ //! > DESCRIPTION #![cfg_attr(docsrs, feature(doc_auto_cfg))] +#![warn(clippy::print_stderr)] +#![warn(clippy::print_stdout)] #![allow(non_snake_case)] // TODO: Delete me From a516bda4adb0f367da527488697ea308fbe58b38 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 08:58:36 -0500 Subject: [PATCH 30/67] chore: Drop workspace.dependencies Without automated checks, this will make it harder to track breaking changes. --- Cargo.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index faf1e63..983e090 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,9 +16,6 @@ include = [ "examples/**/*" ] -[workspace.dependencies] -automod = "1.0.14" - [workspace.lints.rust] missing_docs = "warn" rust_2018_idioms = "warn" @@ -124,7 +121,7 @@ default = [] [dependencies] [dev-dependencies] -automod.workspace = true +automod = "1.0.14" [lints] workspace = true From ebc70d00f9259146592b7987bfcb8a0cb6c16661 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 09:11:24 -0500 Subject: [PATCH 31/67] chore: Only check missing_docs in lib This also fires in examples and other places. While docs in examples would be nice, it isn't universally applicable and `allow`s would undermine the examples. --- Cargo.toml | 1 - src/lib.rs | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 983e090..715131b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,6 @@ include = [ ] [workspace.lints.rust] -missing_docs = "warn" rust_2018_idioms = "warn" unreachable_pub = "warn" unsafe_op_in_unsafe_fn = "warn" diff --git a/src/lib.rs b/src/lib.rs index 2eabbd0..39877b7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ //! > DESCRIPTION #![cfg_attr(docsrs, feature(doc_auto_cfg))] +#![warn(missing_docs)] #![warn(clippy::print_stderr)] #![warn(clippy::print_stdout)] #![allow(non_snake_case)] // TODO: Delete me From 3278d49444c33ece610de3fb5547bd885124dfe7 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 10:35:16 -0500 Subject: [PATCH 32/67] chore: Allow print in tests --- .clippy.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/.clippy.toml b/.clippy.toml index 293c14f..027eef4 100644 --- a/.clippy.toml +++ b/.clippy.toml @@ -1,4 +1,5 @@ warn-on-all-wildcard-imports = true +allow-print-in-tests = true allow-expect-in-tests = true allow-unwrap-in-tests = true allow-dbg-in-tests = true From d634de649f30d5a4deade46333606bc63897d05e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 11:36:58 -0500 Subject: [PATCH 33/67] chore(ci): Ensure CI job always runs --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 134c317..95b13b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,11 +23,13 @@ jobs: permissions: contents: none name: CI - needs: [test, msrv, docs, rustfmt, clippy] + needs: [test, msrv, lockfile, docs, rustfmt, clippy] runs-on: ubuntu-latest + if: "always()" steps: - - name: Done - run: exit 0 + - name: Failed + run: exit 1 + if: "contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped')" test: name: Test strategy: From 2570b58a0feaf355dede9080a9f4c98f8ba5580b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 12:31:49 -0500 Subject: [PATCH 34/67] chore(ci): Skip branch protections --- .github/settings.yml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/settings.yml b/.github/settings.yml index 7d5e4fc..08983ae 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -42,14 +42,18 @@ labels: color: '#c2e0c6' description: "Help wanted!" -branches: - - name: main - protection: - required_pull_request_reviews: null - required_conversation_resolution: true - required_status_checks: - # Required. Require branches to be up to date before merging. - strict: false - contexts: ["CI", "Lint Commits", "Spell Check with Typos"] - enforce_admins: false - restrictions: null +# This serves more as documentation. +# Branch protection API was replaced by rulesets but settings isn't updated. +# See https://github.com/repository-settings/app/issues/825 +# +# branches: +# - name: main +# protection: +# required_pull_request_reviews: null +# required_conversation_resolution: true +# required_status_checks: +# # Required. Require branches to be up to date before merging. +# strict: false +# contexts: ["CI", "Lint Commits", "Spell Check with Typos"] +# enforce_admins: false +# restrictions: null From afd275590c5568e8f7ca60abc1f33b20e3679c03 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 1 Apr 2024 12:36:16 -0500 Subject: [PATCH 35/67] chore(ci): Don't block on Lint Commits --- .github/settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/settings.yml b/.github/settings.yml index 08983ae..457eed6 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -54,6 +54,6 @@ labels: # required_status_checks: # # Required. Require branches to be up to date before merging. # strict: false -# contexts: ["CI", "Lint Commits", "Spell Check with Typos"] +# contexts: ["CI", "Spell Check with Typos"] # enforce_admins: false # restrictions: null From 14225df351a4510a6fad72e716b29173347aac84 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 16 Apr 2024 21:46:56 -0500 Subject: [PATCH 36/67] chore(ci): Auto-merge linter version updates --- .github/renovate.json5 | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 373fc0e..62ca46b 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -72,6 +72,7 @@ schedule: [ '* * * * *', ], + automerge: true, }, // Goals: // - Keep version reqs low, ignoring compatible normal/build dependencies From be30b1bba034344c1a7c526b2b1898a8767471c5 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 26 Apr 2024 09:20:18 -0500 Subject: [PATCH 37/67] chore(ci): Try again with not auto-updating MSRV The overhead for MSRV bumping is a lot lower and its annoying merging all of the PRs (and I don't want these auto-merged) --- .github/renovate.json5 | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 62ca46b..c184420 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -7,24 +7,6 @@ configMigration: true, dependencyDashboard: true, customManagers: [ - { - customType: 'regex', - fileMatch: [ - '^rust-toolchain\\.toml$', - 'Cargo.toml$', - 'clippy.toml$', - '\\.clippy.toml$', - '^\\.github/workflows/ci.yml$', - '^\\.github/workflows/rust-next.yml$', - ], - matchStrings: [ - 'MSRV.*?(?\\d+\\.\\d+(\\.\\d+)?)', - '(?\\d+\\.\\d+(\\.\\d+)?).*?MSRV', - ], - depNameTemplate: 'MSRV', - packageNameTemplate: 'rust-lang/rust', - datasourceTemplate: 'github-releases', - }, { customType: 'regex', fileMatch: [ @@ -45,21 +27,6 @@ }, ], packageRules: [ - { - commitMessageTopic: 'MSRV', - matchManagers: [ - 'custom.regex', - ], - matchPackageNames: [ - 'MSRV', - ], - minimumReleaseAge: '336 days', // 8 releases * 6 weeks per release * 7 days per week - internalChecksFilter: 'strict', - extractVersion: '^(?\\d+\\.\\d+)', // Drop the patch version - schedule: [ - '* * * * *', - ], - }, { commitMessageTopic: 'Rust Stable', matchManagers: [ From a01f25da96e8bd3e216fbc19ac9883ab3bf969ce Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 26 Apr 2024 09:23:28 -0500 Subject: [PATCH 38/67] chore(ci): Reduce noisy lints Want to add this back in later but this is slowing down migration of my repos. --- src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 39877b7..2eabbd0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,6 @@ //! > DESCRIPTION #![cfg_attr(docsrs, feature(doc_auto_cfg))] -#![warn(missing_docs)] #![warn(clippy::print_stderr)] #![warn(clippy::print_stdout)] #![allow(non_snake_case)] // TODO: Delete me From 82cf9a62b027c10c6fafdcaaee24c4e92d7da61d Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 26 Apr 2024 09:35:55 -0500 Subject: [PATCH 39/67] chore(ci): Reduce noisy lints --- Cargo.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 715131b..898251e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,9 +35,6 @@ debug_assert_with_mut_call = "warn" doc_markdown = "warn" empty_enum = "warn" enum_glob_use = "warn" -exhaustive_enums = "warn" -exhaustive_structs = "warn" -exit = "warn" expl_impl_clone_on_copy = "warn" explicit_deref_methods = "warn" explicit_into_iter_loop = "warn" @@ -85,7 +82,6 @@ string_lit_as_bytes = "warn" string_to_string = "warn" todo = "warn" trait_duplication_in_bounds = "warn" -unwrap_used = "warn" verbose_file_reads = "warn" wildcard_imports = "warn" zero_sized_map_values = "warn" From 181a2cf5e673d0f6f42133a5b30ccafd86b0106d Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 26 Apr 2024 11:36:19 -0500 Subject: [PATCH 40/67] chore(ci): Allow prelude wildcard imports --- .clippy.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/.clippy.toml b/.clippy.toml index 027eef4..1d4c5dc 100644 --- a/.clippy.toml +++ b/.clippy.toml @@ -1,4 +1,3 @@ -warn-on-all-wildcard-imports = true allow-print-in-tests = true allow-expect-in-tests = true allow-unwrap-in-tests = true From 51de731521efb05c5503e05c33036d8fa439bc5a Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 26 Apr 2024 15:59:46 -0500 Subject: [PATCH 41/67] chore(ci): Lint clippy::items_after_statements seems too strict --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 898251e..5a90580 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,6 @@ inconsistent_struct_constructor = "warn" inefficient_to_string = "warn" infinite_loop = "warn" invalid_upcast_comparisons = "warn" -items_after_statements = "warn" large_digit_groups = "warn" large_stack_arrays = "warn" large_types_passed_by_value = "warn" From 78741e51bbbe6c83aaa98305623a8ffc6226493f Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 27 May 2024 21:45:38 -0500 Subject: [PATCH 42/67] chore: Remove lints that lead to bad code --- Cargo.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5a90580..8090691 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,7 +58,6 @@ let_and_return = "allow" # sometimes good to name what you are returning linkedlist = "warn" lossy_float_literal = "warn" macro_use_imports = "warn" -match_wildcard_for_single_variants = "warn" mem_forget = "warn" mutex_integer = "warn" needless_continue = "warn" @@ -73,7 +72,6 @@ rest_pat_in_fully_bound_structs = "warn" same_functions_in_if_condition = "warn" self_named_module_files = "warn" semicolon_if_nothing_returned = "warn" -single_match_else = "warn" str_to_string = "warn" string_add = "warn" string_add_assign = "warn" From 44916f6d2b8da4d778186083c31ff52a73187edf Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 29 May 2024 16:15:19 -0500 Subject: [PATCH 43/67] chore: Update deny config --- deny.toml | 176 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 136 insertions(+), 40 deletions(-) diff --git a/deny.toml b/deny.toml index 21fa937..b6ecbe9 100644 --- a/deny.toml +++ b/deny.toml @@ -4,32 +4,82 @@ # * allow - No warning or error will be produced, though in some cases a note # will be +# Root options + +# The graph table configures how the dependency graph is constructed and thus +# which crates the checks are performed against +[graph] +# If 1 or more target triples (and optionally, target_features) are specified, +# only the specified targets will be checked when running `cargo deny check`. +# This means, if a particular package is only ever used as a target specific +# dependency, such as, for example, the `nix` crate only being used via the +# `target_family = "unix"` configuration, that only having windows targets in +# this list would mean the nix crate, as well as any of its exclusive +# dependencies not shared by any other crates, would be ignored, as the target +# list here is effectively saying which targets you are building for. +targets = [ + # The triple can be any string, but only the target triples built in to + # rustc (as of 1.40) can be checked against actual config expressions + #"x86_64-unknown-linux-musl", + # You can also specify which target_features you promise are enabled for a + # particular target. target_features are currently not validated against + # the actual valid features supported by the target architecture. + #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, +] +# When creating the dependency graph used as the source of truth when checks are +# executed, this field can be used to prune crates from the graph, removing them +# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate +# is pruned from the graph, all of its dependencies will also be pruned unless +# they are connected to another crate in the graph that hasn't been pruned, +# so it should be used with care. The identifiers are [Package ID Specifications] +# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html) +#exclude = [] +# If true, metadata will be collected with `--all-features`. Note that this can't +# be toggled off if true, if you want to conditionally enable `--all-features` it +# is recommended to pass `--all-features` on the cmd line instead +all-features = false +# If true, metadata will be collected with `--no-default-features`. The same +# caveat with `all-features` applies +no-default-features = false +# If set, these feature will be enabled when collecting metadata. If `--features` +# is specified on the cmd line they will take precedence over this option. +#features = [] + +# The output table provides options for how/if diagnostics are outputted +[output] +# When outputting inclusion graphs in diagnostics that include features, this +# option can be used to specify the depth at which feature edges will be added. +# This option is included since the graphs can be quite large and the addition +# of features from the crate(s) to all of the graph roots can be far too verbose. +# This option can be overridden via `--feature-depth` on the cmd line +feature-depth = 1 + # This section is considered when running `cargo deny check advisories` # More documentation for the advisories section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html [advisories] -# The lint level for security vulnerabilities -vulnerability = "deny" -# The lint level for unmaintained crates -unmaintained = "warn" -# The lint level for crates that have been yanked from their source registry -yanked = "warn" -# The lint level for crates with security notices. Note that as of -# 2019-12-17 there are no security notice advisories in -# https://github.com/rustsec/advisory-db -notice = "warn" +# The path where the advisory databases are cloned/fetched into +#db-path = "$CARGO_HOME/advisory-dbs" +# The url(s) of the advisory databases to use +#db-urls = ["https://github.com/rustsec/advisory-db"] # A list of advisory IDs to ignore. Note that ignored advisories will still # output a note when they are encountered. -# -# e.g. "RUSTSEC-0000-0000", ignore = [ + #"RUSTSEC-0000-0000", + #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, + #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish + #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, ] +# If this is true, then cargo deny will use the git executable to fetch advisory database. +# If this is false, then it uses a built-in git library. +# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support. +# See Git Authentication for more information about setting up git authentication. +#git-fetch-with-cli = true # This section is considered when running `cargo deny check licenses` # More documentation for the licenses section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html [licenses] -unlicensed = "deny" # List of explicitly allowed licenses # See https://spdx.org/licenses/ for list of possible licenses # [possible values: any SPDX 3.11 short identifier (+ optional exception)]. @@ -42,26 +92,8 @@ allow = [ "Unicode-DFS-2016", "CC0-1.0", "ISC", + "OpenSSL", ] -# List of explicitly disallowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. -deny = [ -] -# Lint level for licenses considered copyleft -copyleft = "deny" -# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses -# * both - The license will be approved if it is both OSI-approved *AND* FSF -# * either - The license will be approved if it is either OSI-approved *OR* FSF -# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF -# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved -# * neither - This predicate is ignored and the default lint level is used -allow-osi-fsf-free = "neither" -# Lint level used when no other predicates are matched -# 1. License isn't in the allow or deny lists -# 2. License isn't copyleft -# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" -default = "deny" # The confidence threshold for detecting a license from license text. # The higher the value, the more closely the license text must be to the # canonical license text of a valid SPDX license file. @@ -72,7 +104,25 @@ confidence-threshold = 0.8 exceptions = [ # Each entry is the crate and version constraint, and its specific allow # list - #{ allow = ["Zlib"], name = "adler32", version = "*" }, + #{ allow = ["Zlib"], crate = "adler32" }, +] + +# Some crates don't have (easily) machine readable licensing information, +# adding a clarification entry for it allows you to manually specify the +# licensing information +[[licenses.clarify]] +# The package spec the clarification applies to +crate = "ring" +# The SPDX expression for the license requirements of the crate +expression = "MIT AND ISC AND OpenSSL" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +license-files = [ +# Each entry is a crate relative path, and the (opaque) hash of its contents +{ path = "LICENSE", hash = 0xbd0eed23 } ] [licenses.private] @@ -81,6 +131,12 @@ exceptions = [ # To see how to mark a crate as unpublished (to the official registry), # visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. ignore = true +# One or more private registries that you might publish crates to, if a crate +# is only published to private registries, and ignore is true, the crate will +# not have its license(s) checked +registries = [ + #"https://sekretz.com/registry +] # This section is considered when running `cargo deny check bans`. # More documentation about the 'bans' section can be found here: @@ -89,7 +145,7 @@ ignore = true # Lint level for when multiple versions of the same crate are detected multiple-versions = "warn" # Lint level for when a crate version requirement is `*` -wildcards = "warn" +wildcards = "allow" # The graph highlighting used when creating dotgraphs for crates # with multiple versions # * lowest-version - The path to the lowest versioned duplicate is highlighted @@ -106,17 +162,53 @@ workspace-default-features = "allow" external-default-features = "allow" # List of crates that are allowed. Use with care! allow = [ - #{ name = "ansi_term", version = "=0.11.0" }, + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" }, ] # List of crates to deny deny = [ - # Each entry the name of a crate and a version range. If version is - # not specified, all versions will be matched. - #{ name = "ansi_term", version = "=0.11.0" }, - # + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" }, # Wrapper crates can optionally be specified to allow the crate when it # is a direct dependency of the otherwise banned crate - #{ name = "ansi_term", version = "=0.11.0", wrappers = [] }, + #{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] }, +] + +# List of features to allow/deny +# Each entry the name of a crate and a version range. If version is +# not specified, all versions will be matched. +#[[bans.features]] +#crate = "reqwest" +# Features to not allow +#deny = ["json"] +# Features to allow +#allow = [ +# "rustls", +# "__rustls", +# "__tls", +# "hyper-rustls", +# "rustls", +# "rustls-pemfile", +# "rustls-tls-webpki-roots", +# "tokio-rustls", +# "webpki-roots", +#] +# If true, the allowed features must exactly match the enabled feature set. If +# this is set there is no point setting `deny` +#exact = true + +# Certain crates/versions that will be skipped when doing duplicate detection. +skip = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" }, +] +# Similarly to `skip` allows you to skip certain crates during duplicate +# detection. Unlike skip, it also includes the entire tree of transitive +# dependencies starting at the specified crate, up to a certain depth, which is +# by default infinite. +skip-tree = [ + #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies + #{ crate = "ansi_term@0.11.0", depth = 20 }, ] # This section is considered when running `cargo deny check sources`. @@ -138,3 +230,7 @@ allow-git = [] [sources.allow-org] # 1 or more github.com organizations to allow git sources for github = [] +# 1 or more gitlab.com organizations to allow git sources for +gitlab = [] +# 1 or more bitbucket.org organizations to allow git sources for +bitbucket = [] From ce6badcd188650dac4b3c97b69bde86a738917a0 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 3 Jun 2024 10:29:26 -0500 Subject: [PATCH 44/67] chore: Fix typo --- .github/workflows/rust-next.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index e673b65..ab49963 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -53,7 +53,7 @@ jobs: toolchain: stable - uses: Swatinem/rust-cache@v2 - uses: taiki-e/install-action@cargo-hack - - name: Update dependencues + - name: Update dependencies run: cargo update - name: Build run: cargo test --workspace --no-run From 1353a953a527b7ebc0b0a3f267fc47f56359e886 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 4 Jun 2024 15:33:16 -0500 Subject: [PATCH 45/67] chore: Encourage use of repository --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 8090691..c9695d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,6 +87,7 @@ zero_sized_map_values = "warn" name = "PROJECT" version = "0.0.1" description = "DESCRIPTION" +repository = "REPOSITORY" categories = [] keywords = [] license.workspace = true From 7039c66c7f0a42b84136a2f166ce6446edbb9ce0 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 4 Jun 2024 15:33:50 -0500 Subject: [PATCH 46/67] chore: Encourage cloneable repositories --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c9695d7..96cb234 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ resolver = "2" [workspace.package] +repository = "REPOSITORY" license = "MIT OR Apache-2.0" edition = "2021" rust-version = "1.65.0" # MSRV @@ -87,9 +88,9 @@ zero_sized_map_values = "warn" name = "PROJECT" version = "0.0.1" description = "DESCRIPTION" -repository = "REPOSITORY" categories = [] keywords = [] +repository.workspace = true license.workspace = true edition.workspace = true rust-version.workspace = true From 2a274e149f7f6f7f80f08486bd34c4fc7b8d63c8 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 21 Jun 2024 14:21:41 -0400 Subject: [PATCH 47/67] chore(ci): Auto-update Mac now that latest uses m1 --- .github/workflows/ci.yml | 2 +- .github/workflows/rust-next.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95b13b4..6e06499 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: name: Test strategy: matrix: - os: ["ubuntu-latest", "windows-latest", "macos-14"] + os: ["ubuntu-latest", "windows-latest", "macos-latest"] rust: ["stable"] continue-on-error: ${{ matrix.rust != 'stable' }} runs-on: ${{ matrix.os }} diff --git a/.github/workflows/rust-next.yml b/.github/workflows/rust-next.yml index ab49963..e98386c 100644 --- a/.github/workflows/rust-next.yml +++ b/.github/workflows/rust-next.yml @@ -21,7 +21,7 @@ jobs: name: Test strategy: matrix: - os: ["ubuntu-latest", "windows-latest", "macos-latest", "macos-14"] + os: ["ubuntu-latest", "windows-latest", "macos-latest"] rust: ["stable", "beta"] include: - os: ubuntu-latest From 0547ff2d0f135d541faef3735143b40c174b4c3a Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 4 Jul 2024 12:54:40 -0400 Subject: [PATCH 48/67] docs(contrib): Clarify our policies --- CONTRIBUTING.md | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9d7079..1a6dd1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,27 +29,42 @@ to re-work some of it and the discouragement that goes along with that. ### Process -Before posting a PR, we request that the commit history get cleaned up. -However, we recommend avoiding this during the review to make it easier to -check how feedback was handled. Once the PR is ready, we'll ask you to clean up -the commit history from the review. Once you let us know this is done, we can -move forward with merging! If you are uncomfortable with these parts of git, -let us know and we can help. - -For commit messages, we use [Conventional](https://www.conventionalcommits.org) -style. If you already wrote your commits and don't feel comfortable changing -them, don't worry and go ahead and create your PR. We'll work with you on the -best route forward. You can check your branch locally with -[`committed`](https://github.com/crate-ci/committed). - As a heads up, we'll be running your PR through the following gauntlet: - warnings turned to compile errors - `cargo test` - `rustfmt` - `clippy` - `rustdoc` -- [`committed`](https://github.com/crate-ci/committed) -- [`typos`](https://github.com/crate-ci/typos) +- [`committed`](https://github.com/crate-ci/committed) as we use [Conventional](https://www.conventionalcommits.org) commit styl +- [`typos`](https://github.com/crate-ci/typos) to check spelling + +Not everything can be checked automatically though. + +We request that the commit history get cleaned up. +We ask that commits are atomic, meaning they are complete and have a single responsibility. +PRs shoukd tell a cohesive story, with test and refactor commits that keep the +fix or feature commits simple and clear. + +Specifically, we would encouage +- File renames be isolated into their own commit +- Add tests in a commit before their feature or fix, showing the current behavior. + The diff for the feature/fix commit will then show how the behavior changed, + making it clearer to reviewrs and the community and showing people that the + test is verifying the expected state. + - e.g. [clap#5520](https://github.com/clap-rs/clap/pull/5520) + +Note that we are talking about ideals. +We understand having a clean history requires more advanced git skills; +feel free to ask us for help! +We might even suggest where it would work to be lax. +We also understand that editing some early commits may cause a lot of churn +with merge conflicts which can make it not worth editing all of the history. + +For code organization, we recommend +- Grouping `impl` blocks next to their type (or trait) +- Grouping private items after the `pub` item that uses them. + - The intent is to help people quickly find the "relevant" details, allowing them to "dig deeper" as needed. Or put another way, the `pub` items serve as a table-of-contents. + - The exact order is fuzzy; do what makes sense ## Releasing From eb4e999f1b679936ce1d11aa68b923066aff2ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= <60845989+jalil-salame@users.noreply.github.com> Date: Thu, 4 Jul 2024 19:06:12 +0200 Subject: [PATCH 49/67] Fix typos in CONTRIBUTING.md I found this through [mastodon][1] and found the typos jarring. [1]: https://hachyderm.io/@epage/112729287446906823 --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1a6dd1c..87d9134 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,14 +35,14 @@ As a heads up, we'll be running your PR through the following gauntlet: - `rustfmt` - `clippy` - `rustdoc` -- [`committed`](https://github.com/crate-ci/committed) as we use [Conventional](https://www.conventionalcommits.org) commit styl +- [`committed`](https://github.com/crate-ci/committed) as we use [Conventional](https://www.conventionalcommits.org) commit style - [`typos`](https://github.com/crate-ci/typos) to check spelling Not everything can be checked automatically though. -We request that the commit history get cleaned up. +We request that the commit history gets cleaned up. We ask that commits are atomic, meaning they are complete and have a single responsibility. -PRs shoukd tell a cohesive story, with test and refactor commits that keep the +PRs should tell a cohesive story, with test and refactor commits that keep the fix or feature commits simple and clear. Specifically, we would encouage From bdb06a11df6cf4d8b06848520f18609ab07c7b5e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 9 Jul 2024 11:06:45 -0500 Subject: [PATCH 50/67] chore(ci): Verify version requirements --- .github/workflows/ci.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e06499..d49017e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: permissions: contents: none name: CI - needs: [test, msrv, lockfile, docs, rustfmt, clippy] + needs: [test, msrv, lockfile, docs, rustfmt, clippy, minimal-versions] runs-on: ubuntu-latest if: "always()" steps: @@ -65,6 +65,24 @@ jobs: - uses: taiki-e/install-action@cargo-hack - name: Default features run: cargo hack check --feature-powerset --locked --rust-version --ignore-private --workspace --all-targets + minimal-versions: + name: Minimal versions + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install stable Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + - name: Install nightly Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: nightly + - name: Downgrade dependencies to minimal versions + run: cargo +nightly generate-lockfile -Z minimal-versions + - name: Compile with minimal versions + run: cargo +stable check --workspace --all-features --locked lockfile: runs-on: ubuntu-latest steps: From 87d9ae55c792a4f37b3f989250c1a3512df2926e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 25 Jul 2024 15:48:09 -0500 Subject: [PATCH 51/67] chore: Fix clippy::lint_groups_priority for 1.80 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 96cb234..90d89f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ include = [ ] [workspace.lints.rust] -rust_2018_idioms = "warn" +rust_2018_idioms = { level = "warn", priority = -1 } unreachable_pub = "warn" unsafe_op_in_unsafe_fn = "warn" unused_lifetimes = "warn" From 553258af51034bc84dc9f951201e7b8f2285b57e Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Thu, 25 Jul 2024 15:35:58 -0700 Subject: [PATCH 52/67] Have clippy warn about uninlined format arguments This makes clippy warn about `format!("{}", var)`, with a machine-applicable fix converting to `format!("{var}")`. --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 90d89f6..97c7ed7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,6 +80,7 @@ string_lit_as_bytes = "warn" string_to_string = "warn" todo = "warn" trait_duplication_in_bounds = "warn" +uninlined_format_args = "warn" verbose_file_reads = "warn" wildcard_imports = "warn" zero_sized_map_values = "warn" From 7a28f01acfe8eb95f4e54127e1b66aa31cf2aeed Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 23 Aug 2024 19:02:02 -0500 Subject: [PATCH 53/67] docs(contrib): Fix tpo --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 87d9134..b0318b8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,7 +45,7 @@ We ask that commits are atomic, meaning they are complete and have a single resp PRs should tell a cohesive story, with test and refactor commits that keep the fix or feature commits simple and clear. -Specifically, we would encouage +Specifically, we would encourage - File renames be isolated into their own commit - Add tests in a commit before their feature or fix, showing the current behavior. The diff for the feature/fix commit will then show how the behavior changed, From 37cf1085bc6aa53e18a37f0aa97be51afa6e7f14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Sep 2024 01:02:47 +0000 Subject: [PATCH 54/67] chore(deps): Update EmbarkStudios/cargo-deny-action action to v2 --- .github/workflows/audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index 07c70ee..a94be15 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -47,7 +47,7 @@ jobs: - bans licenses sources steps: - uses: actions/checkout@v4 - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: EmbarkStudios/cargo-deny-action@v2 with: command: check ${{ matrix.checks }} rust-version: stable From 6e193aa09aed80118df4e1317b8eed057bad6f0b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 26 Sep 2024 20:59:12 -0500 Subject: [PATCH 55/67] chore: Ensure pre-commit gets non-system Python This is needed with the ubuntu-24.04 images so that `setup-python` will install a version of Python that the pre-commit action can install into. See pre-commit/action#210 for more of an analysis of this. --- .github/workflows/pre-commit.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 1b000ab..7b55a3d 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -24,4 +24,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 + with: + python-version: '3.x' - uses: pre-commit/action@v3.0.1 From 8db276fc5ba20df6c0c2f8f0073cbcb2781f1648 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 21 Oct 2024 10:35:12 +0800 Subject: [PATCH 56/67] docs: Cross-reference source code view --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 97c7ed7..0e9372d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -99,7 +99,7 @@ include.workspace = true [package.metadata.docs.rs] all-features = true -rustdoc-args = ["--cfg", "docsrs"] +rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"] [package.metadata.release] pre-release-replacements = [ From e121dd6ef9e11dfa818a813bbaffb12a16cd174e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 21 Oct 2024 15:39:54 +0800 Subject: [PATCH 57/67] chore(ci): Fix STABLE updates See rust-lang/cargo#14704 --- .github/renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index c184420..7ab13b9 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -32,7 +32,7 @@ matchManagers: [ 'custom.regex', ], - matchPackageNames: [ + matchDepNames: [ 'STABLE', ], extractVersion: '^(?\\d+\\.\\d+)', // Drop the patch version From afa23ae258a1a6ec9f2268cd0b57c20a88dea3be Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 1 Nov 2024 15:36:16 -0500 Subject: [PATCH 58/67] style: Ignore large Err variants --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 0e9372d..7e38ce3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ rc_mutex = "warn" redundant_feature_names = "warn" ref_option_ref = "warn" rest_pat_in_fully_bound_structs = "warn" +result_large_err = "allow" same_functions_in_if_condition = "warn" self_named_module_files = "warn" semicolon_if_nothing_returned = "warn" From 006f98fb3a3e4d4a3054c9fc0ea33906a3e42d44 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 18 Nov 2024 13:48:49 -0600 Subject: [PATCH 59/67] chore(ci): Report deprecations in the review --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d49017e..9fb9591 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,7 +144,7 @@ jobs: run: cargo install sarif-fmt --locked - name: Check run: > - cargo clippy --workspace --all-features --all-targets --message-format=json -- -D warnings --allow deprecated + cargo clippy --workspace --all-features --all-targets --message-format=json | clippy-sarif | tee clippy-results.sarif | sarif-fmt From 810013723912ca4faf8fbc87fc2ed25b2a531516 Mon Sep 17 00:00:00 2001 From: futreall <86553580+futreall@users.noreply.github.com> Date: Fri, 29 Nov 2024 16:16:58 +0200 Subject: [PATCH 60/67] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b0318b8..e9fca37 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,7 +49,7 @@ Specifically, we would encourage - File renames be isolated into their own commit - Add tests in a commit before their feature or fix, showing the current behavior. The diff for the feature/fix commit will then show how the behavior changed, - making it clearer to reviewrs and the community and showing people that the + making it clearer to reviewers and the community and showing people that the test is verifying the expected state. - e.g. [clap#5520](https://github.com/clap-rs/clap/pull/5520) From b2aecee7155c151f9b443db45957bf5075d5085d Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 2 Dec 2024 12:48:07 -0600 Subject: [PATCH 61/67] docs(contrib): Fix language --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9fca37..ee501ec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,18 +7,18 @@ appreciate any level you're willing to do. Need some new functionality to help? You can let us know by opening an [issue][new issue]. It's helpful to look through [all issues][all issues] in -case its already being talked about. +case it's already being talked about. ## Bug Reports Please let us know about what problems you run into, whether in behavior or ergonomics of API. You can do this by opening an [issue][new issue]. It's -helpful to look through [all issues][all issues] in case its already being +helpful to look through [all issues][all issues] in case it's already being talked about. ## Pull Requests -Looking for an idea? Check our [issues][issues]. If it's look more open ended, +Looking for an idea? Check our [issues][issues]. If the issue looks open ended, it is probably best to post on the issue how you are thinking of resolving the issue so you can get feedback early in the process. We want you to be successful and it can be discouraging to find out a lot of re-work is needed. From 15ede43536f52b96d69152522bf57156662960a3 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 3 Dec 2024 12:54:52 -0600 Subject: [PATCH 62/67] docs(readme): Add a hyphen --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e6c4e7..ace2bb2 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 -license, shall be dual licensed as above, without any additional terms or +license, shall be dual-licensed as above, without any additional terms or conditions. [Crates.io]: https://crates.io/crates/PROJECT From 2f01ad6725cc0dfe275b8120bab58ff07d2bffe2 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 16 Dec 2024 14:07:22 -0600 Subject: [PATCH 63/67] chore(ci): Allow 2-clause BSD --- deny.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/deny.toml b/deny.toml index b6ecbe9..ee5ae89 100644 --- a/deny.toml +++ b/deny.toml @@ -87,6 +87,7 @@ allow = [ "MIT", "MIT-0", "Apache-2.0", + "BSD-2-Clause", "BSD-3-Clause", "MPL-2.0", "Unicode-DFS-2016", From e783559994c5e56d4d3327443dd70abb0f95ef68 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 18 Dec 2024 08:44:02 -0600 Subject: [PATCH 64/67] docs(contrib): Try to remove ambiguity about commits/PRs --- CONTRIBUTING.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee501ec..8048d24 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,15 +41,18 @@ As a heads up, we'll be running your PR through the following gauntlet: Not everything can be checked automatically though. We request that the commit history gets cleaned up. + We ask that commits are atomic, meaning they are complete and have a single responsibility. -PRs should tell a cohesive story, with test and refactor commits that keep the +A complete commit should build, pass tests, update documentation and tests, and not have dead code. + +PRs should tell a cohesive story, with refactor and test commits that keep the fix or feature commits simple and clear. Specifically, we would encourage - File renames be isolated into their own commit -- Add tests in a commit before their feature or fix, showing the current behavior. +- Add tests in a commit before their feature or fix, showing the current behavior (i.e. they should pass). The diff for the feature/fix commit will then show how the behavior changed, - making it clearer to reviewers and the community and showing people that the + making the commit's intent clearer to reviewers and the community, and showing people that the test is verifying the expected state. - e.g. [clap#5520](https://github.com/clap-rs/clap/pull/5520) From d159ec5290740054b9b344f995d453d37307e7ff Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 24 Jan 2025 11:54:12 -0600 Subject: [PATCH 65/67] test: Verify readme --- src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 2eabbd0..f66c110 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,3 +4,7 @@ #![warn(clippy::print_stderr)] #![warn(clippy::print_stdout)] #![allow(non_snake_case)] // TODO: Delete me + +#[doc = include_str!("../README.md")] +#[cfg(doctest)] +pub struct ReadmeDoctests; From 248be856cf6a13681ff9f30841d47c1efd697824 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 5 Mar 2025 11:25:26 -0600 Subject: [PATCH 66/67] style: Make clippy happy --- crates/lexarg/src/ext.rs | 25 +++++++++------- crates/lexarg/src/lib.rs | 18 +++++------ crates/libtest2-harness/src/case.rs | 2 +- crates/libtest2-harness/src/harness.rs | 22 +++++++------- crates/libtest2-harness/src/notify/json.rs | 2 +- crates/libtest2-harness/src/notify/summary.rs | 6 ++-- crates/libtest2-harness/src/shuffle.rs | 4 +-- crates/libtest2-harness/src/state.rs | 8 ++--- .../tests/testsuite/mixed_bag.rs | 30 +++++++++---------- crates/libtest2-mimic/tests/testsuite/util.rs | 8 ++--- crates/libtest2/tests/testsuite/mixed_bag.rs | 30 +++++++++---------- crates/libtest2/tests/testsuite/util.rs | 8 ++--- 12 files changed, 84 insertions(+), 79 deletions(-) diff --git a/crates/lexarg/src/ext.rs b/crates/lexarg/src/ext.rs index 9830acb..0c16c71 100644 --- a/crates/lexarg/src/ext.rs +++ b/crates/lexarg/src/ext.rs @@ -2,13 +2,14 @@ use std::ffi::OsStr; pub(crate) trait OsStrExt: private::Sealed { /// Converts to a string slice. - /// The Utf8Error is guaranteed to have a valid UTF8 boundary + /// The `Utf8Error` is guaranteed to have a valid UTF8 boundary /// in its `valid_up_to()` fn try_str(&self) -> Result<&str, std::str::Utf8Error>; /// Returns `true` if the given pattern matches a sub-slice of /// this string slice. /// /// Returns `false` if it does not. + #[allow(dead_code)] fn contains(&self, needle: &str) -> bool; /// Returns the byte index of the first character of this string slice that /// matches the pattern. @@ -29,6 +30,7 @@ pub(crate) trait OsStrExt: private::Sealed { fn starts_with(&self, prefix: &str) -> bool; /// An iterator over substrings of this string slice, separated by /// characters matched by a pattern. + #[allow(dead_code)] fn split<'s, 'n>(&'s self, needle: &'n str) -> Split<'s, 'n>; /// Splits the string on the first occurrence of the specified delimiter and /// returns prefix before delimiter and suffix after delimiter. @@ -92,17 +94,18 @@ impl OsStrExt for OsStr { } mod private { - pub trait Sealed {} + pub(crate) trait Sealed {} impl Sealed for std::ffi::OsStr {} } -pub struct Split<'s, 'n> { +#[allow(dead_code)] +pub(crate) struct Split<'s, 'n> { haystack: Option<&'s OsStr>, needle: &'n str, } -impl<'s, 'n> Iterator for Split<'s, 'n> { +impl<'s> Iterator for Split<'s, '_> { type Item = &'s OsStr; fn next(&mut self) -> Option { @@ -129,10 +132,12 @@ impl<'s, 'n> Iterator for Split<'s, 'n> { /// /// `index` must be at a valid UTF-8 boundary pub(crate) unsafe fn split_at(os: &OsStr, index: usize) -> (&OsStr, &OsStr) { - let bytes = os.as_encoded_bytes(); - let (first, second) = bytes.split_at(index); - ( - OsStr::from_encoded_bytes_unchecked(first), - OsStr::from_encoded_bytes_unchecked(second), - ) + unsafe { + let bytes = os.as_encoded_bytes(); + let (first, second) = bytes.split_at(index); + ( + OsStr::from_encoded_bytes_unchecked(first), + OsStr::from_encoded_bytes_unchecked(second), + ) + } } diff --git a/crates/lexarg/src/lib.rs b/crates/lexarg/src/lib.rs index 986ce28..6dc1052 100644 --- a/crates/lexarg/src/lib.rs +++ b/crates/lexarg/src/lib.rs @@ -417,7 +417,7 @@ enum State<'a> { Escaped, } -impl<'a> State<'a> { +impl State<'_> { #[cfg(test)] fn has_pending(&self) -> bool { match self { @@ -455,7 +455,7 @@ fn split_nonutf8_once(b: &OsStr) -> (&str, Option<&OsStr>) { } mod private { - use super::*; + use super::OsStr; pub trait Sealed {} impl Sealed for [S; C] where S: AsRef + std::fmt::Debug {} @@ -784,7 +784,7 @@ mod tests { } permutations = new; for permutation in &permutations { - println!("Starting {:?}", permutation); + println!("Starting {permutation:?}"); let p = Parser::new(permutation); exhaust(p, vec![]); } @@ -794,7 +794,7 @@ mod tests { /// Run many sequences of methods on a Parser. fn exhaust(parser: Parser<'_>, path: Vec) { if path.len() > 100 { - panic!("Stuck in loop: {:?}", path); + panic!("Stuck in loop: {path:?}"); } if parser.has_pending() { @@ -806,7 +806,7 @@ mod tests { "{next:?} via {path:?}", ); let mut path = path.clone(); - path.push(format!("pending-next-{:?}", next)); + path.push(format!("pending-next-{next:?}")); exhaust(parser, path); } @@ -815,7 +815,7 @@ mod tests { let next = parser.flag_value(); assert!(next.is_some(), "{next:?} via {path:?}",); let mut path = path; - path.push(format!("pending-value-{:?}", next)); + path.push(format!("pending-value-{next:?}")); exhaust(parser, path); } } else { @@ -832,8 +832,8 @@ mod tests { } _ => { let mut path = path.clone(); - path.push(format!("next-{:?}", next)); - exhaust(parser, path) + path.push(format!("next-{next:?}")); + exhaust(parser, path); } } } @@ -857,7 +857,7 @@ mod tests { "{next:?} via {path:?}", ); let mut path = path; - path.push(format!("value-{:?}", next)); + path.push(format!("value-{next:?}")); exhaust(parser, path); } } diff --git a/crates/libtest2-harness/src/case.rs b/crates/libtest2-harness/src/case.rs index f37a551..7dc9e94 100644 --- a/crates/libtest2-harness/src/case.rs +++ b/crates/libtest2-harness/src/case.rs @@ -1,4 +1,4 @@ -pub use crate::*; +pub(crate) use crate::*; pub trait Case: Send + Sync + 'static { /// The name of a test diff --git a/crates/libtest2-harness/src/harness.rs b/crates/libtest2-harness/src/harness.rs index 840919c..7840ef4 100644 --- a/crates/libtest2-harness/src/harness.rs +++ b/crates/libtest2-harness/src/harness.rs @@ -1,6 +1,6 @@ use libtest_lexarg::OutputFormat; -use crate::*; +use crate::{cli, notify, shuffle, Case, RunError, RunMode, State}; pub struct Harness { raw: Vec, @@ -33,7 +33,7 @@ impl Harness { pub fn main(mut self) -> ! { let mut parser = cli::Parser::new(&self.raw); let opts = parse(&mut parser).unwrap_or_else(|err| { - eprintln!("{}", err); + eprintln!("{err}"); std::process::exit(1) }); @@ -45,11 +45,11 @@ impl Harness { .write_global(); let mut notifier = notifier(&opts).unwrap_or_else(|err| { - eprintln!("{}", err); + eprintln!("{err}"); std::process::exit(1) }); discover(&opts, &mut self.cases, notifier.as_mut()).unwrap_or_else(|err| { - eprintln!("{}", err); + eprintln!("{err}"); std::process::exit(1) }); @@ -70,7 +70,7 @@ impl Harness { const ERROR_EXIT_CODE: i32 = 101; -fn parse(parser: &mut cli::Parser) -> cli::Result { +fn parse(parser: &mut cli::Parser<'_>) -> cli::Result { let mut test_opts = libtest_lexarg::TestOptsParseState::new(); let bin = parser.bin(); @@ -194,7 +194,7 @@ fn discover( retain_cases.push(retain_case); notifier.notify(notify::Event::DiscoverCase { name: case.name().to_owned(), - mode: notify::RunMode::Test, + mode: RunMode::Test, run: retain_case, })?; } @@ -253,8 +253,8 @@ fn run( "`--test` and `-bench` are mutually exclusive", )); } - (true, false) => notify::RunMode::Test, - (false, true) => notify::RunMode::Bench, + (true, false) => RunMode::Test, + (false, true) => RunMode::Bench, (false, false) => unreachable!("libtest-lexarg` should always ensure at least one is set"), }; state.set_mode(mode); @@ -309,7 +309,7 @@ fn run( let case = remaining.pop_front().unwrap(); let name = case.name().to_owned(); - let cfg = std::thread::Builder::new().name(name.to_owned()); + let cfg = std::thread::Builder::new().name(name.clone()); let tx = tx.clone(); let case = std::sync::Arc::new(case); let case_fallback = case.clone(); @@ -402,7 +402,7 @@ fn run_case( let msg = match payload { Some(payload) => format!("test panicked: {payload}"), - None => "test panicked".to_string(), + None => "test panicked".to_owned(), }; Err(RunError::fail(msg)) }); @@ -412,7 +412,7 @@ fn run_case( let message = err.and_then(|e| e.cause().map(|c| c.to_string())); notifier.notify(notify::Event::CaseComplete { name: case.name().to_owned(), - mode: notify::RunMode::Test, + mode: RunMode::Test, status, message, elapsed_s: Some(notify::Elapsed(timer.elapsed())), diff --git a/crates/libtest2-harness/src/notify/json.rs b/crates/libtest2-harness/src/notify/json.rs index 3597933..69eb9af 100644 --- a/crates/libtest2-harness/src/notify/json.rs +++ b/crates/libtest2-harness/src/notify/json.rs @@ -14,7 +14,7 @@ impl JsonNotifier { impl super::Notifier for JsonNotifier { fn notify(&mut self, event: Event) -> std::io::Result<()> { let event = serde_json::to_string(&event)?; - writeln!(self.writer, "{}", event)?; + writeln!(self.writer, "{event}")?; Ok(()) } } diff --git a/crates/libtest2-harness/src/notify/summary.rs b/crates/libtest2-harness/src/notify/summary.rs index e684c11..0de6cc8 100644 --- a/crates/libtest2-harness/src/notify/summary.rs +++ b/crates/libtest2-harness/src/notify/summary.rs @@ -59,8 +59,8 @@ impl Summary { // Print messages of all tests for (name, msg) in &self.failures { if let Some(msg) = msg { - writeln!(writer, "---- {} ----", name)?; - writeln!(writer, "{}", msg)?; + writeln!(writer, "---- {name} ----")?; + writeln!(writer, "{msg}")?; writeln!(writer)?; } } @@ -69,7 +69,7 @@ impl Summary { writeln!(writer)?; writeln!(writer, "failures:")?; for name in self.failures.keys() { - writeln!(writer, " {}", name)?; + writeln!(writer, " {name}")?; } } writeln!(writer)?; diff --git a/crates/libtest2-harness/src/shuffle.rs b/crates/libtest2-harness/src/shuffle.rs index 9dbf710..444e664 100644 --- a/crates/libtest2-harness/src/shuffle.rs +++ b/crates/libtest2-harness/src/shuffle.rs @@ -4,7 +4,7 @@ use std::time::{SystemTime, UNIX_EPOCH}; use crate::Case; -pub fn get_shuffle_seed(opts: &libtest_lexarg::TestOpts) -> Option { +pub(crate) fn get_shuffle_seed(opts: &libtest_lexarg::TestOpts) -> Option { opts.shuffle_seed.or_else(|| { opts.shuffle.then(|| { SystemTime::now() @@ -15,7 +15,7 @@ pub fn get_shuffle_seed(opts: &libtest_lexarg::TestOpts) -> Option { }) } -pub fn shuffle_tests(shuffle_seed: u64, tests: &mut [Box]) { +pub(crate) fn shuffle_tests(shuffle_seed: u64, tests: &mut [Box]) { let test_names: Vec<&str> = tests.iter().map(|test| test.name()).collect(); let test_names_hash = calculate_hash(&test_names); let mut rng = Rng::new(shuffle_seed, test_names_hash); diff --git a/crates/libtest2-harness/src/state.rs b/crates/libtest2-harness/src/state.rs index 939bba3..3253954 100644 --- a/crates/libtest2-harness/src/state.rs +++ b/crates/libtest2-harness/src/state.rs @@ -1,8 +1,8 @@ -pub use crate::*; +pub(crate) use crate::*; #[derive(Debug)] pub struct State { - mode: notify::RunMode, + mode: RunMode, run_ignored: bool, } @@ -23,7 +23,7 @@ impl State { } } - pub fn current_mode(&self) -> notify::RunMode { + pub fn current_mode(&self) -> RunMode { self.mode } } @@ -36,7 +36,7 @@ impl State { } } - pub(crate) fn set_mode(&mut self, mode: notify::RunMode) { + pub(crate) fn set_mode(&mut self, mode: RunMode) { self.mode = mode; } diff --git a/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs b/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs index 35eb643..38e5938 100644 --- a/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs +++ b/crates/libtest2-mimic/tests/testsuite/mixed_bag.rs @@ -101,7 +101,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -148,7 +148,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -195,7 +195,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -227,7 +227,7 @@ owl: test 8 tests "#, - ) + ); } #[test] @@ -302,7 +302,7 @@ running 2 tests test result: ok. 1 passed; 0 failed; 1 ignored; 6 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -376,7 +376,7 @@ failures: test result: FAILED. 2 passed; 2 failed; 0 ignored; 4 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -427,7 +427,7 @@ failures: test result: FAILED. 2 passed; 2 failed; 0 ignored; 4 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -498,7 +498,7 @@ failures: test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -569,7 +569,7 @@ failures: test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -610,7 +610,7 @@ failures: test result: FAILED. 1 passed; 1 failed; 0 ignored; 6 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -641,7 +641,7 @@ fn list_json() { {"event":"discover-case","name":"owl","mode":"test","run":false} {"event":"discover-complete","elapsed_s":"[..]","seed":null} "#, - ) + ); } #[test] @@ -684,7 +684,7 @@ fn test_json() { [..] {"event":"suite-complete","elapsed_s":"[..]"} "#, - ) + ); } #[test] @@ -705,7 +705,7 @@ cat: test 2 tests "#, - ) + ); } #[test] @@ -732,7 +732,7 @@ fn test_junit() { "#, - ) + ); } #[test] @@ -770,7 +770,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] diff --git a/crates/libtest2-mimic/tests/testsuite/util.rs b/crates/libtest2-mimic/tests/testsuite/util.rs index b7ebdd4..993777e 100644 --- a/crates/libtest2-mimic/tests/testsuite/util.rs +++ b/crates/libtest2-mimic/tests/testsuite/util.rs @@ -70,7 +70,7 @@ fn tempdir() -> std::path::PathBuf { } mod tests { - pub fn compile_test( + pub(super) fn compile_test( manifest_path: &std::path::Path, target_name: &str, args: impl IntoIterator>, @@ -93,12 +93,12 @@ mod tests { } } - panic!("Unknown error building test {}", target_name) + panic!("Unknown error building test {target_name}") } #[allow(clippy::type_complexity)] fn decode_test_message<'m>( - message: &'m escargot::format::Message, + message: &'m escargot::format::Message<'_>, ) -> Option<(&'m str, std::path::PathBuf)> { match message { escargot::format::Message::CompilerMessage(msg) => { @@ -133,7 +133,7 @@ mod tests { } } - fn is_test_target(target: &escargot::format::Target) -> bool { + fn is_test_target(target: &escargot::format::Target<'_>) -> bool { target.crate_types == ["bin"] && target.kind == ["test"] } } diff --git a/crates/libtest2/tests/testsuite/mixed_bag.rs b/crates/libtest2/tests/testsuite/mixed_bag.rs index f2bb2bb..97a3e3d 100644 --- a/crates/libtest2/tests/testsuite/mixed_bag.rs +++ b/crates/libtest2/tests/testsuite/mixed_bag.rs @@ -108,7 +108,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -155,7 +155,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -202,7 +202,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -234,7 +234,7 @@ owl: test 8 tests "#, - ) + ); } #[test] @@ -309,7 +309,7 @@ running 2 tests test result: ok. 1 passed; 0 failed; 1 ignored; 6 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -383,7 +383,7 @@ failures: test result: FAILED. 2 passed; 2 failed; 0 ignored; 4 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -434,7 +434,7 @@ failures: test result: FAILED. 2 passed; 2 failed; 0 ignored; 4 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -505,7 +505,7 @@ failures: test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -576,7 +576,7 @@ failures: test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -617,7 +617,7 @@ failures: test result: FAILED. 1 passed; 1 failed; 0 ignored; 6 filtered out; finished in [..]s "#, - ) + ); } #[test] @@ -648,7 +648,7 @@ fn list_json() { {"event":"discover-case","name":"owl","mode":"test","run":false} {"event":"discover-complete","elapsed_s":"[..]","seed":null} "#, - ) + ); } #[test] @@ -691,7 +691,7 @@ fn test_json() { [..] {"event":"suite-complete","elapsed_s":"[..]"} "#, - ) + ); } #[test] @@ -712,7 +712,7 @@ cat: test 2 tests "#, - ) + ); } #[test] @@ -739,7 +739,7 @@ fn test_junit() { "#, - ) + ); } #[test] @@ -777,7 +777,7 @@ failures: test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s "#, - ) + ); } #[test] diff --git a/crates/libtest2/tests/testsuite/util.rs b/crates/libtest2/tests/testsuite/util.rs index a4a81c3..158d58a 100644 --- a/crates/libtest2/tests/testsuite/util.rs +++ b/crates/libtest2/tests/testsuite/util.rs @@ -70,7 +70,7 @@ fn tempdir() -> std::path::PathBuf { } mod tests { - pub fn compile_test( + pub(super) fn compile_test( manifest_path: &std::path::Path, target_name: &str, args: impl IntoIterator>, @@ -93,12 +93,12 @@ mod tests { } } - panic!("Unknown error building test {}", target_name) + panic!("Unknown error building test {target_name}") } #[allow(clippy::type_complexity)] fn decode_test_message<'m>( - message: &'m escargot::format::Message, + message: &'m escargot::format::Message<'_>, ) -> Option<(&'m str, std::path::PathBuf)> { match message { escargot::format::Message::CompilerMessage(msg) => { @@ -133,7 +133,7 @@ mod tests { } } - fn is_test_target(target: &escargot::format::Target) -> bool { + fn is_test_target(target: &escargot::format::Target<'_>) -> bool { target.crate_types == ["bin"] && target.kind == ["test"] } } From e7aa58aad548d08c87c657eb00b74c9ea1c0db58 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 5 Mar 2025 11:34:34 -0600 Subject: [PATCH 67/67] chore: Update stable version --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fb9591..6b8a7f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,7 +104,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.76" # STABLE + toolchain: "1.85" # STABLE - uses: Swatinem/rust-cache@v2 - name: Check documentation env: @@ -119,7 +119,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.76" # STABLE + toolchain: "1.85" # STABLE components: rustfmt - uses: Swatinem/rust-cache@v2 - name: Check formatting @@ -135,7 +135,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - toolchain: "1.76" # STABLE + toolchain: "1.85" # STABLE components: clippy - uses: Swatinem/rust-cache@v2 - name: Install SARIF tools