mirror of
https://github.com/ipfs/kubo.git
synced 2025-10-25 10:27:01 +08:00
Fix t0090 tar&gz unexpected EOF error
License: MIT Signed-off-by: rht <rhtbot@gmail.com>
This commit is contained in:
@ -51,8 +51,7 @@ test_get_cmd() {
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
# TODO: determine why this fails
|
||||
test_expect_failure "ipfs get -a archive output is valid" '
|
||||
test_expect_success "ipfs get -a archive output is valid" '
|
||||
tar -xf "$HASH".tar &&
|
||||
test_cmp "$HASH" data &&
|
||||
rm "$HASH".tar &&
|
||||
@ -68,8 +67,7 @@ test_get_cmd() {
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
# TODO(mappum)
|
||||
test_expect_failure "gzipped tar archive output is valid" '
|
||||
test_expect_success "gzipped tar archive output is valid" '
|
||||
tar -zxf "$HASH".tar.gz &&
|
||||
test_cmp "$HASH" data &&
|
||||
rm "$HASH".tar.gz &&
|
||||
@ -105,8 +103,7 @@ test_get_cmd() {
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
# TODO(mappum)
|
||||
test_expect_failure "gzipped tar archive output is valid (directory)" '
|
||||
test_expect_success "gzipped tar archive output is valid (directory)" '
|
||||
tar -zxf "$HASH2".tar.gz &&
|
||||
test_cmp dir/a "$HASH2"/a &&
|
||||
test_cmp dir/b/c "$HASH2"/b/c &&
|
||||
|
||||
@ -17,6 +17,18 @@ import (
|
||||
// TODO: does this need to be configurable?
|
||||
var DefaultBufSize = 1048576
|
||||
|
||||
type identityWriteCloser struct {
|
||||
w io.Writer
|
||||
}
|
||||
|
||||
func (i *identityWriteCloser) Write(p []byte) (int, error) {
|
||||
return i.w.Write(p)
|
||||
}
|
||||
|
||||
func (i *identityWriteCloser) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// DagArchive is equivalent to `ipfs getdag $hash | maybe_tar | maybe_gzip`
|
||||
func DagArchive(ctx cxt.Context, nd *mdag.Node, name string, dag mdag.DAGService, archive bool, compression int) (io.Reader, error) {
|
||||
|
||||
@ -29,15 +41,16 @@ func DagArchive(ctx cxt.Context, nd *mdag.Node, name string, dag mdag.DAGService
|
||||
bufw := bufio.NewWriterSize(pipew, DefaultBufSize)
|
||||
|
||||
// compression determines whether to use gzip compression.
|
||||
var maybeGzw io.Writer
|
||||
var maybeGzw io.WriteCloser
|
||||
var err error
|
||||
if compression != gzip.NoCompression {
|
||||
var err error
|
||||
maybeGzw, err = gzip.NewWriterLevel(bufw, compression)
|
||||
if err != nil {
|
||||
pipew.CloseWithError(err)
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
maybeGzw = bufw
|
||||
maybeGzw = &identityWriteCloser{bufw}
|
||||
}
|
||||
|
||||
if !archive && compression != gzip.NoCompression {
|
||||
@ -53,6 +66,11 @@ func DagArchive(ctx cxt.Context, nd *mdag.Node, name string, dag mdag.DAGService
|
||||
pipew.CloseWithError(err)
|
||||
return
|
||||
}
|
||||
maybeGzw.Close()
|
||||
if err := bufw.Flush(); err != nil {
|
||||
pipew.CloseWithError(err)
|
||||
return
|
||||
}
|
||||
pipew.Close() // everything seems to be ok.
|
||||
}()
|
||||
} else {
|
||||
@ -70,11 +88,12 @@ func DagArchive(ctx cxt.Context, nd *mdag.Node, name string, dag mdag.DAGService
|
||||
pipew.CloseWithError(err)
|
||||
return
|
||||
}
|
||||
w.Close()
|
||||
maybeGzw.Close()
|
||||
if err := bufw.Flush(); err != nil {
|
||||
pipew.CloseWithError(err)
|
||||
return
|
||||
}
|
||||
w.Close()
|
||||
pipew.Close() // everything seems to be ok.
|
||||
}()
|
||||
}
|
||||
|
||||
@ -60,8 +60,11 @@ func (w *Writer) writeFile(nd *mdag.Node, pb *upb.Data, fpath string) error {
|
||||
}
|
||||
|
||||
dagr := uio.NewDataFileReader(w.ctx, nd, pb, w.Dag)
|
||||
_, err := dagr.WriteTo(w.TarW)
|
||||
return err
|
||||
if _, err := dagr.WriteTo(w.TarW); err != nil {
|
||||
return err
|
||||
}
|
||||
w.TarW.Flush()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *Writer) WriteNode(nd *mdag.Node, fpath string) error {
|
||||
|
||||
Reference in New Issue
Block a user