mirror of
https://github.com/waku-org/go-multiaddr.git
synced 2025-02-23 03:28:12 +00:00
Merge pull request #99 from multiformats/feat/bin
Add conformance testing
This commit is contained in:
commit
e1825f7b50
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
.vscode/
|
.vscode/
|
||||||
|
multiaddr/multiaddr
|
||||||
|
tmp/
|
||||||
|
@ -9,8 +9,8 @@ go:
|
|||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- GOTFLAGS="-race"
|
- GOTFLAGS="-race"
|
||||||
|
- GO111MODULE=on
|
||||||
matrix:
|
matrix:
|
||||||
- BUILD_DEPTYPE=gx
|
|
||||||
- BUILD_DEPTYPE=gomod
|
- BUILD_DEPTYPE=gomod
|
||||||
|
|
||||||
|
|
||||||
@ -20,11 +20,10 @@ install:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- bash <(curl -s https://raw.githubusercontent.com/ipfs/ci-helpers/master/travis-ci/run-standard-tests.sh)
|
- bash <(curl -s https://raw.githubusercontent.com/ipfs/ci-helpers/master/travis-ci/run-standard-tests.sh)
|
||||||
|
- make conformance
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $GOPATH/src/gx
|
|
||||||
- $GOPATH/pkg/mod
|
- $GOPATH/pkg/mod
|
||||||
- /home/travis/.cache/go-build
|
- /home/travis/.cache/go-build
|
||||||
|
|
||||||
|
12
Makefile
12
Makefile
@ -12,3 +12,15 @@ deps: gx covertools
|
|||||||
publish:
|
publish:
|
||||||
gx-go rewrite --undo
|
gx-go rewrite --undo
|
||||||
|
|
||||||
|
conformance: tmp/multiaddr
|
||||||
|
go build -o tmp/multiaddr/test/go-multiaddr ./multiaddr
|
||||||
|
cd tmp/multiaddr/test && MULTIADDR_BIN="./go-multiaddr" go test -v
|
||||||
|
|
||||||
|
tmp/multiaddr:
|
||||||
|
mkdir -p tmp/
|
||||||
|
git clone https://github.com/multiformats/multiaddr tmp/multiaddr/
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf tmp/
|
||||||
|
|
||||||
|
.PHONY: gx covertools deps publish conformance clean
|
||||||
|
2
codecov.yml
Normal file
2
codecov.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ignore:
|
||||||
|
- "multiaddr"
|
93
multiaddr/main.go
Normal file
93
multiaddr/main.go
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/hex"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
maddr "github.com/multiformats/go-multiaddr"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
flagHelp bool
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Usage = func() {
|
||||||
|
usage := `usage: %s [options] ADDR
|
||||||
|
|
||||||
|
Print details about the given multiaddr.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
`
|
||||||
|
fmt.Fprintf(os.Stderr, usage, os.Args[0])
|
||||||
|
flag.PrintDefaults()
|
||||||
|
}
|
||||||
|
|
||||||
|
flag.BoolVar(&flagHelp, "h", false, "display help message")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if flagHelp || len(flag.Args()) == 0 {
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
addrStr := flag.Args()[0]
|
||||||
|
var addr maddr.Multiaddr
|
||||||
|
var err error
|
||||||
|
if strings.HasPrefix(addrStr, "0x") {
|
||||||
|
addrBytes, err := hex.DecodeString(addrStr[2:])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "parse error: %s\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
addr, err = maddr.NewMultiaddrBytes(addrBytes)
|
||||||
|
} else {
|
||||||
|
addr, err = maddr.NewMultiaddr(addrStr)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "parse error: %s\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
infoCommand(addr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func infoCommand(addr maddr.Multiaddr) {
|
||||||
|
var compsJson []string
|
||||||
|
maddr.ForEach(addr, func(comp maddr.Component) bool {
|
||||||
|
lengthPrefix := ""
|
||||||
|
if comp.Protocol().Size == maddr.LengthPrefixedVarSize {
|
||||||
|
lengthPrefix = "0x" + hex.EncodeToString(maddr.CodeToVarint(len(comp.RawValue())))
|
||||||
|
}
|
||||||
|
|
||||||
|
compsJson = append(compsJson, `{`+
|
||||||
|
fmt.Sprintf(`"string": "%s", `, comp.String())+
|
||||||
|
fmt.Sprintf(`"stringSize": "%d", `, len(comp.String()))+
|
||||||
|
fmt.Sprintf(`"packed": "0x%x", `, comp.Bytes())+
|
||||||
|
fmt.Sprintf(`"packedSize": "%d", `, len(comp.Bytes()))+
|
||||||
|
fmt.Sprintf(`"value": %#v, `, comp.Value())+
|
||||||
|
fmt.Sprintf(`"rawValue": "0x%x", `, comp.RawValue())+
|
||||||
|
fmt.Sprintf(`"valueSize": "%d", `, len(comp.RawValue()))+
|
||||||
|
fmt.Sprintf(`"protocol": "%s", `, comp.Protocol().Name)+
|
||||||
|
fmt.Sprintf(`"codec": "%d", `, comp.Protocol().Code)+
|
||||||
|
fmt.Sprintf(`"uvarint": "0x%x", `, comp.Protocol().VCode)+
|
||||||
|
fmt.Sprintf(`"lengthPrefix": "%s"`, lengthPrefix)+
|
||||||
|
`}`)
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
addrJson := `{
|
||||||
|
"string": "%[1]s",
|
||||||
|
"stringSize": "%[2]d",
|
||||||
|
"packed": "0x%[3]x",
|
||||||
|
"packedSize": "%[4]d",
|
||||||
|
"components": [
|
||||||
|
%[5]s
|
||||||
|
]
|
||||||
|
}`
|
||||||
|
fmt.Fprintf(os.Stdout, addrJson+"\n",
|
||||||
|
addr.String(), len(addr.String()), addr.Bytes(), len(addr.Bytes()), strings.Join(compsJson, ",\n "))
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user