Skip to content

Commit 0743243

Browse files
committed
Add --skip option to CLI
Disassociates hardcoded tests to skip when running via CLI. Tests still skipped when running `go test`
1 parent a9659e6 commit 0743243

File tree

9 files changed

+94
-79
lines changed

9 files changed

+94
-79
lines changed

cmd/ethtest/main.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"io/ioutil"
2929
"os"
3030
"path/filepath"
31+
"strings"
3132

3233
"github.com/codegangsta/cli"
3334
"github.com/ethereum/go-ethereum/logger/glog"
@@ -40,6 +41,7 @@ var (
4041
defaultTest = "all"
4142
defaultDir = "."
4243
allTests = []string{"BlockTests", "StateTests", "TransactionTests", "VMTests"}
44+
skipTests = []string{}
4345

4446
TestFlag = cli.StringFlag{
4547
Name: "test",
@@ -60,20 +62,24 @@ var (
6062
Name: "stdin",
6163
Usage: "Accept input from stdin instead of reading from file",
6264
}
65+
SkipTestsFlag = cli.StringFlag{
66+
Name: "skip",
67+
Usage: "Tests names to skip",
68+
}
6369
)
6470

6571
func runTestWithReader(test string, r io.Reader) error {
6672
glog.Infoln("runTest", test)
6773
var err error
6874
switch test {
6975
case "bt", "BlockTest", "BlockTests", "BlockChainTest":
70-
err = tests.RunBlockTestWithReader(r)
76+
err = tests.RunBlockTestWithReader(r, skipTests)
7177
case "st", "state", "StateTest", "StateTests":
72-
err = tests.RunStateTestWithReader(r)
78+
err = tests.RunStateTestWithReader(r, skipTests)
7379
case "tx", "TransactionTest", "TransactionTests":
74-
err = tests.RunTransactionTestsWithReader(r)
80+
err = tests.RunTransactionTestsWithReader(r, skipTests)
7581
case "vm", "VMTest", "VMTests":
76-
err = tests.RunVmTestWithReader(r)
82+
err = tests.RunVmTestWithReader(r, skipTests)
7783
default:
7884
err = fmt.Errorf("Invalid test type specified: %v", test)
7985
}
@@ -174,6 +180,7 @@ func setupApp(c *cli.Context) {
174180
flagFile := c.GlobalString(FileFlag.Name)
175181
continueOnError = c.GlobalBool(ContinueOnErrorFlag.Name)
176182
useStdIn := c.GlobalBool(ReadStdInFlag.Name)
183+
skipTests = strings.Split(c.GlobalString(SkipTestsFlag.Name), " ")
177184

178185
if !useStdIn {
179186
runSuite(flagTest, flagFile)
@@ -200,6 +207,7 @@ func main() {
200207
FileFlag,
201208
ContinueOnErrorFlag,
202209
ReadStdInFlag,
210+
SkipTestsFlag,
203211
}
204212

205213
if err := app.Run(os.Args); err != nil {

tests/block_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,67 +6,67 @@ import (
66
)
77

88
func TestBcValidBlockTests(t *testing.T) {
9-
err := RunBlockTest(filepath.Join(blockTestDir, "bcValidBlockTest.json"))
9+
err := RunBlockTest(filepath.Join(blockTestDir, "bcValidBlockTest.json"), BlockSkipTests)
1010
if err != nil {
1111
t.Fatal(err)
1212
}
1313
}
1414

1515
func TestBcUncleTests(t *testing.T) {
16-
err := RunBlockTest(filepath.Join(blockTestDir, "bcUncleTest.json"))
16+
err := RunBlockTest(filepath.Join(blockTestDir, "bcUncleTest.json"), BlockSkipTests)
1717
if err != nil {
1818
t.Fatal(err)
1919
}
20-
err = RunBlockTest(filepath.Join(blockTestDir, "bcBruncleTest.json"))
20+
err = RunBlockTest(filepath.Join(blockTestDir, "bcBruncleTest.json"), BlockSkipTests)
2121
if err != nil {
2222
t.Fatal(err)
2323
}
2424
}
2525

2626
func TestBcUncleHeaderValidityTests(t *testing.T) {
27-
err := RunBlockTest(filepath.Join(blockTestDir, "bcUncleHeaderValiditiy.json"))
27+
err := RunBlockTest(filepath.Join(blockTestDir, "bcUncleHeaderValiditiy.json"), BlockSkipTests)
2828
if err != nil {
2929
t.Fatal(err)
3030
}
3131
}
3232

3333
func TestBcInvalidHeaderTests(t *testing.T) {
34-
err := RunBlockTest(filepath.Join(blockTestDir, "bcInvalidHeaderTest.json"))
34+
err := RunBlockTest(filepath.Join(blockTestDir, "bcInvalidHeaderTest.json"), BlockSkipTests)
3535
if err != nil {
3636
t.Fatal(err)
3737
}
3838
}
3939

4040
func TestBcInvalidRLPTests(t *testing.T) {
41-
err := RunBlockTest(filepath.Join(blockTestDir, "bcInvalidRLPTest.json"))
41+
err := RunBlockTest(filepath.Join(blockTestDir, "bcInvalidRLPTest.json"), BlockSkipTests)
4242
if err != nil {
4343
t.Fatal(err)
4444
}
4545
}
4646

4747
func TestBcRPCAPITests(t *testing.T) {
48-
err := RunBlockTest(filepath.Join(blockTestDir, "bcRPC_API_Test.json"))
48+
err := RunBlockTest(filepath.Join(blockTestDir, "bcRPC_API_Test.json"), BlockSkipTests)
4949
if err != nil {
5050
t.Fatal(err)
5151
}
5252
}
5353

5454
func TestBcForkBlockTests(t *testing.T) {
55-
err := RunBlockTest(filepath.Join(blockTestDir, "bcForkBlockTest.json"))
55+
err := RunBlockTest(filepath.Join(blockTestDir, "bcForkBlockTest.json"), BlockSkipTests)
5656
if err != nil {
5757
t.Fatal(err)
5858
}
5959
}
6060

6161
func TestBcTotalDifficulty(t *testing.T) {
62-
err := RunBlockTest(filepath.Join(blockTestDir, "bcTotalDifficultyTest.json"))
62+
err := RunBlockTest(filepath.Join(blockTestDir, "bcTotalDifficultyTest.json"), BlockSkipTests)
6363
if err != nil {
6464
t.Fatal(err)
6565
}
6666
}
6767

6868
func TestBcWallet(t *testing.T) {
69-
err := RunBlockTest(filepath.Join(blockTestDir, "bcWalletTest.json"))
69+
err := RunBlockTest(filepath.Join(blockTestDir, "bcWalletTest.json"), BlockSkipTests)
7070
if err != nil {
7171
t.Fatal(err)
7272
}

tests/block_test_util.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ type btTransaction struct {
8686
Value string
8787
}
8888

89-
func RunBlockTestWithReader(r io.Reader) error {
89+
func RunBlockTestWithReader(r io.Reader, skipTests []string) error {
9090
btjs := make(map[string]*btJSON)
9191
if err := readJson(r, &btjs); err != nil {
9292
return err
@@ -97,13 +97,13 @@ func RunBlockTestWithReader(r io.Reader) error {
9797
return err
9898
}
9999

100-
if err := runBlockTests(bt); err != nil {
100+
if err := runBlockTests(bt, skipTests); err != nil {
101101
return err
102102
}
103103
return nil
104104
}
105105

106-
func RunBlockTest(file string) error {
106+
func RunBlockTest(file string, skipTests []string) error {
107107
btjs := make(map[string]*btJSON)
108108
if err := readJsonFile(file, &btjs); err != nil {
109109
return err
@@ -113,15 +113,15 @@ func RunBlockTest(file string) error {
113113
if err != nil {
114114
return err
115115
}
116-
if err := runBlockTests(bt); err != nil {
116+
if err := runBlockTests(bt, skipTests); err != nil {
117117
return err
118118
}
119119
return nil
120120
}
121121

122-
func runBlockTests(bt map[string]*BlockTest) error {
123-
skipTest := make(map[string]bool, len(BlockSkipTests))
124-
for _, name := range BlockSkipTests {
122+
func runBlockTests(bt map[string]*BlockTest, skipTests []string) error {
123+
skipTest := make(map[string]bool, len(skipTests))
124+
for _, name := range skipTests {
125125
skipTest[name] = true
126126
}
127127

tests/state_test.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,84 +8,84 @@ import (
88

99
func TestStateSystemOperations(t *testing.T) {
1010
fn := filepath.Join(stateTestDir, "stSystemOperationsTest.json")
11-
if err := RunStateTest(fn); err != nil {
11+
if err := RunStateTest(fn, StateSkipTests); err != nil {
1212
t.Error(err)
1313
}
1414
}
1515

1616
func TestStateExample(t *testing.T) {
1717
fn := filepath.Join(stateTestDir, "stExample.json")
18-
if err := RunStateTest(fn); err != nil {
18+
if err := RunStateTest(fn, StateSkipTests); err != nil {
1919
t.Error(err)
2020
}
2121
}
2222

2323
func TestStatePreCompiledContracts(t *testing.T) {
2424
fn := filepath.Join(stateTestDir, "stPreCompiledContracts.json")
25-
if err := RunStateTest(fn); err != nil {
25+
if err := RunStateTest(fn, StateSkipTests); err != nil {
2626
t.Error(err)
2727
}
2828
}
2929

3030
func TestStateRecursiveCreate(t *testing.T) {
3131
fn := filepath.Join(stateTestDir, "stRecursiveCreate.json")
32-
if err := RunStateTest(fn); err != nil {
32+
if err := RunStateTest(fn, StateSkipTests); err != nil {
3333
t.Error(err)
3434
}
3535
}
3636

3737
func TestStateSpecial(t *testing.T) {
3838
fn := filepath.Join(stateTestDir, "stSpecialTest.json")
39-
if err := RunStateTest(fn); err != nil {
39+
if err := RunStateTest(fn, StateSkipTests); err != nil {
4040
t.Error(err)
4141
}
4242
}
4343

4444
func TestStateRefund(t *testing.T) {
4545
fn := filepath.Join(stateTestDir, "stRefundTest.json")
46-
if err := RunStateTest(fn); err != nil {
46+
if err := RunStateTest(fn, StateSkipTests); err != nil {
4747
t.Error(err)
4848
}
4949
}
5050

5151
func TestStateBlockHash(t *testing.T) {
5252
fn := filepath.Join(stateTestDir, "stBlockHashTest.json")
53-
if err := RunStateTest(fn); err != nil {
53+
if err := RunStateTest(fn, StateSkipTests); err != nil {
5454
t.Error(err)
5555
}
5656
}
5757

5858
func TestStateInitCode(t *testing.T) {
5959
fn := filepath.Join(stateTestDir, "stInitCodeTest.json")
60-
if err := RunStateTest(fn); err != nil {
60+
if err := RunStateTest(fn, StateSkipTests); err != nil {
6161
t.Error(err)
6262
}
6363
}
6464

6565
func TestStateLog(t *testing.T) {
6666
fn := filepath.Join(stateTestDir, "stLogTests.json")
67-
if err := RunStateTest(fn); err != nil {
67+
if err := RunStateTest(fn, StateSkipTests); err != nil {
6868
t.Error(err)
6969
}
7070
}
7171

7272
func TestStateTransaction(t *testing.T) {
7373
fn := filepath.Join(stateTestDir, "stTransactionTest.json")
74-
if err := RunStateTest(fn); err != nil {
74+
if err := RunStateTest(fn, StateSkipTests); err != nil {
7575
t.Error(err)
7676
}
7777
}
7878

7979
func TestCallCreateCallCode(t *testing.T) {
8080
fn := filepath.Join(stateTestDir, "stCallCreateCallCodeTest.json")
81-
if err := RunStateTest(fn); err != nil {
81+
if err := RunStateTest(fn, StateSkipTests); err != nil {
8282
t.Error(err)
8383
}
8484
}
8585

8686
func TestMemory(t *testing.T) {
8787
fn := filepath.Join(stateTestDir, "stMemoryTest.json")
88-
if err := RunStateTest(fn); err != nil {
88+
if err := RunStateTest(fn, StateSkipTests); err != nil {
8989
t.Error(err)
9090
}
9191
}
@@ -95,7 +95,7 @@ func TestMemoryStress(t *testing.T) {
9595
t.Skip()
9696
}
9797
fn := filepath.Join(stateTestDir, "stMemoryStressTest.json")
98-
if err := RunStateTest(fn); err != nil {
98+
if err := RunStateTest(fn, StateSkipTests); err != nil {
9999
t.Error(err)
100100
}
101101
}
@@ -105,29 +105,29 @@ func TestQuadraticComplexity(t *testing.T) {
105105
t.Skip()
106106
}
107107
fn := filepath.Join(stateTestDir, "stQuadraticComplexityTest.json")
108-
if err := RunStateTest(fn); err != nil {
108+
if err := RunStateTest(fn, StateSkipTests); err != nil {
109109
t.Error(err)
110110
}
111111
}
112112

113113
func TestSolidity(t *testing.T) {
114114
fn := filepath.Join(stateTestDir, "stSolidityTest.json")
115-
if err := RunStateTest(fn); err != nil {
115+
if err := RunStateTest(fn, StateSkipTests); err != nil {
116116
t.Error(err)
117117
}
118118
}
119119

120120
func TestWallet(t *testing.T) {
121121
fn := filepath.Join(stateTestDir, "stWalletTest.json")
122-
if err := RunStateTest(fn); err != nil {
122+
if err := RunStateTest(fn, StateSkipTests); err != nil {
123123
t.Error(err)
124124
}
125125
}
126126

127127
func TestStateTestsRandom(t *testing.T) {
128128
fns, _ := filepath.Glob("./files/StateTests/RandomTests/*")
129129
for _, fn := range fns {
130-
if err := RunStateTest(fn); err != nil {
130+
if err := RunStateTest(fn, StateSkipTests); err != nil {
131131
t.Error(err)
132132
}
133133
}

tests/state_test_util.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,36 @@ import (
1616
"github.com/ethereum/go-ethereum/logger/glog"
1717
)
1818

19-
func RunStateTestWithReader(r io.Reader) error {
19+
func RunStateTestWithReader(r io.Reader, skipTests []string) error {
2020
tests := make(map[string]VmTest)
2121
if err := readJson(r, &tests); err != nil {
2222
return err
2323
}
2424

25-
if err := runStateTests(tests); err != nil {
25+
if err := runStateTests(tests, skipTests); err != nil {
2626
return err
2727
}
2828

2929
return nil
3030
}
3131

32-
func RunStateTest(p string) error {
32+
func RunStateTest(p string, skipTests []string) error {
3333
tests := make(map[string]VmTest)
3434
if err := readJsonFile(p, &tests); err != nil {
3535
return err
3636
}
3737

38-
if err := runStateTests(tests); err != nil {
38+
if err := runStateTests(tests, skipTests); err != nil {
3939
return err
4040
}
4141

4242
return nil
4343

4444
}
4545

46-
func runStateTests(tests map[string]VmTest) error {
47-
skipTest := make(map[string]bool, len(StateSkipTests))
48-
for _, name := range StateSkipTests {
46+
func runStateTests(tests map[string]VmTest, skipTests []string) error {
47+
skipTest := make(map[string]bool, len(skipTests))
48+
for _, name := range skipTests {
4949
skipTest[name] = true
5050
}
5151

tests/transaction_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ import (
66
)
77

88
func TestTransactions(t *testing.T) {
9-
err := RunTransactionTests(filepath.Join(transactionTestDir, "ttTransactionTest.json"))
9+
err := RunTransactionTests(filepath.Join(transactionTestDir, "ttTransactionTest.json"), TransSkipTests)
1010
if err != nil {
1111
t.Fatal(err)
1212
}
1313
}
1414

1515
func TestWrongRLPTransactions(t *testing.T) {
16-
err := RunTransactionTests(filepath.Join(transactionTestDir, "ttWrongRLPTransaction.json"))
16+
err := RunTransactionTests(filepath.Join(transactionTestDir, "ttWrongRLPTransaction.json"), TransSkipTests)
1717
if err != nil {
1818
t.Fatal(err)
1919
}
2020
}
2121

2222
func Test10MBtx(t *testing.T) {
23-
err := RunTransactionTests(filepath.Join(transactionTestDir, "tt10mbDataField.json"))
23+
err := RunTransactionTests(filepath.Join(transactionTestDir, "tt10mbDataField.json"), TransSkipTests)
2424
if err != nil {
2525
t.Fatal(err)
2626
}

0 commit comments

Comments
 (0)