Merge pull request #374 from nspcc-dev/makefile-and-gofmt

Makefile convenience targets and gofmt
This commit is contained in:
Roman Khimov 2019-09-09 15:05:12 +03:00 committed by GitHub
commit a039ae6cdb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 68 additions and 35 deletions

View file

@ -13,6 +13,11 @@ executors:
- image: circleci/golang:1.12 - image: circleci/golang:1.12
environment: environment:
GO111MODULE: "on" GO111MODULE: "on"
go1_13:
docker:
- image: circleci/golang:1.13
environment:
GO111MODULE: "on"
commands: commands:
gomod: gomod:
@ -29,7 +34,7 @@ commands:
jobs: jobs:
lint: lint:
working_directory: /go/src/github.com/CityOfZion/neo-go working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12 executor: go1_13
steps: steps:
- checkout - checkout
- gomod - gomod
@ -41,7 +46,7 @@ jobs:
vet: vet:
working_directory: /go/src/github.com/CityOfZion/neo-go working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12 executor: go1_13
steps: steps:
- checkout - checkout
- gomod - gomod
@ -60,6 +65,14 @@ jobs:
test_1_12: test_1_12:
working_directory: /go/src/github.com/CityOfZion/neo-go working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_12 executor: go1_12
steps:
- checkout
- gomod
- run: go test -v -race ./...
test_1_13:
working_directory: /go/src/github.com/CityOfZion/neo-go
executor: go1_13
steps: steps:
- checkout - checkout
- gomod - gomod
@ -118,6 +131,10 @@ workflows:
filters: filters:
tags: tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/ only: v/[0-9]+\.[0-9]+\.[0-9]+/
- test_1_13:
filters:
tags:
only: v/[0-9]+\.[0-9]+\.[0-9]+/
- build_cli: - build_cli:
filters: filters:
tags: tags:

4
.gitignore vendored
View file

@ -40,3 +40,7 @@ blockchains/
# patch # patch
*.orig *.orig
*.rej *.rej
# Coverage
coverage.txt
coverage.html

View file

@ -7,6 +7,11 @@ REPO ?= "$(shell go list -m)"
VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')" VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')"
BUILD_FLAGS = "-X $(REPO)/config.Version=$(VERSION)" BUILD_FLAGS = "-X $(REPO)/config.Version=$(VERSION)"
# All of the targets are phony here because we don't really use make dependency
# tracking for files
.PHONY: build deps image check-version clean-cluster push-tag push-to-registry \
run run-cluster test vet lint fmt cover
build: deps build: deps
@echo "=> Building binary" @echo "=> Building binary"
@set -x \ @set -x \
@ -60,3 +65,13 @@ test:
vet: vet:
@go vet ./... @go vet ./...
lint:
@go list ./... | xargs -L1 golint -set_exit_status
fmt:
@gofmt -l -w -s $$(find . -type f -name '*.go'| grep -v "/vendor/")
cover:
@go test -v -race ./... -coverprofile=coverage.txt -covermode=atomic
@go tool cover -html=coverage.txt -o coverage.html

View file

@ -16,11 +16,11 @@ const (
userAgentFormat = "/NEO-GO:%s/" userAgentFormat = "/NEO-GO:%s/"
// ModeMainNet contains magic code used in the NEO main official network. // ModeMainNet contains magic code used in the NEO main official network.
ModeMainNet NetMode = 0x00746e41 // 7630401 ModeMainNet NetMode = 0x00746e41 // 7630401
// ModeTestNet contains magic code used in the NEO testing network. // ModeTestNet contains magic code used in the NEO testing network.
ModeTestNet NetMode = 0x74746e41 // 1953787457 ModeTestNet NetMode = 0x74746e41 // 1953787457
// ModePrivNet contains magic code usually used for NEO private networks. // ModePrivNet contains magic code usually used for NEO private networks.
ModePrivNet NetMode = 56753 // docker privnet ModePrivNet NetMode = 56753 // docker privnet
// ModeUnitTestNet is a stub magic code used for testing purposes. // ModeUnitTestNet is a stub magic code used for testing purposes.
ModeUnitTestNet NetMode = 0 ModeUnitTestNet NetMode = 0
) )

