Removes some permutations of benchmarks for plugin encoding/decoding.… #81
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
pull_request: | |
push: # Run CI on the main branch after every merge. This is important to fill the GitHub Actions cache in a way that pull requests can see it | |
branches: | |
- main | |
name: continuous-integration | |
jobs: | |
nu-fmt-clippy: | |
strategy: | |
fail-fast: true | |
matrix: | |
# Pinning to Ubuntu 20.04 because building on newer Ubuntu versions causes linux-gnu | |
# builds to link against a too-new-for-many-Linux-installs glibc version. Consider | |
# revisiting this when 20.04 is closer to EOL (April 2025) | |
platform: [windows-latest, macos-latest, ubuntu-20.04] | |
style: [default, dataframe, extra] | |
rust: | |
- stable | |
include: | |
- style: default | |
flags: "" | |
- style: dataframe | |
flags: "--features=dataframe " | |
- style: extra | |
flags: "--features=extra " | |
exclude: | |
# only test dataframes on Ubuntu (the fastest platform) | |
- platform: windows-latest | |
style: dataframe | |
- platform: macos-latest | |
style: dataframe | |
runs-on: ${{ matrix.platform }} | |
env: | |
NUSHELL_CARGO_TARGET: ci | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Rust toolchain and cache | |
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 | |
- name: cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Clippy | |
run: cargo clippy --workspace ${{ matrix.flags }}--exclude nu_plugin_* -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err | |
nu-tests: | |
env: | |
NUSHELL_CARGO_TARGET: ci | |
strategy: | |
fail-fast: true | |
matrix: | |
platform: [windows-latest, macos-latest, ubuntu-20.04] | |
style: [default, dataframe, extra] | |
rust: | |
- stable | |
include: | |
- style: default | |
flags: "" | |
- style: dataframe | |
flags: "--features=dataframe" | |
- style: extra | |
flags: "--features=extra" | |
exclude: | |
# only test dataframes and extra on Ubuntu (the fastest platform) | |
- platform: windows-latest | |
style: dataframe | |
- platform: macos-latest | |
style: dataframe | |
- platform: windows-latest | |
style: extra | |
- platform: macos-latest | |
style: extra | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Rust toolchain and cache | |
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 | |
- name: Tests | |
run: cargo test --workspace --profile ci --exclude nu_plugin_* ${{ matrix.flags }} | |
std-lib-and-python-virtualenv: | |
env: | |
NU_LOG_LEVEL: DEBUG | |
strategy: | |
fail-fast: true | |
matrix: | |
platform: [ubuntu-20.04, macos-latest, windows-latest] | |
rust: | |
- stable | |
py: | |
- py | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Rust toolchain and cache | |
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 | |
- name: Install Nushell | |
# prior to [*standard library: bring the tests into the main CI*](#8525) | |
# there was a `--profile ci` here in the `cargo install`, as well as | |
# `NUSHELL_CARGO_TARGET: ci` in the prelude above. | |
# | |
# this caused a "stackoverflow" error in the CI on windows, | |
# see [this failing job](https://github.com/nushell/nushell/actions/runs/4512034615/jobs/7944945590) | |
# | |
# the CI profile has been removed in 00b820de9021227d1910a9ea388297ee7aee308e | |
# as part of #8525. | |
run: cargo install --path . --locked --no-default-features | |
- name: Standard library tests | |
run: nu -c 'use std testing; testing run-tests --path crates/nu-std' | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- run: python -m pip install tox | |
# Get only the latest tagged version for stability reasons | |
- name: Install virtualenv | |
run: git clone https://github.com/pypa/virtualenv.git | |
shell: bash | |
- name: Test Nushell in virtualenv | |
run: | | |
cd virtualenv | |
# if we encounter problems with bleeding edge tests pin to the latest tag | |
# git checkout $(git describe --tags | cut -d - -f 1) | |
# We need to disable failing on coverage levels. | |
nu -c "open pyproject.toml | upsert tool.coverage.report.fail_under 1 | save patchproject.toml" | |
mv patchproject.toml pyproject.toml | |
tox -e ${{ matrix.py }} -- -k nushell | |
shell: bash | |
# Build+test plugins on their own, without the rest of Nu. This helps with CI parallelization and | |
# also helps test that the plugins build without any feature unification shenanigans | |
plugins: | |
env: | |
NUSHELL_CARGO_TARGET: ci | |
strategy: | |
fail-fast: true | |
matrix: | |
platform: [windows-latest, macos-latest, ubuntu-20.04] | |
rust: | |
- stable | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Rust toolchain and cache | |
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 | |
- name: Clippy | |
run: cargo clippy --package nu_plugin_* ${{ matrix.flags }} -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err | |
- name: Tests | |
run: cargo test --profile ci --package nu_plugin_* | |
nu-coverage: | |
if: false | |
env: | |
NUSHELL_CARGO_TARGET: ci | |
strategy: | |
fail-fast: true | |
matrix: | |
# disabled mac due to problems with merging coverage and similarity to linux | |
# disabled windows due to running out of disk space when having too many crates or tests | |
platform: [ubuntu-20.04] # windows-latest | |
rust: | |
- stable | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Rust toolchain and cache | |
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0 | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Tests | |
shell: bash | |
run: | | |
source <(cargo llvm-cov show-env --export-prefix) # Set the environment variables needed to get coverage. | |
cargo llvm-cov clean --workspace # Remove artifacts that may affect the coverage results. | |
cargo build --workspace --profile ci | |
cargo test --workspace --profile ci | |
cargo llvm-cov report --profile ci --lcov --output-path lcov.info | |
- name: Upload coverage reports to Codecov with GitHub Action | |
uses: codecov/codecov-action@v3 | |
with: | |
files: lcov.info |