toosl: fix `v init` - terminate newly created files with newlines, add a test (#10480)

* vcreate: Add test for `v init`.

* vcreate: Init git properly with no dir arg.

`v init` would fail to create a .gitignore file. When not providing a
dir arg, passing "" to create_git_repo would result in:

```
V panic: failed to create gitignore: failed to open file "/.gitignore"
```

* vcreate: Terminate files with newline.

Fixes #10478.
pull/10484/head
Ryan Roden-Corrent 2021-06-16 12:57:51 -04:00 committed by GitHub
parent e31be9f5c4
commit 30fac1f877
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 1 deletions

View File

@ -50,6 +50,7 @@ fn vmod_content(c Create) string {
" license: '$c.license'",
' dependencies: []',
'}',
'',
].join('\n')
}
@ -59,6 +60,7 @@ fn main_content() string {
'fn main() {',
" println('Hello World!')",
'}',
'',
].join('\n')
}
@ -72,6 +74,7 @@ fn gen_gitignore(name string) string {
'*.so',
'*.dylib',
'*.dll',
'',
].join('\n')
}
@ -160,7 +163,7 @@ fn init_project() {
c.description = ''
c.write_vmod(false)
c.write_main(false)
c.create_git_repo('')
c.create_git_repo('.')
println("Change your module's description in `v.mod`")
}

View File

@ -0,0 +1,47 @@
import os
const test_path = 'vcreate_test'
fn test_v_init() ? {
dir := os.join_path(os.temp_dir(), test_path)
os.rmdir_all(dir) or {}
os.mkdir(dir) ?
defer {
os.rmdir_all(dir) or {}
}
os.chdir(dir)
vexe := os.getenv('VEXE')
os.execute_or_panic('$vexe init')
assert os.read_file('vcreate_test.v') ? == [
'module main\n',
'fn main() {',
" println('Hello World!')",
'}',
'',
].join('\n')
assert os.read_file('v.mod') ? == [
'Module {',
" name: 'vcreate_test'",
" description: ''",
" version: ''",
" license: ''",
' dependencies: []',
'}',
'',
].join('\n')
assert os.read_file('.gitignore') ? == [
'# Binaries for programs and plugins',
'main',
'vcreate_test',
'*.exe',
'*.exe~',
'*.so',
'*.dylib',
'*.dll',
'',
].join('\n')
}