github.com/oNaiPs/go-generate-fast@v0.3.0/src/plugins/mockgen/mockgen_test.go (about)

     1  package plugin_mockgen
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"testing"
     7  
     8  	"github.com/oNaiPs/go-generate-fast/src/plugins"
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestMockgenPlugin_Name(t *testing.T) {
    14  	p := &MockgenPlugin{}
    15  	assert.Equal(t, "mockgen", p.Name())
    16  }
    17  
    18  func TestMockgenPlugin_Matches(t *testing.T) {
    19  	p := &MockgenPlugin{}
    20  	assert.True(t, p.Matches(plugins.GenerateOpts{
    21  		ExecutableName: "mockgen",
    22  	}))
    23  }
    24  
    25  func TestMockgenPlugin_ComputeInputOutputFiles_SourceMode(t *testing.T) {
    26  	p := &MockgenPlugin{}
    27  	tempDir := t.TempDir()
    28  
    29  	err := os.WriteFile(path.Join(tempDir, "go.mod"), []byte("module example.com/mod"), 0644)
    30  	assert.NoError(t, err)
    31  	err = os.WriteFile(path.Join(tempDir, "input_file1.go"), []byte(`
    32  package example
    33  type Foo interface {
    34  	Bar(x int) int
    35  }
    36  `), 0644)
    37  	assert.NoError(t, err)
    38  
    39  	opts := plugins.GenerateOpts{
    40  		Path:           path.Join(tempDir, "test.go"),
    41  		ExecutableName: "mockgen",
    42  		SanitizedArgs: []string{
    43  			"-source", "input_file1.go",
    44  			"-destination", "output_file.go",
    45  			"-aux_files", "aa=aa.go,b=ab.go,ac=a/b/ac.go",
    46  			"-imports", "ia=ia.go,b=ib.go,ic=a/b/ic.go",
    47  			"-copyright_file", "cop.txt",
    48  		},
    49  	}
    50  
    51  	ioFiles := p.ComputeInputOutputFiles(opts)
    52  	require.NotNil(t, ioFiles)
    53  	assert.Equal(t, []string{
    54  		"aa.go",
    55  		"ab.go",
    56  		"a/b/ac.go",
    57  		"cop.txt",
    58  		"ia.go",
    59  		"ib.go",
    60  		"a/b/ic.go",
    61  		"input_file1.go",
    62  	}, ioFiles.InputFiles)
    63  	assert.Equal(t, []string{"output_file.go"}, ioFiles.OutputFiles)
    64  }
    65  
    66  func TestMockgenPlugin_ComputeInputOutputFiles_ReflectMode(t *testing.T) {
    67  	p := &MockgenPlugin{}
    68  	tempDir := t.TempDir()
    69  
    70  	err := os.WriteFile(path.Join(tempDir, "go.mod"), []byte("module example_pkg"), 0644)
    71  	assert.NoError(t, err)
    72  	err = os.WriteFile(path.Join(tempDir, "input_file1.go"), []byte(`
    73  package example_pkg
    74  type Driver interface {
    75  	Bar(x int) int
    76  }
    77  `), 0644)
    78  	assert.NoError(t, err)
    79  
    80  	opts := plugins.GenerateOpts{
    81  		Path:           path.Join(tempDir, "test.go"),
    82  		ExecutableName: "mockgen",
    83  		SanitizedArgs:  []string{"-destination", "output_file.go", "example_pkg", "Driver"},
    84  	}
    85  
    86  	err = os.Chdir(tempDir)
    87  	assert.NoError(t, err)
    88  	ioFiles := p.ComputeInputOutputFiles(opts)
    89  	require.NotNil(t, ioFiles)
    90  	assert.Equal(t, []string{path.Join(tempDir, "input_file1.go")}, ioFiles.InputFiles)
    91  	assert.Equal(t, []string{"output_file.go"}, ioFiles.OutputFiles)
    92  }