Audit ahead of the README/doc.go work (issue #3):
- number.go: Min, MinFloat32, MinFloat64 all said "less than or equal to a
given maximum" -- copy-pasted from the Max family. They check the
minimum. Fixed.
- chars_test.go: ExampleExceptChars called Chars, not ExceptChars, so it
never exercised the function it documents.
- chars.go: "does not contain disallowed characters" was circular.
- in.go: NotIn's parameter was named "allow"; renamed to "disallow".
- length.go: note that length is bytes (len), not runes -- the "%d
characters" messages imply otherwise.
- url.go: spell out that ParseRequestURI wants an absolute URL or path.
- uuid.go: note lowercase-hex only, version/variant not checked.
- error.go: explain Err (the match-anything sentinel), how Error() formats
with Data, and what With does. all.go: point at Collect.
Comments only; no behaviour change. go vet + go test ./... pass.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds .gitea/workflows/ci.yml: on push to main and on pull requests, run
`go vet ./...` then `go test ./...` in a golang:1.21-alpine container.
Also removes .github/workflows/test.yml, which only triggered on a
`develop` branch that no longer exists and depended on an external
Discord notification action and an unset DISCORD_WEBHOOK secret.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Collect is the all-errors-at-once counterpart to All. All still stops at
the first failure (unchanged); Collect runs every function and returns the
failures joined with errors.Join, which errors.Is still matches element by
element. Kept as a separate function rather than a flag on All so All's
signature and behaviour don't change.
Closes#5
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>