Skip to content

Commit

Permalink
Merge branch 'add-ci'
Browse files Browse the repository at this point in the history
  • Loading branch information
faern committed Jul 24, 2024
2 parents 228f465 + e811175 commit fdf15aa
Show file tree
Hide file tree
Showing 8 changed files with 179 additions and 5 deletions.
61 changes: 61 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
name: Build and test
on:
pull_request:
workflow_dispatch:

env:
CARGO_TERM_COLOR: always
# TODO: Do not allow dead_code once crate is out of early prototyping stage
RUSTFLAGS: --deny warnings --allow dead_code

jobs:
build-and-test:
strategy:
matrix:
# TODO: Add and make Windows work in CI also
os: [ubuntu-latest, macos-latest]
# Keep MSRV in sync with rust-version in Cargo.toml
rust: [stable, beta, nightly, 1.79.0]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17 # master at the time of writing this
with:
toolchain: ${{ matrix.rust }}

- name: Build
run: cargo --version && cargo build --all-targets --locked

- name: Test
run: cargo test --locked

# Make sure documentation builds without warnings (broken links etc)
- name: Generate documentation
if: matrix.rust == 'stable'
run: RUSTDOCFLAGS="--deny warnings" cargo doc

# Make sure the library builds with all dependencies downgraded to their
# oldest versions allowed by the semver spec. This ensures we have not
# under-specified any dependency
minimal-versions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install stable Rust
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17 # master at the time of writing this
with:
toolchain: stable

- name: Install nightly Rust
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17 # master at the time of writing this
with:
toolchain: nightly

- name: Downgrade dependencies to minimal versions
run: cargo +nightly update -Z minimal-versions

- name: Compile with minimal versions
run: cargo +stable build --all-targets --locked
29 changes: 29 additions & 0 deletions .github/workflows/cargo-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: Audit dependencies
on:
pull_request:
paths:
- .github/workflows/cargo-audit.yml
- Cargo.toml
- Cargo.lock
schedule:
# At 06:20 UTC every day. Will create an issue if a CVE is found.
- cron: '20 6 * * *'
workflow_dispatch:

jobs:
audit:
runs-on: ubuntu-latest
permissions:
issues: write

steps:
- uses: actions/checkout@v4

- uses: actions-rust-lang/audit@160ac8b6edd32f74656cabba9d1de3fc8339f676 # v1.2
name: Audit Rust Dependencies
with:
denyWarnings: true
# Ignored audit issues. This list should be kept short, and effort should be
# put into removing items from the list.
ignore:
24 changes: 24 additions & 0 deletions .github/workflows/formatting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: Rust formatting
on:
pull_request:
paths:
- .github/workflows/formatting.yml
- '**/*.rs'
workflow_dispatch:
jobs:
check-formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install stable Rust
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17 # master at the time of writing this
with:
toolchain: stable
components: rustfmt

- name: Check formatting
run: |
rustfmt --version
cargo fmt -- --check
32 changes: 32 additions & 0 deletions .github/workflows/git-commit-message-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Git - Check commit message style
on:
push:
workflow_dispatch:

jobs:
check-commit-message-style:
name: Check commit message style
runs-on: ubuntu-latest
steps:
# Make sure there are no whitespaces other than space, tab and newline in a commit message.
- name: Check for unicode whitespaces
uses: gsactions/commit-message-checker@16fa2d5de096ae0d35626443bcd24f1e756cafee #v2.0.0
with:
# Pattern matches strings not containing weird unicode whitespace/separator characters
# \P{Z} = All non-whitespace characters (the u-flag is needed to enable \P{Z})
# [ \t\n] = Allowed whitespace characters
pattern: '^(\P{Z}|[ \t\n])+$'
flags: 'u'
error: 'Detected unicode whitespace character in commit message.'
checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request
accessToken: ${{ secrets.GITHUB_TOKEN }} # only required if checkAllCommitMessages is true

# Git commit messages should follow these guidelines: https://cbea.ms/git-commit/
- name: Check against guidelines
uses: mristin/opinionated-commit-message@f3b9cec249cabffbae7cd564542fd302cc576827 #v3.1.1
with:
# Commit messages are allowed to be subject only, no body
allow-one-liners: 'true'
# This action defaults to 50 char subjects, but 72 is fine.
max-subject-line-length: '72'
28 changes: 28 additions & 0 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Rust linting
on:
pull_request:
paths:
- .github/workflows/linting.yml
- '**/*.rs'
- Cargo.toml
- Cargo.lock
workflow_dispatch:
jobs:
clippy-linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4


- name: Install stable Rust
uses: dtolnay/rust-toolchain@21dc36fb71dd22e3317045c0c31a3f4249868b17 # master at the time of writing this
with:
toolchain: stable
components: clippy

- name: Clippy check
env:
# TODO: Do not allow dead_code once crate is out of early prototyping stage
RUSTFLAGS: --deny warnings --allow dead_code
run: cargo clippy --locked --all-targets
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ toml = "0.8.14"
serde = { version = "1.0.203", features = ["derive"] }

[dev-dependencies]
trycmd = "0.15.4"
trycmd = "0.15.5"
4 changes: 2 additions & 2 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ fn unicode_notation_to_char(unicode_notation: &str) -> Result<char, InvalidChara
let parse = |unicode_notation: &str| -> Option<char> {
let hex_str_number = unicode_notation.strip_prefix("U+")?;
let int_number = u32::from_str_radix(hex_str_number, 16).ok()?;
Some(char::from_u32(int_number)?)
char::from_u32(int_number)
};
parse(unicode_notation).ok_or_else(|| InvalidCharacterType(unicode_notation.to_owned()))
}
Expand Down Expand Up @@ -126,7 +126,7 @@ mod tests {
#[should_panic]
fn invalid_language() {
static INVALID_LANGUAGE: &str = "[language.nonon]";
let config: Config = toml::from_str(INVALID_LANGUAGE).unwrap();
let _config: Config = toml::from_str(INVALID_LANGUAGE).unwrap();
}

#[test]
Expand Down

0 comments on commit fdf15aa

Please sign in to comment.