summaryrefslogtreecommitdiffstats
path: root/ci
diff options
context:
space:
mode:
authorTaiki Endo <te316e89@gmail.com>2019-11-01 13:09:32 +0900
committerCarl Lerche <me@carllerche.com>2019-10-31 21:09:32 -0700
commit02f7264008e0333d7c4df183d3bcfbda8a6d930f (patch)
tree6100ae0b9a96178970d9e9a73e3225134a5b38a8 /ci
parent2902e39db0151c9064be535b7983748eb9a0d92f (diff)
chore: check each feature works properly (#1695)
It is hard to maintain features list manually, so use cargo-hack's `--each-feature` flag. And cargo-hack provides a workaround for an issue that dev-dependencies leaking into normal build (`--no-dev-deps` flag), so removed own ci tool. Also, compared to running tests on all features, there is not much advantage in running tests on each feature, so only the default features and all features are tested. If the behavior changes depending on the feature, we need to test it as another job in CI.
Diffstat (limited to 'ci')
-rw-r--r--ci/azure-test-stable.yml71
1 files changed, 49 insertions, 22 deletions
diff --git a/ci/azure-test-stable.yml b/ci/azure-test-stable.yml
index f0ff7a7c..93e9ee13 100644
--- a/ci/azure-test-stable.yml
+++ b/ci/azure-test-stable.yml
@@ -20,6 +20,11 @@ jobs:
# rust_version: stable
rust_version: ${{ parameters.rust }}
+ - script: cargo install cargo-hack
+ displayName: Install cargo-hack
+ # FIXME(taiki-e): many features of current cargo-hack are not available on windows: https://github.com/taiki-e/cargo-hack/issues/3
+ condition: not(eq(variables['Agent.OS'], 'Windows_NT'))
+
- template: azure-is-release.yml
- ${{ each crate in parameters.crates }}:
@@ -28,17 +33,28 @@ jobs:
env:
LOOM_MAX_PREEMPTIONS: 2
CI: 'True'
- displayName: ${{ crate.key }} - cargo test
- workingDirectory: $(Build.SourcesDirectory)/${{ crate.key }}
-
- # Run with each specified feature
- - ${{ each feature in crate.value }}:
- - script: cargo test --no-default-features --features ${{ feature }}
- env:
- LOOM_MAX_PREEMPTIONS: 2
- CI: 'True'
- displayName: ${{ crate.key }} - cargo test --features ${{ feature }}
- workingDirectory: $(Build.SourcesDirectory)/${{ crate.key }}
+ displayName: ${{ crate }} - cargo test
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+
+ # Run with all crate features
+ - script: cargo test --all-features
+ env:
+ LOOM_MAX_PREEMPTIONS: 2
+ CI: 'True'
+ displayName: ${{ crate }} - cargo test --all-features
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+
+ # Check each specified feature works properly
+ # * --each-feature - run for each feature which includes --no-default-features and default features of package
+ # * --no-dev-deps - build without dev-dependencies to avoid https://github.com/rust-lang/cargo/issues/4866
+ - script: cargo hack check --each-feature --no-dev-deps
+ env:
+ LOOM_MAX_PREEMPTIONS: 2
+ CI: 'True'
+ displayName: ${{ crate }} - cargo hack check --each-feature
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+ # FIXME(taiki-e): many features of current cargo-hack are not available on windows: https://github.com/taiki-e/cargo-hack/issues/3
+ condition: not(eq(variables['Agent.OS'], 'Windows_NT'))
- template: azure-patch-crates.yml
@@ -48,14 +64,25 @@ jobs:
env:
LOOM_MAX_PREEMPTIONS: 2
CI: 'True'
- displayName: ${{ crate.key }} - cargo test
- workingDirectory: $(Build.SourcesDirectory)/${{ crate.key }}
-
- # Run with each specified feature
- - ${{ each feature in crate.value }}:
- - script: cargo test --no-default-features --features ${{ feature }}
- env:
- LOOM_MAX_PREEMPTIONS: 2
- CI: 'True'
- displayName: ${{ crate.key }} - cargo test --features ${{ feature }}
- workingDirectory: $(Build.SourcesDirectory)/${{ crate.key }}
+ displayName: ${{ crate }} - cargo test
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+
+ # Run with all crate features
+ - script: cargo test --all-features
+ env:
+ LOOM_MAX_PREEMPTIONS: 2
+ CI: 'True'
+ displayName: ${{ crate }} - cargo test --all-features
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+
+ # Check each specified feature works properly
+ # * --each-feature - run for each feature which includes --no-default-features and default features of package
+ # * --no-dev-deps - build without dev-dependencies to avoid https://github.com/rust-lang/cargo/issues/4866
+ - script: cargo hack check --each-feature --no-dev-deps
+ env:
+ LOOM_MAX_PREEMPTIONS: 2
+ CI: 'True'
+ displayName: ${{ crate }} - cargo hack check --each-feature
+ workingDirectory: $(Build.SourcesDirectory)/${{ crate }}
+ # FIXME(taiki-e): many features of current cargo-hack are not available on windows: https://github.com/taiki-e/cargo-hack/issues/3
+ condition: not(eq(variables['Agent.OS'], 'Windows_NT'))