Skip to content

Commit 0650c45

Browse files
authored
Merge pull request #789 from snopan/master
Fixes #769 : Mock files getting created in disk when dry-run is enabled
2 parents ba0fbe9 + 456d20a commit 0650c45

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

cmd/mockery.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ func (r *RootApp) Run() error {
269269
}
270270
ifaceLog.Debug().Msg("config specifies to generate this interface")
271271

272-
outputter := pkg.NewOutputter(&r.Config, boilerplate, true)
272+
outputter := pkg.NewOutputter(&r.Config, boilerplate, r.Config.DryRun)
273273
if err := outputter.Generate(ifaceCtx, iface); err != nil {
274274
return err
275275
}

pkg/outputter.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -353,13 +353,19 @@ func (m *Outputter) Generate(ctx context.Context, iface *Interface) error {
353353
return err
354354
}
355355

356+
// Log where the file would be written to before checking whether to create the directories and files
356357
outputPath := pathlib.NewPath(interfaceConfig.Dir).Join(interfaceConfig.FileName)
358+
fileLog := log.With().Stringer(logging.LogKeyFile, outputPath).Logger()
359+
fileLog.Info().Msg("writing to file")
360+
361+
if m.dryRun {
362+
continue
363+
}
364+
357365
if err := outputPath.Parent().MkdirAll(); err != nil {
358366
return stackerr.NewStackErrf(err, "failed to mkdir parents of: %v", outputPath)
359367
}
360368

361-
fileLog := log.With().Stringer(logging.LogKeyFile, outputPath).Logger()
362-
fileLog.Info().Msg("writing to file")
363369
file, err := outputPath.OpenFile(os.O_RDWR | os.O_CREATE | os.O_TRUNC)
364370
if err != nil {
365371
return stackerr.NewStackErrf(err, "failed to open output file for mock: %v", outputPath)

pkg/outputter_test.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -217,11 +217,17 @@ func TestOutputter_Generate(t *testing.T) {
217217
name string
218218
packagePath string
219219
fields fields
220-
wantErr bool
220+
dryRun bool
221221
}{
222222
{
223223
name: "generate normal",
224224
packagePath: "github.com/vektra/mockery/v2/pkg/fixtures/example_project",
225+
dryRun: false,
226+
},
227+
{
228+
name: "generate normal",
229+
packagePath: "github.com/vektra/mockery/v2/pkg/fixtures/example_project",
230+
dryRun: true,
225231
},
226232
}
227233
for _, tt := range tests {
@@ -237,7 +243,7 @@ func TestOutputter_Generate(t *testing.T) {
237243
m := &Outputter{
238244
boilerplate: tt.fields.boilerplate,
239245
config: tt.fields.config,
240-
dryRun: true,
246+
dryRun: tt.dryRun,
241247
}
242248
parser := NewParser([]string{})
243249

@@ -265,7 +271,7 @@ packages:
265271
t.Logf("checking if path exists: %v", mockPath)
266272
exists, err := mockPath.Exists()
267273
require.NoError(t, err)
268-
assert.True(t, exists)
274+
assert.Equal(t, !tt.dryRun, exists)
269275
}
270276
})
271277
}

0 commit comments

Comments
 (0)