Go implementation of the package url spec.
go get -u github.com/package-url/packageurl-go
The versions will follow the spec. So if the spec is released at 1.0. Then all versions in the 1.x.y will follow the 1.x spec.
package main
import (
"fmt"
"github.com/package-url/packageurl-go"
)
func main() {
instance := packageurl.NewPackageURL("test", "ok", "name", "version", nil, "")
fmt.Printf("%s", instance.ToString())
}package main
import (
"fmt"
"github.com/package-url/packageurl-go"
)
func main() {
instance, err := packageurl.FromString("test:ok/name@version")
if err != nil {
panic(err)
}
fmt.Printf("%#v", instance)
}Testing using the normal go test command. Using make test will pull the test fixtures shared between all package-url projects and then execute the tests.
curl -Ls https://raw.githubusercontent.com/package-url/purl-spec/master/test-suite-data.json -o testdata/test-suite-data.json
go test -v -cover ./...
=== RUN TestFromStringExamples
--- PASS: TestFromStringExamples (0.00s)
=== RUN TestToStringExamples
--- PASS: TestToStringExamples (0.00s)
=== RUN TestStringer
--- PASS: TestStringer (0.00s)
=== RUN TestQualifiersMapConversion
--- PASS: TestQualifiersMapConversion (0.00s)
PASS
github.com/package-url/packageurl-go coverage: 90.7% of statements
ok github.com/package-url/packageurl-go 0.004s coverage: 90.7% of statements
Fuzzing is done with standard Go fuzzing, introduced in Go 1.18.
Fuzz tests check for inputs that cause FromString to panic.
Using make fuzz will run fuzz tests for one minute.
To run fuzz tests longer:
go test -fuzztime=60m -fuzz .
Or omit -fuzztime entirely to run indefinitely.