Compare commits

..
Author SHA1 Message Date
claudeandClaude Sonnet 5 8a0f5c45e7 add CI workflow running go vet and go test
CI / test (pull_request) Successful in 38s
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>
2026-09-07 12:50:54 +01:00
aneurin 9f229dde97 improve patch callback in migrations 2026-07-06 22:04:36 +01:00
aneurin 384a4a94d1 rename package hopefully for last time 2026-07-04 01:38:03 +01:00
4 changed files with 45 additions and 53 deletions
+26
View File
@@ -0,0 +1,26 @@
# Vet and test the package. This is a pure Go library -- no build
# step, no services -- so CI just runs `go vet` then `go test` on
# every push to main and every pull request.
name: CI
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
container:
image: golang:1.21-alpine
steps:
- name: Install checkout dependencies
run: apk add --no-cache git nodejs
- uses: actions/checkout@v4
- name: go vet
run: go vet ./...
- name: go test
run: go test ./...
-47
View File
@@ -1,47 +0,0 @@
name: Test
on:
pull_request:
branches:
- develop
push:
branches:
- develop
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ^1.21.0
- name: Display Go version
run: go version
- name: Install dependencies
run: go get
- name: Run tests
run: go test -v
notify:
name: Send Discord workflow notification
runs-on: ubuntu-latest
needs: test
steps:
- name: Send notification
uses: annybs/action-notify-discord@v1
if: ${{ always() }}
with:
repository: ${{ github.repository }}
result: ${{ needs.test.result }}
run-id: ${{ github.run_id }}
run-number: ${{ github.run_number }}
webhook-url: ${{ secrets.DISCORD_WEBHOOK }}
workflow: ${{ github.workflow }}
+1 -1
View File
@@ -1,3 +1,3 @@
module gogs.home.aneur.in/go/version
module code.aneur.in/go/version
go 1.21
+18 -5
View File
@@ -4,11 +4,14 @@ import (
"sort"
)
// AfterPatchCallback is called after each time a migration is successfully applied (up) or reverted (down).
type AfterPatchCallback func(applied, next *Version)
// Migration maps provide a simple way to store and run versioned 'patch' functions.
type Migration map[string]Patch
// Down reverts all patches in reverse version order.
func (m Migration) Down(after func(*Version)) error {
func (m Migration) Down(after AfterPatchCallback) error {
versions, err := m.Versions()
if err != nil {
return err
@@ -22,7 +25,12 @@ func (m Migration) Down(after func(*Version)) error {
}
if after != nil {
after(v)
var next *Version
if i > 1 {
next = versions[i-1]
}
after(v, next)
}
}
@@ -47,20 +55,25 @@ func (m Migration) Match(constraints ...*Constraint) (Migration, error) {
}
// Up executes all patches in version order.
func (m Migration) Up(after func(*Version)) error {
func (m Migration) Up(after AfterPatchCallback) error {
versions, err := m.Versions()
if err != nil {
return err
}
for _, v := range versions {
for i, v := range versions {
patch := m[v.Text]
if err := patch.Up(); err != nil {
return err
}
if after != nil {
after(v)
var next *Version
if i < len(versions)-1 {
next = versions[i+1]
}
after(v, next)
}
}