mirror of
https://github.com/vbatts/tar-split.git
synced 2024-11-25 17:25:40 +00:00
tar/asm: test for failure when mangling
This commit is contained in:
parent
fd84b2fdfd
commit
04172717de
1 changed files with 53 additions and 4 deletions
|
@ -5,6 +5,7 @@ import (
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"hash/crc64"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
@ -33,12 +34,36 @@ var entries = []struct {
|
||||||
Payload: []byte{126, 72, 89, 239, 230, 252, 160, 187},
|
Payload: []byte{126, 72, 89, 239, 230, 252, 160, 187},
|
||||||
Size: 26,
|
Size: 26,
|
||||||
},
|
},
|
||||||
|
|
||||||
Body: []byte("café con leche, por favor"),
|
Body: []byte("café con leche, por favor"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
var entriesMangled = []struct {
|
||||||
|
Entry storage.Entry
|
||||||
|
Body []byte
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Entry: storage.Entry{
|
||||||
|
Type: storage.FileType,
|
||||||
|
Name: "./hurr.txt",
|
||||||
|
Payload: []byte{3, 116, 164, 177, 171, 236, 107, 78},
|
||||||
|
Size: 20,
|
||||||
|
},
|
||||||
|
// switch
|
||||||
|
Body: []byte("imma derp til I hurr"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Entry: storage.Entry{
|
||||||
|
Type: storage.FileType,
|
||||||
|
Name: "./ermahgerd.txt",
|
||||||
|
Payload: []byte{127, 72, 89, 239, 230, 252, 160, 187},
|
||||||
|
Size: 26,
|
||||||
|
},
|
||||||
|
// san not con
|
||||||
|
Body: []byte("café sans leche, por favor"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
func TestTarStreamOld(t *testing.T) {
|
func TestTarStreamMangledGetterPutter(t *testing.T) {
|
||||||
fgp := storage.NewBufferFileGetPutter()
|
fgp := storage.NewBufferFileGetPutter()
|
||||||
|
|
||||||
// first lets prep a GetPutter and Packer
|
// first lets prep a GetPutter and Packer
|
||||||
|
@ -63,9 +88,33 @@ func TestTarStreamOld(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, e := range entriesMangled {
|
||||||
|
if e.Entry.Type == storage.FileType {
|
||||||
|
rdr, err := fgp.Get(e.Entry.Name)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
c := crc64.New(storage.CRCTable)
|
||||||
|
i, err := io.Copy(c, rdr)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
rdr.Close()
|
||||||
|
|
||||||
|
csum := c.Sum(nil)
|
||||||
|
if !bytes.Equal(csum, e.Entry.Payload) {
|
||||||
|
t.Errorf("wrote %d bytes. checksum %q: expected %v; got %v",
|
||||||
|
i,
|
||||||
|
e.Entry.Name,
|
||||||
|
e.Entry.Payload,
|
||||||
|
csum)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO test a mangled relative path assembly
|
||||||
// next we'll use these to produce a tar stream.
|
// next we'll use these to produce a tar stream.
|
||||||
_ = NewOutputTarStream(fgp, nil)
|
//_ = NewOutputTarStream(fgp, nil)
|
||||||
// TODO finish this
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTarStream(t *testing.T) {
|
func TestTarStream(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue