Skip to content

Regenerate saved examples and test that compare() sets windowsOnly #11

Closed

Description

@GillMacedo

Follow-up from #7. The Windows-only mark works; these are small cleanups.

  1. Saved examples are out of date. To reproduce: go run ./plugin/scripts --from 1.21 --to 1.24 examples/shop | diff examples/shop-1.21-to-1.24.txt - differs at lines 20 and 25, which lack (Windows only). Run make examples. examples/real/cobra.txt lists the same settings, so update it too (it needs the project cloned, see examples/README.md).

  2. No test checks that compare() sets the flag. TestWindowsOnly sets WindowsOnly: true by hand. To reproduce: delete c.WindowsOnly = isWindowsOnly(k) from compare() and run go test -count=1 ./.... Both packages still pass, while the report loses the mark. Add a test through compare() or tests/ asserting that winsymlink gets windowsOnly: true and a non-win setting does not. Computing the mark from the name in one place, instead of storing it on Change, would also remove the chance of the two disagreeing.

  3. Output and JSON polish:

  • The "No binary imports the package, so no effect" section prints winsymlink (os) (Windows only), where the mark adds nothing. To reproduce: run the tool from 1.22 to 1.23 on a module whose only binary is an empty func main() {}.
  • windowsOnly uses omitempty while goCommand is always present, so the JSON key is absent for most changes. Decide whether to always emit it.
  • The field comment on WindowsOnly says "Linux services can skip", which does not hold for modules built for Windows. Reword it.
  • Windows-only settings still count as reaching binaries and still appear in the suggested go.mod pins. That is accurate for Windows builds, but consider saying in the report that Linux-only services can ignore those pins.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions