Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions unusedmethod/testdata/src/a/a.go

This file was deleted.

19 changes: 0 additions & 19 deletions unusedmethod/testdata/src/a/a.go.golden

This file was deleted.

24 changes: 0 additions & 24 deletions unusedmethod/testdata/src/b/b.go

This file was deleted.

70 changes: 70 additions & 0 deletions unusedmethod/testdata/src/basic/basic.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package basic

import (
"errors"
"time"
)

type Logger interface {
Debug(msg string, args ...any) // want "^method 'Debug\\(\\)' is declared on interface 'Logger' but not used within the package$"
Info(msg string, args ...any)

Warn(msg string, args ...any) //iface:ignore=unusedmethod

//iface:ignore=unusedmethod
Error(msg string, args ...any)
}

//iface:ignore=unusedmethod
type Meter interface {
CountInc(name string, val int, attrs map[string]any)
Record(name string, val int, attrs map[string]any)
Set(name string, val int, attrs map[string]any)
}

type User struct {
Username string
Password string
}

type UserRepository interface {
UserOfUsername(username string) (*User, error)
}

type AuthService struct {
userRepo UserRepository
logger Logger
meter Meter
}

func NewAuthService(userRepo UserRepository, logger Logger, meter Meter) *AuthService {
return &AuthService{
userRepo: userRepo,
logger: logger,
meter: meter,
}
}

func (as *AuthService) Authenticate(username, password string) error {
start := time.Now()
defer func() {
duration := time.Since(start)
as.meter.Record("authenticate.duration", int(duration.Milliseconds()), nil)
}()

as.logger.Info("Authenticate %q", username)

usr, err := as.userRepo.UserOfUsername(username)
if err != nil {
return err
}

if usr.Password != password {
as.meter.CountInc("authenticate.failed", 1, map[string]any{"username": username})
return errors.New("invalid username or password")
}

as.meter.CountInc("authenticate.succeed", 1, map[string]any{"username": username})

return nil
}
69 changes: 69 additions & 0 deletions unusedmethod/testdata/src/basic/basic.go.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package basic

import (
"errors"
"time"
)

type Logger interface {
Info(msg string, args ...any)

Warn(msg string, args ...any) //iface:ignore=unusedmethod

//iface:ignore=unusedmethod
Error(msg string, args ...any)
}

//iface:ignore=unusedmethod
type Meter interface {
CountInc(name string, val int, attrs map[string]any)
Record(name string, val int, attrs map[string]any)
Set(name string, val int, attrs map[string]any)
}

type User struct {
Username string
Password string
}

type UserRepository interface {
UserOfUsername(username string) (*User, error)
}

type AuthService struct {
userRepo UserRepository
logger Logger
meter Meter
}

func NewAuthService(userRepo UserRepository, logger Logger, meter Meter) *AuthService {
return &AuthService{
userRepo: userRepo,
logger: logger,
meter: meter,
}
}

func (as *AuthService) Authenticate(username, password string) error {
start := time.Now()
defer func() {
duration := time.Since(start)
as.meter.Record("authenticate.duration", int(duration.Milliseconds()), nil)
}()

as.logger.Info("Authenticate %q", username)

usr, err := as.userRepo.UserOfUsername(username)
if err != nil {
return err
}

if usr.Password != password {
as.meter.CountInc("authenticate.failed", 1, map[string]any{"username": username})
return errors.New("invalid username or password")
}

as.meter.CountInc("authenticate.succeed", 1, map[string]any{"username": username})

return nil
}
25 changes: 0 additions & 25 deletions unusedmethod/testdata/src/c/c.go

This file was deleted.

23 changes: 0 additions & 23 deletions unusedmethod/testdata/src/d/d.go

This file was deleted.

13 changes: 0 additions & 13 deletions unusedmethod/testdata/src/e/e.go

This file was deleted.

45 changes: 45 additions & 0 deletions unusedmethod/testdata/src/excludepkg/excludepkg.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package excludepkg

import "errors"

type Logger interface {
Debug(msg string, args ...any)
Info(msg string, args ...any)
Error(msg string, args ...any)
}

type User struct {
Username string
Password string
}

type UserRepository interface {
UserOfUsername(username string) (*User, error)
}

type AuthService struct {
userRepo UserRepository
logger Logger
}

func NewAuthService(userRepo UserRepository, logger Logger) *AuthService {
return &AuthService{
userRepo: userRepo,
logger: logger,
}
}

func (as *AuthService) Authenticate(username, password string) error {
as.logger.Info("Authenticate %q", username)

usr, err := as.userRepo.UserOfUsername(username)
if err != nil {
return err
}

if usr.Password != password {
return errors.New("invalid username or password")
}

return nil
}
20 changes: 0 additions & 20 deletions unusedmethod/testdata/src/f/f.go

This file was deleted.

23 changes: 0 additions & 23 deletions unusedmethod/testdata/src/g/a.go

This file was deleted.

19 changes: 0 additions & 19 deletions unusedmethod/testdata/src/g/a.go.golden

This file was deleted.

Loading
Loading