Browse Source

Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop

obscuren 10 years ago
parent
commit
5c975dd4ed
6 changed files with 55 additions and 19 deletions
  1. 0 8
      .travis.yml
  2. 4 2
      accounts/accounts_test.go
  3. 9 4
      gocoverage.sh
  4. 38 5
      state/state_test.go
  5. 3 0
      tests/vm/nowarn.go
  6. 1 0
      update-license.go

+ 0 - 8
.travis.yml

@@ -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:

+ 4 - 2
accounts/accounts_test.go

@@ -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)

+ 9 - 4
gocoverage.sh

@@ -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

+ 38 - 5
state/state_test.go

@@ -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}
-	value := []byte("foo")
-	s.state.trie.Update(key, value)
-	dump := s.state.Dump()
-	c.Assert(dump, checker.NotNil)
+	// generate a few entries
+	obj1 := s.state.GetOrNewStateObject([]byte{0x01})
+	obj1.AddBalance(big.NewInt(22))
+	obj2 := s.state.GetOrNewStateObject([]byte{0x01, 0x02})
+	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) {

+ 3 - 0
tests/vm/nowarn.go

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

+ 1 - 0
update-license.go

@@ -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