- Deleted old deb822_encode.go and deb822_types.go files. - Introduced new deb822_encode.go with improved Marshall function and Writer struct for encoding. - Added deb822_decode.go for decoding functionality with enhanced error handling. - Created deb822_rawdata.go to define RawData type for handling raw deb822 values. - Implemented Description type in deb822/datatype/description.go for structured description handling. - Updated Package struct in dpkg/header.go to use new Description type. - Refactored UnmarshalBinary method in dpkg/header.go to utilize new deb822 decoding logic. - Added comprehensive tests for encoding and decoding in deb822_encode_test.go and deb822_decode_test.go. - Removed internal scanner package as it was no longer needed. Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package dpkg_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"sirherobrine23.com.br/sirherobrine23/go-dpkg/apt"
|
|
"sirherobrine23.com.br/sirherobrine23/go-dpkg/dpkg"
|
|
)
|
|
|
|
func TestReaderDpkg(t *testing.T) {
|
|
pkgSum := apt.Sum{File: "main/binary-amd64/Packages.gz"}
|
|
pkgs := pkgSum.Pkgs("stable", &apt.AptSource{
|
|
Suites: []string{"main", "stable"},
|
|
URIs: []*url.URL{
|
|
{
|
|
Scheme: "http",
|
|
Host: "ftp.debian.org",
|
|
Path: "/debian",
|
|
},
|
|
},
|
|
})
|
|
|
|
curlExec := false
|
|
for pkg, err := range pkgs {
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
} else if pkg.Name == "curl" {
|
|
curlExec = true
|
|
} else {
|
|
continue
|
|
}
|
|
|
|
deb, err := pkg.Download(&url.URL{Scheme: "http", Host: "ftp.debian.org", Path: "/debian"})
|
|
if err != nil {
|
|
t.Errorf("cannot get curl package: %s", err)
|
|
return
|
|
}
|
|
defer deb.Close()
|
|
|
|
pkgInfo, tarRead, err := dpkg.NewReader(deb)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
tarRead.Close()
|
|
|
|
pkgJson, _ := json.MarshalIndent(pkgInfo, "", " ")
|
|
t.Logf("Package info:\n%s", pkgJson)
|
|
|
|
break
|
|
}
|
|
|
|
if !curlExec {
|
|
t.Error("curl package not found")
|
|
}
|
|
}
|