View file

@ -176,7 +176,7 @@ func TestBinBlockDecodeEncode(t *testing.T) {
func TestBlockSizeCalculation(t *testing.T) { func TestBlockSizeCalculation(t *testing.T) {
// block taken from mainnet: 0006d3ff96e269f599eb1b5c5a527c218439e498dcc65b63794591bbcdc0516b // block taken from mainnet: 0006d3ff96e269f599eb1b5c5a527c218439e498dcc65b63794591bbcdc0516b
// The Size in golang is given by counting the number of bytes of an object. (len(Bytes)) // The Size in golang is given by counting the number of bytes of an object. (len(Bytes))
// its implementation is different from the corresponding C# and python implentation. But the result should // its implementation is different from the corresponding C# and python implementations. But the result should
// should be the same.In this test we provide more details then necessary because in case of failure we can easily debug the // should be the same.In this test we provide more details then necessary because in case of failure we can easily debug the
// root cause of the size calculation missmatch. // root cause of the size calculation missmatch.
@ -250,7 +250,6 @@ func TestBlockSizeCalculation(t *testing.T) {
assert.Equal(t, "552102486fd15702c4490a26703112a5cc1d0923fd697a33406bd5a1c00e0013b09a7021024c7b7fb6c310fccf1ba33b082519d82964ea93868d676662d4a59ad548df0e7d2102aaec38470f6aad0042c6e877cfd8087d2676b0f516fddd362801b9bd3936399e2103b209fd4f53a7170ea4444e0cb0a6bb6a53c2bd016926989cf85f9b0fba17a70c2103b8d9d5771d8f513aa0869b9cc8d50986403b78c6da36890638c3d46a5adce04a2102ca0e27697b9c248f6f16e085fd0061e26f44da85b58ee835c110caa5ec3ba5542102df48f60e8f3e01c48ff40b9b7f1310d7a8b2a193188befe1c2e3df740e89509357ae", hex.EncodeToString(b.Script.VerificationScript)) assert.Equal(t, "552102486fd15702c4490a26703112a5cc1d0923fd697a33406bd5a1c00e0013b09a7021024c7b7fb6c310fccf1ba33b082519d82964ea93868d676662d4a59ad548df0e7d2102aaec38470f6aad0042c6e877cfd8087d2676b0f516fddd362801b9bd3936399e2103b209fd4f53a7170ea4444e0cb0a6bb6a53c2bd016926989cf85f9b0fba17a70c2103b8d9d5771d8f513aa0869b9cc8d50986403b78c6da36890638c3d46a5adce04a2102ca0e27697b9c248f6f16e085fd0061e26f44da85b58ee835c110caa5ec3ba5542102df48f60e8f3e01c48ff40b9b7f1310d7a8b2a193188befe1c2e3df740e89509357ae", hex.EncodeToString(b.Script.VerificationScript))
assert.Equal(t, "0006d3ff96e269f599eb1b5c5a527c218439e498dcc65b63794591bbcdc0516b", b.Hash().ReverseString()) assert.Equal(t, "0006d3ff96e269f599eb1b5c5a527c218439e498dcc65b63794591bbcdc0516b", b.Hash().ReverseString())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err = b.EncodeBinary(buf) err = b.EncodeBinary(buf)

View file

@ -67,7 +67,7 @@ func (attr *Attribute) EncodeBinary(w io.Writer) error {
var urllen = uint8(len(attr.Data)) var urllen = uint8(len(attr.Data))
bw.WriteLE(urllen) bw.WriteLE(urllen)
fallthrough fallthrough
case Script, ContractHash, Vote, Hash1, Hash2, Hash3, Hash4, Hash5, Hash6, case Script, ContractHash, Vote, Hash1, Hash2, Hash3, Hash4, Hash5, Hash6,
Hash7, Hash8, Hash9, Hash10, Hash11, Hash12, Hash13, Hash14, Hash15: Hash7, Hash8, Hash9, Hash10, Hash11, Hash12, Hash13, Hash14, Hash15:
bw.WriteLE(attr.Data) bw.WriteLE(attr.Data)
default: default:

View file

@ -13,7 +13,7 @@ type InvocationTX struct {
Script []byte Script []byte
// Gas cost of the smart contract. // Gas cost of the smart contract.
Gas util.Fixed8 Gas util.Fixed8
Version uint8 Version uint8
} }
@ -36,7 +36,7 @@ func NewInvocationTX(script []byte) *Transaction {
func (tx *InvocationTX) DecodeBinary(r io.Reader) error { func (tx *InvocationTX) DecodeBinary(r io.Reader) error {
br := util.BinReader{R: r} br := util.BinReader{R: r}
tx.Script = br.ReadBytes() tx.Script = br.ReadBytes()
if (tx.Version >= 1) { if tx.Version >= 1 {
br.ReadLE(&tx.Gas) br.ReadLE(&tx.Gas)
} else { } else {
tx.Gas = util.Fixed8FromInt64(0) tx.Gas = util.Fixed8FromInt64(0)
@ -48,7 +48,7 @@ func (tx *InvocationTX) DecodeBinary(r io.Reader) error {
func (tx *InvocationTX) EncodeBinary(w io.Writer) error { func (tx *InvocationTX) EncodeBinary(w io.Writer) error {
bw := util.BinWriter{W: w} bw := util.BinWriter{W: w}
bw.WriteBytes(tx.Script) bw.WriteBytes(tx.Script)
if (tx.Version >= 1) { if tx.Version >= 1 {
bw.WriteLE(tx.Gas) bw.WriteLE(tx.Gas)
} }
return bw.Err return bw.Err
@ -57,7 +57,7 @@ func (tx *InvocationTX) EncodeBinary(w io.Writer) error {
// Size returns serialized binary size for this transaction. // Size returns serialized binary size for this transaction.
func (tx *InvocationTX) Size() int { func (tx *InvocationTX) Size() int {
sz := util.GetVarSize(tx.Script) sz := util.GetVarSize(tx.Script)
if (tx.Version >= 1) { if tx.Version >= 1 {
sz += tx.Gas.Size() sz += tx.Gas.Size()
} }
return sz return sz

View file

@ -40,7 +40,6 @@ func NEP2ScryptParams() ScryptParams {
} }
} }
// NEP2Encrypt encrypts a the PrivateKey using a given passphrase // NEP2Encrypt encrypts a the PrivateKey using a given passphrase
// under the NEP-2 standard. // under the NEP-2 standard.
func NEP2Encrypt(priv *PrivateKey, passphrase string) (s string, err error) { func NEP2Encrypt(priv *PrivateKey, passphrase string) (s string, err error) {

View file

@ -5,11 +5,10 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/stretchr/testify/assert"
"github.com/CityOfZion/neo-go/pkg/internal/keytestcases" "github.com/CityOfZion/neo-go/pkg/internal/keytestcases"
"github.com/stretchr/testify/assert"
) )
func TestPrivateKey(t *testing.T) { func TestPrivateKey(t *testing.T) {
for _, testCase := range keytestcases.Arr { for _, testCase := range keytestcases.Arr {
privKey, err := NewPrivateKeyFromHex(testCase.PrivateKey) privKey, err := NewPrivateKeyFromHex(testCase.PrivateKey)

View file

@ -11,8 +11,8 @@ import (
"io" "io"
"math/big" "math/big"
"github.com/CityOfZion/neo-go/pkg/crypto/hash"
"github.com/CityOfZion/neo-go/pkg/crypto" "github.com/CityOfZion/neo-go/pkg/crypto"
"github.com/CityOfZion/neo-go/pkg/crypto/hash"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
@ -150,7 +150,7 @@ func (p *PublicKey) DecodeBinary(r io.Reader) error {
return err return err
} }
x = new(big.Int).SetBytes(xbytes) x = new(big.Int).SetBytes(xbytes)
ylsb := uint(prefix&0x1) ylsb := uint(prefix & 0x1)
y, err = decodeCompressedY(x, ylsb) y, err = decodeCompressedY(x, ylsb)
if err != nil { if err != nil {
return err return err

View file

@ -99,7 +99,7 @@ func (wif WIF) GetVerificationScript() []byte {
) )
var ( var (
vScript []byte vScript []byte
pubkey *PublicKey pubkey *PublicKey
) )
pubkey = wif.PrivateKey.PublicKey() pubkey = wif.PrivateKey.PublicKey()
vScript = append([]byte{pushbytes33}, pubkey.Bytes()...) vScript = append([]byte{pushbytes33}, pubkey.Bytes()...)

View file

@ -352,5 +352,5 @@ func (s *Server) RelayDirectly(p Peer, inv *payload.Inventory) {
} }
func init() { func init() {
rand.Seed(time.Now().UTC().UnixNano()) rand.Seed(time.Now().UTC().UnixNano())
} }

View file

@ -7,8 +7,8 @@ package rpc
import ( import (
"github.com/CityOfZion/neo-go/pkg/core/transaction" "github.com/CityOfZion/neo-go/pkg/core/transaction"
"github.com/CityOfZion/neo-go/pkg/util"
"github.com/CityOfZion/neo-go/pkg/crypto/keys" "github.com/CityOfZion/neo-go/pkg/crypto/keys"
"github.com/CityOfZion/neo-go/pkg/util"
) )
type ( type (

View file

@ -12,11 +12,11 @@ import (
// AccountState wrapper used for the representation of // AccountState wrapper used for the representation of
// core.AccountState on the RPC Server. // core.AccountState on the RPC Server.
type AccountState struct { type AccountState struct {
Version uint8 `json:"version"` Version uint8 `json:"version"`
ScriptHash util.Uint160 `json:"script_hash"` ScriptHash util.Uint160 `json:"script_hash"`
IsFrozen bool `json:"frozen"` IsFrozen bool `json:"frozen"`
Votes []*keys.PublicKey `json:"votes"` Votes []*keys.PublicKey `json:"votes"`
Balances []Balance `json:"balances"` Balances []Balance `json:"balances"`
} }
// Balances type for sorting balances in rpc response // Balances type for sorting balances in rpc response

View file

@ -170,9 +170,9 @@ func TestVarSize(t *testing.T) {
"test_string_3", "test_string_3",
41, 41,
}, },
{[]*smthSerializable{&smthSerializable{}, &smthSerializable{}}, {[]*smthSerializable{{}, {}},
"test_Serializable", "test_Serializable",
2 * 42 + 1, 2*42 + 1,
}, },
} }

View file

@ -361,7 +361,7 @@ func (c *codegen) Visit(node ast.Node) ast.Visitor {
case token.LOR: case token.LOR:
ast.Walk(c, n.X) ast.Walk(c, n.X)
emitJmp(c.prog, vm.JMPIF, int16(len(c.l) - 3)) emitJmp(c.prog, vm.JMPIF, int16(len(c.l)-3))
ast.Walk(c, n.Y) ast.Walk(c, n.Y)
return nil return nil

View file

@ -18,7 +18,7 @@ type testCase struct {
func run_testcases(t *testing.T, tcases []testCase) { func run_testcases(t *testing.T, tcases []testCase) {
for _, tcase := range tcases { for _, tcase := range tcases {
t.Run(tcase.name, func(t *testing.T) {eval(t, tcase.src, tcase.result)}) t.Run(tcase.name, func(t *testing.T) { eval(t, tcase.src, tcase.result) })
} }
} }

View file

@ -7,8 +7,8 @@ import (
"log" "log"
"math/big" "math/big"
"os" "os"
"text/tabwriter"
"reflect" "reflect"
"text/tabwriter"
"github.com/CityOfZion/neo-go/pkg/crypto/hash" "github.com/CityOfZion/neo-go/pkg/crypto/hash"
"github.com/CityOfZion/neo-go/pkg/util" "github.com/CityOfZion/neo-go/pkg/util"
@ -311,7 +311,7 @@ func (v *VM) execute(ctx *Context, op Instruction) {
l := int(v.estack.Pop().BigInt().Int64()) l := int(v.estack.Pop().BigInt().Int64())
o := int(v.estack.Pop().BigInt().Int64()) o := int(v.estack.Pop().BigInt().Int64())
s := v.estack.Pop().Bytes() s := v.estack.Pop().Bytes()
v.estack.PushVal(s[o:o+l]) v.estack.PushVal(s[o : o+l])
case LEFT: case LEFT:
l := int(v.estack.Pop().BigInt().Int64()) l := int(v.estack.Pop().BigInt().Int64())
s := v.estack.Pop().Bytes() s := v.estack.Pop().Bytes()
@ -419,7 +419,7 @@ func (v *VM) execute(ctx *Context, op Instruction) {
case EQUAL: case EQUAL:
b := v.estack.Pop() b := v.estack.Pop()
a := v.estack.Pop() a := v.estack.Pop()
v.estack.PushVal(reflect.DeepEqual(a,b)) v.estack.PushVal(reflect.DeepEqual(a, b))
// Bit operations. // Bit operations.
case INVERT: case INVERT:

View file

@ -789,9 +789,9 @@ func TestUNPACKGood(t *testing.T) {
assert.Equal(t, 5, vm.estack.Len()) assert.Equal(t, 5, vm.estack.Len())
assert.Equal(t, int64(len(elements)), vm.estack.Peek(0).BigInt().Int64()) assert.Equal(t, int64(len(elements)), vm.estack.Peek(0).BigInt().Int64())
for k, v := range elements { for k, v := range elements {
assert.Equal(t, int64(v), vm.estack.Peek(k + 1).BigInt().Int64()) assert.Equal(t, int64(v), vm.estack.Peek(k+1).BigInt().Int64())
} }
assert.Equal(t, int64(1), vm.estack.Peek(len(elements) + 1).BigInt().Int64()) assert.Equal(t, int64(1), vm.estack.Peek(len(elements)+1).BigInt().Int64())
} }
func TestREVERSEBadNotArray(t *testing.T) { func TestREVERSEBadNotArray(t *testing.T) {
@ -833,7 +833,7 @@ func TestREVERSEGood(t *testing.T) {
a := vm.estack.Peek(0).Array() a := vm.estack.Peek(0).Array()
assert.Equal(t, len(elements), len(a)) assert.Equal(t, len(elements), len(a))
for k, v := range elements { for k, v := range elements {
e := a[len(a) - 1 - k].Value().(*big.Int) e := a[len(a)-1-k].Value().(*big.Int)
assert.Equal(t, int64(v), e.Int64()) assert.Equal(t, int64(v), e.Int64())
} }
assert.Equal(t, int64(1), vm.estack.Peek(1).BigInt().Int64()) assert.Equal(t, int64(1), vm.estack.Peek(1).BigInt().Int64())

View file

@ -1,8 +1,8 @@
package wallet package wallet
import ( import (
"github.com/CityOfZion/neo-go/pkg/util"
"github.com/CityOfZion/neo-go/pkg/crypto/keys" "github.com/CityOfZion/neo-go/pkg/crypto/keys"
"github.com/CityOfZion/neo-go/pkg/util"
) )
// Account represents a NEO account. It holds the private and public key // Account represents a NEO account. It holds the private and public key