Skip to content

Commit fef6e22

Browse files
authored
fix: Add stderr logging (#8)
1 parent aec3f0b commit fef6e22

File tree

6 files changed

+67
-9
lines changed

6 files changed

+67
-9
lines changed

.goreleaser.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
version: 2
2+
project_name: nobl9-language-server
3+
4+
builds:
5+
- main: ./cmd/nobl9-language-server
6+
env:
7+
- CGO_ENABLED=0
8+
mod_timestamp: '{{ .CommitTimestamp }}'
9+
flags:
10+
- -trimpath
11+
ldflags:
12+
- '-s -w -X github.com/nobl9/nobl9-language-server/internal/version.BuildVersion={{ .Version }} -X github.com/nobl9/nobl9-language-server/internal/version.BuildGitBranch={{ .Branch }} -X github.com/nobl9/nobl9-language-server/internal/version.BuildGitRevision={{ .ShortCommit }}'
13+
goos:
14+
- windows
15+
- linux
16+
- darwin
17+
goarch:
18+
- amd64
19+
- arm64
20+
binary: '{{ .ProjectName }}'
21+
22+
archives:
23+
- formats:
24+
- binary
25+
name_template: '{{ .ProjectName }}-{{ .Version }}-{{ .Os }}-{{ .Arch }}'
26+
27+
checksum:
28+
name_template: '{{ .ProjectName }}-{{ .Version }}.sha256'
29+
algorithm: sha256
30+
31+
release:
32+
make_latest: false
33+
draft: true
34+
replace_existing_draft: false
35+
prerelease: auto
36+
github:
37+
owner: nobl9
38+
name: nobl9-language-server

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"docs.json"
3434
],
3535
"words": [
36+
"devel",
3637
"endef",
3738
"fname",
3839
"gcflags",

internal/version/VERSION

Lines changed: 0 additions & 1 deletion
This file was deleted.

internal/version/version.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,12 @@ import (
44
_ "embed"
55
"fmt"
66
"runtime"
7+
"runtime/debug"
78
"strings"
89
)
910

1011
const programName = "nobl9-language-server"
1112

12-
// BuildVersion defaults to VERSION file contents.
13-
// This is necessary since we don't have control over build flags when installed through `go install`.
14-
//
15-
//go:embed VERSION
16-
var embeddedBuildVersion string
17-
1813
// Set during build time.
1914
var (
2015
BuildGitRevision string
@@ -32,7 +27,15 @@ func GetUserAgent() string {
3227
func GetVersion() string {
3328
version := BuildVersion
3429
if version == "" {
35-
version = embeddedBuildVersion
30+
version = getRuntimeVersion()
3631
}
3732
return strings.TrimSpace(version)
3833
}
34+
35+
func getRuntimeVersion() string {
36+
info, ok := debug.ReadBuildInfo()
37+
if !ok || info.Main.Version == "(devel)" {
38+
return "0.0.0"
39+
}
40+
return strings.TrimPrefix(info.Main.Version, "v")
41+
}

tests/server_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ type TestCaseResponse struct {
5151
}
5252

5353
func TestLSP(t *testing.T) {
54+
// Currently, access to the Nobl9 API is mandatory.
55+
// This test will fail if the following environment variables are not set.
56+
// Since we're only operating on Project (which has no object references) we won't be calling the API anyway.
57+
t.Setenv("NOBL9_LANGUAGE_SERVER_NO_CONFIG_FILE", "true")
58+
t.Setenv("NOBL9_LANGUAGE_SERVER_CLIENT_ID", "fake-id")
59+
t.Setenv("NOBL9_LANGUAGE_SERVER_CLIENT_SECRET", "fake-secret")
60+
5461
ctx, cancel := context.WithCancel(context.Background())
5562

5663
server := newServerCommand(t, ctx)
@@ -61,6 +68,12 @@ func TestLSP(t *testing.T) {
6168
t.Cleanup(func() {
6269
cancel()
6370
server.Stop(t)
71+
72+
if t.Failed() {
73+
logFileData, err := os.ReadFile(logFile)
74+
require.NoError(t, err)
75+
t.Logf("log file contents:\n%s", logFileData)
76+
}
6477
})
6578

6679
tests := []TestCase{

tests/utils_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func newServerCommand(t *testing.T, ctx context.Context) *serverCommand {
4242
require.NoError(t, err)
4343

4444
stderr := new(bytes.Buffer)
45-
cmd.Stderr = stderr
45+
cmd.Stderr = io.MultiWriter(os.Stderr, stderr)
4646

4747
return &serverCommand{
4848
IN: inputPipe,
@@ -68,6 +68,10 @@ func (s *serverCommand) Start(t *testing.T) {
6868
func (s *serverCommand) Stop(t *testing.T) {
6969
_, err := s.cmd.Process.Wait()
7070
assert.NoError(t, err)
71+
72+
out, err := io.ReadAll(s.stderr)
73+
assert.NoError(t, err)
74+
assert.Empty(t, string(out))
7175
}
7276

7377
func newJSONRPCClient(writer io.Writer, reader io.Reader) *jsonRPCClient {

0 commit comments

Comments
 (0)