Client/Alpha: program
-> script
This commit is contained in:
parent
404774e091
commit
5e0822eb22
@ -60,8 +60,8 @@ $client get balance for $key2 | assert "2000 ꜩ"
|
|||||||
|
|
||||||
bake
|
bake
|
||||||
|
|
||||||
$client remember program noop file:contracts/noop.tz
|
$client remember script noop file:contracts/noop.tz
|
||||||
$client typecheck program file:contracts/noop.tz
|
$client typecheck script file:contracts/noop.tz
|
||||||
bake_after $client originate contract noop \
|
bake_after $client originate contract noop \
|
||||||
for $key1 transferring 1,000 from bootstrap1 \
|
for $key1 transferring 1,000 from bootstrap1 \
|
||||||
running file:contracts/noop.tz
|
running file:contracts/noop.tz
|
||||||
|
@ -25,7 +25,7 @@ printf "\n\n"
|
|||||||
if [ ! $NO_TYPECHECK ] ; then
|
if [ ! $NO_TYPECHECK ] ; then
|
||||||
for contract in `ls $contract_dir/*.tz`; do
|
for contract in `ls $contract_dir/*.tz`; do
|
||||||
printf "[Typechecking %s]\n" "$contract";
|
printf "[Typechecking %s]\n" "$contract";
|
||||||
${client} typecheck program "$contract";
|
${client} typecheck script "$contract";
|
||||||
done
|
done
|
||||||
printf "All contracts are well typed\n\n"
|
printf "All contracts are well typed\n\n"
|
||||||
fi
|
fi
|
||||||
@ -235,59 +235,59 @@ assert_storage $contract_dir/hash_string.tz '"?"' '"12345"' '"expru81QVHsW2qaWLN
|
|||||||
|
|
||||||
# Test ASSERT
|
# Test ASSERT
|
||||||
assert_storage $contract_dir/assert.tz Unit True Unit
|
assert_storage $contract_dir/assert.tz Unit True Unit
|
||||||
assert_fails $client run program $contract_dir/assert.tz on storage Unit and input False
|
assert_fails $client run script $contract_dir/assert.tz on storage Unit and input False
|
||||||
|
|
||||||
# COMPARE; ASSERT_
|
# COMPARE; ASSERT_
|
||||||
assert_storage $contract_dir/assert_eq.tz Unit '(Pair -1 -1)' Unit
|
assert_storage $contract_dir/assert_eq.tz Unit '(Pair -1 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_eq.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_eq.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_eq.tz Unit '(Pair -1 -1)' Unit
|
assert_storage $contract_dir/assert_eq.tz Unit '(Pair -1 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_eq.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_eq.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_neq.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_neq.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_neq.tz on storage Unit and input '(Pair -1 -1)'
|
assert_fails $client run script $contract_dir/assert_neq.tz on storage Unit and input '(Pair -1 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_lt.tz Unit '(Pair -1 0)' Unit
|
assert_storage $contract_dir/assert_lt.tz Unit '(Pair -1 0)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_lt.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_lt.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
assert_fails $client run program $contract_dir/assert_lt.tz on storage Unit and input '(Pair 0 0)'
|
assert_fails $client run script $contract_dir/assert_lt.tz on storage Unit and input '(Pair 0 0)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_le.tz Unit '(Pair 0 0)' Unit
|
assert_storage $contract_dir/assert_le.tz Unit '(Pair 0 0)' Unit
|
||||||
assert_storage $contract_dir/assert_le.tz Unit '(Pair -1 0)' Unit
|
assert_storage $contract_dir/assert_le.tz Unit '(Pair -1 0)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_le.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_le.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_gt.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_gt.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_gt.tz on storage Unit and input '(Pair -1 0)'
|
assert_fails $client run script $contract_dir/assert_gt.tz on storage Unit and input '(Pair -1 0)'
|
||||||
assert_fails $client run program $contract_dir/assert_gt.tz on storage Unit and input '(Pair 0 0)'
|
assert_fails $client run script $contract_dir/assert_gt.tz on storage Unit and input '(Pair 0 0)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_ge.tz Unit '(Pair 0 0)' Unit
|
assert_storage $contract_dir/assert_ge.tz Unit '(Pair 0 0)' Unit
|
||||||
assert_storage $contract_dir/assert_ge.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_ge.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_ge.tz on storage Unit and input '(Pair -1 0)'
|
assert_fails $client run script $contract_dir/assert_ge.tz on storage Unit and input '(Pair -1 0)'
|
||||||
|
|
||||||
# ASSERT_CMP
|
# ASSERT_CMP
|
||||||
assert_storage $contract_dir/assert_cmpeq.tz Unit '(Pair -1 -1)' Unit
|
assert_storage $contract_dir/assert_cmpeq.tz Unit '(Pair -1 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmpeq.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_cmpeq.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmpeq.tz Unit '(Pair -1 -1)' Unit
|
assert_storage $contract_dir/assert_cmpeq.tz Unit '(Pair -1 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmpeq.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_cmpeq.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmpneq.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_cmpneq.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmpneq.tz on storage Unit and input '(Pair -1 -1)'
|
assert_fails $client run script $contract_dir/assert_cmpneq.tz on storage Unit and input '(Pair -1 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmplt.tz Unit '(Pair -1 0)' Unit
|
assert_storage $contract_dir/assert_cmplt.tz Unit '(Pair -1 0)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmplt.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_cmplt.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
assert_fails $client run program $contract_dir/assert_cmplt.tz on storage Unit and input '(Pair 0 0)'
|
assert_fails $client run script $contract_dir/assert_cmplt.tz on storage Unit and input '(Pair 0 0)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmple.tz Unit '(Pair 0 0)' Unit
|
assert_storage $contract_dir/assert_cmple.tz Unit '(Pair 0 0)' Unit
|
||||||
assert_storage $contract_dir/assert_cmple.tz Unit '(Pair -1 0)' Unit
|
assert_storage $contract_dir/assert_cmple.tz Unit '(Pair -1 0)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmple.tz on storage Unit and input '(Pair 0 -1)'
|
assert_fails $client run script $contract_dir/assert_cmple.tz on storage Unit and input '(Pair 0 -1)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmpgt.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_cmpgt.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmpgt.tz on storage Unit and input '(Pair -1 0)'
|
assert_fails $client run script $contract_dir/assert_cmpgt.tz on storage Unit and input '(Pair -1 0)'
|
||||||
assert_fails $client run program $contract_dir/assert_cmpgt.tz on storage Unit and input '(Pair 0 0)'
|
assert_fails $client run script $contract_dir/assert_cmpgt.tz on storage Unit and input '(Pair 0 0)'
|
||||||
|
|
||||||
assert_storage $contract_dir/assert_cmpge.tz Unit '(Pair 0 0)' Unit
|
assert_storage $contract_dir/assert_cmpge.tz Unit '(Pair 0 0)' Unit
|
||||||
assert_storage $contract_dir/assert_cmpge.tz Unit '(Pair 0 -1)' Unit
|
assert_storage $contract_dir/assert_cmpge.tz Unit '(Pair 0 -1)' Unit
|
||||||
assert_fails $client run program $contract_dir/assert_cmpge.tz on storage Unit and input '(Pair -1 0)'
|
assert_fails $client run script $contract_dir/assert_cmpge.tz on storage Unit and input '(Pair -1 0)'
|
||||||
|
|
||||||
# IF_SOME
|
# IF_SOME
|
||||||
assert_storage $contract_dir/if_some.tz '"?"' '(Some "hello")' '"hello"'
|
assert_storage $contract_dir/if_some.tz '"?"' '(Some "hello")' '"hello"'
|
||||||
@ -297,7 +297,7 @@ assert_storage $contract_dir/if_some.tz '"?"' 'None' '""'
|
|||||||
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '"world"' '(Pair "world" 0)'
|
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '"world"' '(Pair "world" 0)'
|
||||||
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '"abc"' '(Pair "abc" 0)'
|
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '"abc"' '(Pair "abc" 0)'
|
||||||
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '""' '(Pair "" 0)'
|
assert_storage $contract_dir/set_car.tz '(Pair "hello" 0)' '""' '(Pair "" 0)'
|
||||||
assert_fails $client run program $contract_dir/set_car.tz on storage '(Pair %wrong %field "hello" 0)' Unit and input '""'
|
assert_fails $client run script $contract_dir/set_car.tz on storage '(Pair %wrong %field "hello" 0)' Unit and input '""'
|
||||||
|
|
||||||
assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 0)' '1' '(Pair "hello" 1)'
|
assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 0)' '1' '(Pair "hello" 1)'
|
||||||
assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 500)' '3' '(Pair "hello" 3)'
|
assert_storage $contract_dir/set_cdr.tz '(Pair "hello" 500)' '3' '(Pair "hello" 3)'
|
||||||
@ -314,11 +314,11 @@ assert_storage $contract_dir/map_caddaadr.tz \
|
|||||||
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 1000000) 4) 5))) 6)'
|
'(Pair (Pair 1 (Pair 2 (Pair (Pair (Pair 3 1000000) 4) 5))) 6)'
|
||||||
|
|
||||||
# Did the given key sign the string? (key is bootstrap1)
|
# Did the given key sign the string? (key is bootstrap1)
|
||||||
assert_success $client run program $contract_dir/check_signature.tz \
|
assert_success $client run script $contract_dir/check_signature.tz \
|
||||||
on storage '(Pair 0x011eb640b67c1859228a72730fae1a006bb94a999395dfb569e2776e9c1ae546376247f001343a1042f92082690f6aa2e6ed230df319b09767d9807ef3f8191f "hello")' \
|
on storage '(Pair 0x011eb640b67c1859228a72730fae1a006bb94a999395dfb569e2776e9c1ae546376247f001343a1042f92082690f6aa2e6ed230df319b09767d9807ef3f8191f "hello")' \
|
||||||
and input '"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav"'
|
and input '"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav"'
|
||||||
|
|
||||||
assert_fails $client run program $contract_dir/check_signature.tz \
|
assert_fails $client run script $contract_dir/check_signature.tz \
|
||||||
on storage '(Pair 0x011eb640b67c1859228a72730fae1a006bb94a999395dfb569e2776e9c1ae546376247f001343a1042f92082690f6aa2e6ed230df319b09767d9807ef3f8191f "abcd")' \
|
on storage '(Pair 0x011eb640b67c1859228a72730fae1a006bb94a999395dfb569e2776e9c1ae546376247f001343a1042f92082690f6aa2e6ed230df319b09767d9807ef3f8191f "abcd")' \
|
||||||
and input '"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav"'
|
and input '"edpkuBknW28nW72KG6RoHtYW7p12T6GKc7nAbwYX5m8Wd9sDVC9yav"'
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ run_contract_file () {
|
|||||||
if [ ! -z "$4" ]; then
|
if [ ! -z "$4" ]; then
|
||||||
amount_flag="-amount $4"
|
amount_flag="-amount $4"
|
||||||
fi
|
fi
|
||||||
$client run program "$contract" on storage "$storage" and input "$input" $amount_flag
|
$client run script "$contract" on storage "$storage" and input "$input" $amount_flag
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_storage () {
|
assert_storage () {
|
||||||
@ -122,7 +122,7 @@ contract_name_of_file () {
|
|||||||
init_contract_from_file () {
|
init_contract_from_file () {
|
||||||
local FILE="$1"
|
local FILE="$1"
|
||||||
local NAME=$(contract_name_of_file "${FILE}")
|
local NAME=$(contract_name_of_file "${FILE}")
|
||||||
$client remember program "${NAME}" "file:${FILE}"
|
$client remember script "${NAME}" "file:${FILE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
bake () {
|
bake () {
|
||||||
|
@ -23,7 +23,7 @@ module Program = Client_aliases.Alias (struct
|
|||||||
let of_source source =
|
let of_source source =
|
||||||
return (Michelson_v1_parser.parse_toplevel source)
|
return (Michelson_v1_parser.parse_toplevel source)
|
||||||
let to_source ({ Michelson_v1_parser.source }, _) = return source
|
let to_source ({ Michelson_v1_parser.source }, _) = return source
|
||||||
let name = "program"
|
let name = "script"
|
||||||
end)
|
end)
|
||||||
|
|
||||||
let print_errors (cctxt : #Client_context.printer) errs ~show_source ~parsed =
|
let print_errors (cctxt : #Client_context.printer) errs ~show_source ~parsed =
|
||||||
@ -32,7 +32,7 @@ let print_errors (cctxt : #Client_context.printer) errs ~show_source ~parsed =
|
|||||||
~details:false
|
~details:false
|
||||||
~show_source
|
~show_source
|
||||||
~parsed) errs >>= fun () ->
|
~parsed) errs >>= fun () ->
|
||||||
cctxt#error "error running program" >>= fun () ->
|
cctxt#error "error running script" >>= fun () ->
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
let print_big_map_diff ppf = function
|
let print_big_map_diff ppf = function
|
||||||
@ -181,4 +181,4 @@ let print_typecheck_result
|
|||||||
~details: show_types
|
~details: show_types
|
||||||
~show_source:print_source_on_error
|
~show_source:print_source_on_error
|
||||||
~parsed:program) errs >>= fun () ->
|
~parsed:program) errs >>= fun () ->
|
||||||
cctxt#error "ill-typed program"
|
cctxt#error "ill-typed script"
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
open Proto_alpha
|
open Proto_alpha
|
||||||
|
|
||||||
let group =
|
let group =
|
||||||
{ Clic.name = "programs" ;
|
{ Clic.name = "scripts" ;
|
||||||
title = "Commands for managing the library of known programs" }
|
title = "Commands for managing the library of known scripts" }
|
||||||
|
|
||||||
open Tezos_micheline
|
open Tezos_micheline
|
||||||
open Client_proto_programs
|
open Client_proto_programs
|
||||||
@ -76,17 +76,17 @@ let commands () =
|
|||||||
| None -> failwith "Not given a valid signature") in
|
| None -> failwith "Not given a valid signature") in
|
||||||
[
|
[
|
||||||
|
|
||||||
command ~group ~desc: "Lists all programs in the library."
|
command ~group ~desc: "Lists all scripts in the library."
|
||||||
no_options
|
no_options
|
||||||
(fixed [ "list" ; "known" ; "programs" ])
|
(fixed [ "list" ; "known" ; "scripts" ])
|
||||||
(fun () (cctxt : Proto_alpha.full) ->
|
(fun () (cctxt : Proto_alpha.full) ->
|
||||||
Program.load cctxt >>=? fun list ->
|
Program.load cctxt >>=? fun list ->
|
||||||
Lwt_list.iter_s (fun (n, _) -> cctxt#message "%s" n) list >>= fun () ->
|
Lwt_list.iter_s (fun (n, _) -> cctxt#message "%s" n) list >>= fun () ->
|
||||||
return ()) ;
|
return ()) ;
|
||||||
|
|
||||||
command ~group ~desc: "Add a program to the library."
|
command ~group ~desc: "Add a script to the library."
|
||||||
(args1 (Program.force_switch ()))
|
(args1 (Program.force_switch ()))
|
||||||
(prefixes [ "remember" ; "program" ]
|
(prefixes [ "remember" ; "script" ]
|
||||||
@@ Program.fresh_alias_param
|
@@ Program.fresh_alias_param
|
||||||
@@ Program.source_param
|
@@ Program.source_param
|
||||||
@@ stop)
|
@@ stop)
|
||||||
@ -94,16 +94,16 @@ let commands () =
|
|||||||
Program.of_fresh cctxt force name >>=? fun name ->
|
Program.of_fresh cctxt force name >>=? fun name ->
|
||||||
Program.add ~force cctxt name hash) ;
|
Program.add ~force cctxt name hash) ;
|
||||||
|
|
||||||
command ~group ~desc: "Remove a program from the library."
|
command ~group ~desc: "Remove a script from the library."
|
||||||
no_options
|
no_options
|
||||||
(prefixes [ "forget" ; "program" ]
|
(prefixes [ "forget" ; "script" ]
|
||||||
@@ Program.alias_param
|
@@ Program.alias_param
|
||||||
@@ stop)
|
@@ stop)
|
||||||
(fun () (name, _) cctxt -> Program.del cctxt name) ;
|
(fun () (name, _) cctxt -> Program.del cctxt name) ;
|
||||||
|
|
||||||
command ~group ~desc: "Display a program from the library."
|
command ~group ~desc: "Display a script from the library."
|
||||||
no_options
|
no_options
|
||||||
(prefixes [ "show" ; "known" ; "program" ]
|
(prefixes [ "show" ; "known" ; "script" ]
|
||||||
@@ Program.alias_param
|
@@ Program.alias_param
|
||||||
@@ stop)
|
@@ stop)
|
||||||
(fun () (_, program) (cctxt : Proto_alpha.full) ->
|
(fun () (_, program) (cctxt : Proto_alpha.full) ->
|
||||||
@ -111,9 +111,9 @@ let commands () =
|
|||||||
cctxt#message "%s\n" source >>= fun () ->
|
cctxt#message "%s\n" source >>= fun () ->
|
||||||
return ()) ;
|
return ()) ;
|
||||||
|
|
||||||
command ~group ~desc: "Ask the node to run a program."
|
command ~group ~desc: "Ask the node to run a script."
|
||||||
(args3 trace_stack_switch amount_arg no_print_source_flag)
|
(args3 trace_stack_switch amount_arg no_print_source_flag)
|
||||||
(prefixes [ "run" ; "program" ]
|
(prefixes [ "run" ; "script" ]
|
||||||
@@ Program.source_param
|
@@ Program.source_param
|
||||||
@@ prefixes [ "on" ; "storage" ]
|
@@ prefixes [ "on" ; "storage" ]
|
||||||
@@ Clic.param ~name:"storage" ~desc:"the storage data"
|
@@ Clic.param ~name:"storage" ~desc:"the storage data"
|
||||||
@ -131,9 +131,9 @@ let commands () =
|
|||||||
else
|
else
|
||||||
run cctxt cctxt#block ~amount ~program ~storage ~input () >>= fun res ->
|
run cctxt cctxt#block ~amount ~program ~storage ~input () >>= fun res ->
|
||||||
print_run_result cctxt ~show_source ~parsed:program res)) ;
|
print_run_result cctxt ~show_source ~parsed:program res)) ;
|
||||||
command ~group ~desc: "Ask the node to typecheck a program."
|
command ~group ~desc: "Ask the node to typecheck a script."
|
||||||
(args4 show_types_switch emacs_mode_switch no_print_source_flag custom_gas_flag)
|
(args4 show_types_switch emacs_mode_switch no_print_source_flag custom_gas_flag)
|
||||||
(prefixes [ "typecheck" ; "program" ]
|
(prefixes [ "typecheck" ; "script" ]
|
||||||
@@ Program.source_param
|
@@ Program.source_param
|
||||||
@@ stop)
|
@@ stop)
|
||||||
(fun (show_types, emacs_mode, no_print_source, original_gas) program cctxt ->
|
(fun (show_types, emacs_mode, no_print_source, original_gas) program cctxt ->
|
||||||
|
Loading…
Reference in New Issue
Block a user