From 79290277935da826e1e5ca05a88602535f4342b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Henry?= Date: Mon, 5 Feb 2018 19:23:18 +0100 Subject: [PATCH] Proto/test: do not depend on `shell` For the test suite we only use the in-memory context. --- .gitlab-ci.yml | 2 +- src/lib_protocol_environment_sigs/jbuild | 2 +- .../test/helpers/helpers_account.mli | 13 +- .../test/helpers/helpers_apply.mli | 21 +-- .../test/helpers/helpers_assert.mli | 35 +++-- .../test/helpers/helpers_block.ml | 9 +- .../test/helpers/helpers_block.mli | 32 ++-- .../test/helpers/helpers_cast.mli | 2 +- .../test/helpers/helpers_constants.ml | 32 ---- .../test/helpers/helpers_constants.mli | 19 --- .../lib_protocol/test/helpers/helpers_init.ml | 148 +++++------------- .../test/helpers/helpers_init.mli | 4 +- .../lib_protocol/test/helpers/helpers_misc.ml | 47 +----- .../test/helpers/helpers_misc.mli | 17 +- .../test/helpers/helpers_operation.ml | 7 +- .../test/helpers/helpers_operation.mli | 17 +- .../test/helpers/helpers_script.ml | 5 +- .../test/helpers/helpers_script.mli | 5 +- .../test/helpers/helpers_services.mli | 6 +- .../test/helpers/isolate_helpers.ml | 12 +- .../lib_protocol/test/helpers/jbuild | 9 +- .../lib_protocol/test/helpers/proto_alpha.ml | 25 ++- src/proto_alpha/lib_protocol/test/jbuild | 14 +- .../lib_protocol/test/michelson_macros.ml | 1 - .../lib_protocol/test/michelson_parser/jbuild | 13 ++ .../test/michelson_parser/michelson_macros.ml | 1 + .../michelson_parser/michelson_v1_parser.ml | 1 + .../lib_protocol/test/michelson_v1_parser.ml | 1 - .../lib_protocol/test/test_isolate_dsl.ml | 11 +- .../test/test_isolate_endorsement.ml | 32 ++-- .../test/test_isolate_michelson.ml | 20 +-- .../test/test_isolate_origination.ml | 4 +- .../test/test_isolate_transaction.ml | 7 +- .../tezos-embedded-protocol-alpha.opam | 4 +- .../lib_protocol/tezos-protocol-alpha.opam | 3 + 35 files changed, 225 insertions(+), 356 deletions(-) delete mode 100644 src/proto_alpha/lib_protocol/test/helpers/helpers_constants.ml delete mode 100644 src/proto_alpha/lib_protocol/test/helpers/helpers_constants.mli delete mode 120000 src/proto_alpha/lib_protocol/test/michelson_macros.ml create mode 100644 src/proto_alpha/lib_protocol/test/michelson_parser/jbuild create mode 120000 src/proto_alpha/lib_protocol/test/michelson_parser/michelson_macros.ml create mode 120000 src/proto_alpha/lib_protocol/test/michelson_parser/michelson_v1_parser.ml delete mode 120000 src/proto_alpha/lib_protocol/test/michelson_v1_parser.ml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d6f6d88f5..6ff00f2e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -147,7 +147,7 @@ test:p2p:pool: test:proto_alpha: <<: *test_definition script: - - jbuilder build @src/proto_alpha/runtest + - jbuilder build @src/proto_alpha/lib_protocol/runtest test:client_alpha:transaction: <<: *test_definition diff --git a/src/lib_protocol_environment_sigs/jbuild b/src/lib_protocol_environment_sigs/jbuild index 4367a5a92..70204c3c6 100644 --- a/src/lib_protocol_environment_sigs/jbuild +++ b/src/lib_protocol_environment_sigs/jbuild @@ -62,7 +62,7 @@ )) (action (with-stdout-to ${@} - (chdir ${ROOT} (run ${exe:sigs_packer/sigs_packer.exe} ${!^})))))) + (chdir ${ROOT} (run ${exe:sigs_packer/sigs_packer.exe} ${^})))))) (library ((name tezos_protocol_environment_sigs) diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_account.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_account.mli index 4e7ff6619..8a852ec98 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_account.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_account.mli @@ -7,7 +7,8 @@ (* *) (**************************************************************************) -open Proto_alpha.Tezos_context +open Proto_alpha +open Tezos_context (** Facilities to deal with accounts , bootstrap accounts and make new accounts *) @@ -34,27 +35,27 @@ val init_amount : int (** Credits a new account *) val init_account : tc:context -> account -> - (account * context) Proto_alpha.tzresult Lwt.t + (account * context) proto_tzresult Lwt.t (** Generates a new account and credits it *) val make_account : tc:context -> - (account * context) Proto_alpha.tzresult Lwt.t + (account * context) proto_tzresult Lwt.t (** Generates a list of new accounts and credits them *) val make_accounts : tc:context -> int -> - (account list * context) Proto_alpha.tzresult Lwt.t + (account list * context) proto_tzresult Lwt.t (** Better typed "make_accounts tc 2" *) val make_2_accounts : tc:context -> - ((account * account) * context) Proto_alpha.tzresult Lwt.t + ((account * account) * context) proto_tzresult Lwt.t (** Better typed "make_accounts tc 4" *) val make_4_accounts : tc:context -> - ((t * t * t * t) * context) Proto_alpha.tzresult Lwt.t + ((t * t * t * t) * context) proto_tzresult Lwt.t (** Debug : Displays an account and its balance *) val display_account : tc:context -> account -> unit Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_apply.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_apply.mli index 39eba1f27..f96a1d1e1 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_apply.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_apply.mli @@ -9,49 +9,50 @@ (** Functions to build and apply operations *) -open Proto_alpha.Tezos_context +open Proto_alpha +open Tezos_context val operation : tc:context -> ?baker:Helpers_account.t -> ?src:Helpers_account.t -> Block_hash.t -> Tezos_base.Operation.shell_header -> proto_operation -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val transaction : tc:context -> ?fee:int -> ?baker:Helpers_account.t -> Block_hash.t -> Tezos_base.Operation.shell_header -> Helpers_account.t -> Helpers_account.t -> int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val transaction_pred : ?tc:t -> pred:Helpers_block.result -> ?baker:Helpers_account.t -> Helpers_account.t * Helpers_account.t * int * int option -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val script_origination : tc:context -> Block_hash.t -> Tezos_base.Operation.shell_header -> Script.t option -> Helpers_account.t -> int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val origination : tc:context -> ?baker:Helpers_account.t -> ?spendable:bool -> ?fee:int -> ?delegatable:bool -> Block_hash.t -> Tezos_base.Operation.shell_header -> Helpers_account.t -> int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val script_origination_pred : ?tc:t -> pred:Helpers_block.result -> Script.t * Helpers_account.t * int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val origination_pred : ?tc:t -> ?baker:Helpers_account.t -> pred:Helpers_block.result -> Helpers_account.t * int * bool * bool * int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val delegation : tc:context -> ?baker:Helpers_account.t -> ?fee:int -> Block_hash.t -> Tezos_base.Operation.shell_header -> Helpers_account.t -> public_key_hash -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t val delegation_pred : ?tc:t -> ?baker:Helpers_account.t -> pred:Helpers_block.result -> Helpers_account.t * public_key_hash * int -> - ((Contract.contract list * Proto_alpha.error list option) * context) Proto_alpha.tzresult Lwt.t + ((Contract.contract list * proto_error list option) * context) proto_tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_assert.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_assert.mli index fae694687..2bf51794d 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_assert.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_assert.mli @@ -7,7 +7,8 @@ (* *) (**************************************************************************) -open Proto_alpha.Tezos_context +open Proto_alpha +open Tezos_context include module type of Assert @@ -15,32 +16,32 @@ include module type of Assert (** Converts a tzresult from the Environment's error monad to a tzresult of the top level error monad *) -val wrap_result : 'a Proto_alpha.tzresult -> 'a tzresult +val wrap_result : 'a proto_tzresult -> 'a tzresult (** Converts a tzresult Lwt.t from the Environment's error monad to a tzresult Lwt.t of the top level error monad *) -val wrap : 'a Proto_alpha.tzresult -> 'a tzresult Lwt.t +val wrap : 'a proto_tzresult -> 'a tzresult Lwt.t (** Binds a top level error monad function with an Environment's error monad tzresult Lwt.t *) val ( >>=?? ) : - 'a Proto_alpha.tzresult Lwt.t -> ('a -> 'b tzresult Lwt.t) -> 'b tzresult Lwt.t + 'a proto_tzresult Lwt.t -> ('a -> 'b tzresult Lwt.t) -> 'b tzresult Lwt.t (** Binds a top level error monad function with an Environment's error monad tzresult *) -val ( >>?? ) : 'a Proto_alpha.tzresult -> ('a -> 'b tzresult) -> 'b tzresult +val ( >>?? ) : 'a proto_tzresult -> ('a -> 'b tzresult) -> 'b tzresult (** Partially binds a top level error monad function with an Environment's error monad tzresult *) -val ( >>?= ) : 'a Proto_alpha.tzresult Lwt.t -> ('a tzresult -> 'b Lwt.t) -> 'b Lwt.t +val ( >>?= ) : 'a proto_tzresult Lwt.t -> ('a tzresult -> 'b Lwt.t) -> 'b Lwt.t -val tmp_map : ('a -> 'b Proto_alpha.tzresult) -> 'a list -> 'b list Proto_alpha.tzresult +val tmp_map : ('a -> 'b proto_tzresult) -> 'a list -> 'b list proto_tzresult -val ok : ?msg:string -> 'a Proto_alpha.tzresult -> 'a Proto_alpha.tzresult Lwt.t +val ok : ?msg:string -> 'a proto_tzresult -> 'a proto_tzresult Lwt.t val ok_contract : ?msg:string -> - (('a * 'b option) * 'c) Proto_alpha.tzresult -> - (('a * 'b option) * 'c) Proto_alpha.tzresult Lwt.t + (('a * 'b option) * 'c) proto_tzresult -> + (('a * 'b option) * 'c) proto_tzresult Lwt.t exception No_error @@ -54,25 +55,25 @@ val equal_tez : ?msg:string -> Tez.t -> Tez.t -> unit val equal_balance : tc:context -> ?msg:string -> Contract.contract * Tez.t -> - unit Proto_alpha.tzresult Lwt.t + unit proto_tzresult Lwt.t val equal_cents_balance : tc:context -> ?msg:string -> Contract.contract * int -> - unit Proto_alpha.tzresult Lwt.t + unit proto_tzresult Lwt.t val ecoproto_error : - (Proto_alpha.error -> bool) -> Error_monad.error -> bool + (proto_error -> bool) -> error -> bool val generic_economic_error : msg:string -> 'a tzresult -> unit val economic_error : - msg:string -> (Proto_alpha.error -> bool) -> 'a tzresult -> unit + msg:string -> (proto_error -> bool) -> 'a tzresult -> unit val ill_typed_data_error : msg:string -> 'a tzresult -> unit val ill_typed_return_error : msg:string -> 'a tzresult -> unit val double_endorsement : msg:string -> 'a tzresult -> unit val contain_error_alpha : ?msg:string -> f:('a -> bool) -> ('b, 'a list) result -> unit -val unknown_contract : msg:string -> 'a Proto_alpha.tzresult -> unit -val non_existing_contract : msg:string -> 'a Proto_alpha.tzresult -> unit -val balance_too_low : msg:string -> 'a Proto_alpha.tzresult -> unit +val unknown_contract : msg:string -> 'a proto_tzresult -> unit +val non_existing_contract : msg:string -> 'a proto_tzresult -> unit +val balance_too_low : msg:string -> 'a proto_tzresult -> unit val non_spendable : msg:string -> 'a tzresult -> unit val inconsistent_pkh : msg:string -> 'a tzresult -> unit val initial_amount_too_low : msg:string -> 'a tzresult -> unit diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_block.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_block.ml index 756bcafb9..2065f42ad 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_block.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_block.ml @@ -7,7 +7,8 @@ (* *) (**************************************************************************) -open Proto_alpha.Error_monad +open Proto_alpha +open Error_monad type shell_header = Block_header.shell_header type tezos_header = Block_header.t @@ -24,14 +25,14 @@ type init_block = { proto_header_bytes : MBytes.t ; timestamp : Time.t ; level : Int32.t ; - context : Tezos_storage.Context.t + context : Context.t } type result = { tezos_header : tezos_header ; hash : Block_hash.t ; level : Int32.t ; - validation : Tezos_protocol_updater.Updater.validation_result ; + validation : Updater.validation_result ; tezos_context : Proto_alpha.Tezos_context.t } @@ -106,7 +107,7 @@ let get_level opt_msg = let get_header_hash (init_block : init_block) - (validation_result : Tezos_protocol_updater.Updater.validation_result) + (validation_result : Updater.validation_result) : result tzresult Lwt.t = let op_hashs = init_block.operation_hashs in diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_block.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_block.mli index f25e1dfc6..48107a760 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_block.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_block.mli @@ -7,6 +7,8 @@ (* *) (**************************************************************************) +open Proto_alpha + (** Representation of blocks independent from the State module *) type shell_header = Block_header.shell_header @@ -26,7 +28,7 @@ type init_block = { proto_header_bytes : MBytes.t; timestamp : Time.t; level : Int32.t; - context : Tezos_storage.Context.t; + context : Context.t; } (** Result of the application of a block *) @@ -34,7 +36,7 @@ type result = { tezos_header : tezos_header; hash : Block_hash.t; level : Int32.t; - validation : Tezos_protocol_updater.Updater.validation_result; + validation : Updater.validation_result; tezos_context : Tezos_context.t; } val get_op_header_res : result -> operation_header @@ -44,38 +46,38 @@ val make_sourced_operation : Operation.shell_header -> Tezos_context.proto_operation * Helpers_account.t -> - ((Proto_alpha.Main.operation * Helpers_account.t) * Operation_hash.t) Proto_alpha.Error_monad.tzresult + ((Proto_alpha.Main.operation * Helpers_account.t) * Operation_hash.t) proto_tzresult val init : shell_header -> Block_hash.t -> Int32.t -> int -> (Tezos_context.proto_operation * Helpers_account.t) list -> - Tezos_storage.Context.t -> init_block Proto_alpha.Error_monad.tzresult + Context.t -> init_block proto_tzresult val init_of_result : ?priority:int -> res:result -> ops:(Tezos_context.proto_operation * Helpers_account.t) list -> - init_block Proto_alpha.Error_monad.tzresult + init_block proto_tzresult val get_level : string option -> int32 val get_header_hash : - init_block -> Tezos_protocol_updater.Updater.validation_result -> - result Proto_alpha.Error_monad.tzresult Lwt.t + init_block -> Updater.validation_result -> + result proto_tzresult Lwt.t val begin_construction_pre : - init_block -> Main.validation_state Proto_alpha.Error_monad.tzresult Lwt.t -val make : init_block -> result Proto_alpha.Error_monad.tzresult Lwt.t + init_block -> Main.validation_state proto_tzresult Lwt.t +val make : init_block -> result proto_tzresult Lwt.t val make_init : shell_header -> Block_hash.t -> Int32.t -> int -> (Tezos_context.proto_operation * Helpers_account.t) list -> - Tezos_storage.Context.t -> result Proto_alpha.Error_monad.tzresult Lwt.t + Context.t -> result proto_tzresult Lwt.t val of_res : ?priority:int -> ?ops:(Tezos_context.proto_operation * Helpers_account.t) list -> res:result -> - unit -> result Proto_alpha.Error_monad.tzresult Lwt.t + unit -> result proto_tzresult Lwt.t val endorsement : shell_header -> Block_hash.t -> Int32.t -> int -> - Helpers_account.t -> Tezos_storage.Context.t -> int -> - result Proto_alpha.Error_monad.tzresult Lwt.t + Helpers_account.t -> Context.t -> int -> + result proto_tzresult Lwt.t val endorsement_of_res : result -> Helpers_account.t -> int -> ?priority:int -> res:result -> - unit -> result Proto_alpha.Error_monad.tzresult Lwt.t + unit -> result proto_tzresult Lwt.t val empty : shell_header -> Block_hash.t -> Int32.t -> int -> - Tezos_storage.Context.t -> result Proto_alpha.Error_monad.tzresult Lwt.t + Context.t -> result proto_tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_cast.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_cast.mli index 17b88b961..15c4c8b84 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_cast.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_cast.mli @@ -23,5 +23,5 @@ val tez_add_int : Tez.tez -> int -> Tez.tez (** Tez.(-?) with a top - level error instead *) val tez_sub : Tez.tez -> Tez.tez -> Tez.tez val tez_sub_int : Tez.tez -> int -> Tez.tez -val ctxt_of_tc : context -> Tezos_storage.Context.t +val ctxt_of_tc : context -> Mem_context.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.ml deleted file mode 100644 index 350b9fbfe..000000000 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.ml +++ /dev/null @@ -1,32 +0,0 @@ -(**************************************************************************) -(* *) -(* Copyright (c) 2014 - 2016. *) -(* Dynamic Ledger Solutions, Inc. *) -(* *) -(* All rights reserved. No warranty, explicit or implicit, provided. *) -(* *) -(**************************************************************************) - -open Tezos_shell - -let genesis : State.Net.genesis = { - time = - Time.of_notation_exn "2017-09-22T00:00:00Z" ; - block = - Block_hash.of_b58check_exn - "BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU" ; - protocol = - Protocol_hash.of_b58check_exn - "ProtoGenesisGenesisGenesisGenesisGenesisGenesk612im" ; -} - -let alpha_hash : Tezos_base.TzPervasives.Protocol_hash.t = - Protocol_hash.of_b58check_exn - "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK" - -let test_folder = - let home = Sys.getenv "HOME" in - Filename.concat home ".tezos-test" - -let store_root = Filename.concat test_folder "store" -let context_root = Filename.concat test_folder "context" diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.mli deleted file mode 100644 index a62de44d9..000000000 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_constants.mli +++ /dev/null @@ -1,19 +0,0 @@ -(**************************************************************************) -(* *) -(* Copyright (c) 2014 - 2016. *) -(* Dynamic Ledger Solutions, Inc. *) -(* *) -(* All rights reserved. No warranty, explicit or implicit, provided. *) -(* *) -(**************************************************************************) - -(** Constants used for testing *) - -val genesis : Tezos_shell.State.Net.genesis -val alpha_hash : Protocol_hash.t - -(** Folder in which the temporary files for testing are put *) -val test_folder : string - -val store_root : string -val context_root : string diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_init.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_init.ml index 8968dae06..1fb792997 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_init.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_init.ml @@ -7,99 +7,8 @@ (* *) (**************************************************************************) -open Tezos_shell -open Helpers_logger - -let previous_gs = ref None - -let cleanup () = - ignore @@ Sys.command @@ "rm -rf " ^ Helpers_constants.test_folder - -let get_global_state () = - match !previous_gs with - | Some gs -> - State.Net.all gs >>= fun ls -> - Lwt_list.iter_p (State.Net.destroy gs) ls >>= fun () -> - return gs - | None -> - Lwt.catch ( - fun () -> - State.read - ~store_root: Helpers_constants.store_root - ~context_root: Helpers_constants.context_root - () >>= function - | Ok init_state -> ( - previous_gs := Some init_state ; - Lwt.return @@ Ok init_state - )| Error errors -> ( - lwt_warn "Errors !" >>= fun () -> - lwt_warn "Error when building global state ...%a" pp_print_error errors >>= fun () -> - Lwt.return @@ Error errors - ) - ) (function - | e -> Logger.lwt_warn "Error !" >>= fun () -> - Lwt.fail e - ) - -let get_activation_block baker context_hash head = - let open Tezos_embedded_raw_protocol_genesis in - State.Block.context head >>= fun context -> - Data.Pubkey.set_pubkey context baker.Helpers_account.pub >>= fun context -> - let shell_header = - Helpers_misc.get_block_header - head - Helpers_misc.no_ops_hash - (State.Block.fitness head) - context_hash - (Time.now ()) - in - let fitness = - Tezos_embedded_raw_protocol_alpha.Fitness_repr.from_int64 100L in - let command: Data.Command.t = - Data.Command.Activate({protocol = Helpers_constants.alpha_hash ; fitness}) in - let content_bytes = Data.Command.forge shell_header command in - let signature = Ed25519.sign baker.ppk content_bytes in - let proto = (command , signature) in - let proto_bytes = - Data_encoding.Binary.to_bytes - Data.Command.signed_encoding - proto in - let raw_block: Block_header.t = { - shell = shell_header ; - proto = proto_bytes - } in - return (context , raw_block) - -let get_alpha () = - get_global_state () >>=? fun global_state -> - State.Net.create global_state Helpers_constants.genesis >>= fun state -> - Tezos_shell.Chain.head state >>= fun head -> - let baker = Helpers_account.new_account () in - let rec attempt context_hash = - begin - get_activation_block baker context_hash head >>=? fun (context , raw_block) -> - Tezos_storage.Context.get_protocol context >>= fun protocol_hash -> - let (module Protocol) = Helpers_misc.get_protocol protocol_hash in - Protocol.begin_application - ~predecessor_context: context - ~predecessor_timestamp: (State.Block.timestamp head) - ~predecessor_fitness: (State.Block.fitness head) - raw_block - >>=? fun app -> - Protocol.finalize_block app >>=? fun result -> - State.Block.store state raw_block [[]] result >>=? fun opt_block -> - return (opt_block , result) - end >>= function - | Ok v -> return v - | Error [ State.Block.Inconsistent_hash (got , _) ] -> - attempt got - | Error err -> - Error_monad.pp_print_error Format.err_formatter err ; - Lwt.return (Error err) in - attempt Context_hash.zero >>=? fun (opt_block , result) -> - Error_monad.protect (fun () -> return (Option.unopt_exn (Failure "get_alpha") opt_block)) >>=? fun block -> - Tezos_shell.Chain.set_head state block >>= fun _ -> - return (global_state , state , result) +open Proto_alpha +open Error_monad let get_sandbox () = Data_encoding_ezjsonm.read_file @@ -109,19 +18,44 @@ let get_sandbox () = Data_encoding_ezjsonm.read_file "test/sandbox.json" >>= fun x -> Lwt.return @@ Helpers_assert.no_error ~msg:__LOC__ x -open Helpers_assert - let main () = - cleanup () ; - ignore @@ Unix.mkdir Helpers_constants.test_folder 0o777 ; - ignore @@ Unix.mkdir Helpers_constants.store_root 0o777 ; - get_alpha () >>=? fun (_gs, s, r) -> - let context = r.context in - Tezos_shell.Chain.head s >>= fun head -> - let hash = State.Block.hash head in - let block_shell_header = State.Block.shell_header head in + let context = Tezos_protocol_environment_client.Mem_context.empty in get_sandbox () >>= fun json -> - Main.configure_sandbox context @@ Some json >>=?? fun context -> - Helpers_block.empty block_shell_header hash Int32.zero 0 context >>= Helpers_assert.wrap - -let () = at_exit cleanup + Main.configure_sandbox context @@ Some json >>=? fun context -> + let genesis_hash = + Block_hash.of_b58check_exn + "BLockGenesisGenesisGenesisGenesisGenesisCCCCCeZiLHU" in + let header = { + Block_header.level = 1l ; + proto_level = 0 ; + predecessor = genesis_hash ; + timestamp = Time.of_notation_exn "2017-09-22T00:00:00Z" ; + validation_passes = List.length Proto_alpha.Main.validation_passes ; + operations_hash = Helpers_misc.no_ops_hash ; + fitness = [] ; (* don't care *) + context = Context_hash.zero ; (* don't care *) + } in + let proto_header = + Data_encoding.Binary.to_bytes + Tezos_context.Block_header.proto_header_encoding + (Helpers_block.get_proto_header 0) in + let tezos_header = { Block_header.shell = header ; proto = proto_header } in + Proto_alpha.Main.begin_construction + ~predecessor_context: context + ~predecessor_fitness:[] + ~predecessor_timestamp:(Time.epoch) + ~predecessor_level: 0l + ~predecessor: genesis_hash + ~timestamp: header.timestamp + ~proto_header + () >>=? fun vstate -> + let hash = Block_header.hash tezos_header in + Proto_alpha.Main.finalize_block vstate >>=? fun validation -> + Tezos_context.init + ~level: (Int32.succ header.level) + ~timestamp: header.timestamp + ~fitness: header.fitness + validation.context >>=? fun tezos_context -> + return + { Helpers_block.tezos_header ; hash ; level = tezos_header.shell.level ; + validation ; tezos_context } diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_init.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_init.mli index 51f955955..1d4943278 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_init.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_init.mli @@ -7,6 +7,8 @@ (* *) (**************************************************************************) +open Proto_alpha + (** Functions used to build the first tezos_context and first block *) -val main : unit -> Helpers_block.result tzresult Lwt.t +val main : unit -> Helpers_block.result proto_tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.ml index 3f89f6b4b..b49b29394 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.ml @@ -7,61 +7,18 @@ (* *) (**************************************************************************) -open Tezos_shell - exception Unknown_protocol let no_ops_hash = Operation_list_list_hash.compute - [Operation_list_hash.empty] - - -let get_protocol hash : (module Registred_protocol.T) = - let (module Protocol): (module Registred_protocol.T) = - Option.unopt_exn - Unknown_protocol - @@ Registred_protocol.get hash - in - (module Protocol) - - -let get_shell_header head = - let shell_header : Operation.shell_header = { - branch = State.Block.hash head - } in - shell_header - - -let get_block_header pred operations_hash fitness context timestamp = - let pred_header = State.Block.header pred in - let pred_hash = State.Block.hash pred in - let shell_header : Block_header.shell_header = { - level = Int32.succ pred_header.shell.level ; - proto_level = 0 ; - predecessor = pred_hash ; - timestamp ; - validation_passes = 1 ; - operations_hash ; - context ; - fitness - } in - shell_header - + (List.map (fun _ -> Operation_list_hash.empty) + Proto_alpha.Main.validation_passes) let find_account accounts hpub = let hpub_pred (x : Helpers_account.t) = Ed25519.Public_key_hash.equal x.hpub hpub in List.find hpub_pred accounts - -let get_dummy_tezos_context context = - Proto_alpha.Tezos_context.init - context - ~level: Int32.one - ~timestamp:(Time.now ()) - ~fitness:([]) - - let read_file path = let (//) = Filename.concat in let executable_path = Sys.getcwd () in diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.mli index f135701f4..025870953 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_misc.mli @@ -7,23 +7,14 @@ (* *) (**************************************************************************) -open Tezos_shell -open Proto_alpha.Tezos_context - exception Unknown_protocol (** Miscellaneous self-descriptive functions *) val no_ops_hash : Operation_list_list_hash.t -val get_protocol : Protocol_hash.t -> (module Tezos_protocol_updater.Registred_protocol.T) -val get_shell_header : - State.Block.t -> Tezos_base.Operation.shell_header -val get_block_header : - State.Block.t -> Operation_list_list_hash.t -> - Tezos_stdlib.MBytes.t list -> Context_hash.t -> - Tezos_base.Time.t -> Block_header.shell_header -val find_account : Helpers_account.t list -> Ed25519.Public_key_hash.t -> Helpers_account.t -val get_dummy_tezos_context : - Proto_alpha.Environment.Context.t -> Proto_alpha.Tezos_context.context Proto_alpha.Environment.Error_monad.tzresult Lwt.t + +val find_account : + Helpers_account.t list -> Ed25519.Public_key_hash.t -> Helpers_account.t + val read_file : string -> string diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.ml index d13238472..262677499 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.ml @@ -7,13 +7,14 @@ (* *) (**************************************************************************) -open Proto_alpha.Tezos_context -open Proto_alpha.Environment.Error_monad +open Proto_alpha +open Error_monad +open Tezos_context let sourced ops = Sourced_operations ops let manager (src : Helpers_account.t) ?(fee = Tez.zero) operations context = - Helpers_misc.get_dummy_tezos_context context >>=? fun context -> + Tezos_context.init ~level:0l ~timestamp:(Time.now ()) ~fitness:[] context >>=? fun context -> Contract.get_counter context src.contract >>=? fun counter -> let counter = Int32.succ counter in return @@ diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.mli index 5453be960..dceea14c4 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_operation.mli @@ -7,7 +7,8 @@ (* *) (**************************************************************************) -open Proto_alpha.Tezos_context +open Proto_alpha +open Tezos_context (** Functions building operations *) @@ -15,11 +16,11 @@ val sourced : sourced_operations -> proto_operation val manager : Helpers_account.t -> ?fee:Tez.tez -> manager_operation list -> - Proto_alpha.Environment.Context.t -> sourced_operations Proto_alpha.tzresult Lwt.t + Proto_alpha.Environment.Context.t -> sourced_operations proto_tzresult Lwt.t val manager_full : Helpers_account.t -> ?fee:Tez.tez -> manager_operation list -> - Proto_alpha.Environment.Context.t -> proto_operation Proto_alpha.tzresult Lwt.t + Proto_alpha.Environment.Context.t -> proto_operation proto_tzresult Lwt.t val transaction : ?parameters:Script.expr option -> Tez.t -> Contract.contract -> @@ -33,20 +34,20 @@ val delegation : public_key_hash -> manager_operation val delegation_full : ?fee:Tez.tez -> Helpers_account.t -> public_key_hash -> Proto_alpha.Environment.Context.t -> - proto_operation Proto_alpha.tzresult Lwt.t + proto_operation proto_tzresult Lwt.t val script_origination_full : Script.t option -> Helpers_account.t -> Tez.t -> Proto_alpha.Environment.Context.t -> - proto_operation Proto_alpha.tzresult Lwt.t + proto_operation proto_tzresult Lwt.t val origination_full : ?spendable:bool -> ?delegatable:bool -> ?fee:Tez.tez -> Helpers_account.t -> Tez.t -> Proto_alpha.Environment.Context.t -> - proto_operation Proto_alpha.tzresult Lwt.t + proto_operation proto_tzresult Lwt.t val transaction_full : ?fee:Tez.tez -> Helpers_account.t -> Contract.contract -> Tez.t -> - Proto_alpha.Environment.Context.t -> proto_operation Proto_alpha.tzresult Lwt.t + Proto_alpha.Environment.Context.t -> proto_operation proto_tzresult Lwt.t val delegate : Helpers_account.t -> delegate_operation list -> sourced_operations @@ -63,7 +64,7 @@ val sign : val main_of_proto : Helpers_account.t -> Tezos_base.Operation.shell_header -> - proto_operation -> (Main.operation * Tezos_base.Operation_hash.t) Proto_alpha.tzresult + proto_operation -> (Main.operation * Tezos_base.Operation_hash.t) proto_tzresult val apply_of_proto : Helpers_account.t option -> Tezos_base.Operation.shell_header -> diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_script.ml b/src/proto_alpha/lib_protocol/test/helpers/helpers_script.ml index 7fc0a0768..7ad87d1df 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_script.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_script.ml @@ -7,8 +7,9 @@ (* *) (**************************************************************************) -open Proto_alpha.Error_monad -open Proto_alpha.Tezos_context +open Proto_alpha +open Error_monad +open Tezos_context let init_amount = 20000 diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_script.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_script.mli index 56aede4c2..66fb26f81 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_script.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_script.mli @@ -7,11 +7,12 @@ (* *) (**************************************************************************) -open Proto_alpha.Tezos_context +open Proto_alpha +open Tezos_context val init_amount : int val execute_code_pred : ?tc:Tezos_context.t -> Helpers_block.result -> Script.t -> Script.expr -> (Script.expr * Script.expr * Gas.t * context * Contract.origination_nonce) - Proto_alpha.tzresult Lwt.t + proto_tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/helpers_services.mli b/src/proto_alpha/lib_protocol/test/helpers/helpers_services.mli index 8a6cc234a..5948c5867 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/helpers_services.mli +++ b/src/proto_alpha/lib_protocol/test/helpers/helpers_services.mli @@ -7,12 +7,14 @@ (* *) (**************************************************************************) +open Proto_alpha + (** Wrappers around Services_registration calls *) val endorsement_rights : - tc:Proto_alpha.Tezos_context.context -> unit -> + tc:Tezos_context.context -> unit -> (int * Tezos_context.public_key_hash) list tzresult Lwt.t val baking_rights : - tc:Proto_alpha.Tezos_context.context -> unit -> + tc:Tezos_context.context -> unit -> (int * Tezos_context.public_key_hash) list tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/test/helpers/isolate_helpers.ml b/src/proto_alpha/lib_protocol/test/helpers/isolate_helpers.ml index 1646b59e1..ff14fb9e6 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/isolate_helpers.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/isolate_helpers.ml @@ -7,11 +7,12 @@ (* *) (**************************************************************************) +open Proto_alpha + module Sodium = Helpers_sodium module Cast = Helpers_cast module Assert = Helpers_assert module Services = Helpers_services -module Constants = Helpers_constants module Account = Helpers_account module Misc = Helpers_misc module Operation = Helpers_operation @@ -22,8 +23,6 @@ module Script = Helpers_script module Shorthands = struct - let to_tc ctxt = Misc.get_dummy_tezos_context ctxt - let to_tc_full ctxt level fitness = Tezos_context.init ctxt @@ -31,9 +30,6 @@ module Shorthands = struct ~fitness ~timestamp:(Time.now()) - let get_tc (res:Block.result) = - to_tc res.validation.context - let get_tc_full (res:Block.result) = Tezos_context.init res.validation.context @@ -42,9 +38,9 @@ module Shorthands = struct ~fitness:res.validation.fitness let get_balance_res (account:Account.t) (result:Block.result) = - let open Proto_alpha.Error_monad in + let open Proto_alpha.Environment.Error_monad in get_tc_full result >>=? fun tc -> - Proto_alpha.Tezos_context.Contract.get_balance tc account.contract + Tezos_context.Contract.get_balance tc account.contract let chain_empty_block (result:Block.result) = Block.empty diff --git a/src/proto_alpha/lib_protocol/test/helpers/jbuild b/src/proto_alpha/lib_protocol/test/helpers/jbuild index 381a35ec0..f7cc7d40b 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/jbuild +++ b/src/proto_alpha/lib_protocol/test/helpers/jbuild @@ -4,16 +4,13 @@ ((name tezos_proto_alpha_isolate_helpers) (libraries (tezos-test-helpers tezos-base - tezos-embedded-protocol-genesis - tezos-embedded-protocol-alpha - tezos-protocol-updater - tezos-shell)) + tezos-protocol-environment-client + tezos-protocol-alpha)) (wrapped false) (flags (:standard -w -9-32 -safe-string -open Tezos_base__TzPervasives -open Tezos_test_helpers - -open Tezos_protocol_updater - -open Tezos_embedded_raw_protocol_alpha)))) + -open Tezos_protocol_environment_client)))) (alias ((name runtest_indent) diff --git a/src/proto_alpha/lib_protocol/test/helpers/proto_alpha.ml b/src/proto_alpha/lib_protocol/test/helpers/proto_alpha.ml index 1bf182dde..1f046bdee 100644 --- a/src/proto_alpha/lib_protocol/test/helpers/proto_alpha.ml +++ b/src/proto_alpha/lib_protocol/test/helpers/proto_alpha.ml @@ -1,5 +1,22 @@ -include Tezos_embedded_raw_protocol_alpha -module Environment = Tezos_embedded_protocol_environment_alpha.Environment +(**************************************************************************) +(* *) +(* Copyright (c) 2014 - 2017. *) +(* Dynamic Ledger Solutions, Inc. *) +(* *) +(* All rights reserved. No warranty, explicit or implicit, provided. *) +(* *) +(**************************************************************************) + +module Name = struct let name = "alpha" end +module Context = + Tezos_protocol_environment_client.Mem_context +module Updater = + Tezos_protocol_environment_client.Fake_updater.Make(Context) +module Environment = + Tezos_base.Protocol_environment.MakeV1(Name)(Context)(Updater)() +include Tezos_protocol_alpha.Functor.Make(Environment) + module Error_monad = Environment.Error_monad -type error = Error_monad.error -type 'a tzresult = 'a Error_monad.tzresult +type proto_error = Error_monad.error +type 'a proto_tzresult = 'a Error_monad.tzresult + diff --git a/src/proto_alpha/lib_protocol/test/jbuild b/src/proto_alpha/lib_protocol/test/jbuild index 07daf552d..8583d4f42 100644 --- a/src/proto_alpha/lib_protocol/test/jbuild +++ b/src/proto_alpha/lib_protocol/test/jbuild @@ -3,28 +3,28 @@ (executables ((names (test_isolate_main)) (libraries (tezos-base - tezos-rpc-http tezos-test-helpers - tezos_proto_alpha_isolate_helpers)) + tezos_proto_alpha_isolate_helpers + tezos_proto_alpha_isolate_michelson_parser)) (flags (:standard -w -9-32 -safe-string -open Tezos_base__TzPervasives -open Tezos_test_helpers - -open Tezos_rpc_http)))) + -open Tezos_proto_alpha_isolate_michelson_parser)))) (alias ((name buildtest) - (package tezos-embedded-protocol-alpha) + (package tezos-protocol-alpha) (deps (test_isolate_main.exe)))) (alias ((name runtest_isolate_main) - (package tezos-embedded-protocol-alpha) + (package tezos-protocol-alpha) (deps (sandbox.json (glob_files contracts/*.tz))) - (action (chdir ${ROOT} (run ${exe:test_isolate_main.exe}))))) + (action (chdir ${ROOT} (run ${exe:test_isolate_main.exe} ${path-no-dep:contracts}))))) (alias ((name runtest) - (package tezos-embedded-protocol-alpha) + (package tezos-protocol-alpha) (deps ((alias runtest_isolate_main))))) (alias diff --git a/src/proto_alpha/lib_protocol/test/michelson_macros.ml b/src/proto_alpha/lib_protocol/test/michelson_macros.ml deleted file mode 120000 index b34d8db4e..000000000 --- a/src/proto_alpha/lib_protocol/test/michelson_macros.ml +++ /dev/null @@ -1 +0,0 @@ -../../lib_client/michelson_macros.ml \ No newline at end of file diff --git a/src/proto_alpha/lib_protocol/test/michelson_parser/jbuild b/src/proto_alpha/lib_protocol/test/michelson_parser/jbuild new file mode 100644 index 000000000..20108bbf7 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/michelson_parser/jbuild @@ -0,0 +1,13 @@ +(jbuild_version 1) + +(library + ((name tezos_proto_alpha_isolate_michelson_parser) + (libraries (tezos-base + tezos_proto_alpha_isolate_helpers)) + (flags (:standard -w -9-32 -safe-string + -open Tezos_base__TzPervasives)))) + +(alias + ((name runtest_indent) + (deps ((glob_files *.ml) (glob_files *.mli))) + (action (run bash ${libexec:tezos-stdlib:test-ocp-indent.sh} ${^})))) diff --git a/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_macros.ml b/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_macros.ml new file mode 120000 index 000000000..861e17bc3 --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_macros.ml @@ -0,0 +1 @@ +../../../lib_client/michelson_macros.ml \ No newline at end of file diff --git a/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_v1_parser.ml b/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_v1_parser.ml new file mode 120000 index 000000000..68138c4bc --- /dev/null +++ b/src/proto_alpha/lib_protocol/test/michelson_parser/michelson_v1_parser.ml @@ -0,0 +1 @@ +../../../lib_client/michelson_v1_parser.ml \ No newline at end of file diff --git a/src/proto_alpha/lib_protocol/test/michelson_v1_parser.ml b/src/proto_alpha/lib_protocol/test/michelson_v1_parser.ml deleted file mode 120000 index c72317c98..000000000 --- a/src/proto_alpha/lib_protocol/test/michelson_v1_parser.ml +++ /dev/null @@ -1 +0,0 @@ -../../lib_client/michelson_v1_parser.ml \ No newline at end of file diff --git a/src/proto_alpha/lib_protocol/test/test_isolate_dsl.ml b/src/proto_alpha/lib_protocol/test/test_isolate_dsl.ml index b45c03522..45ed21458 100644 --- a/src/proto_alpha/lib_protocol/test/test_isolate_dsl.ml +++ b/src/proto_alpha/lib_protocol/test/test_isolate_dsl.ml @@ -7,16 +7,16 @@ (* *) (**************************************************************************) - +open Proto_alpha open Helpers_logger.Logger exception No_error open Isolate_helpers -let run (starting_block : Block.result): unit Proto_alpha.tzresult Lwt.t = +let run (starting_block : Block.result): unit proto_tzresult Lwt.t = - let open Proto_alpha.Error_monad in + let open Proto_alpha.Environment.Error_monad in let init_tc = starting_block.tezos_context in @@ -151,8 +151,9 @@ let run (starting_block : Block.result): unit Proto_alpha.tzresult Lwt.t = let main () = + let open Proto_alpha.Error_monad in Init.main () >>=? fun starting_block -> - run starting_block >>= Assert.wrap + run starting_block let tests = [ @@ -160,5 +161,5 @@ let tests = [ ] let main () = - let module Test = Tezos_test_helpers.Test.Make(Error_monad) in + let module Test = Test.Make(Error_monad) in Test.run "dsl." tests diff --git a/src/proto_alpha/lib_protocol/test/test_isolate_endorsement.ml b/src/proto_alpha/lib_protocol/test/test_isolate_endorsement.ml index 827aa7788..3d22950eb 100644 --- a/src/proto_alpha/lib_protocol/test/test_isolate_endorsement.ml +++ b/src/proto_alpha/lib_protocol/test/test_isolate_endorsement.ml @@ -7,6 +7,7 @@ (* *) (**************************************************************************) +open Proto_alpha let name = "Isolate Endorsement" module Logger = Logging.Make(struct let name = name end) @@ -19,7 +20,8 @@ exception No_error open Isolate_helpers open Shorthands -open Proto_alpha.Environment.Error_monad +open Error_monad + let (>>?=) = Assert.(>>?=) let test_wrong_slot endorse_a starting_block = @@ -27,9 +29,9 @@ let test_wrong_slot endorse_a starting_block = | Proto_alpha.Baking.Invalid_endorsement_slot _ -> true | _ -> false in - starting_block >>=? endorse_a (-1) >>?= fun result -> + endorse_a (-1) starting_block >>?= fun result -> Assert.economic_error ~msg: __LOC__ wrong_slot result ; - starting_block >>=? endorse_a 16 >>?= fun result -> + endorse_a 16 starting_block >>?= fun result -> Assert.economic_error ~msg: __LOC__ wrong_slot result ; return () @@ -39,16 +41,14 @@ let test_wrong_delegate endorse_a starting_block = | Proto_alpha.Baking.Wrong_delegate _ -> true | _ -> false in - starting_block >>=? - endorse_a 0 >>=? endorse_a 1 >>=? endorse_a 2 >>= Assert.wrap >>= fun result -> + endorse_a 0 starting_block >>=? endorse_a 1 >>=? endorse_a 2 >>= Assert.wrap >>= fun result -> Assert.economic_error ~msg: __LOC__ wrong_delegate result ; return () -let test_endorsement_payment starting_block = +let test_endorsement_payment root = let bootstrap_accounts = Account.bootstrap_accounts in let open Proto_alpha.Tezos_context in - starting_block >>=? fun root -> get_tc_full root >>=? fun tc -> let level = Level.succ tc @@ Level.current tc in Proto_alpha.Services_registration.endorsement_rights tc level None >>=? fun (_, endorsers) -> @@ -99,7 +99,7 @@ let test_endorsement_payment starting_block = let test_multiple_endorsement (pred: Block.result) = let open Proto_alpha.Tezos_context in let tc = pred.tezos_context in - let level = Level.succ tc @@ Level.current tc in + let level = Level.current tc in Proto_alpha.Services_registration.endorsement_rights tc level None >>=? fun (_, endorsers) -> let endorser = Misc.find_account Account.bootstrap_accounts @@ -133,16 +133,14 @@ let test_fitness (res: Block.result) = let (>>=??) = Assert.(>>=??) -let main (): unit Error_monad.tzresult Lwt.t = +let main (): unit proto_tzresult Lwt.t = let open Error_monad in - Init.main () >>=? fun sb -> - let starting_block = Proto_alpha.Error_monad.return sb in - - test_endorsement_payment starting_block >>=?? fun () -> - test_wrong_endorsement starting_block >>=?? fun () -> - test_multiple_endorsement sb >>=?? fun () -> - test_fitness sb >>=?? fun () -> + Init.main () >>=? fun starting_block -> + test_endorsement_payment starting_block >>=? fun () -> + test_wrong_endorsement starting_block >>=? fun () -> + test_multiple_endorsement starting_block >>=? fun () -> + test_fitness starting_block >>=? fun () -> return () let tests = [ @@ -150,5 +148,5 @@ let tests = [ ] let main () = - let module Test = Tezos_test_helpers.Test.Make(Error_monad) in + let module Test = Test.Make(Error_monad) in Test.run "endorsement." tests diff --git a/src/proto_alpha/lib_protocol/test/test_isolate_michelson.ml b/src/proto_alpha/lib_protocol/test/test_isolate_michelson.ml index f685464ec..d46f24cc0 100644 --- a/src/proto_alpha/lib_protocol/test/test_isolate_michelson.ml +++ b/src/proto_alpha/lib_protocol/test/test_isolate_michelson.ml @@ -7,6 +7,8 @@ (* *) (**************************************************************************) +open Proto_alpha +open Tezos_context let name = "Isolate Michelson" module Logger = Logging.Make(struct let name = name end) @@ -14,6 +16,10 @@ let section = Lwt_log.Section.make name let () = Lwt_log.Section.set_level section Lwt_log.Debug(*.Warning*) +let (//) = Filename.concat +let contract_path = + try Sys.argv.(1) with _ -> Filename.dirname Sys.executable_name // "contracts" + open Logger open Isolate_helpers @@ -45,9 +51,8 @@ let program param ret st code = let quote s = "\"" ^ s ^ "\"" let test parse_execute = - let dir_path = "test/contracts/" in let test ?tc (file_name: string) (storage: string) (input: string) = - let full_path = dir_path ^ file_name ^ ".tz" in + let full_path = contract_path // file_name ^ ".tz" in let file = Helpers_misc.read_file full_path in let spaced_file = Str.global_replace (Str.regexp_string "\n") "\n " file in let program = "{" ^ spaced_file ^ "}" in @@ -447,7 +452,6 @@ let test_example parse_execute sb = let test_program parse_execute = - let open Error_monad in let id_code = "code { DUP ; PAIR ; @@ -476,14 +480,14 @@ let test_program parse_execute = return () -let main (): unit Error_monad.tzresult Lwt.t = - Init.main () >>=? fun sb -> +let main (): unit tzresult Lwt.t = + Init.main () >>=?? fun sb -> let execute_code ?tc = Script.execute_code_pred ?tc sb in let parse_execute ?tc code_str param_str storage_str = let param = parse_param param_str in let script = parse_script code_str storage_str in execute_code ?tc script param >>=?? fun (ret, st, _, tc, nonce) -> - let contracts = Proto_alpha.Tezos_context.Contract.originated_contracts nonce in + let contracts = Contract.originated_contracts nonce in return (ret, st, tc, contracts) in test_program parse_execute >>=? fun _x -> @@ -491,12 +495,10 @@ let main (): unit Error_monad.tzresult Lwt.t = return () - - let tests = [ "main", (fun _ -> main ()) ; ] let main () = - let module Test = Tezos_test_helpers.Test.Make(Error_monad) in + let module Test = Test.Make(Tezos_error_monad.Error_monad) in Test.run "michelson." tests diff --git a/src/proto_alpha/lib_protocol/test/test_isolate_origination.ml b/src/proto_alpha/lib_protocol/test/test_isolate_origination.ml index b265a14fd..e3081f563 100644 --- a/src/proto_alpha/lib_protocol/test/test_isolate_origination.ml +++ b/src/proto_alpha/lib_protocol/test/test_isolate_origination.ml @@ -69,7 +69,7 @@ let test_delegation let main (): unit Error_monad.tzresult Lwt.t = - Init.main () >>=? fun root -> + Init.main () >>=?? fun root -> let originate ?(tc=root.tezos_context) ?baker ?spendable ?fee ?delegatable src amount = let delegatable = Option.unopt ~default:true delegatable in @@ -103,5 +103,5 @@ let tests = [ ] let main () = - let module Test = Tezos_test_helpers.Test.Make(Error_monad) in + let module Test = Test.Make(Error_monad) in Test.run "origination." tests diff --git a/src/proto_alpha/lib_protocol/test/test_isolate_transaction.ml b/src/proto_alpha/lib_protocol/test/test_isolate_transaction.ml index d0e64823a..85da233b6 100644 --- a/src/proto_alpha/lib_protocol/test/test_isolate_transaction.ml +++ b/src/proto_alpha/lib_protocol/test/test_isolate_transaction.ml @@ -151,15 +151,14 @@ let run (starting_block: Helpers.Block.result): unit tzresult Lwt.t = let main () = - let open Error_monad in Helpers.Init.main () >>=? fun starting_block -> - run starting_block >>= Assert.wrap + run starting_block let tests = [ - "main", (fun _ -> main ()) ; + "main", (fun _ -> main () >>= Assert.wrap) ; ] let main () = - let module Test = Tezos_test_helpers.Test.Make(Error_monad) in + let module Test = Test.Make(Error_monad) in Test.run "transactions." tests diff --git a/src/proto_alpha/lib_protocol/tezos-embedded-protocol-alpha.opam b/src/proto_alpha/lib_protocol/tezos-embedded-protocol-alpha.opam index 5553f0b9c..976a4d926 100644 --- a/src/proto_alpha/lib_protocol/tezos-embedded-protocol-alpha.opam +++ b/src/proto_alpha/lib_protocol/tezos-embedded-protocol-alpha.opam @@ -9,11 +9,9 @@ license: "unreleased" depends: [ "ocamlfind" { build } "jbuilder" { build & >= "1.0+beta15" } - "tezos-test-helpers" { test } - "tezos-embedded-protocol-genesis" { test } + "tezos-base" "tezos-protocol-compiler" "tezos-protocol-updater" - "tezos-shell" ] build: [ [ "rm" "jbuild" "src/jbuild" ] diff --git a/src/proto_alpha/lib_protocol/tezos-protocol-alpha.opam b/src/proto_alpha/lib_protocol/tezos-protocol-alpha.opam index 4690d4245..d3bb810ca 100644 --- a/src/proto_alpha/lib_protocol/tezos-protocol-alpha.opam +++ b/src/proto_alpha/lib_protocol/tezos-protocol-alpha.opam @@ -9,7 +9,10 @@ license: "unreleased" depends: [ "ocamlfind" { build } "jbuilder" { build & >= "1.0+beta15" } + "tezos-base" "tezos-protocol-compiler" + "tezos-test-helpers" { test } + "tezos-protocol-environment-client" { test } ] build: [ [ "rm" "jbuild" "src/jbuild" ]