tests/thirdparty: use Suite type for configuration (#285)

This commit is contained in:
Michael McLoughlin
2022-05-08 16:55:51 -07:00
committed by GitHub
parent 5e6971cc7a
commit 62c71109a4
13 changed files with 927 additions and 911 deletions

View File

@@ -25,4 +25,4 @@ jobs:
persist-credentials: false
- name: Run Third-Party Tests
working-directory: tests/thirdparty
run: go test -net -prjs projects.json
run: go test -net -suite suite.json

View File

@@ -33,7 +33,7 @@ var (
typ = flag.String("type", "", "documentation type")
tmpl = flag.String("tmpl", "", "explicit template file (overrides -type)")
output = flag.String("output", "", "path to output file (default stdout)")
prjsfilename = flag.String("prjs", "", "projects configuration")
suitefilename = flag.String("suite", "", "third-party test suite configuration")
)
func mainerr() (err error) {
@@ -60,18 +60,18 @@ func mainerr() (err error) {
}
// Load third-party projects.
if *prjsfilename == "" {
return errors.New("missing projects configuration")
if *suitefilename == "" {
return errors.New("missing test suite configuration")
}
prjs, err := thirdparty.LoadProjectsFile(*prjsfilename)
suite, err := thirdparty.LoadSuiteFile(*suitefilename)
if err != nil {
return err
}
// Execute.
data := map[string]interface{}{
"Projects": prjs,
"Suite": suite,
}
var buf bytes.Buffer

View File

@@ -1,5 +1,5 @@
# Adopters
{{ range .Projects.Ranked }}
{{ range .Suite.Projects.Ranked }}
{{ avatar .Repository.Owner 28 }} [{{ .Repository.Owner }} / **{{ .Repository.Name }}**]({{ .Repository.URL }})
{{ .Metadata.Description }}

View File

@@ -105,7 +105,7 @@ Implementations of full algorithms:
Popular projects using `avo`:
{{ range .Projects.Top 10 -}}
{{ range .Suite.Projects.Top 10 -}}
{{ if lt .Metadata.Stars 100 }}{{break}}{{ end -}}
{{ avatar .Repository.Owner 24 }} [{{ .Repository.Owner }} / **{{ .Repository.Name }}**]({{ .Repository.URL }})
:star: {{ stars .Metadata.Stars }}

View File

@@ -3,9 +3,9 @@
# Generate some specific files with docgen.
go install ./internal/cmd/docgen
prjs="tests/thirdparty/projects.json"
docgen -prjs "${prjs}" -type readme -output README.md
docgen -prjs "${prjs}" -type adopters -output doc/adopters.md
suite="tests/thirdparty/suite.json"
docgen -suite "${suite}" -type readme -output README.md
docgen -suite "${suite}" -type adopters -output doc/adopters.md
# Process simple file embeddings with embedmd.
find . -name '*.md' | xargs embedmd -w

View File

@@ -1,4 +1,4 @@
#!/bin/bash -ex
# Run metadata test in update mode.
go test ./tests/thirdparty/ -v -run Metadata -args -update -prjs projects.json -net
go test ./tests/thirdparty/ -v -run Metadata -args -update -suite suite.json -net

View File

@@ -353,44 +353,58 @@ func (p Projects) Top(n int) Projects {
return top
}
// LoadProjects loads a list of project configurations from JSON format.
func LoadProjects(r io.Reader) (Projects, error) {
var prjs Projects
d := json.NewDecoder(r)
d.DisallowUnknownFields()
if err := d.Decode(&prjs); err != nil {
return nil, err
}
prjs.defaults(true)
return prjs, nil
// Suite defines a third-party test suite.
type Suite struct {
Projects Projects `json:"projects"`
}
// LoadProjectsFile loads a list of project configurations from a JSON file.
func LoadProjectsFile(filename string) (Projects, error) {
func (s *Suite) defaults(set bool) {
s.Projects.defaults(set)
}
// Validate the test suite.
func (s *Suite) Validate() error {
return s.Projects.Validate()
}
// LoadSuite loads a test suite from JSON format.
func LoadSuite(r io.Reader) (*Suite, error) {
var s *Suite
d := json.NewDecoder(r)
d.DisallowUnknownFields()
if err := d.Decode(&s); err != nil {
return nil, err
}
s.defaults(true)
return s, nil
}
// LoadSuiteFile loads a test suite from a JSON file.
func LoadSuiteFile(filename string) (*Suite, error) {
f, err := os.Open(filename)
if err != nil {
return nil, err
}
defer f.Close()
return LoadProjects(f)
return LoadSuite(f)
}
// StoreProjects writes a list of project configurations in JSON format.
func StoreProjects(w io.Writer, prjs Projects) error {
// StoreSuite writes a test suite in JSON format.
func StoreSuite(w io.Writer, s *Suite) error {
e := json.NewEncoder(w)
e.SetIndent("", " ")
prjs.defaults(false)
err := e.Encode(prjs)
prjs.defaults(true)
s.defaults(false)
err := e.Encode(s)
s.defaults(true)
return err
}
// StoreProjectsFile writes a list of project configurations to a JSON file.
func StoreProjectsFile(filename string, prjs Projects) error {
// StoreSuiteFile writes a test suite to a JSON file.
func StoreSuiteFile(filename string, s *Suite) error {
f, err := os.Create(filename)
if err != nil {
return err
}
defer f.Close()
return StoreProjects(f, prjs)
return StoreSuite(f, s)
}

View File

@@ -107,17 +107,17 @@ func TestValidateErrors(t *testing.T) {
}
}
func TestLoadProjectsBad(t *testing.T) {
func TestLoadSuiteBad(t *testing.T) {
r := strings.NewReader(`[{"unknown_field": "value"}]`)
_, err := LoadProjects(r)
_, err := LoadSuite(r)
if err == nil {
t.Fatal("expected non-nil error")
}
}
func TestLoadProjectsFileNotExist(t *testing.T) {
prjs, err := LoadProjectsFile("does_not_exist")
if prjs != nil {
func TestLoadSuiteFileNotExist(t *testing.T) {
s, err := LoadSuiteFile("does_not_exist")
if s != nil {
t.Fatal("expected nil return")
}
if err == nil {
@@ -125,24 +125,24 @@ func TestLoadProjectsFileNotExist(t *testing.T) {
}
}
func TestProjectsFileValid(t *testing.T) {
prjs, err := LoadProjectsFile("projects.json")
func TestSuiteFileValid(t *testing.T) {
s, err := LoadSuiteFile("suite.json")
if err != nil {
t.Fatal(err)
}
for _, prj := range prjs {
for _, prj := range s.Projects {
t.Logf("read: %s", prj.ID())
}
if len(prjs) == 0 {
if len(s.Projects) == 0 {
t.Fatal("no packages loaded")
}
if err := prjs.Validate(); err != nil {
if err := s.Validate(); err != nil {
t.Fatal(err)
}
}
func TestProjectsFileStepsValid(t *testing.T) {
prjs, err := LoadProjectsFile("projects.json")
func TestSuiteFileStepsValid(t *testing.T) {
suite, err := LoadSuiteFile("suite.json")
if err != nil {
t.Fatal(err)
}
@@ -150,7 +150,7 @@ func TestProjectsFileStepsValid(t *testing.T) {
AvoDirectory: "avo",
RepositoryDirectory: "repo",
}
for _, prj := range prjs {
for _, prj := range suite.Projects {
for _, pkg := range prj.Packages {
for _, s := range pkg.Steps(c) {
if err := s.Validate(); err != nil {
@@ -161,25 +161,25 @@ func TestProjectsFileStepsValid(t *testing.T) {
}
}
func TestProjectsFileRoundtrip(t *testing.T) {
prjs, err := LoadProjectsFile("projects.json")
func TestSuiteFileRoundtrip(t *testing.T) {
s, err := LoadSuiteFile("suite.json")
if err != nil {
t.Fatal(err)
}
// Write and read back.
buf := bytes.NewBuffer(nil)
if err := StoreProjects(buf, prjs); err != nil {
if err := StoreSuite(buf, s); err != nil {
t.Fatal(err)
}
roundtrip, err := LoadProjects(buf)
roundtrip, err := LoadSuite(buf)
if err != nil {
t.Fatal(err)
}
// Should be identical.
if !reflect.DeepEqual(prjs, roundtrip) {
if !reflect.DeepEqual(s, roundtrip) {
t.Fatal("roundtrip mismatch")
}
}

View File

@@ -16,7 +16,7 @@ import (
)
var (
prjsfilename = flag.String("prjs", "", "projects configuration")
suitefilename = flag.String("suite", "", "third-party test suite configuration")
output = flag.String("output", "", "path to output file (default stdout)")
)
@@ -29,13 +29,13 @@ func main() {
func mainerr() error {
flag.Parse()
// Read projects.
prjs, err := thirdparty.LoadProjectsFile(*prjsfilename)
// Read third-party test suite.
suite, err := thirdparty.LoadSuiteFile(*suitefilename)
if err != nil {
return err
}
if err := prjs.Validate(); err != nil {
if err := suite.Validate(); err != nil {
return err
}
@@ -51,7 +51,7 @@ func mainerr() error {
}
// Generate workflow file.
b, err := GenerateWorkflow(prjs)
b, err := GenerateWorkflow(suite)
if err != nil {
return err
}
@@ -64,7 +64,7 @@ func mainerr() error {
return nil
}
func GenerateWorkflow(prjs thirdparty.Projects) ([]byte, error) {
func GenerateWorkflow(s *thirdparty.Suite) ([]byte, error) {
g := &prnt.Generator{}
g.SetIndentString(" ")
@@ -87,7 +87,7 @@ func GenerateWorkflow(prjs thirdparty.Projects) ([]byte, error) {
// One job per test case.
g.Linef("jobs:")
g.Indent()
for _, t := range prjs.Tests() {
for _, t := range s.Projects.Tests() {
g.Linef("%s:", t.ID())
g.Indent()

View File

@@ -11,18 +11,18 @@ import (
var update = flag.Bool("update", false, "update project metadata")
func TestProjectsFileMetadata(t *testing.T) {
func TestSuiteFileMetadata(t *testing.T) {
test.RequiresNetwork(t)
ctx := context.Background()
prjs, err := LoadProjectsFile("projects.json")
s, err := LoadSuiteFile("suite.json")
if err != nil {
t.Fatal(err)
}
g := github.NewClient(github.WithTokenFromEnvironment())
for _, prj := range prjs {
for _, prj := range s.Projects {
// Fetch metadata.
r, err := g.Repository(ctx, prj.Repository.Owner, prj.Repository.Name)
if err != nil {
@@ -50,23 +50,23 @@ func TestProjectsFileMetadata(t *testing.T) {
}
}
if err := StoreProjectsFile("projects.json", prjs); err != nil {
if err := StoreSuiteFile("suite.json", s); err != nil {
t.Fatal(err)
}
}
func TestProjectsFileKnownIssues(t *testing.T) {
func TestSuiteFileKnownIssues(t *testing.T) {
test.RequiresNetwork(t)
ctx := context.Background()
prjs, err := LoadProjectsFile("projects.json")
s, err := LoadSuiteFile("suite.json")
if err != nil {
t.Fatal(err)
}
g := github.NewClient(github.WithTokenFromEnvironment())
for _, prj := range prjs {
for _, prj := range s.Projects {
// Skipped packages must refer to an open issue.
if !prj.Skip() {
continue

View File

@@ -10,11 +10,11 @@ import (
"github.com/mmcloughlin/avo/internal/test"
)
//go:generate go run make_workflow.go -prjs projects.json -output ../../.github/workflows/packages.yml
//go:generate go run make_workflow.go -suite suite.json -output ../../.github/workflows/packages.yml
// Custom flags.
var (
prjsfilename = flag.String("prjs", "", "projects configuration")
suitefilename = flag.String("suite", "", "projects configuration")
preserve = flag.Bool("preserve", false, "preserve working directories")
latest = flag.Bool("latest", false, "use latest versions of each project")
)
@@ -22,17 +22,17 @@ var (
// TestPackages runs integration tests on all packages specified by projects
// file given on the command line.
func TestPackages(t *testing.T) {
// Load projects.
if *prjsfilename == "" {
t.Skip("no projects specified")
// Load suite.
if *suitefilename == "" {
t.Skip("no suite specified")
}
prjs, err := LoadProjectsFile(*prjsfilename)
s, err := LoadSuiteFile(*suitefilename)
if err != nil {
t.Fatal(err)
}
for _, tst := range prjs.Tests() {
for _, tst := range s.Projects.Tests() {
tst := tst // scopelint
t.Run(tst.ID(), func(t *testing.T) {
if tst.Project.Skip() {

View File

@@ -1,833 +0,0 @@
[
{
"repository": {
"owner": "zeebo",
"name": "xxh3"
},
"metadata": {
"description": "XXH3 algorithm in Go",
"stars": 240
},
"default_branch": "master",
"version": "v1.0.0-rc1",
"packages": [
{
"module": "avo/go.mod",
"generate": [
{
"dir": "avo",
"commands": [
"go run . -avx -out ../accum_vector_avx_amd64.s",
"go run . -sse -out ../accum_vector_sse_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-sip13"
},
"metadata": {
"description": "siphash 1-3",
"stars": 32
},
"default_branch": "master",
"version": "62edffca92457b3a66125c686137cc5f0fe81672",
"packages": [
{
"module": "_avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-sip13"
]
},
{
"name": "Setup Generator Module",
"dir": "_avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-sip13/_avo"
]
}
],
"generate": [
{
"dir": "_avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-sip13@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-sip13=../",
"go run . -out ../sip13_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "phoreproject",
"name": "bls"
},
"metadata": {
"description": "Go implementation of the BLS12-381 pairing",
"stars": 81
},
"default_branch": "master",
"version": "a88a5ae26844d7293359422888d7c7f69f43c845",
"packages": [
{
"module": "asm/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod tidy"
]
},
{
"name": "Setup Generator Module",
"dir": "asm",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/phoreproject/bls/asm"
]
}
],
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/phoreproject/bls@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/phoreproject/bls=../",
"go mod download",
"go run . -out ../primitivefuncs_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "minio",
"name": "md5-simd"
},
"metadata": {
"description": "Accelerate aggregated MD5 hashing performance up to 8x for AVX512 and 4x for AVX2. Useful for server applications that need to compute many MD5 sums in parallel.",
"stars": 111
},
"default_branch": "master",
"version": "30ad8af83f6868c2a30c615f3edf1a9366bf3f89",
"packages": [
{
"module": "_gen/go.mod",
"generate": [
{
"dir": "_gen",
"commands": [
"go run gen.go -out ../md5block_amd64.s -stubs ../md5block_amd64.go -pkg md5simd"
]
}
]
}
]
},
{
"repository": {
"owner": "zeebo",
"name": "blake3"
},
"metadata": {
"description": "Pure Go implementation of BLAKE3 with AVX2 and SSE4.1 acceleration",
"stars": 288
},
"default_branch": "master",
"version": "25dba572f0e78ec108f0dd79c9c15288f542d7d9",
"packages": [
{
"module": "avo/go.mod",
"generate": [
{
"dir": "avo",
"commands": [
"go run ./avx2 -out ../avx2/impl.s",
"go run ./sse41 -out ../sse41/impl.s"
]
}
]
}
]
},
{
"repository": {
"owner": "klauspost",
"name": "reedsolomon"
},
"metadata": {
"description": "Reed-Solomon Erasure Coding in Go",
"stars": 1444
},
"default_branch": "master",
"version": "922778284547557265cff0f903ab5f4c27e40ae9",
"packages": [
{
"module": "_gen/go.mod",
"generate": [
{
"dir": "_gen",
"commands": [
"go run gen.go -out ../galois_gen_amd64.s -stubs ../galois_gen_amd64.go -pkg reedsolomon"
]
}
]
}
]
},
{
"repository": {
"owner": "orisano",
"name": "wyhash"
},
"metadata": {
"description": "A pure-Go wyhash implementation.",
"stars": 24
},
"default_branch": "master",
"version": "32a3f7f6ba4797e2d87dab2969cc9dd63d39cce9",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"go mod init github.com/orisano/wyhash/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blocks_amd64.s -stubs ../blocks_amd64.go -pkg wyhash"
]
}
]
}
]
},
{
"repository": {
"owner": "klauspost",
"name": "compress"
},
"metadata": {
"description": "Optimized Go Compression Packages",
"stars": 2894
},
"default_branch": "master",
"version": "2f236383d7c2faa8ef7e354ccecb926a5b47a24d",
"packages": [
{
"pkg": "s2",
"module": "_generate/go.mod",
"generate": [
{
"dir": "_generate",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "zstd",
"module": "_generate/go.mod",
"generate": [
{
"dir": "_generate",
"commands": [
"go generate -v -x"
]
}
],
"test": [
{
"commands": [
"go test -short"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-bloomindex"
},
"metadata": {
"description": "Bloom-filter based search index",
"stars": 111
},
"default_branch": "master",
"version": "0902316dce158c154b958ee5cfc706c62af29a42",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-bloomindex",
"go get github.com/dgryski/go-bits@v0.0.0-20180113010104-bd8a69a71dc2"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-bloomindex/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run asm.go -out ../query_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-marvin32"
},
"metadata": {
"description": "Assembly-optimized Marvin32 hash function",
"stars": 12
},
"default_branch": "master",
"version": "7d18f4c6ea7c24b29d1c7a670f8ae40b0812f2e3",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-marvin32"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-marvin32/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-marvin32@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-marvin32=../",
"go run asm.go -out ../marvin_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-speck"
},
"metadata": {
"description": "SPECK cipher",
"stars": 10
},
"default_branch": "master",
"version": "5b36d4c08d8840c352a153bf37281434ad550ec0",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-speck",
"go get github.com/dgryski/go-skipjack@v0.0.0-20150401095227-f3a984a142ab"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-speck/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-speck@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-speck=../",
"go run asm.go -out ../speck_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-chaskey"
},
"metadata": {
"description": "go-chaskey: an implementation of chaskey, an efficient MAC for microcontrollers",
"stars": 8
},
"default_branch": "master",
"version": "ba454392bc5ab6daae103e15147185f8f4a27dcc",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-chaskey",
"go get github.com/dchest/siphash@v1.2.2"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-chaskey/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-chaskey@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-chaskey=../",
"go run asm.go -out ../core_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "lukechampine",
"name": "us"
},
"metadata": {
"description": "An alternative interface to Sia",
"stars": 52
},
"default_branch": "master",
"version": "dff56a80f83653cb14eeeb57ba6ba3c3e942c412",
"packages": [
{
"pkg": "merkle/blake2b",
"module": "avo/go.mod",
"setup": [
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv gen.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' gen.go",
"go mod init github.com/lukechampine/us/merkle/blake2b/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blake2b_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "segmentio",
"name": "asm"
},
"metadata": {
"description": "Go library providing algorithms optimized to leverage the characteristics of modern CPUs",
"stars": 706
},
"default_branch": "main",
"version": "2bf3fdd47b1cdbe8fe020f032caf14891e10a85f",
"packages": [
{
"module": "build/go.mod",
"generate": [
{
"commands": [
"make --always-make build"
]
}
]
}
]
},
{
"repository": {
"owner": "ericlagergren",
"name": "lwcrypto"
},
"metadata": {
"description": "NIST Lightweight Cryptography finalists",
"stars": 4
},
"default_branch": "main",
"version": "0c42b05eddc34c58bf8e0cd4250c5cd2c256ea57",
"packages": [
{
"pkg": "ascon",
"module": "asm/go.mod",
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -require=github.com/ericlagergren/lwcrypto@v0.0.0-00010101000000-000000000000",
"go generate -v -x"
]
}
]
},
{
"pkg": "grain",
"module": "asm/go.mod",
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -require=github.com/ericlagergren/lwcrypto@v0.0.0-00010101000000-000000000000",
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "oasisprotocol",
"name": "curve25519-voi"
},
"metadata": {
"description": "High-performance Curve25519/ristretto255 for Go",
"stars": 46
},
"default_branch": "master",
"version": "d5a936accd94ef9da4c0fe9db0a6342dcdcfeadf",
"packages": [
{
"module": "internal/asm/amd64/go.mod",
"generate": [
{
"dir": "internal/asm/amd64",
"commands": [
"bash -ex gen.sh"
]
}
]
}
]
},
{
"repository": {
"owner": "oasisprotocol",
"name": "deoxysii"
},
"metadata": {
"description": "Go Deoxys-II-256-128",
"stars": 17
},
"default_branch": "master",
"version": "2091330c22b71dd4e04e15306498e68f3a1b3afc",
"packages": [
{
"module": "internal/hardware/asm/go.mod",
"generate": [
{
"dir": "internal/hardware/asm",
"commands": [
"bash -ex gen.sh"
]
}
]
}
]
},
{
"repository": {
"owner": "golang",
"name": "crypto"
},
"metadata": {
"description": "[mirror] Go supplementary cryptography libraries",
"homepage": "https://golang.org/x/crypto",
"stars": 2416
},
"default_branch": "master",
"version": "089bfa5675191fd96a44247682f76ebca03d7916",
"packages": [
{
"pkg": "curve25519",
"module": "internal/field/_asm/go.mod",
"generate": [
{
"dir": "internal/field/_asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "FiloSottile",
"name": "edwards25519"
},
"metadata": {
"description": "filippo.io/edwards25519 — A safer, faster, and more powerful low-level edwards25519 Go implementation.",
"homepage": "https://filippo.io/edwards25519",
"stars": 83
},
"default_branch": "main",
"version": "v1.0.0-rc.1",
"packages": [
{
"module": "field/_asm/go.mod",
"generate": [
{
"dir": "field/_asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "lukechampine",
"name": "blake3"
},
"metadata": {
"description": "A pure-Go implementation of the BLAKE3 cryptographic hash function",
"stars": 279
},
"default_branch": "master",
"version": "v1.1.7",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/build ignore/d' gen.go",
"go mod init github.com/lukechampine/blake3/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blake3_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "mmcloughlin",
"name": "md4"
},
"metadata": {
"description": "Assembly-optimized MD4 hash algorithm in Go",
"stars": 15
},
"default_branch": "main",
"version": "v0.1.2",
"packages": [
{
"module": "asm/go.mod",
"generate": [
{
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "golang",
"name": "go"
},
"metadata": {
"description": "The Go programming language",
"homepage": "https://go.dev",
"stars": 98831
},
"default_branch": "master",
"version": "go1.17.3",
"packages": [
{
"module": "src/crypto/ed25519/internal/edwards25519/field/_asm/go.mod",
"setup": [
{
"name": "Compile Go Toolchain",
"dir": "src",
"commands": [
"./make.bash"
]
}
],
"generate": [
{
"dir": "src/crypto/ed25519/internal/edwards25519/field/_asm",
"commands": [
"go generate -v -x"
]
}
],
"test": [
{
"commands": [
"env --unset=GOROOT ./bin/go test crypto/ed25519/..."
]
}
]
}
]
},
{
"repository": {
"owner": "cloudflare",
"name": "circl"
},
"metadata": {
"description": "CIRCL: Cloudflare Interoperable Reusable Cryptographic Library",
"homepage": "http://blog.cloudflare.com/introducing-circl",
"stars": 616
},
"default_branch": "master",
"version": "v1.1.0",
"packages": [
{
"pkg": "sign/dilithium",
"module": "internal/common/asm/go.mod",
"generate": [
{
"dir": "internal/common/asm",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "pke/kyber",
"module": "internal/common/asm/go.mod",
"generate": [
{
"dir": "internal/common/asm",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "simd/keccakf1600",
"module": "internal/asm/go.mod",
"generate": [
{
"dir": "internal/asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
}
]

835
tests/thirdparty/suite.json vendored Normal file
View File

@@ -0,0 +1,835 @@
{
"projects": [
{
"repository": {
"owner": "zeebo",
"name": "xxh3"
},
"metadata": {
"description": "XXH3 algorithm in Go",
"stars": 240
},
"default_branch": "master",
"version": "v1.0.0-rc1",
"packages": [
{
"module": "avo/go.mod",
"generate": [
{
"dir": "avo",
"commands": [
"go run . -avx -out ../accum_vector_avx_amd64.s",
"go run . -sse -out ../accum_vector_sse_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-sip13"
},
"metadata": {
"description": "siphash 1-3",
"stars": 32
},
"default_branch": "master",
"version": "62edffca92457b3a66125c686137cc5f0fe81672",
"packages": [
{
"module": "_avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-sip13"
]
},
{
"name": "Setup Generator Module",
"dir": "_avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-sip13/_avo"
]
}
],
"generate": [
{
"dir": "_avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-sip13@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-sip13=../",
"go run . -out ../sip13_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "phoreproject",
"name": "bls"
},
"metadata": {
"description": "Go implementation of the BLS12-381 pairing",
"stars": 81
},
"default_branch": "master",
"version": "a88a5ae26844d7293359422888d7c7f69f43c845",
"packages": [
{
"module": "asm/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod tidy"
]
},
{
"name": "Setup Generator Module",
"dir": "asm",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/phoreproject/bls/asm"
]
}
],
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/phoreproject/bls@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/phoreproject/bls=../",
"go mod download",
"go run . -out ../primitivefuncs_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "minio",
"name": "md5-simd"
},
"metadata": {
"description": "Accelerate aggregated MD5 hashing performance up to 8x for AVX512 and 4x for AVX2. Useful for server applications that need to compute many MD5 sums in parallel.",
"stars": 111
},
"default_branch": "master",
"version": "30ad8af83f6868c2a30c615f3edf1a9366bf3f89",
"packages": [
{
"module": "_gen/go.mod",
"generate": [
{
"dir": "_gen",
"commands": [
"go run gen.go -out ../md5block_amd64.s -stubs ../md5block_amd64.go -pkg md5simd"
]
}
]
}
]
},
{
"repository": {
"owner": "zeebo",
"name": "blake3"
},
"metadata": {
"description": "Pure Go implementation of BLAKE3 with AVX2 and SSE4.1 acceleration",
"stars": 288
},
"default_branch": "master",
"version": "25dba572f0e78ec108f0dd79c9c15288f542d7d9",
"packages": [
{
"module": "avo/go.mod",
"generate": [
{
"dir": "avo",
"commands": [
"go run ./avx2 -out ../avx2/impl.s",
"go run ./sse41 -out ../sse41/impl.s"
]
}
]
}
]
},
{
"repository": {
"owner": "klauspost",
"name": "reedsolomon"
},
"metadata": {
"description": "Reed-Solomon Erasure Coding in Go",
"stars": 1444
},
"default_branch": "master",
"version": "922778284547557265cff0f903ab5f4c27e40ae9",
"packages": [
{
"module": "_gen/go.mod",
"generate": [
{
"dir": "_gen",
"commands": [
"go run gen.go -out ../galois_gen_amd64.s -stubs ../galois_gen_amd64.go -pkg reedsolomon"
]
}
]
}
]
},
{
"repository": {
"owner": "orisano",
"name": "wyhash"
},
"metadata": {
"description": "A pure-Go wyhash implementation.",
"stars": 24
},
"default_branch": "master",
"version": "32a3f7f6ba4797e2d87dab2969cc9dd63d39cce9",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"go mod init github.com/orisano/wyhash/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blocks_amd64.s -stubs ../blocks_amd64.go -pkg wyhash"
]
}
]
}
]
},
{
"repository": {
"owner": "klauspost",
"name": "compress"
},
"metadata": {
"description": "Optimized Go Compression Packages",
"stars": 2894
},
"default_branch": "master",
"version": "2f236383d7c2faa8ef7e354ccecb926a5b47a24d",
"packages": [
{
"pkg": "s2",
"module": "_generate/go.mod",
"generate": [
{
"dir": "_generate",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "zstd",
"module": "_generate/go.mod",
"generate": [
{
"dir": "_generate",
"commands": [
"go generate -v -x"
]
}
],
"test": [
{
"commands": [
"go test -short"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-bloomindex"
},
"metadata": {
"description": "Bloom-filter based search index",
"stars": 111
},
"default_branch": "master",
"version": "0902316dce158c154b958ee5cfc706c62af29a42",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-bloomindex",
"go get github.com/dgryski/go-bits@v0.0.0-20180113010104-bd8a69a71dc2"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-bloomindex/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run asm.go -out ../query_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-marvin32"
},
"metadata": {
"description": "Assembly-optimized Marvin32 hash function",
"stars": 12
},
"default_branch": "master",
"version": "7d18f4c6ea7c24b29d1c7a670f8ae40b0812f2e3",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-marvin32"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-marvin32/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-marvin32@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-marvin32=../",
"go run asm.go -out ../marvin_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-speck"
},
"metadata": {
"description": "SPECK cipher",
"stars": 10
},
"default_branch": "master",
"version": "5b36d4c08d8840c352a153bf37281434ad550ec0",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-speck",
"go get github.com/dgryski/go-skipjack@v0.0.0-20150401095227-f3a984a142ab"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-speck/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-speck@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-speck=../",
"go run asm.go -out ../speck_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "dgryski",
"name": "go-chaskey"
},
"metadata": {
"description": "go-chaskey: an implementation of chaskey, an efficient MAC for microcontrollers",
"stars": 8
},
"default_branch": "master",
"version": "ba454392bc5ab6daae103e15147185f8f4a27dcc",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Root Module",
"commands": [
"go mod init github.com/dgryski/go-chaskey",
"go get github.com/dchest/siphash@v1.2.2"
]
},
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv asm.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' asm.go",
"go mod init github.com/dgryski/go-chaskey/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go mod edit -modfile=go.mod -require=github.com/dgryski/go-chaskey@v0.0.0-00010101000000-000000000000",
"go mod edit -modfile=go.mod -replace=github.com/dgryski/go-chaskey=../",
"go run asm.go -out ../core_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "lukechampine",
"name": "us"
},
"metadata": {
"description": "An alternative interface to Sia",
"stars": 52
},
"default_branch": "master",
"version": "dff56a80f83653cb14eeeb57ba6ba3c3e942c412",
"packages": [
{
"pkg": "merkle/blake2b",
"module": "avo/go.mod",
"setup": [
{
"name": "Create Generator Module",
"commands": [
"mkdir avo",
"git mv gen.go avo"
]
},
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/+build ignore/d' gen.go",
"go mod init github.com/lukechampine/us/merkle/blake2b/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blake2b_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "segmentio",
"name": "asm"
},
"metadata": {
"description": "Go library providing algorithms optimized to leverage the characteristics of modern CPUs",
"stars": 706
},
"default_branch": "main",
"version": "2bf3fdd47b1cdbe8fe020f032caf14891e10a85f",
"packages": [
{
"module": "build/go.mod",
"generate": [
{
"commands": [
"make --always-make build"
]
}
]
}
]
},
{
"repository": {
"owner": "ericlagergren",
"name": "lwcrypto"
},
"metadata": {
"description": "NIST Lightweight Cryptography finalists",
"stars": 4
},
"default_branch": "main",
"version": "0c42b05eddc34c58bf8e0cd4250c5cd2c256ea57",
"packages": [
{
"pkg": "ascon",
"module": "asm/go.mod",
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -require=github.com/ericlagergren/lwcrypto@v0.0.0-00010101000000-000000000000",
"go generate -v -x"
]
}
]
},
{
"pkg": "grain",
"module": "asm/go.mod",
"generate": [
{
"dir": "asm",
"commands": [
"go mod edit -require=github.com/ericlagergren/lwcrypto@v0.0.0-00010101000000-000000000000",
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "oasisprotocol",
"name": "curve25519-voi"
},
"metadata": {
"description": "High-performance Curve25519/ristretto255 for Go",
"stars": 46
},
"default_branch": "master",
"version": "d5a936accd94ef9da4c0fe9db0a6342dcdcfeadf",
"packages": [
{
"module": "internal/asm/amd64/go.mod",
"generate": [
{
"dir": "internal/asm/amd64",
"commands": [
"bash -ex gen.sh"
]
}
]
}
]
},
{
"repository": {
"owner": "oasisprotocol",
"name": "deoxysii"
},
"metadata": {
"description": "Go Deoxys-II-256-128",
"stars": 17
},
"default_branch": "master",
"version": "2091330c22b71dd4e04e15306498e68f3a1b3afc",
"packages": [
{
"module": "internal/hardware/asm/go.mod",
"generate": [
{
"dir": "internal/hardware/asm",
"commands": [
"bash -ex gen.sh"
]
}
]
}
]
},
{
"repository": {
"owner": "golang",
"name": "crypto"
},
"metadata": {
"description": "[mirror] Go supplementary cryptography libraries",
"homepage": "https://golang.org/x/crypto",
"stars": 2416
},
"default_branch": "master",
"version": "089bfa5675191fd96a44247682f76ebca03d7916",
"packages": [
{
"pkg": "curve25519",
"module": "internal/field/_asm/go.mod",
"generate": [
{
"dir": "internal/field/_asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "FiloSottile",
"name": "edwards25519"
},
"metadata": {
"description": "filippo.io/edwards25519 — A safer, faster, and more powerful low-level edwards25519 Go implementation.",
"homepage": "https://filippo.io/edwards25519",
"stars": 83
},
"default_branch": "main",
"version": "v1.0.0-rc.1",
"packages": [
{
"module": "field/_asm/go.mod",
"generate": [
{
"dir": "field/_asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "lukechampine",
"name": "blake3"
},
"metadata": {
"description": "A pure-Go implementation of the BLAKE3 cryptographic hash function",
"stars": 279
},
"default_branch": "master",
"version": "v1.1.7",
"packages": [
{
"module": "avo/go.mod",
"setup": [
{
"name": "Setup Generator Module",
"dir": "avo",
"commands": [
"sed -i.bak '/build ignore/d' gen.go",
"go mod init github.com/lukechampine/blake3/avo"
]
}
],
"generate": [
{
"dir": "avo",
"commands": [
"go run gen.go -out ../blake3_amd64.s"
]
}
]
}
]
},
{
"repository": {
"owner": "mmcloughlin",
"name": "md4"
},
"metadata": {
"description": "Assembly-optimized MD4 hash algorithm in Go",
"stars": 15
},
"default_branch": "main",
"version": "v0.1.2",
"packages": [
{
"module": "asm/go.mod",
"generate": [
{
"commands": [
"go generate -v -x"
]
}
]
}
]
},
{
"repository": {
"owner": "golang",
"name": "go"
},
"metadata": {
"description": "The Go programming language",
"homepage": "https://go.dev",
"stars": 98831
},
"default_branch": "master",
"version": "go1.17.3",
"packages": [
{
"module": "src/crypto/ed25519/internal/edwards25519/field/_asm/go.mod",
"setup": [
{
"name": "Compile Go Toolchain",
"dir": "src",
"commands": [
"./make.bash"
]
}
],
"generate": [
{
"dir": "src/crypto/ed25519/internal/edwards25519/field/_asm",
"commands": [
"go generate -v -x"
]
}
],
"test": [
{
"commands": [
"env --unset=GOROOT ./bin/go test crypto/ed25519/..."
]
}
]
}
]
},
{
"repository": {
"owner": "cloudflare",
"name": "circl"
},
"metadata": {
"description": "CIRCL: Cloudflare Interoperable Reusable Cryptographic Library",
"homepage": "http://blog.cloudflare.com/introducing-circl",
"stars": 616
},
"default_branch": "master",
"version": "v1.1.0",
"packages": [
{
"pkg": "sign/dilithium",
"module": "internal/common/asm/go.mod",
"generate": [
{
"dir": "internal/common/asm",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "pke/kyber",
"module": "internal/common/asm/go.mod",
"generate": [
{
"dir": "internal/common/asm",
"commands": [
"go generate -v -x"
]
}
]
},
{
"pkg": "simd/keccakf1600",
"module": "internal/asm/go.mod",
"generate": [
{
"dir": "internal/asm",
"commands": [
"go generate -v -x"
]
}
]
}
]
}
]
}