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 }