diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 000000000..6ea2bb858
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,184 @@
+name: CI
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened]
+ push:
+ branches: [master]
+
+jobs:
+ build_and_test_linux:
+ strategy:
+ fail-fast: false
+ matrix:
+ target:
+ - { name: Linux, os: ubuntu-latest, triple: x86_64-unknown-linux-gnu }
+ version:
+ - 1.46.0 # MSRV
+ - stable
+ - nightly
+
+ name: ${{ matrix.target.name }} / ${{ matrix.version }}
+ runs-on: ${{ matrix.target.os }}
+
+ services:
+ redis:
+ image: redis:5.0.7
+ ports:
+ - 6379:6379
+ options: --entrypoint redis-server
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # # install OpenSSL on Windows
+ # - name: Set vcpkg root
+ # if: matrix.target.triple == 'x86_64-pc-windows-msvc'
+ # run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
+ # - name: Install OpenSSL
+ # if: matrix.target.triple == 'x86_64-pc-windows-msvc'
+ # run: vcpkg install openssl:x64-windows
+
+ - name: Install ${{ matrix.version }}
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ matrix.version }}-${{ matrix.target.triple }}
+ profile: minimal
+ override: true
+
+ - name: Install ${{ matrix.version }}
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ matrix.version }}-${{ matrix.target.triple }}
+ profile: minimal
+ override: true
+
+ - name: Generate Cargo.lock
+ uses: actions-rs/cargo@v1
+ with:
+ command: generate-lockfile
+ - name: Cache Dependencies
+ uses: Swatinem/rust-cache@v1.2.0
+
+ - name: Install cargo-hack
+ uses: actions-rs/cargo@v1
+ with:
+ command: install
+ args: cargo-hack
+
+ - name: check minimal
+ uses: actions-rs/cargo@v1
+ with:
+ command: hack
+ args: --clean-per-run check --workspace --no-default-features --tests
+
+ - name: check full
+ uses: actions-rs/cargo@v1
+ with:
+ command: check
+ args: --workspace --bins --examples --tests
+
+ - name: tests
+ uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v --workspace --all-features --no-fail-fast -- --nocapture
+
+ - name: Generate coverage file
+ if: >
+ matrix.version == 'stable'
+ && github.ref == 'refs/heads/master'
+ run: |
+ cargo install cargo-tarpaulin --vers "^0.13"
+ cargo tarpaulin --out Xml --verbose
+ - name: Upload to Codecov
+ if: >
+ matrix.version == 'stable'
+ && github.ref == 'refs/heads/master'
+ uses: codecov/codecov-action@v1
+ with:
+ file: cobertura.xml
+
+ - name: Clear the cargo caches
+ run: |
+ cargo install cargo-cache --no-default-features --features ci-autoclean
+ cargo-cache
+
+ build_and_test_other:
+ strategy:
+ fail-fast: false
+ matrix:
+ target:
+ - { name: macOS, os: macos-latest, triple: x86_64-apple-darwin }
+ - { name: Windows, os: windows-latest, triple: x86_64-pc-windows-msvc }
+ version:
+ - 1.46.0 # MSRV
+ - stable
+ - nightly
+
+ name: ${{ matrix.target.name }} / ${{ matrix.version }}
+ runs-on: ${{ matrix.target.os }}
+
+ steps:
+ - uses: actions/checkout@v2
+
+ # # install OpenSSL on Windows
+ # - name: Set vcpkg root
+ # if: matrix.target.triple == 'x86_64-pc-windows-msvc'
+ # run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
+ # - name: Install OpenSSL
+ # if: matrix.target.triple == 'x86_64-pc-windows-msvc'
+ # run: vcpkg install openssl:x64-windows
+
+ - name: Install ${{ matrix.version }}
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ matrix.version }}-${{ matrix.target.triple }}
+ profile: minimal
+ override: true
+
+ - name: Install ${{ matrix.version }}
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ matrix.version }}-${{ matrix.target.triple }}
+ profile: minimal
+ override: true
+
+ - name: Generate Cargo.lock
+ uses: actions-rs/cargo@v1
+ with:
+ command: generate-lockfile
+ - name: Cache Dependencies
+ uses: Swatinem/rust-cache@v1.2.0
+
+ - name: Install cargo-hack
+ uses: actions-rs/cargo@v1
+ with:
+ command: install
+ args: cargo-hack
+
+ - name: check minimal
+ uses: actions-rs/cargo@v1
+ with:
+ command: hack
+ args: --clean-per-run check --workspace --no-default-features --tests
+
+ - name: check full
+ uses: actions-rs/cargo@v1
+ with:
+ command: check
+ args: --workspace --bins --examples --tests
+
+ - name: tests
+ uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: -v
+ --workspace --all-features --no-fail-fast
+ --exclude=actix-redis
+ -- --nocapture
+
+ - name: Clear the cargo caches
+ run: |
+ cargo install cargo-cache --no-default-features --features ci-autoclean
+ cargo-cache
diff --git a/.github/workflows/clippy.yml b/.github/workflows/lint.yml
similarity index 64%
rename from .github/workflows/clippy.yml
rename to .github/workflows/lint.yml
index fb1ed7f32..e966fa4ab 100644
--- a/.github/workflows/clippy.yml
+++ b/.github/workflows/lint.yml
@@ -1,32 +1,39 @@
+name: Lint
+
on:
pull_request:
types: [opened, synchronize, reopened]
-name: Clippy and rustfmt Check
jobs:
- clippy_check:
+ fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
- override: true
- name: Check with rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- - uses: actions-rs/toolchain@v1
+ clippy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
with:
- toolchain: nightly
+ toolchain: stable
components: clippy
override: true
- name: Check with Clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- args: --all-features --all --tests
+ args: --workspace --tests --all-features
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
deleted file mode 100644
index 04b21936a..000000000
--- a/.github/workflows/linux.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-name: CI (Linux)
-
-on:
- pull_request:
- types: [opened, synchronize, reopened]
- push:
- branches:
- - master
-
-jobs:
- build_and_test:
- strategy:
- fail-fast: false
- matrix:
- version:
- - stable
- - nightly
-
- name: ${{ matrix.version }} - x86_64-unknown-linux-gnu
- runs-on: ubuntu-latest
-
- services:
- redis:
- image: redis:5.0.7
- ports:
- - 6379:6379
- options: --entrypoint redis-server
-
- steps:
- - uses: actions/checkout@main
-
- - name: Install ${{ matrix.version }}
- uses: actions-rs/toolchain@v1
- with:
- toolchain: ${{ matrix.version }}-x86_64-unknown-linux-gnu
- profile: minimal
- override: true
-
- - name: Generate Cargo.lock
- uses: actions-rs/cargo@v1
- with:
- command: generate-lockfile
- - name: Cache cargo dirs
- uses: actions/cache@v2
- with:
- path:
- ~/.cargo/registry
- ~/.cargo/git
- ~/.cargo/bin
- key: ${{ matrix.version }}-x86_64-unknown-linux-gnu-cargo-trimmed-${{ hashFiles('**/Cargo.lock') }}
- - name: Cache cargo build
- uses: actions/cache@v2
- with:
- path: target
- key: ${{ matrix.version }}-x86_64-unknown-linux-gnu-cargo-build-trimmed-${{ hashFiles('**/Cargo.lock') }}
-
- - name: check build
- uses: actions-rs/cargo@v1
- with:
- command: check
- args: --all --bins --examples --tests
-
- - name: tests
- uses: actions-rs/cargo@v1
- timeout-minutes: 40
- with:
- command: test
- args: --all --all-features --no-fail-fast -- --nocapture
-
- - name: Generate coverage file
- if: matrix.version == 'stable' && (github.ref == 'refs/heads/master' || github.event_name == 'pull_request')
- run: |
- cargo install cargo-tarpaulin --vers "^0.13"
- cargo tarpaulin --out Xml --workspace --all-features
-
- - name: Upload to Codecov
- if: matrix.version == 'stable' && (github.ref == 'refs/heads/master' || github.event_name == 'pull_request')
- uses: codecov/codecov-action@v1
- with:
- file: cobertura.xml
-
- - name: Clear the cargo caches
- run: |
- cargo install cargo-cache --no-default-features --features ci-autoclean
- cargo-cache
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
deleted file mode 100644
index 079e85a89..000000000
--- a/.github/workflows/macos.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: CI (macOS)
-
-on:
- pull_request:
- types: [opened, synchronize, reopened]
- push:
- branches:
- - master
-
-jobs:
- build_and_test:
- strategy:
- fail-fast: false
- matrix:
- version:
- - stable
- - nightly
-
- name: ${{ matrix.version }} - x86_64-apple-darwin
- runs-on: macos-latest
-
- steps:
- - uses: actions/checkout@main
-
- - name: Install ${{ matrix.version }}
- uses: actions-rs/toolchain@v1
- with:
- toolchain: ${{ matrix.version }}-x86_64-apple-darwin
- profile: minimal
- override: true
-
- - name: check build
- uses: actions-rs/cargo@v1
- with:
- command: check
- args: --all --bins --examples --tests
-
- - name: tests
- uses: actions-rs/cargo@v1
- timeout-minutes: 40
- with:
- command: test
- args: --package=actix-cors
- --package=actix-protobuf
- --package=actix-web-httpauth
- --all-features --no-fail-fast -- --nocapture
diff --git a/.github/workflows/msrv.yml b/.github/workflows/msrv.yml
deleted file mode 100644
index 0edfe4f53..000000000
--- a/.github/workflows/msrv.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: CI (Linux, MSRV)
-
-on:
- pull_request:
- types: [opened, synchronize, reopened]
- push:
- branches:
- - master
-
-jobs:
- build_and_test:
- strategy:
- fail-fast: false
- matrix:
- version:
- - 1.46.0
-
- name: ${{ matrix.version }} - x86_64-unknown-linux-gnu
- runs-on: ubuntu-latest
-
- services:
- redis:
- image: redis:5.0.7
- ports:
- - 6379:6379
- options: --entrypoint redis-server
-
- steps:
- - uses: actions/checkout@main
-
- - name: Install ${{ matrix.version }}
- uses: actions-rs/toolchain@v1
- with:
- toolchain: ${{ matrix.version }}-x86_64-unknown-linux-gnu
- profile: minimal
- override: true
-
- - name: tests
- uses: actions-rs/cargo@v1
- timeout-minutes: 40
- with:
- command: test
- args: --workspace --all-features --no-fail-fast -- --nocapture
diff --git a/.github/workflows/upload-doc.yml b/.github/workflows/upload-doc.yml
index 98d5bbb70..dd62f3955 100644
--- a/.github/workflows/upload-doc.yml
+++ b/.github/workflows/upload-doc.yml
@@ -1,33 +1,31 @@
-name: Upload documentation (actix-redis)
+name: Upload Documentation
on:
push:
- branches:
- - master
+ branches: [master]
jobs:
build:
runs-on: ubuntu-latest
- if: github.repository == 'actix/actix-extras'
steps:
- - uses: actions/checkout@main
+ - uses: actions/checkout@v2
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
- toolchain: stable-x86_64-unknown-linux-gnu
+ toolchain: nightly-x86_64-unknown-linux-gnu
profile: minimal
override: true
- - name: check build
+ - name: Build Docs
uses: actions-rs/cargo@v1
with:
command: doc
- args: --no-deps --package=actix-redis
+ args: --workspace --all-features --no-deps
- name: Tweak HTML
- run: echo "" > target/doc/index.html
+ run: echo '' > target/doc/index.html
- name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@3.7.1
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
deleted file mode 100644
index faf4b0389..000000000
--- a/.github/workflows/windows.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-name: CI (Windows)
-
-on:
- pull_request:
- types: [opened, synchronize, reopened]
- push:
- branches:
- - master
-
-jobs:
- build_and_test:
- strategy:
- fail-fast: false
- matrix:
- version:
- - stable
- - nightly
- target:
- - x86_64-pc-windows-msvc
- - x86_64-pc-windows-gnu
- - i686-pc-windows-msvc
-
- name: ${{ matrix.version }} - ${{ matrix.target }}
- runs-on: windows-latest
-
- steps:
- - uses: actions/checkout@main
-
- - name: Install ${{ matrix.version }}
- uses: actions-rs/toolchain@v1
- with:
- toolchain: ${{ matrix.version }}-${{ matrix.target }}
- profile: minimal
- override: true
-
- - name: Generate Cargo.lock
- uses: actions-rs/cargo@v1
- with:
- command: generate-lockfile
- - name: Cache cargo dirs
- uses: actions/cache@v2
- with:
- path:
- ~/.cargo/registry
- ~/.cargo/git
- ~/.cargo/bin
- key: ${{ matrix.version }}-${{ matrix.target }}-cargo-trimmed-${{ hashFiles('**/Cargo.lock') }}
- - name: Cache cargo build
- uses: actions/cache@v2
- with:
- path: target
- key: ${{ matrix.version }}-${{ matrix.target }}-cargo-build-trimmed-${{ hashFiles('**/Cargo.lock') }}
-
- - name: check build
- uses: actions-rs/cargo@v1
- with:
- command: check
- args: --all --bins --examples --tests
-
- - name: tests
- uses: actions-rs/cargo@v1
- timeout-minutes: 40
- with:
- command: test
- args: --package=actix-cors
- --package=actix-protobuf
- --package=actix-web-httpauth
- --all-features --no-fail-fast -- --nocapture
-
- - name: Clear the cargo caches
- run: |
- cargo install cargo-cache --no-default-features --features ci-autoclean
- cargo-cache
diff --git a/actix-identity/Cargo.toml b/actix-identity/Cargo.toml
index 413803910..3941a683e 100644
--- a/actix-identity/Cargo.toml
+++ b/actix-identity/Cargo.toml
@@ -16,7 +16,7 @@ name = "actix_identity"
path = "src/lib.rs"
[dependencies]
-actix-web = { version = "4.0.0-beta.4", default-features = false, features = ["secure-cookies"] }
+actix-web = { version = "4.0.0-beta.4", default-features = false, features = ["cookies", "secure-cookies"] }
actix-service = "2.0.0-beta.5"
futures-util = { version = "0.3.7", default-features = false }
serde = "1.0"
diff --git a/actix-session/src/cookie.rs b/actix-session/src/cookie.rs
index cb65ddf60..436308540 100644
--- a/actix-session/src/cookie.rs
+++ b/actix-session/src/cookie.rs
@@ -20,6 +20,7 @@ pub enum CookieSessionError {
/// Size of the serialized session is greater than 4000 bytes.
#[display(fmt = "Size of the serialized session is greater than 4000 bytes.")]
Overflow,
+
/// Fail to serialize session.
#[display(fmt = "Fail to serialize session")]
Serialize(JsonError),
diff --git a/actix-web-httpauth/examples/cors.rs b/actix-web-httpauth/examples/with-cors.rs
similarity index 100%
rename from actix-web-httpauth/examples/cors.rs
rename to actix-web-httpauth/examples/with-cors.rs
diff --git a/codecov.yml b/codecov.yml
index 2589f26ec..87f4f27e9 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -1,7 +1,16 @@
comment: false
-ignore: # ignore codecoverage on following paths
+coverage:
+ status:
+ project:
+ default:
+ threshold: 100% # make CI green
+ patch:
+ default:
+ threshold: 100% # make CI green
+
+# ignore code coverage on following paths
+ignore:
+ - "**/tests"
+ - "**/benches"
- "**/examples"
- - ".github"
- - "**/*.md"
- - "**/*.toml"