tstor/fs/zip_test.go

67 lines
1.2 KiB
Go
Raw Normal View History

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
}