Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Closed Beginner friendly
#65,635 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Refactor
Clarity
Clearly specified
Activity status
Active
Tech stack
go
Domain
testing

Research direction

Start by reading pkg/workflow/unquote_uses_test.go alongside the source pkg/workflow/compiler_yaml_step_conversion.go, especially unquoteUsesWithComments and injectZizmorUnverifiedCreatorAnnotations. Run go test ./pkg/workflow/ -run 'UnquoteUses|Zizmor' to establish the baseline, then work through the acceptance checklist: swap manual t.Errorf for testify assert/require, add the missing formatStepEnvValueForYAML and ConvertStepToYAML cases, generate the prefix table from unverifiedCreatorActionPrefixes, and rename the file. Done is make test-unit passing with all new cases present.

Written by the indexing model from the issue text.

Description

automated-analysis code-quality cookie testing
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
Dominant language
Go
Stars
5.4k
Forks
576
Avg merge
8h 46m
Merged PRs (30d)
753

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/gh-aw

All issues in github/gh-aw

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.