From 23c6092aa669c83cd34485741a3d10ef08ceec18 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sat, 21 Jun 2025 22:46:37 -0400 Subject: [PATCH] More coverage report setup. --- Makefile | 11 +++++++++ main.go | 55 +++++++++++++++++++++--------------------- tests/chromedp_test.go | 2 +- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 97ab5a7..cf24318 100644 --- a/Makefile +++ b/Makefile @@ -16,3 +16,14 @@ test: dev: go tool air -build.stop_on_error "true" + +coverage: + go build -cover -o webapp + mkdir -p .coverage + echo "GOCOVERDIR=.coverage ./webapp" + +cover_report: + go tool covdata textfmt -i=.coverage -o coverage.txt + go tool cover -func=coverage.txt + go tool cover -html=coverage.txt -o coverage.html + open coverage.html diff --git a/main.go b/main.go index 75629de..553e177 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,11 @@ package main import ( "log" + "os" + "os/signal" + "syscall" "zedshaw.games/webapp/tools" + "zedshaw.games/webapp/data" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/template/html/v2" @@ -10,29 +14,10 @@ import ( _ "github.com/mattn/go-sqlite3" "github.com/jmoiron/sqlx" sq "github.com/Masterminds/squirrel" - "github.com/gofiber/fiber/v2/middleware/recover" + recov "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/fiber/v2/middleware/session" ) -type Login struct { - Username string `db:"username" validate:"required"` - Password string `db:"password" validate:"required"` -} - -type Link struct { - Id int `db:"id" json:"id"` - StreamId int `db:"stream_id" json:"stream_id" form:"stream_id" validate:"required,numeric"` - Url string `db:"url" json:"url" form:"url" validate:"required,url"` - Description string `db:"description" json:"description" form:"description" validate:"required"` -} - -type Stream struct { - Id int `db:"id" json:"id"` - Title string `db:"title" json:"title"` - Description string `db:"description" json:"description"` -} - - func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) @@ -48,7 +33,7 @@ func main() { Views: engine, }) app.Use(logger.New()) - app.Use(recover.New()) + app.Use(recov.New()) // handler that returns one json from a sql database app.Get("/api/stream/", func (c *fiber.Ctx) error { @@ -56,23 +41,23 @@ func main() { sess.Set("fuck", "off") sql, args, err := sq.Select("*").From("stream").ToSql() - return tools.SelectJson[Stream](db, c, err, sql, args...) + return tools.SelectJson[data.Stream](db, c, err, sql, args...) }) app.Get("/api/stream/:id", func (c *fiber.Ctx) error { sql, args, err := sq.Select("*").From("stream").Where("id", c.Params("id")).ToSql() - return tools.GetJson[Stream](db, c, err, sql, args...) + return tools.GetJson[data.Stream](db, c, err, sql, args...) }) app.Get("/api/stream/:id/links", func (c *fiber.Ctx) error { sql, args, err := sq.Select("*").From("stream_link").Where("stream_id", c.Params("id")).ToSql() - return tools.SelectJson[Link](db, c, err, sql, args...) + return tools.SelectJson[data.Link](db, c, err, sql, args...) }) app.Post("/api/login", func (c *fiber.Ctx) error { - login, err := tools.ReceivePost[Login](c) + login, err := tools.ReceivePost[data.Login](c) if(err != nil) { log.Println(err) @@ -85,7 +70,7 @@ func main() { }) app.Post("/api/link", func (c *fiber.Ctx) error { - link, err := tools.ReceivePost[Link](c) + link, err := tools.ReceivePost[data.Link](c) if(err != nil) { log.Println(err) c.Redirect("/live/") @@ -111,5 +96,21 @@ func main() { }) }) - log.Fatal(app.Listen(":5001")) + go func() { + if err := app.Listen(":5001"); err != nil { + log.Panic(err) + } + }() + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + + _ = <-c + log.Println("Shutdown now...") + _ = app.Shutdown() + + log.Println("Running cleanup...") + db.Close() + + log.Println("Done.") } diff --git a/tests/chromedp_test.go b/tests/chromedp_test.go index 1c4f2a1..8debff2 100644 --- a/tests/chromedp_test.go +++ b/tests/chromedp_test.go @@ -50,7 +50,7 @@ func TestStreamPage(t *testing.T) { var example string Run(assert, ctx, - browser.Navigate(`http://127.0.0.1:5002`), + browser.Navigate(`http://127.0.0.1:5001`), browser.WaitVisible(`body > footer`), browser.Click(`#streams`, browser.NodeVisible), browser.Text(`#streams-title`, &example))