Skip to content

Pegomock unable to generate proper matchers for empty struct channels #101

@jpopadak

Description

@jpopadak

Description
When generating matchers for a given interface method using Pegomock, it fails to create proper matchers for the empty struct type: struct{}.

As a result, anything that passes around empty struct channels (for event purposes) has incorrect matchers created.

Steps to Reproduce
Generate a mock and the matchers associated to this interface:

type MyInterf interface {
    MyFunc(stopChan <-chan struct{}) error
}

Note:

  1. The filename of the matcher: recv_chan_of_struct{}.go
  2. The output of the matchers which includes the {} of the empty struct in the names of the methods.
// Code generated by pegomock. DO NOT EDIT.
package matchers

import (
	"reflect"
	"github.com/petergtz/pegomock"
	
)

func AnyRecvChanOfStruct{}() <-chan struct{} {
	pegomock.RegisterMatcher(pegomock.NewAnyMatcher(reflect.TypeOf((*(<-chan struct{}))(nil)).Elem()))
	var nullValue <-chan struct{}
	return nullValue
}

func EqRecvChanOfStruct{}(value <-chan struct{}) <-chan struct{} {
	pegomock.RegisterMatcher(&pegomock.EqMatcher{Value: value})
	var nullValue <-chan struct{}
	return nullValue
}

Thoughts
This might be just due to how we are naming things based on the type name. If so, this could theoretically be a spot fix based on any type of struct{}.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions