Skip to content
This repository was archived by the owner on Jul 28, 2023. It is now read-only.

Commit db0dbc3

Browse files
authored
#![dialect(NAME_DIALECT)] (#150)
* Added dialect attribute #![dialect(NAME_DIALECT)]
1 parent a1ea5a2 commit db0dbc3

6 files changed

Lines changed: 245 additions & 29 deletions

File tree

dove/src/tests_helper.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ pub fn project_start_for_init(project_name: &str) -> PathBuf {
2525
}
2626

2727
/// create new project and set local dependencies
28-
pub fn project_start_new(project_name: &str) -> PathBuf {
28+
pub fn project_start_new(project_name: &str, dialect: Option<&str>) -> PathBuf {
2929
let (base_folder, project_folder) = project_start(project_name);
30-
project_new_local(&base_folder, &project_folder, project_name);
30+
project_new_local(&base_folder, &project_folder, project_name, dialect);
3131
project_folder
3232
}
3333

@@ -39,8 +39,8 @@ pub fn project_start_new_default(project_name: &str) -> PathBuf {
3939
}
4040

4141
/// create default project and return project path
42-
pub fn project_start_new_and_build(project_name: &str) -> PathBuf {
43-
let project_folder = project_start_new(project_name);
42+
pub fn project_start_new_and_build(project_name: &str, dialect: Option<&str>) -> PathBuf {
43+
let project_folder = project_start_new(project_name, dialect);
4444
project_build(&project_folder);
4545
project_folder
4646
}
@@ -95,8 +95,17 @@ pub fn set_dependency_in_toml(
9595
}
9696

9797
/// $ dove new ###
98-
pub fn project_new_local(base_folder: &Path, project_folder: &Path, project_name: &str) {
99-
execute_dove_at(&["dove", "new", project_name], base_folder).unwrap();
98+
pub fn project_new_local(
99+
base_folder: &Path,
100+
project_folder: &Path,
101+
project_name: &str,
102+
dialect: Option<&str>,
103+
) {
104+
execute_dove_at(
105+
&["dove", "new", project_name, "-d", dialect.unwrap_or("pont")],
106+
base_folder,
107+
)
108+
.unwrap();
100109
set_dependencies_local_move_stdlib(project_folder);
101110
}
102111

dove/tests/test_cmd_dove_clean.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use dove::tests_helper::{execute_dove_at, project_start_new_and_build, project_r
55
fn test_cmd_dove_clean() {
66
// Path to dove folder, project and project name
77
let project_name = "project_clean";
8-
let project_folder = project_start_new_and_build(project_name);
8+
let project_folder = project_start_new_and_build(project_name, None);
99
let project_artifacts = project_folder.join("artifacts");
1010
assert!(
1111
project_artifacts.exists(),

dove/tests/test_cmd_dove_run.rs

Lines changed: 97 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use fs_extra::file::write_all;
2-
use dove::tests_helper::{execute_dove_at, project_start_new_and_build, project_remove};
2+
use dove::tests_helper::{
3+
execute_dove_at, project_start_new_and_build, project_remove, execute_dove_bin_at,
4+
};
35
use std::path::PathBuf;
46

57
/// $ dove run
@@ -41,7 +43,13 @@ fn test_cmd_dove_run_with_call_and_arguments() {
4143
vec!["dove", "run", "withnums", "--args", "1", "2"],
4244
] {
4345
execute_dove_at(args.as_ref(), &project_folder)
44-
.map(|err| format!("Failed to execute '{}'. Error:{}", args.join(" "), err))
46+
.map_err(|err| {
47+
format!(
48+
"Failed to execute '{}'. Error:{}",
49+
args.join(" "),
50+
err.to_string()
51+
)
52+
})
4553
.unwrap();
4654
}
4755
project_remove(&project_folder);
@@ -61,8 +69,32 @@ fn test_cmd_dove_run_multiple_scripts() {
6169
project_remove(&project_folder);
6270
}
6371

72+
/// dove run 'main()'
73+
#[test]
74+
fn test_cmd_dove_run_script_with_attr_dialect() {
75+
let path_dove = env!("CARGO_BIN_EXE_dove");
76+
for (dialect, result) in [("diem", 1), ("pont", 2), ("dfinance", 3)] {
77+
let project_folder = create_project_with_attr_dialect(
78+
"project_run_script_with_attr_dialect",
79+
Some(dialect),
80+
);
81+
let args = &["dove", "run", "main()"];
82+
let stdout = execute_dove_bin_at(path_dove, args, &project_folder)
83+
.map_err(|err| {
84+
format!(
85+
"Failed to execute '{}'. Error:{}",
86+
args.join(" "),
87+
err.to_string()
88+
)
89+
})
90+
.unwrap();
91+
assert!(stdout.contains(format!("[debug] {}", result).as_str()));
92+
project_remove(&project_folder);
93+
}
94+
}
95+
6496
fn create_project_with_a_single_script_without_parameters(project_name: &str) -> PathBuf {
65-
let project_folder = project_start_new_and_build(project_name);
97+
let project_folder = project_start_new_and_build(project_name, None);
6698
// project_folder/scripts/sdemo.move
6799
write_all(
68100
&project_folder.join("scripts").join("sdemo.move"),
@@ -73,7 +105,7 @@ fn create_project_with_a_single_script_without_parameters(project_name: &str) ->
73105
}
74106

75107
fn create_project_with_any_scripts(project_name: &str) -> PathBuf {
76-
let project_folder = project_start_new_and_build(project_name);
108+
let project_folder = project_start_new_and_build(project_name, None);
77109
// project_folder/scripts/noparams.move
78110
write_all(
79111
&project_folder.join("scripts").join("noparams.move"),
@@ -95,3 +127,64 @@ fn create_project_with_any_scripts(project_name: &str) -> PathBuf {
95127
.unwrap();
96128
project_folder
97129
}
130+
131+
fn create_project_with_attr_dialect(project_name: &str, dialect: Option<&str>) -> PathBuf {
132+
let project_folder = project_start_new_and_build(project_name, dialect);
133+
// project_folder/scripts/main.move
134+
write_all(
135+
&project_folder.join("scripts").join("main.move"),
136+
"script {
137+
use 0x1::Debug;
138+
use 0x1::Version;
139+
fun main(){
140+
Debug::print<u8>(&Version::get());
141+
}
142+
}",
143+
)
144+
.unwrap();
145+
// project_folder/modules/mdiem.move
146+
write_all(
147+
&project_folder.join("modules").join("mdiem.move"),
148+
"
149+
#![dialect(diem)]
150+
/*
151+
#![dialect(dfinance)]
152+
*/
153+
module 0x1::Version{
154+
public fun get():u8{
155+
1
156+
}
157+
}",
158+
)
159+
.unwrap();
160+
// project_folder/modules/mpont.move
161+
write_all(
162+
&project_folder.join("modules").join("mpont.move"),
163+
"
164+
#![dialect(pont)]
165+
/*
166+
// #![dialect(diem)]
167+
*/
168+
module 0x1::Version{
169+
public fun get():u8{
170+
2
171+
}
172+
}",
173+
)
174+
.unwrap();
175+
// project_folder/modules/mdfinance.move
176+
write_all(
177+
&project_folder.join("modules").join("mdfinance.move"),
178+
"
179+
#![dialect(dfinance)]
180+
// #![dialect(pont)]
181+
module 0x1::Version{
182+
public fun get():u8{
183+
3
184+
}
185+
}",
186+
)
187+
.unwrap();
188+
189+
project_folder
190+
}

dove/tests/test_cmd_dove_test.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use dove::tests_helper::{execute_dove_at, project_start_new_and_build, project_r
66
fn test_cmd_dove_test_run_all_test_in_project() {
77
// Path to dove folder, project and project name
88
let project_name = "project_test_run_all_test_in_project";
9-
let project_folder = project_start_new_and_build(project_name);
9+
let project_folder = project_start_new_and_build(project_name, None);
1010
// project_folder/modules/mdemo.move
1111
write_all(
1212
&project_folder.join("modules").join("mdemo.move"),
@@ -39,7 +39,7 @@ fn test_cmd_dove_test_run_all_test_in_project() {
3939
fn test_cmd_dove_test_run_one_test_in_project() {
4040
// Path to dove folder, project and project name
4141
let project_name = "project_test_run_one_test_in_project";
42-
let project_folder = project_start_new_and_build(project_name);
42+
let project_folder = project_start_new_and_build(project_name, None);
4343
// project_folder/modules/mdemo.move
4444
write_all(
4545
&project_folder.join("modules").join("mdemo.move"),
@@ -83,7 +83,7 @@ fn test_cmd_dove_test_run_one_test_in_project() {
8383
fn test_cmd_dove_test_fail_test_in_project() {
8484
// Path to dove folder, project and project name
8585
let project_name = "project_test_fail_test_in_project";
86-
let project_folder = project_start_new_and_build(project_name);
86+
let project_folder = project_start_new_and_build(project_name, None);
8787
// project_folder/tests/test_1.move
8888
write_all(
8989
&project_folder.join("tests").join("test_1.move"),

dove/tests/test_cmd_dove_tx.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use dove::tx::model::{Transaction, Signer, V1};
1313
fn test_cmd_dove_tx_without_arguments() {
1414
// Path to dove folder, project and project name
1515
let project_name = "project_tx_without_arguments";
16-
let project_folder = project_start_new_and_build(project_name);
16+
let project_folder = project_start_new_and_build(project_name, None);
1717
// project_folder/scripts/sdemo.move
1818
write_all(
1919
&project_folder.join("scripts").join("sdemo.move"),
@@ -53,7 +53,7 @@ fn test_cmd_dove_tx_without_arguments() {
5353
fn test_cmd_dove_tx_with_type() {
5454
// Path to dove folder, project and project name
5555
let project_name = "project_tx_with_type";
56-
let project_folder = project_start_new_and_build(project_name);
56+
let project_folder = project_start_new_and_build(project_name, None);
5757
// project_folder/modules/mdemo.move
5858
write_all(
5959
&project_folder.join("modules").join("mdemo.move"),
@@ -149,7 +149,7 @@ fn test_cmd_dove_tx_with_type() {
149149
fn test_cmd_dove_tx_with_output_file_name() {
150150
// Path to dove folder, project and project name
151151
let project_name = "project_tx_with_output_file_name";
152-
let project_folder = project_start_new_and_build(project_name);
152+
let project_folder = project_start_new_and_build(project_name, None);
153153
// project_folder/scripts/sdemo.move
154154
write_all(
155155
&project_folder.join("scripts").join("sdemo.move"),
@@ -180,7 +180,7 @@ fn test_cmd_dove_tx_with_output_file_name() {
180180
fn test_cmd_dove_tx_with_script_name_arg() {
181181
// Path to dove folder, project and project name
182182
let project_name = "project_tx_with_script_name_arg";
183-
let project_folder = project_start_new_and_build(project_name);
183+
let project_folder = project_start_new_and_build(project_name, None);
184184
// project_folder/scripts/sdemo.move
185185
write_all(
186186
&project_folder.join("scripts").join("sdemo.move"),
@@ -212,7 +212,7 @@ fn test_cmd_dove_tx_with_script_name_arg() {
212212
fn test_cmd_dove_tx_with_script_name_option() {
213213
// Path to dove folder, project and project name
214214
let project_name = "project_tx_with_script_name_option";
215-
let project_folder = project_start_new_and_build(project_name);
215+
let project_folder = project_start_new_and_build(project_name, None);
216216
// project_folder/scripts/sdemo.move
217217
write_all(
218218
&project_folder.join("scripts").join("sdemo.move"),
@@ -244,7 +244,7 @@ fn test_cmd_dove_tx_with_script_name_option() {
244244
fn test_cmd_dove_tx_with_script_file_name() {
245245
// Path to dove folder, project and project name
246246
let project_name = "project_tx_with_script_file_name";
247-
let project_folder = project_start_new_and_build(project_name);
247+
let project_folder = project_start_new_and_build(project_name, None);
248248
// project_folder/scripts/sdemo_1.move
249249
write_all(
250250
&project_folder.join("scripts").join("sdemo_1.move"),
@@ -285,7 +285,7 @@ fn test_cmd_dove_tx_with_script_file_name() {
285285
fn test_cmd_dove_tx_with_script_method_args() {
286286
// Path to dove folder, project and project name
287287
let project_name = "project_tx_with_script_method_args";
288-
let project_folder = project_start_new_and_build(project_name);
288+
let project_folder = project_start_new_and_build(project_name, None);
289289
// project_folder/scripts/sdemo.move
290290
write_all(
291291
&project_folder.join("scripts").join("sdemo.move"),
@@ -324,7 +324,7 @@ fn test_cmd_dove_tx_with_script_method_args() {
324324
fn test_cmd_dove_tx_with_script_method_args_option() {
325325
// Path to dove folder, project and project name
326326
let project_name = "project_tx_with_script_method_args_option";
327-
let project_folder = project_start_new_and_build(project_name);
327+
let project_folder = project_start_new_and_build(project_name, None);
328328
// project_folder/scripts/sdemo.move
329329
write_all(
330330
&project_folder.join("scripts").join("sdemo.move"),
@@ -364,7 +364,7 @@ fn test_cmd_dove_tx_with_script_method_args_option() {
364364
fn test_cmd_dove_tx_multiple_scripts() {
365365
// Path to dove folder, project and project name
366366
let project_name = "project_tx_multiple_scripts";
367-
let project_folder = project_start_new_and_build(project_name);
367+
let project_folder = project_start_new_and_build(project_name, None);
368368
// project_folder/scripts/multiple.move
369369
write_all(
370370
&project_folder.join("scripts").join("multiple.move"),
@@ -398,7 +398,7 @@ fn test_cmd_dove_tx_multiple_scripts() {
398398
fn test_cmd_dove_tx_signer() {
399399
// Path to dove folder, project and project name
400400
let project_name = "project_tx_signer";
401-
let project_folder = project_start_new_and_build(project_name);
401+
let project_folder = project_start_new_and_build(project_name, None);
402402
// project_folder/scripts/signer.move
403403
write_all(
404404
&project_folder.join("scripts").join("signer.move"),

0 commit comments

Comments
 (0)