Merge pull request #355 from fjl/test-fixes

Fix failing tests and speed up Travis builds
pull/351/merge
Jeffrey Wilcke 10 years ago
commit 63031f571a
  1. 8
      .travis.yml
  2. 6
      accounts/accounts_test.go
  3. 13
      gocoverage.sh
  4. 43
      state/state_test.go
  5. 3
      tests/vm/nowarn.go
  6. 1
      update-license.go

@ -6,18 +6,10 @@ before_install:
- sudo apt-get update -qq - sudo apt-get update -qq
- sudo apt-get install -yqq libgmp3-dev libreadline6-dev qt54quickcontrols qt54webengine - sudo apt-get install -yqq libgmp3-dev libreadline6-dev qt54quickcontrols qt54webengine
install: install:
- go get code.google.com/p/go.tools/cmd/goimports
- go get github.com/golang/lint/golint
# - go get golang.org/x/tools/cmd/vet # - go get golang.org/x/tools/cmd/vet
- if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
- go get github.com/mattn/goveralls - go get github.com/mattn/goveralls
- go get gopkg.in/check.v1
- go get github.com/tools/godep
before_script: before_script:
- godep restore
- gofmt -l -w .
- goimports -l -w .
- golint .
# - go vet ./... # - go vet ./...
# - go test -race ./... # - go test -race ./...
script: script:

@ -1,8 +1,10 @@
package accounts package accounts
import ( import (
"github.com/ethereum/go-ethereum/crypto"
"testing" "testing"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/randentropy"
) )
func TestAccountManager(t *testing.T) { func TestAccountManager(t *testing.T) {
@ -10,7 +12,7 @@ func TestAccountManager(t *testing.T) {
am := NewAccountManager(ks) am := NewAccountManager(ks)
pass := "" // not used but required by API pass := "" // not used but required by API
a1, err := am.NewAccount(pass) a1, err := am.NewAccount(pass)
toSign := crypto.GetEntropyCSPRNG(32) toSign := randentropy.GetEntropyCSPRNG(32)
_, err = am.Sign(a1, pass, toSign) _, err = am.Sign(a1, pass, toSign)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

@ -1,11 +1,16 @@
#!/bin/bash #!/bin/bash
# The script does automatic checking on a Go package and its sub-packages, including:
# 6. test coverage (http://blog.golang.org/cover)
set -e set -e
# Run test coverage on each subdirectories and merge the coverage profile. # Add godep workspace to GOPATH. We do it manually instead of using
# 'godep go test' or 'godep restore' so godep doesn't need to be installed.
GOPATH="$PWD/Godeps/_workspace:$GOPATH"
# Install packages before testing. Not doing this would cause
# 'go test' to recompile all package dependencies before testing each package.
go install ./...
# Run test coverage on each subdirectories and merge the coverage profile.
echo "mode: count" > profile.cov echo "mode: count" > profile.cov
# Standard go tooling behavior is to ignore dirs with leading underscors # Standard go tooling behavior is to ignore dirs with leading underscors
@ -13,7 +18,7 @@ for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d)
do do
if ls $dir/*.go &> /dev/null; then if ls $dir/*.go &> /dev/null; then
# echo $dir # echo $dir
if [[ $dir != "./tests/vm" ]] if [[ $dir != "./tests/vm" && $dir != "." ]]
then then
go test -covermode=count -coverprofile=$dir/profile.tmp $dir go test -covermode=count -coverprofile=$dir/profile.tmp $dir
fi fi

@ -1,6 +1,8 @@
package state package state
import ( import (
"math/big"
checker "gopkg.in/check.v1" checker "gopkg.in/check.v1"
"github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/ethdb"
@ -16,11 +18,42 @@ var _ = checker.Suite(&StateSuite{})
// var ZeroHash256 = make([]byte, 32) // var ZeroHash256 = make([]byte, 32)
func (s *StateSuite) TestDump(c *checker.C) { func (s *StateSuite) TestDump(c *checker.C) {
key := []byte{0x01} // generate a few entries
value := []byte("foo") obj1 := s.state.GetOrNewStateObject([]byte{0x01})
s.state.trie.Update(key, value) obj1.AddBalance(big.NewInt(22))
dump := s.state.Dump() obj2 := s.state.GetOrNewStateObject([]byte{0x01, 0x02})
c.Assert(dump, checker.NotNil) obj2.SetCode([]byte{3, 3, 3, 3, 3, 3, 3})
obj3 := s.state.GetOrNewStateObject([]byte{0x02})
obj3.SetBalance(big.NewInt(44))
// write some of them to the trie
s.state.UpdateStateObject(obj1)
s.state.UpdateStateObject(obj2)
// check that dump contains the state objects that are in trie
got := string(s.state.Dump())
want := `{
"root": "4e3a59299745ba6752247c8b91d0f716dac9ec235861c91f5ac1894a361d87ba",
"accounts": {
"0000000000000000000000000000000000000001": {
"balance": "22",
"nonce": 0,
"root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"codeHash": "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"storage": {}
},
"0000000000000000000000000000000000000102": {
"balance": "0",
"nonce": 0,
"root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"codeHash": "87874902497a5bb968da31a2998d8f22e949d1ef6214bcdedd8bae24cca4b9e3",
"storage": {}
}
}
}`
if got != want {
c.Errorf("dump mismatch:\ngot: %s\nwant: %s\n", got, want)
}
} }
func (s *StateSuite) SetUpTest(c *checker.C) { func (s *StateSuite) SetUpTest(c *checker.C) {

@ -0,0 +1,3 @@
// This silences the warning given by 'go install ./...'.
package vm

@ -1,4 +1,5 @@
// +build none // +build none
/* /*
This command generates GPL license headers on top of all source files. This command generates GPL license headers on top of all source files.
You can run it once per month, before cutting a release or just You can run it once per month, before cutting a release or just

Loading…
Cancel
Save