Skip to content
Snippets Groups Projects
Commit 5910977e authored by Pavel Antonov's avatar Pavel Antonov :asterisk:
Browse files

Merge branch 'fix/PRXS-2343-2344-FixRoleFormatting' into 'master'

Исправлена ошибка `fatal error: stack overflow` при попытке приведения объекта Role к строке

See merge request perxis/perxis-go!221
parents 4e6398c2 68768291
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ package members ...@@ -2,6 +2,7 @@ package members
import ( import (
"fmt" "fmt"
"strconv"
) )
type Member struct { type Member struct {
...@@ -24,7 +25,12 @@ func (r Role) IsPrivileged() bool { ...@@ -24,7 +25,12 @@ func (r Role) IsPrivileged() bool {
} }
func (r Role) Format(s fmt.State, verb rune) { func (r Role) Format(s fmt.State, verb rune) {
s.Write([]byte(r.String())) switch verb {
case 's':
s.Write([]byte(r.String()))
default:
s.Write([]byte(strconv.Itoa(int(r))))
}
} }
func (r Role) String() string { func (r Role) String() string {
......
package members
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
)
func TestFormat(t *testing.T) {
tests := []struct {
name string
template string
want string
role Role
}{
{
name: "NotMember with %s",
template: "%s",
role: NotMember,
want: "not member",
},
{
name: "RoleMember with %s",
role: RoleMember,
template: "%s",
want: "member",
},
{
name: "RoleOwner with %s",
role: RoleOwner,
template: "%s",
want: "owner",
},
{
name: "RoleAdmin with %s",
role: RoleAdmin,
template: "%s",
want: "admin",
},
{
name: "Existent role with %d",
role: RoleAdmin,
template: "%d",
want: "3",
},
{
name: "Non-existent role with %s",
role: 4,
template: "%s",
want: "4",
},
{
name: "Non-existent role with %d",
role: 4,
template: "%d",
want: "4",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
require.Equal(t, tt.want, fmt.Sprintf(tt.template, tt.role))
})
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment