From bb4b6d08355475c78068876a587ce78010ed7d4e Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 7 Dec 2024 19:37:25 -0500 Subject: [PATCH 1/3] fix: `env:` can be an expression Fixes #20. --- src/workflow/job.rs | 2 +- .../jazzband-tablib-docs-lint.yml | 39 +++++++++++++++++++ tests/test_workflow.rs | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 tests/sample-workflows/jazzband-tablib-docs-lint.yml diff --git a/src/workflow/job.rs b/src/workflow/job.rs index 3407769..46af47a 100644 --- a/src/workflow/job.rs +++ b/src/workflow/job.rs @@ -109,7 +109,7 @@ pub enum StepBody { working_directory: Option, shell: Option, #[serde(default)] - env: Env, + env: LoE, }, } diff --git a/tests/sample-workflows/jazzband-tablib-docs-lint.yml b/tests/sample-workflows/jazzband-tablib-docs-lint.yml new file mode 100644 index 0000000..be1a402 --- /dev/null +++ b/tests/sample-workflows/jazzband-tablib-docs-lint.yml @@ -0,0 +1,39 @@ +# https://raw.githubusercontent.com/jazzband/tablib/dcab406c553fc8b3c2e0aef955e9e8adea0590d8/.github/workflows/docs-lint.yml +name: Docs and lint + +on: [push, pull_request, workflow_dispatch] + +env: + FORCE_COLOR: 1 + PIP_DISABLE_PIP_VERSION_CHECK: 1 + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + env: + - TOXENV: docs + - TOXENV: lint + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + cache: pip + cache-dependency-path: "pyproject.toml" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade tox + + - name: Tox + run: tox + env: ${{ matrix.env }} diff --git a/tests/test_workflow.rs b/tests/test_workflow.rs index c2d29f0..ada42fd 100644 --- a/tests/test_workflow.rs +++ b/tests/test_workflow.rs @@ -66,7 +66,7 @@ fn test_pip_audit_ci() { run, working_directory, shell, - env, + env: LoE::Literal(env), } = &test_job.steps[2].body else { panic!("expected run step"); From 9f1b6163da92f7a3c6c9dec307a0a9609d7ca719 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 7 Dec 2024 19:40:31 -0500 Subject: [PATCH 2/3] clippy fixes --- src/common/expr.rs | 6 +++--- src/workflow/job.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/expr.rs b/src/common/expr.rs index 64c1a95..423de7b 100644 --- a/src/common/expr.rs +++ b/src/common/expr.rs @@ -41,12 +41,12 @@ impl ExplicitExpr { /// `${{ body }}`. Leading and trailing whitespace within /// the expression body is removed. pub fn as_bare(&self) -> &str { - return self + self .as_curly() .strip_prefix("${{") .and_then(|e| e.strip_suffix("}}")) .map(|e| e.trim()) - .expect("invariant violated: ExplicitExpr must be an expression"); + .expect("invariant violated: ExplicitExpr must be an expression") } } @@ -113,7 +113,7 @@ mod tests { #[test] fn test_expr() { let expr = "\" ${{ foo }} \\t \""; - let expr: ExplicitExpr = serde_yaml::from_str(&expr).unwrap(); + let expr: ExplicitExpr = serde_yaml::from_str(expr).unwrap(); assert_eq!(expr.as_bare(), "foo"); } diff --git a/src/workflow/job.rs b/src/workflow/job.rs index 46af47a..2cf75cc 100644 --- a/src/workflow/job.rs +++ b/src/workflow/job.rs @@ -239,7 +239,7 @@ matrix: let runson = "group: \nlabels: []"; assert_eq!( - serde_yaml::from_str::(&runson) + serde_yaml::from_str::(runson) .unwrap_err() .to_string(), "runs-on must provide either `group` or one or more `labels`" From e7f930f4ab50655e01f26d4c60398f01aaee9288 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 7 Dec 2024 19:41:05 -0500 Subject: [PATCH 3/3] fmt --- src/common/expr.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/expr.rs b/src/common/expr.rs index 423de7b..7a8b456 100644 --- a/src/common/expr.rs +++ b/src/common/expr.rs @@ -41,8 +41,7 @@ impl ExplicitExpr { /// `${{ body }}`. Leading and trailing whitespace within /// the expression body is removed. pub fn as_bare(&self) -> &str { - self - .as_curly() + self.as_curly() .strip_prefix("${{") .and_then(|e| e.strip_suffix("}}")) .map(|e| e.trim())