46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package chunked
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/vbatts/tar-split/archive/tar"
|
|
"github.com/vbatts/tar-split/tar/asm"
|
|
"github.com/vbatts/tar-split/tar/storage"
|
|
)
|
|
|
|
func TestTarSizeFromTarSplit(t *testing.T) {
|
|
var tarball bytes.Buffer
|
|
tarWriter := tar.NewWriter(&tarball)
|
|
for _, e := range someFiles {
|
|
tf, err := typeToTarType(e.Type)
|
|
require.NoError(t, err)
|
|
err = tarWriter.WriteHeader(&tar.Header{
|
|
Typeflag: tf,
|
|
Name: e.Name,
|
|
Size: e.Size,
|
|
Mode: e.Mode,
|
|
})
|
|
require.NoError(t, err)
|
|
data := make([]byte, e.Size)
|
|
_, err = tarWriter.Write(data)
|
|
require.NoError(t, err)
|
|
}
|
|
err := tarWriter.Close()
|
|
require.NoError(t, err)
|
|
expectedTarSize := int64(tarball.Len())
|
|
|
|
var tarSplit bytes.Buffer
|
|
tsReader, err := asm.NewInputTarStream(&tarball, storage.NewJSONPacker(&tarSplit), storage.NewDiscardFilePutter())
|
|
require.NoError(t, err)
|
|
_, err = io.Copy(io.Discard, tsReader)
|
|
require.NoError(t, err)
|
|
|
|
res, err := tarSizeFromTarSplit(tarSplit.Bytes())
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedTarSize, res)
|
|
}
|