Skip to content

Commit 127d533

Browse files
committed
able to test an actual env
1 parent c8987a8 commit 127d533

File tree

1 file changed

+40
-23
lines changed

1 file changed

+40
-23
lines changed

pkg/server_it_test.go

+40-23
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net"
1111
"net/http"
1212
"net/url"
13+
"os"
1314
"path"
1415
"path/filepath"
1516
"reflect"
@@ -22,42 +23,58 @@ import (
2223
)
2324

2425
func TestServer(t *testing.T) {
25-
docRoot := "/opt/app"
26+
ctx, cancel := context.WithCancel(context.Background())
27+
defer cancel()
28+
29+
var docRoot string
30+
var fs afero.Fs
31+
if v, ok := os.LookupEnv("TEST_WITH_REAL_FS"); ok && v != "" {
32+
docRoot = v
33+
fs = afero.NewOsFs()
34+
} else {
35+
docRoot = "/opt/app"
36+
fs = afero.NewMemMapFs()
37+
}
2638

27-
fs := afero.NewMemMapFs()
2839
if err := fs.MkdirAll(docRoot, 0755); err != nil {
2940
t.Fatalf("failed to create document root: %v", err)
3041
}
3142
if err := afero.WriteFile(fs, path.Join(docRoot, "test.txt"), []byte("lorem ipsum"), 0644); err != nil {
3243
t.Fatalf("failed to create test file: %v", err)
3344
}
45+
if err := fs.Mkdir(path.Join(docRoot, "foo"), 0755); err != nil && !os.IsExist(err) {
46+
t.Fatalf("failed to create directory: %v", err)
47+
}
3448
if err := afero.WriteFile(fs, path.Join(docRoot, "foo", "bar.txt"), []byte("hello, world"), 0644); err != nil {
3549
t.Fatalf("failed to create test file: %v", err)
3650
}
37-
ctx, cancel := context.WithCancel(context.Background())
38-
defer cancel()
39-
port, err := getAvailablePort()
40-
if err != nil {
41-
t.Fatalf("unable to find an available port: %v", err)
42-
}
4351

44-
addr := net.JoinHostPort("127.0.0.1", strconv.Itoa(port))
45-
config := ServerConfig{
46-
Addr: addr,
47-
DocumentRoot: docRoot,
48-
EnableCORS: true,
49-
MaxUploadSize: 16,
50-
ShutdownTimeout: 5000,
52+
var target string
53+
if addr, ok := os.LookupEnv("TEST_TARGET_ADDR"); ok && addr != "" {
54+
target = addr
55+
} else {
56+
port, err := getAvailablePort()
57+
if err != nil {
58+
t.Fatalf("unable to find an available port: %v", err)
59+
}
60+
target = net.JoinHostPort("127.0.0.1", strconv.Itoa(port))
61+
config := ServerConfig{
62+
Addr: target,
63+
DocumentRoot: docRoot,
64+
EnableCORS: true,
65+
MaxUploadSize: 16,
66+
ShutdownTimeout: 5000,
67+
}
68+
ready := make(chan struct{})
69+
server := Server{config, afero.NewBasePathFs(fs, docRoot)}
70+
go func() {
71+
t.Logf("starting server at %s", target)
72+
server.Start(ctx, ready) // nolint:errcheck
73+
}()
74+
<-ready
5175
}
52-
ready := make(chan struct{})
53-
server := Server{config, afero.NewBasePathFs(fs, docRoot)}
54-
go func() {
55-
t.Logf("starting server at %s", addr)
56-
server.Start(ctx, ready) // nolint:errcheck
57-
}()
58-
<-ready
5976

60-
base, err := url.Parse("http://" + addr)
77+
base, err := url.Parse("http://" + target)
6178
if err != nil {
6279
t.Fatalf("failed to parse base url: %v", err)
6380
}

0 commit comments

Comments
 (0)