Skip to content

Commit

Permalink
Add basic CI via GitHub Actions (#10)
Browse files Browse the repository at this point in the history
Closes #1.
  • Loading branch information
charliermarsh authored Oct 5, 2023
1 parent b4828fb commit b059c59
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 12 deletions.
33 changes: 33 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[target.'cfg(all())']
rustflags = [
# CLIPPY LINT SETTINGS
# This is a workaround to configure lints for the entire workspace, pending the ability to configure this via TOML.
# See: `https://github.com/rust-lang/cargo/issues/5034`
# `https://github.com/EmbarkStudios/rust-ecosystem/issues/22#issuecomment-947011395`
"-Dunsafe_code",
"-Wclippy::pedantic",
# Allowed pedantic lints
"-Wclippy::char_lit_as_u8",
"-Aclippy::collapsible_else_if",
"-Aclippy::collapsible_if",
"-Aclippy::implicit_hasher",
"-Aclippy::match_same_arms",
"-Aclippy::missing_errors_doc",
"-Aclippy::missing_panics_doc",
"-Aclippy::module_name_repetitions",
"-Aclippy::must_use_candidate",
"-Aclippy::similar_names",
"-Aclippy::too_many_lines",
# Disallowed restriction lints
"-Wclippy::print_stdout",
"-Wclippy::print_stderr",
"-Wclippy::dbg_macro",
"-Wclippy::empty_drop",
"-Wclippy::empty_structs_with_brackets",
"-Wclippy::exit",
"-Wclippy::get_unwrap",
"-Wclippy::rc_buffer",
"-Wclippy::rc_mutex",
"-Wclippy::rest_pat_in_fully_bound_structs",
"-Wunreachable_pub"
]
66 changes: 66 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
CARGO_TERM_COLOR: always
RUSTUP_MAX_RETRIES: 10

jobs:
cargo-fmt:
name: "cargo fmt"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Install Rust toolchain"
run: rustup component add rustfmt
- name: "rustfmt"
run: cargo fmt --all --check

cargo-clippy:
name: "cargo clippy"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Install Rust toolchain"
run: |
rustup component add clippy
- uses: Swatinem/rust-cache@v2
- name: "Clippy"
run: cargo clippy --workspace --all-targets --all-features -- -D warnings

cargo-test:
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
runs-on: ${{ matrix.os }}
name: "cargo test | ${{ matrix.os }}"
steps:
- uses: actions/checkout@v4
- name: "Install Rust toolchain"
run: rustup show
- name: "Install cargo insta"
uses: taiki-e/install-action@v2
with:
tool: cargo-insta
- uses: Swatinem/rust-cache@v2
- name: "Tests (Ubuntu)"
if: ${{ matrix.os == 'ubuntu-latest' }}
run: cargo insta test --all --all-features --unreferenced reject
- name: "Tests (Windows)"
if: ${{ matrix.os == 'windows-latest' }}
shell: bash
run: cargo insta test --all --all-features --unreferenced reject
- run: cargo doc --all --no-deps
env:
RUSTDOCFLAGS: "-D warnings"
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ resolver = "2"

[workspace.package]
edition = "2021"
rust-version = "1.71"
rust-version = "1.72"
homepage = "https://astral.sh"
documentation = "https://astral.sh"
repository = "https://github.com/astral-sh/puffin"
Expand Down
2 changes: 1 addition & 1 deletion crates/puffin-cli/src/commands/install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ pub(crate) async fn install(src: &Path) -> Result<ExitStatus> {

// Push all the requirements into the package sink.
let mut in_flight: HashSet<PackageName> = HashSet::with_capacity(requirements.len());
for requirement in requirements.iter() {
for requirement in &*requirements {
debug!("--> adding root dependency: {}", requirement);
package_sink.unbounded_send(Request::Package(requirement.clone()))?;
in_flight.insert(PackageName::normalize(&requirement.name));
Expand Down
4 changes: 2 additions & 2 deletions crates/puffin-requirements/benches/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion};

use puffin_requirements::Requirements;

const REQUIREMENTS_TXT: &str = r#"
const REQUIREMENTS_TXT: &str = r"
#
# This file is autogenerated by pip-compile with Python 3.7
# by the following command:
Expand Down Expand Up @@ -80,7 +80,7 @@ zipp==3.15.0 \
--hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \
--hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556
# via importlib-metadata
"#;
";

fn bench_fibs(c: &mut Criterion) {
let mut group = c.benchmark_group("Parser");
Expand Down
13 changes: 5 additions & 8 deletions crates/puffin-requirements/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ impl<'a> RequirementLine<'a> {
// The comment _must_ be preceded by whitespace.
if requirement[..len + position]
.chars()
.rev()
.next()
.next_back()
.is_some_and(char::is_whitespace)
{
len = position;
Expand Down Expand Up @@ -138,8 +137,7 @@ impl<'a> Iterator for RequirementsIterator<'a> {
// If the newline is preceded by a continuation (\\), keep going.
if self.text[..self.index + start]
.chars()
.rev()
.next()
.next_back()
.is_some_and(|c| c == '\\')
{
// Add the line contents, preceding the continuation.
Expand All @@ -150,8 +148,7 @@ impl<'a> Iterator for RequirementsIterator<'a> {
while let Some((start, length)) = find_newline(&self.text[self.index..]) {
if self.text[..self.index + start]
.chars()
.rev()
.next()
.next_back()
.is_some_and(|c| c == '\\')
{
// Add the line contents, preceding the continuation.
Expand Down Expand Up @@ -212,7 +209,7 @@ mod tests {
#[test]
fn pip_compile() -> Result<()> {
assert_debug_snapshot!(Requirements::from_str(
r#"
r"
#
# This file is autogenerated by pip-compile with Python 3.7
# by the following command:
Expand Down Expand Up @@ -288,7 +285,7 @@ zipp==3.15.0 \
--hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \
--hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556
# via importlib-metadata
"#
"
)?);
Ok(())
}
Expand Down
2 changes: 2 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[toolchain]
channel = "1.72"

0 comments on commit b059c59

Please sign in to comment.