-
-
Save ollien/8fec77a55cd5e4c2a2e13d0d88bf4e2a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Trace - 7:33:01 PM] Sending request 'initialize - (0)'. | |
Params: {"processId":30200,"rootPath":"/home/nick/Documents/code/xtrace","rootUri":"file:///home/nick/Documents/code/xtrace","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"]}},"definition":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"typeDefinition":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true}}},"initializationOptions":{"funcSnippetEnabled":false,"gocodeCompletionEnabled":true},"trace":"off","workspaceFolders":[{"uri":"file:///home/nick/Documents/code/xtrace","name":"xtrace"}]} | |
[Trace - 7:33:01 PM] Received response 'initialize - (0)' in 9ms. | |
Params: {"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{}},"hoverProvider":true,"completionProvider":{"triggerCharacters":["."]},"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":true,"documentFormattingProvider":true,"renameProvider":true,"documentLinkProvider":{},"typeDefinitionProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"workspace/didChangeWorkspaceFolders"}}},"custom":null} | |
[Trace - 7:33:01 PM] Sending notification 'initialized'. | |
Params: {} | |
[Trace - 7:33:01 PM] Received request 'client/registerCapability - (1)'. | |
Params: {"registrations":[{"id":"workspace/didChangeConfiguration","method":"workspace/didChangeConfiguration"},{"id":"workspace/didChangeWorkspaceFolders","method":"workspace/didChangeWorkspaceFolders"}]} | |
[Trace - 7:33:01 PM] Sending response 'client/registerCapability - (1)' in 9ms. | |
Params: {} | |
[Trace - 7:33:01 PM] Received request 'workspace/configuration - (2)'. | |
Params: {"items":[{"scopeUri":"file:///home/nick/Documents/code/xtrace","section":"gopls"}]} | |
[Trace - 7:33:01 PM] Sending response 'workspace/configuration - (2)' in 35ms. | |
Params: [null] | |
[Trace - 7:33:01 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"Build info\n----------\nversion v0.1.1-cmd.gopls, built in $GOPATH mode\n\nGo info\n-------\ngo version go1.11.11 linux/amd64\n\nGOARCH=\"amd64\"\nGOBIN=\"\"\nGOCACHE=\"/home/nick/.cache/go-build\"\nGOEXE=\"\"\nGOFLAGS=\"\"\nGOHOSTARCH=\"amd64\"\nGOHOSTOS=\"linux\"\nGOOS=\"linux\"\nGOPATH=\"/home/nick/Documents/code/golang\"\nGOPROXY=\"\"\nGORACE=\"\"\nGOROOT=\"/usr/lib64/go/1.11\"\nGOTMPDIR=\"\"\nGOTOOLDIR=\"/usr/lib64/go/1.11/pkg/tool/linux_amd64\"\nGCCGO=\"gccgo\"\nCC=\"gcc\"\nCXX=\"g++\"\nCGO_ENABLED=\"1\"\nGOMOD=\"/home/nick/Documents/code/xtrace/go.mod\"\nCGO_CFLAGS=\"-g -O2\"\nCGO_CPPFLAGS=\"\"\nCGO_CXXFLAGS=\"-g -O2\"\nCGO_FFLAGS=\"-g -O2\"\nCGO_LDFLAGS=\"-g -O2\"\nPKG_CONFIG=\"pkg-config\"\nGOGCCFLAGS=\"-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build600949253=/tmp/go-build -gno-record-gcc-switches\"\n"} | |
[Trace - 7:33:01 PM] Sending notification 'textDocument/didOpen'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/format.go","languageId":"go","version":1,"text":"package xtrace\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n)\n\n// TraceFormatter allows for the formatting of any message in the given trace\ntype TraceFormatter interface {\n\t// FormatTrace takes a message and will return a formatted message. Any previous message many be updated based on\n\t// the contents of the passed message\n\tFormatTrace(previousMessages []string, message string) string\n}\n\n// NilFormatter applies no formatting and returns the given message as xerrors sends them.\n// Note that the messages that xerrors sends aren't always the most intuitive (e.g. there are no newlines after error\n// messages), and the usage of this formatter is not strictly recommended. It is mainly provided for those that want\n// a simple shim.\ntype NilFormatter struct{}\n\n// FormatTrace applies no formatting and returns the given message as is\nfunc (formatter NilFormatter) FormatTrace(previousMessages []string, message string) string {\n\treturn message\n}\n\n// NestedMessageFormatter will leave the leading line with no indentation, but indents all lines following, stripping\n// whitespace from the both the left and right of each line and replacing it with a newline, unless it is the last\n// message. In this case, no newline is inserted, but whitespace is still stripped.\ntype NestedMessageFormatter struct {\n\tIndentation string\n}\n\n// FormatTrace formats the message as dictated by the contract for NestedMessageFormatter\nfunc (formatter NestedMessageFormatter) FormatTrace(previousMessages []string, message string) string {\n\tformattedMessage := strings.TrimSpace(message)\n\t// All messages except the first must begin with the given indentation, so if we have the first, we're done.\n\tif len(previousMessages) == 0 {\n\t\treturn formattedMessage\n\t}\n\n\tformattedMessage = formatter.Indentation + formattedMessage\n\tlastMessage := previousMessages[len(previousMessages)-1]\n\t// Make sure the previous message ends with a newline\n\tif lastMessage[len(lastMessage)-1] != '\\n' {\n\t\tlastMessage += \"\\n\"\n\t\tpreviousMessages[len(previousMessages)-1] = lastMessage\n\t}\n\n\treturn formattedMessage\n}\n\n// NewLineFormatter ensures that all messages except the last end in a newline after all error content.\ntype NewLineFormatter struct {\n\t// Naive, if set, will instruct the formatter to perform the naive version of this algorithm, which simply\n\t// adds/removes a newline from the end of each message. xerrors has a habit of sending indentation in the previous\n\t// line (i.e. \"<error>\\n \"), so the naive algorithm produces weird output. Nevertheless, this may be desirable\n\t// depending on the implementation of xerrors.Formatter, so it is left as an option.\n\tNaive bool\n\t// holds the last message with no newline stripped\n\tlastRawMessage string\n}\n\n// FormatTrace formats the message as dictated by the contract for NewLineFormatter\nfunc (formatter *NewLineFormatter) FormatTrace(previousMessages []string, message string) (formatted string) {\n\tlastMessage := formatter.lastRawMessage\n\tformatter.lastRawMessage = message\n\tformatted = formatter.stripNewlines(message)\n\tif len(previousMessages) == 0 {\n\t\treturn\n\t}\n\n\t// Add a newline back to the last message\n\tterminatedLastMessage := formatter.newLineTerminateMessage(lastMessage)\n\tpreviousMessages[len(previousMessages)-1] = terminatedLastMessage\n\n\treturn\n}\n\n// stripNewLines will strip new lines from the message using the given strategy\nfunc (formatter *NewLineFormatter) stripNewlines(message string) string {\n\tif formatter.Naive {\n\t\treturn strings.TrimRight(message, \"\\n\")\n\t}\n\n\t// Capture group will only match the trailing whitespace portion of the string\n\tpattern := regexp.MustCompile(`.*\\S(\\s*)`)\n\tmatchBoundaries := pattern.FindStringSubmatchIndex(message)\n\t// If we don't match, we don't need to strip anything\n\tif matchBoundaries == nil {\n\t\treturn message\n\t}\n\n\t// Remove all newlines from the whitespace portion\n\t// The capture group's boundaries will be stored at the 2nd and 3rd positions (zero-indexed)\n\terrorPortion, whitespacePortion := message[:matchBoundaries[2]], message[matchBoundaries[2]:matchBoundaries[3]]\n\tstrippedWhitespacePortion := strings.Replace(whitespacePortion, \"\\n\", \"\", -1)\n\n\treturn errorPortion + strippedWhitespacePortion\n}\n\n// newLineTerminateMessages will termiante the message with a newline, based on the given strategy\nfunc (formatter *NewLineFormatter) newLineTerminateMessage(message string) string {\n\tpattern := regexp.MustCompile(`\\s*\\n\\s*$`)\n\t// Make sure the previous message ends with a newline, or there is newline within a trailing whitespace region.\n\tif (formatter.Naive && message[len(message)-1] == '\\n') ||\n\t\t(!formatter.Naive && pattern.MatchString(message)) {\n\t\treturn message\n\t}\n\n\treturn message + \"\\n\"\n}\n"}} | |
[Trace - 7:33:01 PM] Sending notification 'textDocument/didOpen'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go","languageId":"go","version":1,"text":"package xtrace\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"golang.org/x/xerrors\"\n)\n\ntype test struct {\n\tname string\n\tsetup func(t *testing.T) Tracer\n\ttestFunc func(t *testing.T, tracer Tracer)\n}\n\nfunc runTestTable(t *testing.T, table []test) {\n\tfor _, tt := range table {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttracer := tt.setup(t)\n\t\t\ttt.testFunc(t, tracer)\n\t\t})\n\t}\n}\n\nfunc handleSetupError(t *testing.T, tracer Tracer, err error) Tracer {\n\tif err != nil {\n\t\tt.Log(\"Could not setup test\", err)\n\t\tt.FailNow()\n\n\t\t// Won't ever happen after FailNow\n\t\treturn Tracer{}\n\t}\n\n\treturn tracer\n}\n\nfunc TestTracer_ReadNext(t *testing.T) {\n\ttests := []test{\n\t\ttest{\n\t\t\tname: \"two nested errors\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\terr3 := xerrors.Errorf(\"I tried very hard and failed: %w\", err2)\n\n\t\t\t\ttracer, constructErr := NewTracer(err3)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tvar err error\n\t\t\t\texpectedErrors := []string{\n\t\t\t\t\t\"things broke :(\",\n\t\t\t\t\t\"aw shucks\",\n\t\t\t\t\t\"I tried very hard and failed\",\n\t\t\t\t}\n\t\t\t\tfor i := 0; err != io.EOF; i++ {\n\t\t\t\t\tif i >= len(expectedErrors)+1 {\n\t\t\t\t\t\tfmt.Printf(\"Ran more times than expected: (on attempt %d, only expected %d)\", i+1, len(expectedErrors))\n\t\t\t\t\t\tt.FailNow()\n\t\t\t\t\t}\n\n\t\t\t\t\tvar message string\n\t\t\t\t\tmessage, err = tracer.ReadNext()\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t// Other details may be returned when we use a tracer, so we only want to assert that the expected message is there\n\t\t\t\t\t\tassert.Equal(t, 1, strings.Count(message, expectedErrors[i]))\n\t\t\t\t\t\t// Make sure that the next error is not contained in our current message\n\t\t\t\t\t\tif i != len(expectedErrors)-1 {\n\t\t\t\t\t\t\tassert.NotContains(t, message, expectedErrors[i+1])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tassert.Equal(t, io.EOF, err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"two nested errors, newest first ordering\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\terr3 := xerrors.Errorf(\"I tried very hard and failed: %w\", err2)\n\t\t\t\ttracer, constructErr := NewTracer(err3, Ordering(NewestFirstOrdering))\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tvar err error\n\t\t\t\texpectedErrors := []string{\n\t\t\t\t\t\"I tried very hard and failed\",\n\t\t\t\t\t\"aw shucks\",\n\t\t\t\t\t\"things broke :(\",\n\t\t\t\t}\n\t\t\t\tfor i := 0; err != io.EOF; i++ {\n\t\t\t\t\tif i >= len(expectedErrors)+1 {\n\t\t\t\t\t\tfmt.Printf(\"Ran more times than expected: (on attempt %d, only expected %d)\", i+1, len(expectedErrors))\n\t\t\t\t\t\tt.FailNow()\n\t\t\t\t\t}\n\n\t\t\t\t\tvar message string\n\t\t\t\t\tmessage, err = tracer.ReadNext()\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t// Other details may be returned when we use a tracer, so we only want to assert that the expected message is there\n\t\t\t\t\t\tassert.Equal(t, 1, strings.Count(message, expectedErrors[i]))\n\t\t\t\t\t\t// Make sure that the next error is not contained in our current message\n\t\t\t\t\t\tif i != len(expectedErrors)-1 {\n\t\t\t\t\t\t\tassert.NotContains(t, message, expectedErrors[i+1])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tassert.Equal(t, io.EOF, err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"nil error\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\ttracer, constructErr := NewTracer(nil)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\t_, err := tracer.ReadNext()\n\t\t\t\tassert.Equal(t, io.EOF, err)\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"empty error\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"\")\n\t\t\t\ttracer, constructErr := NewTracer(err)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tmessage, err := tracer.ReadNext()\n\t\t\t\tassert.Equal(t, message, emptyError)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"reset Read\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\terr3 := xerrors.Errorf(\"I tried very hard and failed: %w\", err2)\n\t\t\t\ttracer, constructErr := NewTracer(err3)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, 5)\n\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tassert.Equal(t, 5, n)\n\t\t\t\tassert.Equal(t, \"thing\", string(buffer))\n\t\t\t\t// Make sure the next error we read is not \"things broke :(\"\n\t\t\t\tmessage, err := tracer.ReadNext()\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tassert.Equal(t, 1, strings.Count(message, \"aw shucks\"))\n\n\t\t\t\t// Make sure the next call to Read does not pick up where it left off\n\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tassert.Equal(t, 5, n)\n\t\t\t\tassert.Equal(t, \"I tri\", string(buffer))\n\t\t\t},\n\t\t},\n\t}\n\n\trunTestTable(t, tests)\n}\n\nfunc TestTracer_Read(t *testing.T) {\n\ttests := []test{\n\t\ttest{\n\t\t\tname: \"no errors\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\ttracer, constructErr := NewTracer(nil)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, 15)\n\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, 0, n)\n\t\t\t\tassert.Equal(t, err, io.EOF)\n\t\t\t\tassert.Equal(t, make([]byte, 15), buffer)\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"one error, full read\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\ttracer, constructErr := NewTracer(err)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, len(\"things broke :(\"))\n\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, len(buffer), n)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tassert.Equal(t, \"things broke :(\", string(buffer))\n\n\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, 0, n)\n\t\t\t\tassert.Equal(t, err, io.EOF)\n\t\t\t\tassert.Equal(t, \"things broke :(\", string(buffer))\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"one error, many reads\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\ttracer, constructErr := NewTracer(err)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, 5)\n\t\t\t\tfullBuffer := make([]byte, 0)\n\t\t\t\ttotalN := 0\n\t\t\t\tn, err := 0, error(nil)\n\t\t\t\tfor {\n\t\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\t\ttotalN += n\n\t\t\t\t\tif err == io.EOF {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\tfullBuffer = append(fullBuffer, buffer...)\n\t\t\t\t\tassert.Nil(t, err)\n\t\t\t\t\tassert.True(t, func() bool {\n\t\t\t\t\t\treturn n <= len(buffer) && n > 0\n\t\t\t\t\t}())\n\t\t\t\t}\n\n\t\t\t\tassert.Equal(t, len(fullBuffer), totalN)\n\t\t\t\tassert.Equal(t, 0, n)\n\t\t\t\tassert.Equal(t, \"things broke :(\", string(fullBuffer))\n\n\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, n, 0)\n\t\t\t\tassert.Equal(t, io.EOF, err)\n\t\t\t\tassert.Equal(t, \"things broke :(\", string(fullBuffer))\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"many errors, one read\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\terr3 := xerrors.Errorf(\"I tried very hard and failed: %w\", err2)\n\t\t\t\ttracer, constructErr := NewTracer(err3)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, len(\"things broke :(\")*2)\n\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, len(buffer)/2, n)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\t// No matter our buffer size, we only want to get the first error back\n\t\t\t\t// Even though there are many errors, because we are only reading the first one, adn that one is just\n\t\t\t\t// a simple error, we don't have to worry about there being contents other than the error message.\n\t\t\t\texpectedBuffer := make([]byte, len(buffer))\n\t\t\t\tfor i, char := range \"things broke :(\" {\n\t\t\t\t\texpectedBuffer[i] = byte(char)\n\t\t\t\t}\n\t\t\t\tassert.Equal(t, string(expectedBuffer), string(buffer))\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"many errors, many reads\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\terr3 := xerrors.Errorf(\"I tried very hard and failed: %w\", err2)\n\t\t\t\ttracer, constructErr := NewTracer(err3)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\texpectedErrors := []string{\n\t\t\t\t\t\"things broke :(\",\n\t\t\t\t\t\"aw shucks\",\n\t\t\t\t\t\"I tried very hard and failed\",\n\t\t\t\t}\n\t\t\t\tbuffer := make([]byte, 5)\n\t\t\t\tfullBuffer := make([]byte, 0)\n\t\t\t\ttotalN := 0\n\t\t\t\tn, err := 0, error(nil)\n\t\t\t\tfor {\n\t\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\t\ttotalN += n\n\t\t\t\t\tif err == io.EOF {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\tfullBuffer = append(fullBuffer, buffer[:n]...)\n\t\t\t\t\tassert.Nil(t, err)\n\t\t\t\t\tassert.True(t, func() bool {\n\t\t\t\t\t\treturn n <= len(buffer) && n > 0\n\t\t\t\t\t}())\n\t\t\t\t}\n\n\t\t\t\tassert.Equal(t, len(fullBuffer), totalN)\n\t\t\t\tassert.Equal(t, 0, n)\n\t\t\t\tfor _, expectedError := range expectedErrors {\n\t\t\t\t\tassert.Equal(t, 1, bytes.Count(fullBuffer, []byte(expectedError)))\n\t\t\t\t}\n\n\t\t\t\tfullBufferClone := make([]byte, len(fullBuffer))\n\t\t\t\tcopy(fullBufferClone, fullBuffer)\n\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, n, 0)\n\t\t\t\tassert.Equal(t, io.EOF, err)\n\t\t\t\tassert.Equal(t, string(fullBufferClone), string(fullBuffer))\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"many errors, test error boundary\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"things broke :(\")\n\t\t\t\terr2 := xerrors.Errorf(\"aw shucks: %w\", err)\n\t\t\t\ttracer, constructErr := NewTracer(err2)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, 6)\n\t\t\t\tfullBuffer := make([]byte, 0, 18)\n\t\t\t\t// Exhaust the buffer, and ensure we don't hit an io.EOF\n\t\t\t\tfor i := 0; i < 3; i++ {\n\t\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\t\tassert.True(t, func() bool {\n\t\t\t\t\t\treturn n > 0\n\t\t\t\t\t}())\n\t\t\t\t\tassert.Nil(t, err)\n\t\t\t\t\tfor j := 0; j < n; j++ {\n\t\t\t\t\t\tfullBuffer = append(fullBuffer, buffer[j])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Ensure that we ONLY have the expected error\n\t\t\t\tassert.Equal(t, \"things broke :(\", string(bytes.TrimRight(fullBuffer, \"\\x00\")))\n\t\t\t},\n\t\t},\n\t\ttest{\n\t\t\tname: \"empty error\",\n\t\t\tsetup: func(t *testing.T) Tracer {\n\t\t\t\terr := errors.New(\"\")\n\t\t\t\ttracer, constructErr := NewTracer(err)\n\n\t\t\t\treturn handleSetupError(t, tracer, constructErr)\n\t\t\t},\n\t\t\ttestFunc: func(t *testing.T, tracer Tracer) {\n\t\t\t\tbuffer := make([]byte, len(emptyError))\n\t\t\t\tn, err := tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, len(buffer), n)\n\t\t\t\tassert.Nil(t, err)\n\t\t\t\tassert.Equal(t, emptyError, string(buffer))\n\n\t\t\t\tn, err = tracer.Read(buffer)\n\t\t\t\tassert.Equal(t, 0, n)\n\t\t\t\tassert.Equal(t, err, io.EOF)\n\t\t\t\tassert.Equal(t, emptyError, string(buffer))\n\t\t\t},\n\t\t},\n\t}\n\n\trunTestTable(t, tests)\n}\n\ntype capsFormatter struct{}\n\nfunc (formatter capsFormatter) FormatTrace(previous []string, message string) string {\n\treturn strings.ToUpper(message)\n}\n\nfunc ExampleNewTracer() {\n\tbaseErr := errors.New(\"aw shucks, something broke\")\n\t// capsFormatter is a custom formatter that simply applies strings.ToUpper to all messages\n\ttracer, err := NewTracer(baseErr, Formatter(capsFormatter{}))\n\tif err != nil {\n\t\tpanic(\"can not make tracer\")\n\t}\n\toutput, err := tracer.ReadNext()\n\tif err != nil {\n\t\tpanic(\"can not read from tracer\")\n\t}\n\n\tfmt.Println(output)\n\t// Output: AW SHUCKS, SOMETHING BROKE\n}\n"}} | |
[Info - 7:33:01 PM] Build info | |
---------- | |
version v0.1.1-cmd.gopls, built in $GOPATH mode | |
Go info | |
------- | |
go version go1.11.11 linux/amd64 | |
GOARCH="amd64" | |
GOBIN="" | |
GOCACHE="/home/nick/.cache/go-build" | |
GOEXE="" | |
GOFLAGS="" | |
GOHOSTARCH="amd64" | |
GOHOSTOS="linux" | |
GOOS="linux" | |
GOPATH="/home/nick/Documents/code/golang" | |
GOPROXY="" | |
GORACE="" | |
GOROOT="/usr/lib64/go/1.11" | |
GOTMPDIR="" | |
GOTOOLDIR="/usr/lib64/go/1.11/pkg/tool/linux_amd64" | |
GCCGO="gccgo" | |
CC="gcc" | |
CXX="g++" | |
CGO_ENABLED="1" | |
GOMOD="/home/nick/Documents/code/xtrace/go.mod" | |
CGO_CFLAGS="-g -O2" | |
CGO_CPPFLAGS="" | |
CGO_CXXFLAGS="-g -O2" | |
CGO_FFLAGS="-g -O2" | |
CGO_LDFLAGS="-g -O2" | |
PKG_CONFIG="pkg-config" | |
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build600949253=/tmp/go-build -gno-record-gcc-switches" | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentSymbol - (1)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/format.go"}} | |
[Trace - 7:33:02 PM] Received response 'textDocument/documentSymbol - (1)' in 407ms. | |
Params: [{"name":"TraceFormatter","detail":"interface{...}","kind":11,"range":{"start":{"line":8,"character":5},"end":{"line":12,"character":1}},"selectionRange":{"start":{"line":8,"character":5},"end":{"line":8,"character":19}},"children":[{"name":"FormatTrace","kind":6,"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":62}},"selectionRange":{"start":{"line":11,"character":1},"end":{"line":11,"character":12}}}]},{"name":"NilFormatter","detail":"struct{...}","kind":23,"range":{"start":{"line":18,"character":5},"end":{"line":18,"character":26}},"selectionRange":{"start":{"line":18,"character":5},"end":{"line":18,"character":17}},"children":[{"name":"FormatTrace","detail":"(previousMessages []string, message string)","kind":6,"range":{"start":{"line":21,"character":0},"end":{"line":23,"character":1}},"selectionRange":{"start":{"line":21,"character":30},"end":{"line":21,"character":41}}}]},{"name":"NestedMessageFormatter","detail":"struct{...}","kind":23,"range":{"start":{"line":28,"character":5},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":28,"character":5},"end":{"line":28,"character":27}},"children":[{"name":"Indentation","detail":"string","kind":8,"range":{"start":{"line":29,"character":1},"end":{"line":29,"character":19}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":12}}},{"name":"FormatTrace","detail":"(previousMessages []string, message string)","kind":6,"range":{"start":{"line":33,"character":0},"end":{"line":49,"character":1}},"selectionRange":{"start":{"line":33,"character":40},"end":{"line":33,"character":51}}}]},{"name":"NewLineFormatter","detail":"struct{...}","kind":23,"range":{"start":{"line":52,"character":5},"end":{"line":60,"character":1}},"selectionRange":{"start":{"line":52,"character":5},"end":{"line":52,"character":21}},"children":[{"name":"Naive","detail":"bool","kind":8,"range":{"start":{"line":57,"character":1},"end":{"line":57,"character":11}},"selectionRange":{"start":{"line":57,"character":1},"end":{"line":57,"character":6}}},{"name":"lastRawMessage","detail":"string","kind":8,"range":{"start":{"line":59,"character":1},"end":{"line":59,"character":22}},"selectionRange":{"start":{"line":59,"character":1},"end":{"line":59,"character":15}}},{"name":"newLineTerminateMessage","detail":"(message string)","kind":6,"range":{"start":{"line":101,"character":0},"end":{"line":110,"character":1}},"selectionRange":{"start":{"line":101,"character":35},"end":{"line":101,"character":58}}},{"name":"FormatTrace","detail":"(previousMessages []string, message string)","kind":6,"range":{"start":{"line":63,"character":0},"end":{"line":76,"character":1}},"selectionRange":{"start":{"line":63,"character":35},"end":{"line":63,"character":46}}},{"name":"stripNewlines","detail":"(message string)","kind":6,"range":{"start":{"line":79,"character":0},"end":{"line":98,"character":1}},"selectionRange":{"start":{"line":79,"character":35},"end":{"line":79,"character":48}}}]}] | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentSymbol - (2)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go"}} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] send textDocument/documentSymbol#2 no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Trace - 7:33:02 PM] Sending request 'textDocument/codeAction - (3)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go"},"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":7}},"context":{"diagnostics":[]}} | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go","diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"severity":1,"source":"LSP","message":"file:///home/nick/Documents/code/xtrace/tracer_test.go is not part of a package"}]} | |
[Trace - 7:33:02 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/nick/Documents/code/xtrace/error.go","diagnostics":[]} | |
[Trace - 7:33:02 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/nick/Documents/code/xtrace/format.go","diagnostics":[]} | |
[Trace - 7:33:02 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/nick/Documents/code/xtrace/tracer.go","diagnostics":[]} | |
[Trace - 7:33:02 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/nick/Documents/code/xtrace/traceroptions.go","diagnostics":[]} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] send textDocument/codeAction#3 no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentLink - (4)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/format.go"}} | |
[Trace - 7:33:02 PM] Received response 'textDocument/documentLink - (4)' in 550ms. | |
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":9}},"target":"https://godoc.org/regexp"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/strings"}] | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentLink - (5)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go"}} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] send textDocument/documentLink#5 no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Trace - 7:33:02 PM] Sending notification '$/cancelRequest'. | |
Params: {"id":4} | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentLink - (6)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/format.go"}} | |
[Trace - 7:33:02 PM] Received response 'textDocument/documentLink - (6)' in 524ms. | |
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":9}},"target":"https://godoc.org/regexp"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/strings"}] | |
[Trace - 7:33:02 PM] Sending notification '$/cancelRequest'. | |
Params: {"id":5} | |
[Trace - 7:33:02 PM] Sending request 'textDocument/documentLink - (7)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go"}} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] send textDocument/documentLink#7 no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] Request textDocument/documentSymbol failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] Request textDocument/documentLink failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] Request textDocument/documentLink failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Trace - 7:33:02 PM] Sending request 'textDocument/codeAction - (8)'. | |
Params: {"textDocument":{"uri":"file:///home/nick/Documents/code/xtrace/tracer_test.go"},"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":7}},"context":{"diagnostics":[]}} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Trace - 7:33:02 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go"} | |
[Error - 7:33:02 PM] send textDocument/codeAction#8 no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:33:02 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Info - 7:24:16 PM] Build info | |
---------- | |
version v0.1.1-cmd.gopls, built in $GOPATH mode | |
Go info | |
------- | |
go version go1.11.11 linux/amd64 | |
GOARCH="amd64" | |
GOBIN="" | |
GOCACHE="/home/nick/.cache/go-build" | |
GOEXE="" | |
GOFLAGS="" | |
GOHOSTARCH="amd64" | |
GOHOSTOS="linux" | |
GOOS="linux" | |
GOPATH="/home/nick/Documents/code/golang" | |
GOPROXY="" | |
GORACE="" | |
GOROOT="/usr/lib64/go/1.11" | |
GOTMPDIR="" | |
GOTOOLDIR="/usr/lib64/go/1.11/pkg/tool/linux_amd64" | |
GCCGO="gccgo" | |
CC="gcc" | |
CXX="g++" | |
CGO_ENABLED="1" | |
GOMOD="/home/nick/Documents/code/xtrace/go.mod" | |
CGO_CFLAGS="-g -O2" | |
CGO_CPPFLAGS="" | |
CGO_CXXFLAGS="-g -O2" | |
CGO_FFLAGS="-g -O2" | |
CGO_LDFLAGS="-g -O2" | |
PKG_CONFIG="pkg-config" | |
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build440069642=/tmp/go-build -gno-record-gcc-switches" | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] Request textDocument/documentSymbol failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] Request textDocument/documentLink failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] Request textDocument/documentLink failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:16 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:18 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:18 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:18 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:18 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:18 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:18 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:18 PM] Request textDocument/hover failed. | |
Message: no AST for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:24:43 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:43 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:43 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:24:43 PM] Request textDocument/codeAction failed. | |
Message: no package for file file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:25:19 PM] Request textDocument/hover failed. | |
Message: no identifier found | |
Code: 0 | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] Request textDocument/codeAction failed. | |
Message: no package for file file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] unable to check package for file:///home/nick/Documents/code/xtrace/tracer_test.go: no packages found for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
[Error - 7:25:20 PM] Request textDocument/codeAction failed. | |
Message: no file information for file:///home/nick/Documents/code/xtrace/tracer_test.go | |
Code: 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment