1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

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

47
cmd/tools/vcreate_test.v Normal file
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')
}