on: push: branches: [main] pull_request: name: test jobs: greenmail: runs-on: ubuntu-latest name: ubuntu / ${{ matrix.toolchain }} / greenmail strategy: matrix: toolchain: [stable, beta] steps: - uses: actions/checkout@v3 with: submodules: true - name: Install ${{ matrix.toolchain }} uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile # https://twitter.com/jonhoo/status/1571290371124260865 - name: cargo test --locked uses: actions-rs/cargo@v1 with: command: test args: --locked --all-targets services: greenmail: image: greenmail/standalone:1.6.8 ports: - 3025:3025 - 3110:3110 - 3143:3143 - 3465:3465 - 3993:3993 - 3995:3995 env: GREENMAIL_OPTS: "-Dgreenmail.setup.test.all -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose" cyrus: runs-on: ubuntu-latest name: ubuntu / ${{ matrix.toolchain }} / cyrus strategy: matrix: toolchain: [stable, beta] steps: - uses: actions/checkout@v3 with: submodules: true - name: Install ${{ matrix.toolchain }} uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} default: true - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile # https://twitter.com/jonhoo/status/1571290371124260865 - name: cargo test --locked uses: actions-rs/cargo@v1 with: command: test args: --locked --features test-full-imap --all-targets services: cyrus_imapd: image: outoforder/cyrus-imapd-tester:latest ports: - 3025:25 - 3143:143 - 3465:465 - 3993:993 minimal: runs-on: ubuntu-latest name: ubuntu / stable / minimal-versions steps: - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: dtolnay/rust-toolchain@stable - name: Install nightly for -Zminimal-versions uses: dtolnay/rust-toolchain@nightly - name: rustup default stable run: rustup default stable - name: cargo update -Zminimal-versions uses: actions-rs/cargo@v1 with: command: update toolchain: nightly args: -Zminimal-versions - name: cargo test uses: actions-rs/cargo@v1 with: command: test args: --locked --features test-full-imap --all-targets services: cyrus_imapd: image: outoforder/cyrus-imapd-tester:latest ports: - 3025:25 - 3143:143 - 3465:465 - 3993:993 os-check: runs-on: ${{ matrix.os }} name: ${{ matrix.os }} / stable strategy: fail-fast: false matrix: os: [macos-latest, windows-latest] steps: - run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append if: runner.os == 'Windows' - run: vcpkg install openssl:x64-windows-static-md if: runner.os == 'Windows' - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: dtolnay/rust-toolchain@stable - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile - name: cargo check uses: actions-rs/cargo@v1 with: command: check args: --locked --all-features --all-targets coverage: runs-on: ubuntu-latest name: ubuntu / stable / coverage steps: - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - name: cargo install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile - name: cargo llvm-cov run: cargo llvm-cov --features test-full-imap --lcov --output-path lcov.info - name: Upload to codecov.io uses: codecov/codecov-action@v3 with: fail_ci_if_error: true services: cyrus_imapd: image: outoforder/cyrus-imapd-tester:latest ports: - 3025:25 - 3143:143 - 3465:465 - 3993:993