ethereumproject / go-ethereum

Go language implementation of the original/classic design of the Ethereum protocol
GNU Lesser General Public License v3.0
441 stars 166 forks source link

'make test' fails - core: not enough arguments in call to set.New #717

Closed meowsbits closed 5 years ago

meowsbits commented 5 years ago

rel 1f7609a7b36a20e03c801d85c22cea6c38a5f31a

ubp52 ~/go/src/github.com/ethereumproject/go-ethereum master *%=
$ git rev-parse HEAD
1f7609a7b36a20e03c801d85c22cea6c38a5f31a
ubp52 ~/go/src/github.com/ethereumproject/go-ethereum master *%=
$ make test
echo 'mode: atomic' > coverage.txt && \
GO111MODULE=on go list ./... | xargs -n1 -I{} sh -c 'go test -covermode=atomic -coverprofile=coverage.tmp {} && \
tail -n +2 coverage.tmp >> coverage.txt' && \
rm coverage.tmp
ok      github.com/ethereumproject/go-ethereum/accounts 8.460s  coverage: 73.8% of statements
ok      github.com/ethereumproject/go-ethereum/accounts/abi     0.016s  coverage: 82.4% of statements
?       github.com/ethereumproject/go-ethereum/cmd/abigen       [no test files]
?       github.com/ethereumproject/go-ethereum/cmd/bootnode     [no test files]
?       github.com/ethereumproject/go-ethereum/cmd/disasm       [no test files]
# github.com/ethereumproject/go-ethereum/core
core/block_validator.go:157:19: not enough arguments in call to set.New
        have ()
        want (set.SetType)
# github.com/ethereumproject/go-ethereum/core
core/block_validator.go:157:19: not enough arguments in call to set.New
        have ()
        want (set.SetType)
# github.com/ethereumproject/go-ethereum/rpc
rpc/server.go:60:3: cannot use set.New() (type set.Interface) as type *set.Set in field value: need type assertion
rpc/server.go:60:25: not enough arguments in call to set.New
        have ()
        want (set.SetType)
rpc/websocket.go:56:20: not enough arguments in call to set.New
        have ()
        want (set.SetType)
# github.com/ethereumproject/go-ethereum/core
core/block_validator.go:157:19: not enough arguments in call to set.New
        have ()
        want (set.SetType)
FAIL    github.com/ethereumproject/go-ethereum/cmd/geth [build failed]
# github.com/ethereumproject/go-ethereum/rpc
rpc/server.go:60:3: cannot use set.New() (type set.Interface) as type *set.Set in field value: need type assertion
rpc/server.go:60:25: not enough arguments in call to set.New
        have ()
        want (set.SetType)
rpc/websocket.go:56:20: not enough arguments in call to set.New
        have ()
        want (set.SetType)
# github.com/ethereumproject/go-ethereum/core
core/block_validator.go:157:19: not enough arguments in call to set.New
        have ()
        want (set.SetType)
?       github.com/ethereumproject/go-ethereum/cmd/rlpdump      [no test files]
^CMakefile:94: recipe for target 'test' failed
make: *** [test] Interrupt

ubp52 ~/go/src/github.com/ethereumproject/go-ethereum master *%=
$ uname -a
Linux ubp52 4.17.4-041704-generic #201807031235 SMP Tue Jul 3 12:37:29 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
GregTheGreek commented 5 years ago

We need to port over our GitHub issue templates cc: @noot

@meowsbits can you let me know which go version you're using, and also if you have gomodules turned on? That's typically the error when you're not on the correct version.

$ go version $ echo $GO111MODS

austinabell commented 5 years ago

The issue was GO111MODULE=on flag was not persisted through the multi-part make test command. The fix is simple and will be in soon, but the issue is go modules is turned off by default when running within your $GOPATH, solution would be to export the GO111MODULE=on flag or simply just run the code outside of the $GOPATH until the fix is in.

Edit: To give more context if it is appreciated, you had a bad version of a dependency used by the client before changes downloaded, and when running the code within the $GOPATH it uses those dependencies in the $GOPATH instead of the defined module dependencies in go.mod.

soc1c commented 5 years ago

Fixed https://github.com/eth-classic/go-ethereum/pull/60