mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-12-11 16:05:00 +00:00
54cadd2f45
This commit refactors the whole package gateway as well as utils/ws (formerly utils/wsutil) and voice/voicegateway. The new refactor utilizes a design pattern involving a concurrent loop and an arriving event channel. An additional change was made to the way gateway events are typed. Before, pretty much any type will satisfy a gateway event type, since the actual type was just interface{}. The new refactor defines a concrete interface that events can implement: type Event interface { Op() OpCode EventType() EventType } Using this interface, the user can easily add custom gateway events independently of the library without relying on string maps. This adds a lot of type safety into the library and makes type-switching on Event types much more reasonable. Gateway error callbacks are also almost entirely removed in favor of custom gateway events. A catch-all can easily be added like this: s.AddHandler(func(err error) { log.Println("gateway error:, err") })
49 lines
1.2 KiB
YAML
49 lines
1.2 KiB
YAML
image: "nixos/latest"
|
|
packages:
|
|
- nixos.go
|
|
- nixos.git
|
|
- nixos.gcc
|
|
sources:
|
|
- https://github.com/diamondburned/arikawa
|
|
secrets:
|
|
# Integration test secrets.
|
|
- f51d6157-b4be-4697-99d0-6cd129243f63
|
|
environment:
|
|
GO111MODULE: "on"
|
|
CGO_ENABLED: "1"
|
|
# Integration test variables.
|
|
SHARD_COUNT: "2"
|
|
tested: "./api,./gateway,./bot,./discord"
|
|
cov_file: "/tmp/cov_results"
|
|
dismock: "github.com/mavolin/dismock/v2/pkg/dismock"
|
|
dismock_v: "259685b84e4b6ab364b0fd858aac2aa2dfa42502"
|
|
|
|
tasks:
|
|
- generate: |-
|
|
cd arikawa
|
|
go generate ./...
|
|
|
|
if [[ "$(git status --porcelain)" ]]; then
|
|
echo "Repository differ after regeneration."
|
|
exit 1
|
|
fi
|
|
|
|
- build: cd arikawa && go build ./...
|
|
- unit: cd arikawa && go test -tags unitonly -race ./...
|
|
|
|
- integration: |-
|
|
sh -c '
|
|
test -f ~/.env || {
|
|
echo "Skipped integration tests."
|
|
exit 0
|
|
}
|
|
|
|
cd arikawa
|
|
go get ./...
|
|
go get $dismock@$dismock_v
|
|
|
|
source ~/.env
|
|
go test -coverpkg $tested -coverprofile $cov_file -race ./... $dismock
|
|
go tool cover -func $cov_file
|
|
'
|