Skip to content

Commit

Permalink
add new_with_name_arg and new_with_model_arg tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ttytm committed Oct 9, 2023
1 parent 972de63 commit 0f4f951
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 7 deletions.
27 changes: 27 additions & 0 deletions cmd/tools/vcreate/tests/new_with_model_arg.expect
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/expect

set timeout 10
# Pass v_root as arg, since we chdir into a temp directoy during testing and create a project there.
set v_root [lindex $argv 0]
set project_name [lindex $argv 1]
set model [lindex $argv 2]

proc expect_then_send {expect_ {send_ ""}} {
expect $expect_ {
if {$send_ != ""} {
send $send_
}
} timeout {
puts "!= $expect_"
exit 1
}
}

spawn $v_root/v run $v_root/cmd/tools/vcreate/ new $project_name $model

expect_then_send "Input your project version: (0.0.0) " "0.0.1\r"
expect_then_send "Input your project license: (MIT) " "\r"
expect_then_send "Initialising ..."
expect_then_send "Complete!"

expect eof
27 changes: 27 additions & 0 deletions cmd/tools/vcreate/tests/new_with_name_arg.expect
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/expect

set timeout 10
# Pass v_root as arg, since we chdir into a temp directoy during testing and create a project there.
set v_root [lindex $argv 0]
set project_name [lindex $argv 1]

proc expect_then_send {expect_ {send_ ""}} {
expect $expect_ {
if {$send_ != ""} {
send $send_
}
} timeout {
puts "!= $expect_"
exit 1
}
}

spawn $v_root/v run $v_root/cmd/tools/vcreate/ new $project_name

expect_then_send "Input your project description: " "\r"
expect_then_send "Input your project version: (0.0.0) " "\r"
expect_then_send "Input your project license: (MIT) " "\r"
expect_then_send "Initialising ..."
expect_then_send "Complete!"

expect eof
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ proc expect_then_send {expect_ {send_ ""}} {
spawn $v_root/v run $v_root/cmd/tools/vcreate/ new

expect_then_send "Input your project name: " "$project_name\r"
expect_then_send "Input your project description: " "My awesome V project.\r"
expect_then_send "Input your project description: " "My Awesome V Project.\r"
expect_then_send "Input your project version: (0.0.0) " "0.1.0\r"
expect_then_send "Input your project license: (MIT) " "GPL\r"
expect_then_send "Initialising ..."
Expand Down
67 changes: 61 additions & 6 deletions cmd/tools/vcreate/vcreate_test.v
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ indent_style = tab
assert os.read_file('.editorconfig')! == editor_config_content
}

fn test_input() {
fn test_with_new_no_arg_input() {
$if windows {
eprintln('Input test for windows are not yet implemented.')
return
Expand All @@ -149,9 +149,9 @@ fn test_input() {

// The expect script will create a new project in the temporary `test_path` directory.
project_name := 'my_project'
new_no_arg := os.execute('${os.join_path(expect_tests_path, 'new_no_arg.expect')} ${@VMODROOT} ${project_name}')
if new_no_arg.exit_code != 0 {
assert false, new_no_arg.output
res := os.execute('${os.join_path(expect_tests_path, 'new_with_no_arg.expect')} ${@VMODROOT} ${project_name}')
if res.exit_code != 0 {
assert false, res.output
}
// Assert mod data set in `new_no_arg.expect`.
mod := vmod.decode(os.read_file(os.join_path(test_path, project_name, 'v.mod')) or {
Expand All @@ -161,12 +161,67 @@ fn test_input() {
assert false, err.str()
return
}
assert mod.name == 'my_project'
assert mod.description == 'My awesome V project.'
assert mod.name == project_name
assert mod.description == 'My Awesome V Project.'
assert mod.version == '0.1.0'
assert mod.license == 'GPL'
}

fn test_new_with_name_arg_input() {
$if windows {
eprintln('Input test for windows are not yet implemented.')
return
}
expect_tests_path := os.join_path(@VMODROOT, 'cmd', 'tools', 'vcreate', 'tests')

// The expect script will create a new project in the temporary `test_path` directory.
project_name := 'my_other_project'
res := os.execute('${os.join_path(expect_tests_path, 'new_with_name_arg.expect')} ${@VMODROOT} ${project_name}')
if res.exit_code != 0 {
assert false, res.output
}
// Assert mod data set in `new_with_name_arg.expect`.
mod := vmod.decode(os.read_file(os.join_path(test_path, project_name, 'v.mod')) or {
assert false, 'Failed reading v.mod of ${project_name}'
return
}) or {
assert false, err.str()
return
}
assert mod.name == project_name
assert mod.description == ''
assert mod.version == '0.0.0'
assert mod.license == 'MIT'
}

fn test_new_with_model_arg_input() {
$if windows {
eprintln('Input test for windows are not yet implemented.')
return
}
expect_tests_path := os.join_path(@VMODROOT, 'cmd', 'tools', 'vcreate', 'tests')

// The expect script will create a new project in the temporary `test_path` directory.
project_name := 'my_lib'
model := 'lib'
res := os.execute('${os.join_path(expect_tests_path, 'new_with_model_arg.expect')} ${@VMODROOT} ${project_name} ${model}')
if res.exit_code != 0 {
assert false, res.output
}
// Assert mod data set in `new_with_model_arg.expect`.
mod := vmod.decode(os.read_file(os.join_path(test_path, project_name, 'v.mod')) or {
assert false, 'Failed reading v.mod of ${project_name}'
return
}) or {
assert false, err.str()
return
}
assert mod.name == project_name
assert mod.description == model
assert mod.version == '0.0.1'
assert mod.license == 'MIT'
}

fn testsuite_end() {
os.rmdir_all(test_path) or {}
}

0 comments on commit 0f4f951

Please sign in to comment.