67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
|
package fs
|
||
|
|
||
|
import (
|
||
|
"archive/zip"
|
||
|
"bytes"
|
||
|
"io"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/ajnavarro/distribyted/iio"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
var fileContent []byte = []byte("Hello World")
|
||
|
|
||
|
func TestZipFilesystem(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
require := require.New(t)
|
||
|
|
||
|
zReader, len := createTestZip(require)
|
||
|
|
||
|
zfs := NewZip(zReader, len)
|
||
|
|
||
|
files, err := zfs.ReadDir("/path/to/test/file")
|
||
|
require.NoError(err)
|
||
|
|
||
|
require.Len(files, 1)
|
||
|
f := files["1.txt"]
|
||
|
require.NotNil(f)
|
||
|
|
||
|
out := make([]byte, 11)
|
||
|
n, err := f.Read(out)
|
||
|
require.Equal(io.EOF, err)
|
||
|
require.Equal(11, n)
|
||
|
require.Equal(fileContent, out)
|
||
|
|
||
|
}
|
||
|
|
||
|
func createTestZip(require *require.Assertions) (iio.Reader, int64) {
|
||
|
buf := bytes.NewBuffer([]byte{})
|
||
|
|
||
|
zWriter := zip.NewWriter(buf)
|
||
|
|
||
|
f1, err := zWriter.Create("path/to/test/file/1.txt")
|
||
|
require.NoError(err)
|
||
|
_, err = f1.Write(fileContent)
|
||
|
require.NoError(err)
|
||
|
|
||
|
err = zWriter.Close()
|
||
|
require.NoError(err)
|
||
|
|
||
|
return newCBR(buf.Bytes()), int64(buf.Len())
|
||
|
}
|
||
|
|
||
|
type closeableByteReader struct {
|
||
|
*bytes.Reader
|
||
|
}
|
||
|
|
||
|
func newCBR(b []byte) *closeableByteReader {
|
||
|
return &closeableByteReader{
|
||
|
Reader: bytes.NewReader(b),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (*closeableByteReader) Close() error {
|
||
|
return nil
|
||
|
}
|