Skip to content

[testify-expert] Improve Test Quality: pkg/workflow/unquote_uses_test.go #65635

Description

@github-actions

Current State

  • Test file: pkg/workflow/unquote_uses_test.go (280 LOC, 4 test functions, 0 assert/require usages; all checks use if got != want { t.Errorf })
  • Source file: pkg/workflow/compiler_yaml_step_conversion.go (functions: injectZizmorUnverifiedCreatorAnnotations, ConvertStepToYAML, unquoteUsesWithComments, (*Compiler).renderStepFromMap, formatStepEnvValueForYAML)

Strengths

  • Already table-driven with descriptive case names.
  • Good edge cases for malformed/unclosed quotes and hash-without-space.
  • Realistic multi-step YAML inputs.

Prioritized Improvements

1. Missing / high-value tests

  • injectZizmorUnverifiedCreatorAnnotations has only 3 cases. Add:
    • every entry in unverifiedCreatorActionPrefixes (iterate the slice so new prefixes are auto-covered),
    • a verified action (actions/checkout@...) gets no annotation,
    • tab indentation and - uses: (list-item form; currently TrimLeft + CutPrefix("uses: ") would NOT match - uses: safedep/..., so document or fix the expected behaviour),
    • a quoted value (uses: "safedep/pmg@sha") — does it match the prefix?,
    • empty input and idempotency (running twice should not double-inject, or the test should pin that it does).
  • ConvertStepToYAML and formatStepEnvValueForYAML have no direct tests in this file (only indirect ones in compiler_generation_test.go / multiline_test.go). Add a small table for formatStepEnvValueForYAML (string, bool, int, multi-line, string needing quoting) and a ConvertStepToYAML case checking that uses with a # v6 comment ends up unquoted end-to-end.
  • unquoteUsesWithComments: add CRLF input, uses: 'single-quoted # v1', and uses: "..." with extra spaces. The "multiple quotes on same line" case pins a questionable behaviour; add a comment saying it is intentional.

2. Testify assertion upgrades

Before / after
// Before
if result != tt.expected {
    t.Errorf("unquoteUsesWithComments() = %q, want %q", result, tt.expected)
}

// After
assert.Equal(t, tt.expected, unquoteUsesWithComments(tt.input), "unquoteUsesWithComments should produce expected YAML")

Add "github.com/stretchr/testify/assert" to imports; use require.NoError for ConvertStepToYAML errors. Replacing the multi-line Got/Want messages also yields better diffs.

3. Table-driven refactors

  • The three unquoteUsesWithComments tests (TestUnquoteUsesWithComments, ...EdgeCases, ...RealWorldExamples) share an identical struct and loop. Merge into one table (or keep three with a shared helper) and t.Parallel() per subtest.
  • Build unverifiedCreatorActionPrefixes cases from the slice rather than hard-coding.

4. Organization / readability

  • File name unquote_uses_test.go also tests injectZizmorUnverifiedCreatorAnnotations; rename to compiler_yaml_step_conversion_test.go to match the source file.
  • Use named raw-string constants for the repeated SHA pins to shorten cases.

Acceptance Checklist

  • testify assert/require used instead of manual t.Errorf comparisons
  • New tests for the gaps listed in section 1
  • Tables merged / generated from unverifiedCreatorActionPrefixes
  • File renamed to match source file
  • make test-unit passes

Generated by 🧪 Daily Testify Uber Super Expert · copilot · auto · 15.3 AIC · ⌖ 9.64 AIC · ⊞ 7.3K · ◷

  • expires on Oct 6, 2026, 10:22 AM UTC-08:00

Activity

  1. github-actions commented on Oct 6, 2026

    @github-actions
    ContributorAuthor

    🍪 Issue Monster selected this for Copilot

    I've identified this issue as a good candidate for automated resolution and requested assignment to the Copilot coding agent.

    If assignment succeeds, the Copilot coding agent will analyze the issue and create a pull request with the fix.

    Om nom nom! 🍪

    🍪 Om nom nom by Issue Monster · pi · gpt54 · 25.8 AIC · ⌖ 12.6 AIC · ⊞ 12.4K · ◷

  2. github-actions commented on Oct 6, 2026

    @github-actions
    ContributorAuthor

    This issue was automatically closed because it expired on 2026-10-06T18:22:41.274Z.

    Closed by Workflow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions