diff options
-rw-r--r-- | JSONSchema/vm-filler-schema.json | 162 | ||||
-rw-r--r-- | JSONSchema/vm-schema.json | 138 | ||||
-rwxr-xr-x | test.py | 4 |
3 files changed, 304 insertions, 0 deletions
diff --git a/JSONSchema/vm-filler-schema.json b/JSONSchema/vm-filler-schema.json new file mode 100644 index 000000000..fe61ae86a --- /dev/null +++ b/JSONSchema/vm-filler-schema.json @@ -0,0 +1,162 @@ +{ + "definitions": { + "ExpectStateAccount": { + "additionalproperties": true, + "properties": { + "balance": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "code": { + "$ref": "#/definitions/HexMaybePrefixOrEmpty" + }, + "nonce": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "storage": { + "additionalProperties": false, + "patternProperties": { + "^(0x)?[0-9a-f]+": { + "$ref": "#/definitions/HexData", + "description": "storage key with 0x. data is HexData" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PreStateAccount": { + "additionalproperties": true, + "properties": { + "balance": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "code": { + "$ref": "#/definitions/LLLCode" + }, + "nonce": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "storage": { + "additionalProperties": false, + "patternProperties": { + "^(0x)?[0-9a-f]+": { + "$ref": "#/definitions/HexData", + "description": "storage key with 0x. data is HexData" + } + }, + "type": "object" + } + }, + "required": [ + "balance", + "code", + "nonce" + ], + "type": "object" + } + }, + "patternProperties": { + "^.*$": { + "properties": { + "env": { + "additionalproperties": false, + "properties": { + "currentCoinbase": { + "$ref": "#/definitions/HexMaybePrefix" + }, + "currentDifficulty": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "currentGasLimit": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "currentNumber": { + "$ref": "#/definitions/IntegerOrConfusedHex" + }, + "currentTimestamp": { + "$ref": "#/definitions/IntegerOrNumberOrConfusedHex" + } + }, + "required": [ + "currentCoinbase", + "currentDifficulty", + "currentGasLimit", + "currentNumber", + "currentTimestamp" + ], + "type": "object" + }, + "exec": { + "additionalproperties": false, + "properties": { + "address": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "caller": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "code": { + "$ref": "#/definitions/LLLCode" + }, + "data": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "gas": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "gasPrice": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "origin": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "value": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + } + }, + "required": [ + "address", + "caller", + "data", + "gas", + "gasPrice", + "origin", + "value" + ] + }, + "expect": { + "additionalProperties": false, + "patternProperties": { + "^[0-9a-f]*": { + "$ref": "#/definitions/ExpectStateAccount", + "description": "expectstate account address with 0x prefix" + } + }, + "type": "object" + }, + "gas": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "logs": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "out": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "pre": { + "additionalProperties": false, + "patternProperties": { + "^(0x)?[0-9a-f]*": { + "$ref": "#/definitions/PreStateAccount", + "description": "prestate account address with 0x prefix" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/JSONSchema/vm-schema.json b/JSONSchema/vm-schema.json new file mode 100644 index 000000000..7a81d64c0 --- /dev/null +++ b/JSONSchema/vm-schema.json @@ -0,0 +1,138 @@ +{ + "definitions": { + "PreStateAccount": { + "additionalproperties": true, + "properties": { + "balance": { + "$ref": "#/definitions/ConfusedHexType" + }, + "code": { + "$ref": "#/definitions/HexMaybePrefixOrEmpty" + }, + "nonce": { + "$ref": "#/definitions/ConfusedHexType" + }, + "storage": { + "additionalProperties": false, + "patternProperties": { + "^0x[0-9a-f]+": { + "$ref": "#/definitions/HexData", + "description": "storage key with 0x. data is HexData" + } + }, + "type": "object" + } + }, + "required": [ + "balance", + "code", + "nonce" + ], + "type": "object" + } + }, + "patternProperties": { + "^.*$": { + "properties": { + "env": { + "additionalproperties": false, + "properties": { + "currentCoinbase": { + "$ref": "#/definitions/HexData" + }, + "currentDifficulty": { + "$ref": "#/definitions/ConfusedHexType" + }, + "currentGasLimit": { + "$ref": "#/definitions/ConfusedHexType" + }, + "currentNumber": { + "$ref": "#/definitions/ConfusedHexType" + }, + "currentTimestamp": { + "$ref": "#/definitions/ConfusedHexType" + } + }, + "required": [ + "currentCoinbase", + "currentDifficulty", + "currentGasLimit", + "currentNumber", + "currentTimestamp" + ], + "type": "object" + }, + "exec": { + "additionalproperties": false, + "properties": { + "address": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "caller": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "code": { + "$ref": "#/definitions/HexMaybePrefixOrEmpty" + }, + "data": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "gas": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "gasPrice": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "origin": { + "$ref": "#/definitions/AddressMaybePrefixOrEmpty" + }, + "value": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + } + }, + "required": [ + "address", + "caller", + "code", + "data", + "gas", + "gasPrice", + "origin", + "value" + ] + }, + "gas": { + "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex" + }, + "logs": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "out": { + "$ref": "#/definitions/HexDataOrEmpty" + }, + "post": { + "additionalProperties": false, + "patternProperties": { + "^0x[0-9a-f]*": { + "$ref": "#/definitions/PreStateAccount", + "description": "poststate account address with 0x prefix" + } + }, + "type": "object" + }, + "pre": { + "additionalProperties": false, + "patternProperties": { + "^0x[0-9a-f]*": { + "$ref": "#/definitions/PreStateAccount", + "description": "prestate account address with 0x prefix" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +}
\ No newline at end of file @@ -81,8 +81,12 @@ def validateSchema(jsonFile, schemaFile): jsonschema.validate(jsonInput, schema) def validateTestFile(jsonFile): + if jsonFile.startswith("./src/VMTestsFiller/"): + validateSchema(jsonFile, "JSONSchema/vm-filler-schema.json") elif jsonFile.startswith("./src/GeneralStateTestsFiller/"): validateSchema(jsonFile, "JSONSchema/st-filler-schema.json") + elif jsonFile.startswith("./VMTests/"): + validateSchema(jsonFile, "JSONSchema/vm-schema.json") elif jsonFile.startswith("./GeneralStateTests/"): validateSchema(jsonFile, "JSONSchema/st-schema.json") elif jsonFile.startswith("./BlockchainTests/"): |