GitHub - phylum-dev/purl-survey: Package URL implementation test harness
This repository contains code for exercising several PURL implementations.
For each supported implementation, there are two small programs that read lines from stdin and write lines to stdout:
These programs are in survey/drivers.
$ python -m survey.parse
pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
althonos/packageurl.rs: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
anchore/packageurl-go: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
giterlizzi/perl-URI-PackageURL: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
iseki0/PUrlKt: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
maennchen/purl: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-dotnet: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-go: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-java: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-js: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-php: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-python: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-ruby: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
package-url/packageurl-swift: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
phylum-dev/purl: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
sonatype/package-url-java: {"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
$ python -m survey.format
{"type": "deb", "name": "curl", "namespace": "debian", "version": "7.50.3-1", "qualifiers": {"arch": "i386", "distro": "jessie"}}
althonos/packageurl.rs: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
anchore/packageurl-go: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
giterlizzi/perl-URI-PackageURL: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
iseki0/PUrlKt: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
maennchen/purl: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-dotnet: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-go: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-java: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-js: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-php: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-python: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-ruby: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
package-url/packageurl-swift: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
phylum-dev/purl: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
sonatype/package-url-java: pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
$ python -m survey.check
pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io%2Frelease
pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io%2Frelease parsed to {"type": "maven", "name": "batik-anim", "namespace": "org.apache.xmlgraphics", "version": "1.9.1", "qualifiers": {"repository_url": "repo.spring.io/release"}}
Formatted as "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io/release" by althonos/packageurl.rs, giterlizzi/perl-URI-PackageURL, maennchen/purl, phylum-dev/purl, iseki0/PUrlKt, sonatype/package-url-java, package-url/packageurl-python, package-url/packageurl-swift, package-url/packageurl-dotnet, package-url/packageurl-php
pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io/release parsed to {"type": "maven", "name": "batik-anim", "namespace": "org.apache.xmlgraphics", "version": "1.9.1", "qualifiers": {"repository_url": "repo.spring.io/release"}}
Results are output as JSON.
$ python -m survey.suite
[
{
"implementation": "althonos/packageurl.rs",
"code": "unexpected_success",
"test": "invalid swift purl without name",
"reason": "Expected an error for invalid purl pkg:swift/github.com/Alamofire/@5.4.3",
"expected": "[error]",
"actual": {
"type": "swift",
"name": "Alamofire",
"namespace": "github.com",
"version": "5.4.3"
}
},
…