[go-nuts] Re: io/fs adapters?

2021-03-28 Thread aind...@gmail.com
Thank you! I completely missed the memo on fstest :)

On Sunday, March 28, 2021 at 6:31:24 AM UTC-4 manlio@gmail.com wrote:

> For a project I wrote a simplified MapFS, where only the file data needs 
> to be specified, as a string:
> https://gist.github.com/perillo/45dfe7eb1c87e2d436574cab0d11221c
>
>
> Manlio
>
> Il giorno domenica 28 marzo 2021 alle 10:06:21 UTC+2 seank...@gmail.com 
> ha scritto:
>
>> https://pkg.go.dev/testing/fstest ?
>>
>> On Sunday, March 28, 2021 at 5:09:12 AM UTC+2 aind...@gmail.com wrote:
>>
>>> For testing library functions that accept fs.FS, I've been creating mock 
>>> FS implementations. However, I'm surprised by the amount of code I've had 
>>> to write for something like an FS with a single file in it. See below:
>>>
>>> *type singleFileFS struct {*
>>> *f stringFile*
>>> *}*
>>>
>>> *func (r singleFileFS) Open(name string) (fs.File, error) { return 
>>> nil, nil }*
>>> *func (r singleFileFS) Stat(name string) (fs.FileInfo, error) { return 
>>> r, nil }*
>>> *func (r singleFileFS) Name() string  { return 
>>> "." }*
>>> *func (r singleFileFS) Size() int64   { return 
>>> -1 }*
>>> *func (r singleFileFS) Mode() (m fs.FileMode) { return }*
>>> *func (r singleFileFS) ModTime() (t time.Time){ return }*
>>> *func (r singleFileFS) IsDir() bool   { return 
>>> true }*
>>> *func (r singleFileFS) Sys() interface{}  { return 
>>> nil }*
>>> *func (r singleFileFS) ReadDir(string) ([]fs.DirEntry, error) { return 
>>> []fs.DirEntry{r.f}, nil }*
>>> *func (r singleFileFS) ReadFile(name string) ([]byte, error)  { return 
>>> r.f.body, nil }*
>>>
>>> *type stringFile struct {*
>>> *name string*
>>> *body []byte*
>>> *}*
>>>
>>> *func (s stringFile) Stat() (fs.FileInfo, error)   { return s, nil }*
>>> *func (s stringFile) Name() string { return s.name 
>>>  }*
>>> *func (s stringFile) Size() int64  { return 
>>> int64(len(s.body)) }*
>>> *func (s stringFile) Mode() (m fs.FileMode){ return }*
>>> *func (s stringFile) Type() (m fs.FileMode){ return }*
>>> *func (s stringFile) ModTime() (t time.Time)   { return }*
>>> *func (s stringFile) IsDir() (false bool)  { return }*
>>> *func (s stringFile) Sys() (i interface{}) { return }*
>>> *func (s stringFile) Read([]byte) (i int, e error) { return }*
>>> *func (s stringFile) Close() (err error)   { return }*
>>> *func (s stringFile) Info() (fs.FileInfo, error)   { return s, nil }*
>>>
>>> Does anyone have any tips for creating a smaller version of this kind of 
>>> adapter? Or are there any FS adapter libraries that can help with this sort 
>>> of thing?
>>>
>>> Thanks,
>>> Akhil
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/fcdf37ed-b43d-4632-a8e8-e3641c166c73n%40googlegroups.com.


[go-nuts] Re: io/fs adapters?

2021-03-28 Thread Manlio Perillo
For a project I wrote a simplified MapFS, where only the file data needs to 
be specified, as a string:
https://gist.github.com/perillo/45dfe7eb1c87e2d436574cab0d11221c


Manlio

Il giorno domenica 28 marzo 2021 alle 10:06:21 UTC+2 seank...@gmail.com ha 
scritto:

