filesystems - visualizaciones - ¿Cómo burlarse/sistema de archivos abstracto en ir?
visualizador audio (3)
Me gustaría poder registrar cada escritura / lectura que mi aplicación de Go emita al sistema operativo subyacente, y también (si es posible) reemplazar completamente FS con uno que reside solo en la memoria.
¿Es posible? ¿Cómo? Tal vez hay una solución lista para usar?
Esto es directamente de las 10 cosas que (probablemente) no sabes de Andrew Gerrand:
var fs fileSystem = osFS{}
type fileSystem interface {
Open(name string) (file, error)
Stat(name string) (os.FileInfo, error)
}
type file interface {
io.Closer
io.Reader
io.ReaderAt
io.Seeker
Stat() (os.FileInfo, error)
}
// osFS implements fileSystem using the local disk.
type osFS struct{}
func (osFS) Open(name string) (file, error) { return os.Open(name) }
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
Para que esto funcione, deberá escribir su código para tomar un argumento fileSystem
(tal vez incrustarlo en algún otro tipo, o dejar que nil
denote el sistema de archivos predeterminado).
Para aquellos que buscan resolver el problema de burlarse de su sistema de archivos durante las pruebas, visite la biblioteca Afero de @ spf13, https://github.com/spf13/afero . Hace todo lo que hace la respuesta aceptada, pero con mejor documentación y ejemplos.
Solo porque esta pregunta aparece bastante alta al buscar en Google para este asunto:
No sé sobre el registro de lecturas y escrituras, pero para un sistema de archivos que reside solo en la memoria, he encontrado blang/vfs . No lo he usado en producción, y dice que es alfa y es probable que las interfaces cambien. Úselo bajo su propio riesgo.
Supongo que podría implementarlo para registrar lecturas y escrituras.