func (_m *FS) Lstat(filename string) (iofs.FileInfo, error) {
	ret := _m.Called(filename)
	var r0 iofs.FileInfo
	if rf, ok := ret.Get(0).(func(string) iofs.FileInfo); ok {
		r0 = rf(filename)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(iofs.FileInfo)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(filename)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
Lstat provides a mock function with given fields: filename
package mocks
import (
	billy "github.com/go-git/go-billy/v5"
	iofs "io/fs"
	mock "github.com/stretchr/testify/mock"
)
type FS struct {
	mock.Mock
}
func (_m *FS) CheckExistsOrWrite(filename string, data []byte) (bool, error) {
	ret := _m.Called(filename, data)
	var r0 bool
	if rf, ok := ret.Get(0).(func(string, []byte) bool); ok {
		r0 = rf(filename, data)
	} else {
		r0 = ret.Get(0).(bool)
	}
	var r1 error
	if rf, ok := ret.Get(1).(func(string, []byte) error); ok {
		r1 = rf(filename, data)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *FS) Chroot(path string) (billy.Filesystem, error) {
	ret := _m.Called(path)
	var r0 billy.Filesystem
	if rf, ok := ret.Get(0).(func(string) billy.Filesystem); ok {
		r0 = rf(path)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(billy.Filesystem)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(path)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *FS) Create(filename string) (billy.File, error) {
	ret := _m.Called(filename)
	var r0 billy.File
	if rf, ok := ret.Get(0).(func(string) billy.File); ok {
		r0 = rf(filename)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(billy.File)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(filename)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *FS) Exists(path string) (bool, error) {
	ret := _m.Called(path)
	var r0 bool
	if rf, ok := ret.Get(0).(func(string) bool); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(bool)
	}
	var r1 error
	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(path)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *FS) ExistsOrDie(path string) bool {
	ret := _m.Called(path)
	var r0 bool
	if rf, ok := ret.Get(0).(func(string) bool); ok {
		r0 = rf(path)
	} else {
		r0 = ret.Get(0).(bool)
	}
	return r0
}
func (_m *FS) Join(elem ...string) string {
	_va := make([]interface{}, len(elem))
	for _i := range elem {
		_va[_i] = elem[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)
	var r0 string
	if rf, ok := ret.Get(0).(func(...string) string); ok {
		r0 = rf(elem...)
	} else {
		r0 = ret.Get(0).(string)
	}
	return r0
}