> https://pkg.go.dev/testing/fstest ?
>
> On Sunday, March 28, 2021 at 5:09:12 AM UTC+2 aind...@gmail.com wrote:
>
>> For testing library functions that accept fs.FS, I've been creating mock 
>> FS implementations. However, I'm surprised by the amount of code I've had 
>> to write for something like an FS with a single file in it. See below:
>>
>> *type singleFileFS struct {*
>> *f stringFile*
>> *}*
>>
>> *func (r singleFileFS) Open(name string) (fs.File, error) { return 
>> nil, nil }*
>> *func (r singleFileFS) Stat(name string) (fs.FileInfo, error) { return r, 
>> nil }*
>> *func (r singleFileFS) Name() string  { return 
>> "." }*
>> *func (r singleFileFS) Size() int64   { return -1 
>> }*
>> *func (r singleFileFS) Mode() (m fs.FileMode) { return }*
>> *func (r singleFileFS) ModTime() (t time.Time){ return }*
>> *func (r singleFileFS) IsDir() bool   { return 
>> true }*
>> *func (r singleFileFS) Sys() interface{}  { return 
>> nil }*
>> *func (r singleFileFS) ReadDir(string) ([]fs.DirEntry, error) { return 
>> []fs.DirEntry{r.f}, nil }*
>> *func (r singleFileFS) ReadFile(name string) ([]byte, error)  { return 
>> r.f.body, nil }*
>>
>> *type stringFile struct {*
>> *name string*
>> *body []byte*
>> *}*
>>
>> *func (s stringFile) Stat() (fs.FileInfo, error)   { return s, nil }*
>> *func (s stringFile) Name() string { return s.name 
>>  }*
>> *func (s stringFile) Size() int64  { return 
>> int64(len(s.body)) }*
>> *func (s stringFile) Mode() (m fs.FileMode){ return }*
>> *func (s stringFile) Type() (m fs.FileMode){ return }*
>> *func (s stringFile) ModTime() (t time.Time)   { return }*
>> *func (s stringFile) IsDir() (false bool)  { return }*
>> *func (s stringFile) Sys() (i interface{}) { return }*
>> *func (s stringFile) Read([]byte) (i int, e error) { return }*
>> *func (s stringFile) Close() (err error)   { return }*
>> *func (s stringFile) Info() (fs.FileInfo, error)   { return s, nil }*
>>
>> Does anyone have any tips for creating a smaller version of this kind of 
>> adapter? Or are there any FS adapter libraries that can help with this sort 
>> of thing?
>>
>> Thanks,
>> Akhil
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/67947b8d-863a-49d3-be6c-16ae4983b7c7n%40googlegroups.com.


[go-nuts] Re: io/fs adapters?

2021-03-28 Thread Sean Liao
https://pkg.go.dev/testing/fstest ?

On Sunday, March 28, 2021 at 5:09:12 AM UTC+2 aind...@gmail.com wrote:

> For testing library functions that accept fs.FS, I've been creating mock 
> FS implementations. However, I'm surprised by the amount of code I've had 
> to write for something like an FS with a single file in it. See below:
>
> *type singleFileFS struct {*
> *f stringFile*
> *}*
>
> *func (r singleFileFS) Open(name string) (fs.File, error) { return 
> nil, nil }*
> *func (r singleFileFS) Stat(name string) (fs.FileInfo, error) { return r, 
> nil }*
> *func (r singleFileFS) Name() string  { return "." 
> }*
> *func (r singleFileFS) Size() int64   { return -1 
> }*
> *func (r singleFileFS) Mode() (m fs.FileMode) { return }*
> *func (r singleFileFS) ModTime() (t time.Time){ return }*
> *func (r singleFileFS) IsDir() bool   { return 
> true }*
> *func (r singleFileFS) Sys() interface{}  { return nil 
> }*
> *func (r singleFileFS) ReadDir(string) ([]fs.DirEntry, error) { return 
> []fs.DirEntry{r.f}, nil }*
> *func (r singleFileFS) ReadFile(name string) ([]byte, error)  { return 
> r.f.body, nil }*
>
> *type stringFile struct {*
> *name string*
> *body []byte*
> *}*
>
> *func (s stringFile) Stat() (fs.FileInfo, error)   { return s, nil }*
> *func (s stringFile) Name() string { return s.name 
>  }*
> *func (s stringFile) Size() int64  { return 
> int64(len(s.body)) }*
> *func (s stringFile) Mode() (m fs.FileMode){ return }*
> *func (s stringFile) Type() (m fs.FileMode){ return }*
> *func (s stringFile) ModTime() (t time.Time)   { return }*
> *func (s stringFile) IsDir() (false bool)  { return }*
> *func (s stringFile) Sys() (i interface{}) { return }*
> *func (s stringFile) Read([]byte) (i int, e error) { return }*
> *func (s stringFile) Close() (err error)   { return }*
> *func (s stringFile) Info() (fs.FileInfo, error)   { return s, nil }*
>
> Does anyone have any tips for creating a smaller version of this kind of 
> adapter? Or are there any FS adapter libraries that can help with this sort 
> of thing?
>
> Thanks,
> Akhil
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/ef40b17e-f8b4-4e9d-8060-ac72b9543360n%40googlegroups.com.