fix: enrich the notLoggedInMessage error message with the full path to the coder (#17715)

---------

Signed-off-by: Callum Styan <callumstyan@gmail.com>
This commit is contained in:
Callum Styan
2025-05-12 11:45:24 -07:00
committed by GitHub
parent 15bd7a3add
commit 578b9ff5fe
3 changed files with 20 additions and 6 deletions

View File

@ -1,6 +1,7 @@
package cli_test
import (
"fmt"
"os"
"runtime"
"testing"
@ -89,10 +90,14 @@ func TestLogout(t *testing.T) {
logout.Stdin = pty.Input()
logout.Stdout = pty.Output()
executable, err := os.Executable()
require.NoError(t, err)
require.NotEqual(t, "", executable)
go func() {
defer close(logoutChan)
err := logout.Run()
assert.ErrorContains(t, err, "You are not logged in. Try logging in using 'coder login <url>'.")
err = logout.Run()
assert.Contains(t, err.Error(), fmt.Sprintf("Try logging in using '%s login <url>'.", executable))
}()
<-logoutChan

View File

@ -72,7 +72,7 @@ const (
varDisableDirect = "disable-direct-connections"
varDisableNetworkTelemetry = "disable-network-telemetry"
notLoggedInMessage = "You are not logged in. Try logging in using 'coder login <url>'."
notLoggedInMessage = "You are not logged in. Try logging in using '%s login <url>'."
envNoVersionCheck = "CODER_NO_VERSION_WARNING"
envNoFeatureWarning = "CODER_NO_FEATURE_WARNING"
@ -534,7 +534,11 @@ func (r *RootCmd) InitClient(client *codersdk.Client) serpent.MiddlewareFunc {
rawURL, err := conf.URL().Read()
// If the configuration files are absent, the user is logged out
if os.IsNotExist(err) {
return xerrors.New(notLoggedInMessage)
binPath, err := os.Executable()
if err != nil {
binPath = "coder"
}
return xerrors.Errorf(notLoggedInMessage, binPath)
}
if err != nil {
return err

View File

@ -4,6 +4,8 @@ import (
"bytes"
"context"
"encoding/json"
"fmt"
"os"
"testing"
"github.com/stretchr/testify/assert"
@ -69,9 +71,12 @@ func TestUserList(t *testing.T) {
t.Run("NoURLFileErrorHasHelperText", func(t *testing.T) {
t.Parallel()
executable, err := os.Executable()
require.NoError(t, err)
inv, _ := clitest.New(t, "users", "list")
err := inv.Run()
require.Contains(t, err.Error(), "Try logging in using 'coder login <url>'.")
err = inv.Run()
require.Contains(t, err.Error(), fmt.Sprintf("Try logging in using '%s login <url>'.", executable))
})
t.Run("SessionAuthErrorHasHelperText", func(t *testing.T) {
t.Parallel()