pkg

package
v2.999.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 25, 2021 License: BSD-3-Clause Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotInterface = errors.New("expression not an interface")

ErrNotInterface is returned when the given type is not an interface type.

View Source
var ErrNotSetup = errors.New("not setup")

ErrNotSetup is returned when the generator is not configured.

Functions

This section is empty.

Types

type Cleanup

type Cleanup func() error

type FileOutputStreamProvider

type FileOutputStreamProvider struct {
	Config                    config.Config
	BaseDir                   string
	InPackage                 bool
	TestOnly                  bool
	Case                      string
	KeepTree                  bool
	KeepTreeOriginalDirectory string
	FileName                  string
}

func (*FileOutputStreamProvider) GetWriter

func (p *FileOutputStreamProvider) GetWriter(ctx context.Context, iface *Interface) (io.Writer, error, Cleanup)

type Generator

type Generator struct {
	config.Config
	// contains filtered or unexported fields
}

Generator is responsible for generating the string containing imports and the mock struct that will later be written out as file.

func NewGenerator

func NewGenerator(ctx context.Context, c config.Config, iface *Interface, pkg string) *Generator

NewGenerator builds a Generator.

func (*Generator) Generate

func (g *Generator) Generate(ctx context.Context) error

Generate builds a string that constitutes a valid go source file containing the mock of the relevant interface.

func (*Generator) GenerateBoilerplate

func (g *Generator) GenerateBoilerplate(boilerplate string)

GenerateBoilerplate adds a boilerplate text. It should be called before any other generator methods to ensure the text is on top.

func (*Generator) GeneratePrologue

func (g *Generator) GeneratePrologue(ctx context.Context, pkg string)

GeneratePrologue generates the prologue of the mock.

func (*Generator) GeneratePrologueNote

func (g *Generator) GeneratePrologueNote(note string)

GeneratePrologueNote adds a note after the prologue to the output string.

func (*Generator) Write

func (g *Generator) Write(w io.Writer) error

type GeneratorVisitor

type GeneratorVisitor struct {
	config.Config
	InPackage   bool
	Note        string
	Boilerplate string
	Osp         OutputStreamProvider
	// The name of the output package, if InPackage is false (defaults to "mocks")
	PackageName       string
	PackageNamePrefix string
	StructName        string
}

func (*GeneratorVisitor) VisitWalk

func (v *GeneratorVisitor) VisitWalk(ctx context.Context, iface *Interface) error

type Interface

type Interface struct {
	Name            string // Name of the type to be mocked.
	QualifiedName   string // Path to the package of the target type.
	FileName        string
	File            *ast.File
	Pkg             *types.Package
	NamedType       *types.Named
	IsFunction      bool             // If true, this instance represents a function, otherwise it's an interface.
	ActualInterface *types.Interface // Holds the actual interface type, in case it's an interface.
	SingleFunction  *Method          // Holds the function type information, in case it's a function type.
}

Interface type represents the target type that we will generate a mock for. It could be an interface, or a function type. Function type emulates: an interface it has 1 method with the function signature and a general name, e.g. "Execute".

func (*Interface) Methods

func (iface *Interface) Methods() []*Method

type Method

type Method struct {
	Name      string
	Signature *types.Signature
}

type NodeVisitor

type NodeVisitor struct {
	// contains filtered or unexported fields
}

func NewNodeVisitor

func NewNodeVisitor() *NodeVisitor

func (*NodeVisitor) DeclaredInterfaces

func (nv *NodeVisitor) DeclaredInterfaces() []string

func (*NodeVisitor) Visit

func (nv *NodeVisitor) Visit(node ast.Node) ast.Visitor

type OutputStreamProvider

type OutputStreamProvider interface {
	GetWriter(context.Context, *Interface) (io.Writer, error, Cleanup)
}

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

func NewParser

func NewParser(buildTags []string) *Parser

func (*Parser) Find

func (p *Parser) Find(name string) (*Interface, error)

func (*Parser) Interfaces

func (p *Parser) Interfaces() []*Interface

func (*Parser) Load

func (p *Parser) Load() error

func (*Parser) Parse

func (p *Parser) Parse(ctx context.Context, path string) error

type StdoutStreamProvider

type StdoutStreamProvider struct {
}

func (*StdoutStreamProvider) GetWriter

func (*StdoutStreamProvider) GetWriter(ctx context.Context, iface *Interface) (io.Writer, error, Cleanup)

type Walker

type Walker struct {
	config.Config
	BaseDir   string
	Recursive bool
	Filter    *regexp.Regexp
	LimitOne  bool
	BuildTags []string
}

func (*Walker) Walk

func (w *Walker) Walk(ctx context.Context, visitor WalkerVisitor) (generated bool)

type WalkerVisitor

type WalkerVisitor interface {
	VisitWalk(context.Context, *Interface) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL