Skip to content

Commit

Permalink
chore: Refactor site to improve testing (#2014)
Browse files Browse the repository at this point in the history
It was difficult to develop this package due to the
embed build tag being mandatory on the tests. The logic
to test doesn't require any embedded files.
  • Loading branch information
kylecarbs committed Jun 3, 2022
1 parent 89dde21 commit 61aacff
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 40 deletions.
2 changes: 1 addition & 1 deletion coderd/coderd.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ func New(options *Options) *API {
r.Get("/state", api.workspaceBuildState)
})
})
r.NotFound(site.DefaultHandler().ServeHTTP)
r.NotFound(site.Handler(site.FS()).ServeHTTP)

return api
}
Expand Down
12 changes: 0 additions & 12 deletions site/embed_slim.go

This file was deleted.

24 changes: 0 additions & 24 deletions site/embed.go → site/site.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
//go:build embed
// +build embed

package site

import (
"bytes"
"embed"
"fmt"
"io"
"io/fs"
Expand All @@ -21,26 +17,6 @@ import (
"golang.org/x/xerrors"
)

// The `embed` package ignores recursively including directories
// that prefix with `_`. Wildcarding nested is janky, but seems to
// work quite well for edge-cases.
//go:embed out
//go:embed out/bin/*
var site embed.FS

func DefaultHandler() http.Handler {
// the out directory is where webpack builds are created. It is in the same
// directory as this file (package site).
siteFS, err := fs.Sub(site, "out")

if err != nil {
// This can't happen... Go would throw a compilation error.
panic(err)
}

return Handler(siteFS)
}

// Handler returns an HTTP handler for serving the static site.
func Handler(fileSystem fs.FS) http.Handler {
// html files are handled by a text/template. Non-html files
Expand Down
24 changes: 24 additions & 0 deletions site/site_embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//go:build embed
// +build embed

package site

import (
"embed"
"io/fs"
)

//go:embed out
//go:embed out/bin/*
var site embed.FS

func FS() fs.FS {
// the out directory is where webpack builds are created. It is in the same
// directory as this file (package site).
out, err := fs.Sub(site, "out")
if err != nil {
// This can't happen... Go would throw a compilation error.
panic(err)
}
return out
}
15 changes: 15 additions & 0 deletions site/site_slim.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//go:build !embed
// +build !embed

package site

import (
"embed"
"io/fs"
)

var slim embed.FS

func FS() fs.FS {
return slim
}
3 changes: 0 additions & 3 deletions site/embed_test.go → site/site_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
//go:build embed
// +build embed

package site_test

import (
Expand Down

0 comments on commit 61aacff

Please sign in to comment.