all: bring back `panic(err.msg)` -> `panic(err)` (#9022)
parent
ce115dcbe0
commit
b712af56fd
|
@ -81,7 +81,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn exec(s string) string {
|
fn exec(s string) string {
|
||||||
e := os.exec(s) or { panic(err.msg) }
|
e := os.exec(s) or { panic(err) }
|
||||||
return e.output.trim_right('\r\n')
|
return e.output.trim_right('\r\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ fn measure(cmd string, description string) int {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn measure_steps(vdir string) (int, int, int) {
|
fn measure_steps(vdir string) (int, int, int) {
|
||||||
resp := os.exec('$vdir/vprod -o v.c -show-timings $vdir/cmd/v') or { panic(err.msg) }
|
resp := os.exec('$vdir/vprod -o v.c -show-timings $vdir/cmd/v') or { panic(err) }
|
||||||
lines := resp.output.split_into_lines()
|
lines := resp.output.split_into_lines()
|
||||||
if lines.len != 3 {
|
if lines.len != 3 {
|
||||||
return 0, 0, 0
|
return 0, 0, 0
|
||||||
|
|
|
@ -210,7 +210,7 @@ fn (mut gen_vc GenVC) generate() {
|
||||||
// check if gen_vc dir exists
|
// check if gen_vc dir exists
|
||||||
if !os.is_dir(gen_vc.options.work_dir) {
|
if !os.is_dir(gen_vc.options.work_dir) {
|
||||||
// try create
|
// try create
|
||||||
os.mkdir(gen_vc.options.work_dir) or { panic(err.msg) }
|
os.mkdir(gen_vc.options.work_dir) or { panic(err) }
|
||||||
// still dosen't exist... we have a problem
|
// still dosen't exist... we have a problem
|
||||||
if !os.is_dir(gen_vc.options.work_dir) {
|
if !os.is_dir(gen_vc.options.work_dir) {
|
||||||
gen_vc.logger.error('error creating directory: $gen_vc.options.work_dir')
|
gen_vc.logger.error('error creating directory: $gen_vc.options.work_dir')
|
||||||
|
@ -246,8 +246,8 @@ fn (mut gen_vc GenVC) generate() {
|
||||||
ts_v := git_log_v.find_between('Date:', '\n').trim_space()
|
ts_v := git_log_v.find_between('Date:', '\n').trim_space()
|
||||||
ts_vc := git_log_vc.find_between('Date:', '\n').trim_space()
|
ts_vc := git_log_vc.find_between('Date:', '\n').trim_space()
|
||||||
// parse time as string to time.Time
|
// parse time as string to time.Time
|
||||||
last_commit_time_v := time.parse(ts_v) or { panic(err.msg) }
|
last_commit_time_v := time.parse(ts_v) or { panic(err) }
|
||||||
last_commit_time_vc := time.parse(ts_vc) or { panic(err.msg) }
|
last_commit_time_vc := time.parse(ts_vc) or { panic(err) }
|
||||||
// git dates are in users local timezone and v time.parse does not parse
|
// git dates are in users local timezone and v time.parse does not parse
|
||||||
// timezones at the moment, so for now get unix timestamp from output also
|
// timezones at the moment, so for now get unix timestamp from output also
|
||||||
t_unix_v := git_log_v.find_between('Date Unix:', '\n').trim_space().int()
|
t_unix_v := git_log_v.find_between('Date Unix:', '\n').trim_space().int()
|
||||||
|
|
|
@ -55,7 +55,7 @@ fn report_undocumented_functions_in_path(opt Options, path string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn report_undocumented_functions_in_file(opt Options, file string) {
|
fn report_undocumented_functions_in_file(opt Options, file string) {
|
||||||
contents := os.read_file(file) or { panic(err.msg) }
|
contents := os.read_file(file) or { panic(err) }
|
||||||
lines := contents.split('\n')
|
lines := contents.split('\n')
|
||||||
mut info := []UndocumentedFN{}
|
mut info := []UndocumentedFN{}
|
||||||
for i, line in lines {
|
for i, line in lines {
|
||||||
|
|
|
@ -53,9 +53,9 @@ pub fn rmrf(path string) {
|
||||||
verbose_trace(@FN, 'rm -rf $path')
|
verbose_trace(@FN, 'rm -rf $path')
|
||||||
if os.exists(path) {
|
if os.exists(path) {
|
||||||
if os.is_dir(path) {
|
if os.is_dir(path) {
|
||||||
os.rmdir_all(path) or { panic(err.msg) }
|
os.rmdir_all(path) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
os.rm(path) or { panic(err.msg) }
|
os.rm(path) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,7 +221,7 @@ pub fn (mut ts TestSession) test() {
|
||||||
// cleanup generated .tmp.c files after successfull tests:
|
// cleanup generated .tmp.c files after successfull tests:
|
||||||
if ts.benchmark.nfail == 0 {
|
if ts.benchmark.nfail == 0 {
|
||||||
if ts.rm_binaries {
|
if ts.rm_binaries {
|
||||||
os.rmdir_all(ts.vtmp_dir) or { panic(err.msg) }
|
os.rmdir_all(ts.vtmp_dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,7 +255,7 @@ fn worker_trunner(mut p pool.PoolProcessor, idx int, thread_id int) voidptr {
|
||||||
generated_binary_fpath := os.join_path(tmpd, generated_binary_fname)
|
generated_binary_fpath := os.join_path(tmpd, generated_binary_fname)
|
||||||
if os.exists(generated_binary_fpath) {
|
if os.exists(generated_binary_fpath) {
|
||||||
if ts.rm_binaries {
|
if ts.rm_binaries {
|
||||||
os.rm(generated_binary_fpath) or { panic(err.msg) }
|
os.rm(generated_binary_fpath) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mut cmd_options := [ts.vargs]
|
mut cmd_options := [ts.vargs]
|
||||||
|
@ -308,7 +308,7 @@ fn worker_trunner(mut p pool.PoolProcessor, idx int, thread_id int) voidptr {
|
||||||
}
|
}
|
||||||
if os.exists(generated_binary_fpath) {
|
if os.exists(generated_binary_fpath) {
|
||||||
if ts.rm_binaries {
|
if ts.rm_binaries {
|
||||||
os.rm(generated_binary_fpath) or { panic(err.msg) }
|
os.rm(generated_binary_fpath) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pool.no_result
|
return pool.no_result
|
||||||
|
@ -358,7 +358,7 @@ pub fn prepare_test_session(zargs string, folder string, oskipped []string, main
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c := os.read_file(f) or { panic(err.msg) }
|
c := os.read_file(f) or { panic(err) }
|
||||||
maxc := if c.len > 300 { 300 } else { c.len }
|
maxc := if c.len > 300 { 300 } else { c.len }
|
||||||
start := c[0..maxc]
|
start := c[0..maxc]
|
||||||
if start.contains('module ') && !start.contains('module main') {
|
if start.contains('module ') && !start.contains('module main') {
|
||||||
|
@ -436,7 +436,7 @@ pub fn header(msg string) {
|
||||||
pub fn setup_new_vtmp_folder() string {
|
pub fn setup_new_vtmp_folder() string {
|
||||||
now := time.sys_mono_now()
|
now := time.sys_mono_now()
|
||||||
new_vtmp_dir := os.join_path(os.temp_dir(), 'v', 'test_session_$now')
|
new_vtmp_dir := os.join_path(os.temp_dir(), 'v', 'test_session_$now')
|
||||||
os.mkdir_all(new_vtmp_dir) or { panic(err.msg) }
|
os.mkdir_all(new_vtmp_dir) or { panic(err) }
|
||||||
os.setenv('VTMP', new_vtmp_dir, true)
|
os.setenv('VTMP', new_vtmp_dir, true)
|
||||||
return new_vtmp_dir
|
return new_vtmp_dir
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ fn main() {
|
||||||
scripting.cprintln('# checkout folder: $context.path_v')
|
scripting.cprintln('# checkout folder: $context.path_v')
|
||||||
if context.cmd_to_run.len > 0 {
|
if context.cmd_to_run.len > 0 {
|
||||||
cmdres := os.exec(context.cmd_to_run) or {
|
cmdres := os.exec(context.cmd_to_run) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
scripting.cprintln('# command: ${context.cmd_to_run:-34s} exit code: ${cmdres.exit_code:-4d} result:')
|
scripting.cprintln('# command: ${context.cmd_to_run:-34s} exit code: ${cmdres.exit_code:-4d} result:')
|
||||||
println(cmdres.output)
|
println(cmdres.output)
|
||||||
|
|
|
@ -28,16 +28,16 @@ fn get_vexe_path() string {
|
||||||
fn new_tdir() string {
|
fn new_tdir() string {
|
||||||
tdir_ := os.join_path(os.temp_dir(), rand.ulid())
|
tdir_ := os.join_path(os.temp_dir(), rand.ulid())
|
||||||
if os.exists(tdir_) {
|
if os.exists(tdir_) {
|
||||||
os.rmdir(tdir_) or { panic(err.msg) }
|
os.rmdir(tdir_) or { panic(err) }
|
||||||
}
|
}
|
||||||
os.mkdir(tdir_) or { panic(err.msg) }
|
os.mkdir(tdir_) or { panic(err) }
|
||||||
C.atexit(cleanup_tdir)
|
C.atexit(cleanup_tdir)
|
||||||
return tdir_
|
return tdir_
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cleanup_tdir() {
|
fn cleanup_tdir() {
|
||||||
println('... removing tdir: $tdir')
|
println('... removing tdir: $tdir')
|
||||||
os.rmdir_all(tdir) or { panic(err.msg) }
|
os.rmdir_all(tdir) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -55,7 +55,7 @@ fn main() {
|
||||||
|
|
||||||
fn check_ok(cmd string) string {
|
fn check_ok(cmd string) string {
|
||||||
println('> check_ok cmd: $cmd')
|
println('> check_ok cmd: $cmd')
|
||||||
res := os.exec(cmd) or { panic(err.msg) }
|
res := os.exec(cmd) or { panic(err) }
|
||||||
if res.exit_code != 0 {
|
if res.exit_code != 0 {
|
||||||
eprintln('> check_ok failed.\n$res.output')
|
eprintln('> check_ok failed.\n$res.output')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -65,7 +65,7 @@ fn check_ok(cmd string) string {
|
||||||
|
|
||||||
fn check_fail(cmd string) string {
|
fn check_fail(cmd string) string {
|
||||||
println('> check_fail cmd: $cmd')
|
println('> check_fail cmd: $cmd')
|
||||||
res := os.exec(cmd) or { panic(err.msg) }
|
res := os.exec(cmd) or { panic(err) }
|
||||||
if res.exit_code == 0 {
|
if res.exit_code == 0 {
|
||||||
eprintln('> check_fail succeeded, but it should have failed.\n$res.output')
|
eprintln('> check_fail succeeded, but it should have failed.\n$res.output')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
|
@ -55,7 +55,7 @@ fn main() {
|
||||||
//
|
//
|
||||||
tpath := os.join_path(session.vtmp_dir, texe)
|
tpath := os.join_path(session.vtmp_dir, texe)
|
||||||
if tname in tools_in_subfolders {
|
if tname in tools_in_subfolders {
|
||||||
os.mv_by_cp(tpath, os.join_path(tfolder, tname, texe)) or { panic(err.msg) }
|
os.mv_by_cp(tpath, os.join_path(tfolder, tname, texe)) or { panic(err) }
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
os.mv_by_cp(tpath, os.join_path(tfolder, texe)) or {
|
os.mv_by_cp(tpath, os.join_path(tfolder, texe)) or {
|
||||||
|
|
|
@ -244,7 +244,7 @@ fn (mut f MDFile) check_examples() (int, int) {
|
||||||
mut should_cleanup_vfile := true
|
mut should_cleanup_vfile := true
|
||||||
// eprintln('>>> checking example $vfile ...')
|
// eprintln('>>> checking example $vfile ...')
|
||||||
vcontent := e.text.join('\n') + '\n'
|
vcontent := e.text.join('\n') + '\n'
|
||||||
os.write_file(vfile, vcontent) or { panic(err.msg) }
|
os.write_file(vfile, vcontent) or { panic(err) }
|
||||||
mut acommands := e.command.split(' ')
|
mut acommands := e.command.split(' ')
|
||||||
nofmt := 'nofmt' in acommands
|
nofmt := 'nofmt' in acommands
|
||||||
for command in acommands {
|
for command in acommands {
|
||||||
|
@ -331,7 +331,7 @@ fn (mut f MDFile) check_examples() (int, int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if should_cleanup_vfile {
|
if should_cleanup_vfile {
|
||||||
os.rm(vfile) or { panic(err.msg) }
|
os.rm(vfile) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errors, oks
|
return errors, oks
|
||||||
|
|
|
@ -58,7 +58,7 @@ fn (c &Create) write_vmod(new bool) {
|
||||||
cerror(err.msg)
|
cerror(err.msg)
|
||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
vmod.write_str(vmod_content(c.name, c.description)) or { panic(err.msg) }
|
vmod.write_str(vmod_content(c.name, c.description)) or { panic(err) }
|
||||||
vmod.close()
|
vmod.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ fn (c &Create) write_main(new bool) {
|
||||||
cerror(err.msg)
|
cerror(err.msg)
|
||||||
exit(2)
|
exit(2)
|
||||||
}
|
}
|
||||||
mainfile.write_str(main_content()) or { panic(err.msg) }
|
mainfile.write_str(main_content()) or { panic(err) }
|
||||||
mainfile.close()
|
mainfile.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ fn (c &Create) create_git_repo(dir string) {
|
||||||
// We don't really need a .gitignore, it's just a nice-to-have
|
// We don't really need a .gitignore, it's just a nice-to-have
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fl.write_str(gen_gitignore(c.name)) or { panic(err.msg) }
|
fl.write_str(gen_gitignore(c.name)) or { panic(err) }
|
||||||
fl.close()
|
fl.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ fn create() {
|
||||||
}
|
}
|
||||||
c.description = os.input('Input your project description: ')
|
c.description = os.input('Input your project description: ')
|
||||||
println('Initialising ...')
|
println('Initialising ...')
|
||||||
os.mkdir(c.name) or { panic(err.msg) }
|
os.mkdir(c.name) or { panic(err) }
|
||||||
c.write_vmod(true)
|
c.write_vmod(true)
|
||||||
c.write_main(true)
|
c.write_main(true)
|
||||||
c.create_git_repo(c.name)
|
c.create_git_repo(c.name)
|
||||||
|
|
|
@ -126,7 +126,7 @@ fn (vd VDoc) render_search_index(out Output) {
|
||||||
js_search_index.writeln('];')
|
js_search_index.writeln('];')
|
||||||
js_search_data.writeln('];')
|
js_search_data.writeln('];')
|
||||||
out_file_path := os.join_path(out.path, 'search_index.js')
|
out_file_path := os.join_path(out.path, 'search_index.js')
|
||||||
os.write_file(out_file_path, js_search_index.str() + js_search_data.str()) or { panic(err.msg) }
|
os.write_file(out_file_path, js_search_index.str() + js_search_data.str()) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut vd VDoc) render_static_html(out Output) {
|
fn (mut vd VDoc) render_static_html(out Output) {
|
||||||
|
@ -162,7 +162,7 @@ fn (vd VDoc) get_resource(name string, out Output) string {
|
||||||
output_path := os.join_path(out.path, name)
|
output_path := os.join_path(out.path, name)
|
||||||
if !os.exists(output_path) {
|
if !os.exists(output_path) {
|
||||||
println('Generating $out.typ in "$output_path"')
|
println('Generating $out.typ in "$output_path"')
|
||||||
os.write_file(output_path, res) or { panic(err.msg) }
|
os.write_file(output_path, res) or { panic(err) }
|
||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,7 +162,7 @@ fn (vd VDoc) work_processor(mut work sync.Channel, mut wg sync.WaitGroup) {
|
||||||
file_name, content := vd.render_doc(pdoc.d, pdoc.out)
|
file_name, content := vd.render_doc(pdoc.d, pdoc.out)
|
||||||
output_path := os.join_path(pdoc.out.path, file_name)
|
output_path := os.join_path(pdoc.out.path, file_name)
|
||||||
println('Generating $pdoc.out.typ in "$output_path"')
|
println('Generating $pdoc.out.typ in "$output_path"')
|
||||||
os.write_file(output_path, content) or { panic(err.msg) }
|
os.write_file(output_path, content) or { panic(err) }
|
||||||
}
|
}
|
||||||
wg.done()
|
wg.done()
|
||||||
}
|
}
|
||||||
|
@ -350,15 +350,15 @@ fn (mut vd VDoc) generate_docs_from_file() {
|
||||||
out.path = os.real_path('.')
|
out.path = os.real_path('.')
|
||||||
}
|
}
|
||||||
if !os.exists(out.path) {
|
if !os.exists(out.path) {
|
||||||
os.mkdir(out.path) or { panic(err.msg) }
|
os.mkdir(out.path) or { panic(err) }
|
||||||
}
|
}
|
||||||
if cfg.is_multi {
|
if cfg.is_multi {
|
||||||
out.path = os.join_path(out.path, '_docs')
|
out.path = os.join_path(out.path, '_docs')
|
||||||
if !os.exists(out.path) {
|
if !os.exists(out.path) {
|
||||||
os.mkdir(out.path) or { panic(err.msg) }
|
os.mkdir(out.path) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
for fname in css_js_assets {
|
for fname in css_js_assets {
|
||||||
os.rm(os.join_path(out.path, fname)) or { panic(err.msg) }
|
os.rm(os.join_path(out.path, fname)) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -372,11 +372,11 @@ fn (mut vd VDoc) generate_docs_from_file() {
|
||||||
vd.render_search_index(out)
|
vd.render_search_index(out)
|
||||||
// move favicons to target directory
|
// move favicons to target directory
|
||||||
println('Copying favicons...')
|
println('Copying favicons...')
|
||||||
favicons := os.ls(favicons_path) or { panic(err.msg) }
|
favicons := os.ls(favicons_path) or { panic(err) }
|
||||||
for favicon in favicons {
|
for favicon in favicons {
|
||||||
favicon_path := os.join_path(favicons_path, favicon)
|
favicon_path := os.join_path(favicons_path, favicon)
|
||||||
destination_path := os.join_path(out.path, favicon)
|
destination_path := os.join_path(out.path, favicon)
|
||||||
os.cp(favicon_path, destination_path) or { panic(err.msg) }
|
os.cp(favicon_path, destination_path) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ fn (foptions &FormatOptions) format_file(file string) {
|
||||||
file_name := os.file_name(file)
|
file_name := os.file_name(file)
|
||||||
ulid := rand.ulid()
|
ulid := rand.ulid()
|
||||||
vfmt_output_path := os.join_path(vtmp_folder, 'vfmt_${ulid}_$file_name')
|
vfmt_output_path := os.join_path(vtmp_folder, 'vfmt_${ulid}_$file_name')
|
||||||
os.write_file(vfmt_output_path, formatted_content) or { panic(err.msg) }
|
os.write_file(vfmt_output_path, formatted_content) or { panic(err) }
|
||||||
if foptions.is_verbose {
|
if foptions.is_verbose {
|
||||||
eprintln('fmt.fmt worked and $formatted_content.len bytes were written to $vfmt_output_path .')
|
eprintln('fmt.fmt worked and $formatted_content.len bytes were written to $vfmt_output_path .')
|
||||||
}
|
}
|
||||||
|
@ -266,7 +266,7 @@ fn (foptions &FormatOptions) post_process_file(file string, formatted_file_path
|
||||||
}
|
}
|
||||||
if foptions.is_w {
|
if foptions.is_w {
|
||||||
if is_formatted_different {
|
if is_formatted_different {
|
||||||
os.mv_by_cp(formatted_file_path, file) or { panic(err.msg) }
|
os.mv_by_cp(formatted_file_path, file) or { panic(err) }
|
||||||
eprintln('Reformatted file: $file')
|
eprintln('Reformatted file: $file')
|
||||||
} else {
|
} else {
|
||||||
eprintln('Already formatted file: $file')
|
eprintln('Already formatted file: $file')
|
||||||
|
@ -312,7 +312,7 @@ fn get_compile_name_of_potential_v_project(file string) string {
|
||||||
pfolder := os.real_path(os.dir(file))
|
pfolder := os.real_path(os.dir(file))
|
||||||
// a .v project has many 'module main' files in one folder
|
// a .v project has many 'module main' files in one folder
|
||||||
// if there is only one .v file, then it must be a standalone
|
// if there is only one .v file, then it must be a standalone
|
||||||
all_files_in_pfolder := os.ls(pfolder) or { panic(err.msg) }
|
all_files_in_pfolder := os.ls(pfolder) or { panic(err) }
|
||||||
mut vfiles := []string{}
|
mut vfiles := []string{}
|
||||||
for f in all_files_in_pfolder {
|
for f in all_files_in_pfolder {
|
||||||
vf := os.join_path(pfolder, f)
|
vf := os.join_path(pfolder, f)
|
||||||
|
@ -332,7 +332,7 @@ fn get_compile_name_of_potential_v_project(file string) string {
|
||||||
// a project folder, that should be compiled with `v pfolder`.
|
// a project folder, that should be compiled with `v pfolder`.
|
||||||
mut main_fns := 0
|
mut main_fns := 0
|
||||||
for f in vfiles {
|
for f in vfiles {
|
||||||
slines := read_source_lines(f) or { panic(err.msg) }
|
slines := read_source_lines(f) or { panic(err) }
|
||||||
for line in slines {
|
for line in slines {
|
||||||
if line.contains('fn main()') {
|
if line.contains('fn main()') {
|
||||||
main_fns++
|
main_fns++
|
||||||
|
|
|
@ -71,7 +71,7 @@ fn main() {
|
||||||
'install' {
|
'install' {
|
||||||
if module_names.len == 0 && os.exists('./v.mod') {
|
if module_names.len == 0 && os.exists('./v.mod') {
|
||||||
println('Detected v.mod file inside the project directory. Using it...')
|
println('Detected v.mod file inside the project directory. Using it...')
|
||||||
manifest := vmod.from_file('./v.mod') or { panic(err.msg) }
|
manifest := vmod.from_file('./v.mod') or { panic(err) }
|
||||||
module_names = manifest.dependencies
|
module_names = manifest.dependencies
|
||||||
}
|
}
|
||||||
vpm_install(module_names)
|
vpm_install(module_names)
|
||||||
|
@ -331,13 +331,13 @@ fn vpm_remove(module_names []string) {
|
||||||
final_module_path := valid_final_path_of_existing_module(name) or { continue }
|
final_module_path := valid_final_path_of_existing_module(name) or { continue }
|
||||||
println('Removing module "$name"...')
|
println('Removing module "$name"...')
|
||||||
verbose_println('removing folder $final_module_path')
|
verbose_println('removing folder $final_module_path')
|
||||||
os.rmdir_all(final_module_path) or { panic(err.msg) }
|
os.rmdir_all(final_module_path) or { panic(err) }
|
||||||
// delete author directory if it is empty
|
// delete author directory if it is empty
|
||||||
author := name.split('.')[0]
|
author := name.split('.')[0]
|
||||||
author_dir := os.real_path(os.join_path(settings.vmodules_path, author))
|
author_dir := os.real_path(os.join_path(settings.vmodules_path, author))
|
||||||
if os.is_dir_empty(author_dir) {
|
if os.is_dir_empty(author_dir) {
|
||||||
verbose_println('removing author folder $author_dir')
|
verbose_println('removing author folder $author_dir')
|
||||||
os.rmdir(author_dir) or { panic(err.msg) }
|
os.rmdir(author_dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -364,7 +364,7 @@ fn valid_final_path_of_existing_module(name string) ?string {
|
||||||
fn ensure_vmodules_dir_exist() {
|
fn ensure_vmodules_dir_exist() {
|
||||||
if !os.is_dir(settings.vmodules_path) {
|
if !os.is_dir(settings.vmodules_path) {
|
||||||
println('Creating $settings.vmodules_path/ ...')
|
println('Creating $settings.vmodules_path/ ...')
|
||||||
os.mkdir(settings.vmodules_path) or { panic(err.msg) }
|
os.mkdir(settings.vmodules_path) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ fn get_installed_modules() []string {
|
||||||
|
|
||||||
fn get_all_modules() []string {
|
fn get_all_modules() []string {
|
||||||
url := get_working_server_url()
|
url := get_working_server_url()
|
||||||
r := http.get(url) or { panic(err.msg) }
|
r := http.get(url) or { panic(err) }
|
||||||
if r.status_code != 200 {
|
if r.status_code != 200 {
|
||||||
println('Failed to search vpm.vlang.io. Status code: $r.status_code')
|
println('Failed to search vpm.vlang.io. Status code: $r.status_code')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
|
@ -184,7 +184,7 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
||||||
}
|
}
|
||||||
if r.line.starts_with('print') {
|
if r.line.starts_with('print') {
|
||||||
source_code := r.current_source_code(false) + '\n$r.line\n'
|
source_code := r.current_source_code(false) + '\n$r.line\n'
|
||||||
os.write_file(file, source_code) or { panic(err.msg) }
|
os.write_file(file, source_code) or { panic(err) }
|
||||||
s := repl_run_vfile(file) or { return }
|
s := repl_run_vfile(file) or { return }
|
||||||
print_output(s)
|
print_output(s)
|
||||||
} else {
|
} else {
|
||||||
|
@ -251,7 +251,7 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
||||||
}
|
}
|
||||||
temp_source_code = r.current_source_code(true) + '\n$temp_line\n'
|
temp_source_code = r.current_source_code(true) + '\n$temp_line\n'
|
||||||
}
|
}
|
||||||
os.write_file(temp_file, temp_source_code) or { panic(err.msg) }
|
os.write_file(temp_file, temp_source_code) or { panic(err) }
|
||||||
s := repl_run_vfile(temp_file) or { return }
|
s := repl_run_vfile(temp_file) or { return }
|
||||||
if !func_call && s.exit_code == 0 && !temp_flag {
|
if !func_call && s.exit_code == 0 && !temp_flag {
|
||||||
for r.temp_lines.len > 0 {
|
for r.temp_lines.len > 0 {
|
||||||
|
|
|
@ -27,12 +27,12 @@ fn main() {
|
||||||
// The user just wants an independent copy of v, and so we are done.
|
// The user just wants an independent copy of v, and so we are done.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
backup_old_version_and_rename_newer() or { panic(err.msg) }
|
backup_old_version_and_rename_newer() or { panic(err) }
|
||||||
println('V built successfully!')
|
println('V built successfully!')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn compile(vroot string, cmd string) {
|
fn compile(vroot string, cmd string) {
|
||||||
result := os.exec(cmd) or { panic(err.msg) }
|
result := os.exec(cmd) or { panic(err) }
|
||||||
if result.exit_code != 0 {
|
if result.exit_code != 0 {
|
||||||
eprintln('cannot compile to `$vroot`: \n$result.output')
|
eprintln('cannot compile to `$vroot`: \n$result.output')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -76,7 +76,7 @@ fn backup_old_version_and_rename_newer() ?bool {
|
||||||
os.rm(v_file) or { }
|
os.rm(v_file) or { }
|
||||||
|
|
||||||
list_folder('', 'moving $v2_file to $v_file ...')
|
list_folder('', 'moving $v2_file to $v_file ...')
|
||||||
os.mv_by_cp(v2_file, v_file) or { panic(err.msg) }
|
os.mv_by_cp(v2_file, v_file) or { panic(err) }
|
||||||
|
|
||||||
list_folder('after:', '')
|
list_folder('after:', '')
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ fn main() {
|
||||||
println('Thirdparty "freetype" is already installed.')
|
println('Thirdparty "freetype" is already installed.')
|
||||||
} else {
|
} else {
|
||||||
s := os.exec('git clone --depth=1 https://github.com/ubawurinna/freetype-windows-binaries ./thirdparty/freetype/') or {
|
s := os.exec('git clone --depth=1 https://github.com/ubawurinna/freetype-windows-binaries ./thirdparty/freetype/') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
println(s.output)
|
println(s.output)
|
||||||
println('Thirdparty "freetype" installed successfully.')
|
println('Thirdparty "freetype" installed successfully.')
|
||||||
|
|
|
@ -27,11 +27,11 @@ fn setup_symlink_unix(vexe string) {
|
||||||
if os.system("uname -o | grep -q '[A/a]ndroid'") == 1 {
|
if os.system("uname -o | grep -q '[A/a]ndroid'") == 1 {
|
||||||
link_dir := '/usr/local/bin'
|
link_dir := '/usr/local/bin'
|
||||||
if !os.exists(link_dir) {
|
if !os.exists(link_dir) {
|
||||||
os.mkdir_all(link_dir) or { panic(err.msg) }
|
os.mkdir_all(link_dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
link_path = link_dir + '/v'
|
link_path = link_dir + '/v'
|
||||||
}
|
}
|
||||||
ret := os.exec('ln -sf $vexe $link_path') or { panic(err.msg) }
|
ret := os.exec('ln -sf $vexe $link_path') or { panic(err) }
|
||||||
if ret.exit_code == 0 {
|
if ret.exit_code == 0 {
|
||||||
println('Symlink "$link_path" has been created')
|
println('Symlink "$link_path" has been created')
|
||||||
} else {
|
} else {
|
||||||
|
@ -49,14 +49,14 @@ fn setup_symlink_windows(vexe string) {
|
||||||
mut vsymlink := os.join_path(vsymlinkdir, 'v.exe')
|
mut vsymlink := os.join_path(vsymlinkdir, 'v.exe')
|
||||||
// Remove old symlink first (v could have been moved, symlink rerun)
|
// Remove old symlink first (v could have been moved, symlink rerun)
|
||||||
if !os.exists(vsymlinkdir) {
|
if !os.exists(vsymlinkdir) {
|
||||||
os.mkdir(vsymlinkdir) or { panic(err.msg) }
|
os.mkdir(vsymlinkdir) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
if os.exists(vsymlink) {
|
if os.exists(vsymlink) {
|
||||||
os.rm(vsymlink) or { panic(err.msg) }
|
os.rm(vsymlink) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
vsymlink = os.join_path(vsymlinkdir, 'v.bat')
|
vsymlink = os.join_path(vsymlinkdir, 'v.bat')
|
||||||
if os.exists(vsymlink) {
|
if os.exists(vsymlink) {
|
||||||
os.rm(vsymlink) or { panic(err.msg) }
|
os.rm(vsymlink) or { panic(err) }
|
||||||
}
|
}
|
||||||
vsymlink = os.join_path(vsymlinkdir, 'v.exe')
|
vsymlink = os.join_path(vsymlinkdir, 'v.exe')
|
||||||
}
|
}
|
||||||
|
@ -69,9 +69,9 @@ fn setup_symlink_windows(vexe string) {
|
||||||
eprintln('Creating a batch file instead...')
|
eprintln('Creating a batch file instead...')
|
||||||
vsymlink = os.join_path(vsymlinkdir, 'v.bat')
|
vsymlink = os.join_path(vsymlinkdir, 'v.bat')
|
||||||
if os.exists(vsymlink) {
|
if os.exists(vsymlink) {
|
||||||
os.rm(vsymlink) or { panic(err.msg) }
|
os.rm(vsymlink) or { panic(err) }
|
||||||
}
|
}
|
||||||
os.write_file(vsymlink, '@echo off\n$vexe %*') or { panic(err.msg) }
|
os.write_file(vsymlink, '@echo off\n$vexe %*') or { panic(err) }
|
||||||
eprintln('$vsymlink file written.')
|
eprintln('$vsymlink file written.')
|
||||||
}
|
}
|
||||||
if !os.exists(vsymlink) {
|
if !os.exists(vsymlink) {
|
||||||
|
|
|
@ -41,7 +41,7 @@ fn main() {
|
||||||
app.backup('cmd/tools/vup.exe')
|
app.backup('cmd/tools/vup.exe')
|
||||||
}
|
}
|
||||||
app.recompile_v()
|
app.recompile_v()
|
||||||
os.exec('"$app.vexe" cmd/tools/vup.v') or { panic(err.msg) }
|
os.exec('"$app.vexe" cmd/tools/vup.v') or { panic(err) }
|
||||||
app.show_current_v_version()
|
app.show_current_v_version()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ fn (app App) make(vself string) {
|
||||||
$if windows {
|
$if windows {
|
||||||
make = 'make.bat'
|
make = 'make.bat'
|
||||||
}
|
}
|
||||||
make_result := os.exec(make) or { panic(err.msg) }
|
make_result := os.exec(make) or { panic(err) }
|
||||||
app.vprintln(make_result.output)
|
app.vprintln(make_result.output)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ fn (app App) git_command(command string) {
|
||||||
git_result := os.exec('git $command') or {
|
git_result := os.exec('git $command') or {
|
||||||
app.get_git()
|
app.get_git()
|
||||||
// Try it again with (maybe) git installed
|
// Try it again with (maybe) git installed
|
||||||
os.exec('git $command') or { panic(err.msg) }
|
os.exec('git $command') or { panic(err) }
|
||||||
}
|
}
|
||||||
if git_result.exit_code != 0 {
|
if git_result.exit_code != 0 {
|
||||||
eprintln(git_result.output)
|
eprintln(git_result.output)
|
||||||
|
@ -136,11 +136,11 @@ fn (app App) get_git() {
|
||||||
// We'll use 32 bit because maybe someone out there is using 32-bit windows
|
// We'll use 32 bit because maybe someone out there is using 32-bit windows
|
||||||
os.exec('bitsadmin.exe /transfer "vgit" https://github.com/git-for-windows/git/releases/download/v2.30.0.windows.2/Git-2.30.0.2-32-bit.exe "$os.getwd()/git32.exe"') or {
|
os.exec('bitsadmin.exe /transfer "vgit" https://github.com/git-for-windows/git/releases/download/v2.30.0.windows.2/Git-2.30.0.2-32-bit.exe "$os.getwd()/git32.exe"') or {
|
||||||
eprintln('Unable to install git automatically: please install git manually')
|
eprintln('Unable to install git automatically: please install git manually')
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
os.exec('$os.getwd()/git32.exe') or {
|
os.exec('$os.getwd()/git32.exe') or {
|
||||||
eprintln('Unable to install git automatically: please install git manually')
|
eprintln('Unable to install git automatically: please install git manually')
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
} $else { // Probably some kind of *nix, usually need to get using a package manager.
|
} $else { // Probably some kind of *nix, usually need to get using a package manager.
|
||||||
eprintln("error: Install `git` using your system's package manager")
|
eprintln("error: Install `git` using your system's package manager")
|
||||||
|
|
|
@ -21,7 +21,7 @@ fn test_vet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_tests_in_dir(dir string) []string {
|
fn get_tests_in_dir(dir string) []string {
|
||||||
files := os.ls(dir) or { panic(err.msg) }
|
files := os.ls(dir) or { panic(err) }
|
||||||
mut tests := files.filter(it.ends_with('.vv'))
|
mut tests := files.filter(it.ends_with('.vv'))
|
||||||
tests.sort()
|
tests.sort()
|
||||||
return tests
|
return tests
|
||||||
|
@ -34,8 +34,8 @@ fn check_path(vexe string, dir string, tests []string) int {
|
||||||
program := path
|
program := path
|
||||||
print(path + ' ')
|
print(path + ' ')
|
||||||
// -force is needed so that `v vet` would not skip the regression files
|
// -force is needed so that `v vet` would not skip the regression files
|
||||||
res := os.exec('$vexe vet -force $program') or { panic(err.msg) }
|
res := os.exec('$vexe vet -force $program') or { panic(err) }
|
||||||
mut expected := os.read_file(program.replace('.vv', '') + '.out') or { panic(err.msg) }
|
mut expected := os.read_file(program.replace('.vv', '') + '.out') or { panic(err) }
|
||||||
expected = clean_line_endings(expected)
|
expected = clean_line_endings(expected)
|
||||||
found := clean_line_endings(res.output)
|
found := clean_line_endings(res.output)
|
||||||
if expected != found {
|
if expected != found {
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct User {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
db := sqlite.connect(':memory:') or { panic(err.msg) }
|
db := sqlite.connect(':memory:') or { panic(err) }
|
||||||
db.exec('drop table if exists User')
|
db.exec('drop table if exists User')
|
||||||
db.exec("create table Module (id integer primary key, name text default '', nr_downloads int default 0, creator int default 0);")
|
db.exec("create table Module (id integer primary key, name text default '', nr_downloads int default 0, creator int default 0);")
|
||||||
db.exec("create table User (id integer primary key, age int default 0, name text default '', is_customer int default 0);")
|
db.exec("create table User (id integer primary key, age int default 0, name text default '', is_customer int default 0);")
|
||||||
|
|
|
@ -41,7 +41,7 @@ fn main() {
|
||||||
|
|
||||||
// by adding `limit 1` we tell V that there will be only one object
|
// by adding `limit 1` we tell V that there will be only one object
|
||||||
println(dash)
|
println(dash)
|
||||||
existing := db.select from Customer where id == 1 limit 1 or { panic(err.msg) }
|
existing := db.select from Customer where id == 1 limit 1 or { panic(err) }
|
||||||
println('Existing customer name: $existing.name')
|
println('Existing customer name: $existing.name')
|
||||||
println('Existing customer full information:')
|
println('Existing customer full information:')
|
||||||
println(existing)
|
println(existing)
|
||||||
|
|
|
@ -212,13 +212,13 @@ fn (mut app App) run() {
|
||||||
|
|
||||||
fn init_images(mut app App) {
|
fn init_images(mut app App) {
|
||||||
$if android {
|
$if android {
|
||||||
background := os.read_apk_asset('img/background.png') or { panic(err.msg) }
|
background := os.read_apk_asset('img/background.png') or { panic(err) }
|
||||||
app.background = app.gg.create_image_from_byte_array(background)
|
app.background = app.gg.create_image_from_byte_array(background)
|
||||||
bird := os.read_apk_asset('img/bird.png') or { panic(err.msg) }
|
bird := os.read_apk_asset('img/bird.png') or { panic(err) }
|
||||||
app.bird = app.gg.create_image_from_byte_array(bird)
|
app.bird = app.gg.create_image_from_byte_array(bird)
|
||||||
pipetop := os.read_apk_asset('img/pipetop.png') or { panic(err.msg) }
|
pipetop := os.read_apk_asset('img/pipetop.png') or { panic(err) }
|
||||||
app.pipetop = app.gg.create_image_from_byte_array(pipetop)
|
app.pipetop = app.gg.create_image_from_byte_array(pipetop)
|
||||||
pipebottom := os.read_apk_asset('img/pipebottom.png') or { panic(err.msg) }
|
pipebottom := os.read_apk_asset('img/pipebottom.png') or { panic(err) }
|
||||||
app.pipebottom = app.gg.create_image_from_byte_array(pipebottom)
|
app.pipebottom = app.gg.create_image_from_byte_array(pipebottom)
|
||||||
} $else {
|
} $else {
|
||||||
app.background = app.gg.create_image(os.resource_abs_path('assets/img/background.png'))
|
app.background = app.gg.create_image(os.resource_abs_path('assets/img/background.png'))
|
||||||
|
|
|
@ -98,15 +98,15 @@ fn new_image(w int, h int) Image {
|
||||||
// write out a .ppm file
|
// write out a .ppm file
|
||||||
fn (image Image) save_as_ppm(file_name string) {
|
fn (image Image) save_as_ppm(file_name string) {
|
||||||
npixels := image.width * image.height
|
npixels := image.width * image.height
|
||||||
mut f_out := os.create(file_name) or { panic(err.msg) }
|
mut f_out := os.create(file_name) or { panic(err) }
|
||||||
f_out.writeln('P3') or { panic(err.msg) }
|
f_out.writeln('P3') or { panic(err) }
|
||||||
f_out.writeln('$image.width $image.height') or { panic(err.msg) }
|
f_out.writeln('$image.width $image.height') or { panic(err) }
|
||||||
f_out.writeln('255') or { panic(err.msg) }
|
f_out.writeln('255') or { panic(err) }
|
||||||
for i in 0 .. npixels {
|
for i in 0 .. npixels {
|
||||||
c_r := to_int(unsafe { image.data[i] }.x)
|
c_r := to_int(unsafe { image.data[i] }.x)
|
||||||
c_g := to_int(unsafe { image.data[i] }.y)
|
c_g := to_int(unsafe { image.data[i] }.y)
|
||||||
c_b := to_int(unsafe { image.data[i] }.z)
|
c_b := to_int(unsafe { image.data[i] }.z)
|
||||||
f_out.write_str('$c_r $c_g $c_b ') or { panic(err.msg) }
|
f_out.write_str('$c_r $c_g $c_b ') or { panic(err) }
|
||||||
}
|
}
|
||||||
f_out.close()
|
f_out.close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ fn exec(path string) string {
|
||||||
mut cmd := os.Command{
|
mut cmd := os.Command{
|
||||||
path: path
|
path: path
|
||||||
}
|
}
|
||||||
cmd.start() or { panic(err.msg) }
|
cmd.start() or { panic(err) }
|
||||||
|
|
||||||
for {
|
for {
|
||||||
line = cmd.read_line()
|
line = cmd.read_line()
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os
|
||||||
fn exec(args []string) {
|
fn exec(args []string) {
|
||||||
os.execve('/bin/bash', args, []) or {
|
os.execve('/bin/bash', args, []) or {
|
||||||
// eprintln(err)
|
// eprintln(err)
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ echo redirect 1 to 2 1>&2
|
||||||
echo line 3
|
echo line 3
|
||||||
'
|
'
|
||||||
|
|
||||||
os.write_file('/tmp/test.sh', script) or { panic(err.msg) }
|
os.write_file('/tmp/test.sh', script) or { panic(err) }
|
||||||
// os.chmod("/tmp/test.sh",0o700) //make executable
|
// os.chmod("/tmp/test.sh",0o700) //make executable
|
||||||
|
|
||||||
// this will work because stderr/stdout are smaller than 4096 chars, once larger there can be deadlocks
|
// this will work because stderr/stdout are smaller than 4096 chars, once larger there can be deadlocks
|
||||||
|
|
|
@ -25,7 +25,7 @@ fn convert_html_rgb(in_col string) u32 {
|
||||||
|
|
||||||
query := '#([a-fA-F0-9]{$n_digit})([a-fA-F0-9]{$n_digit})([a-fA-F0-9]{$n_digit})'
|
query := '#([a-fA-F0-9]{$n_digit})([a-fA-F0-9]{$n_digit})([a-fA-F0-9]{$n_digit})'
|
||||||
|
|
||||||
mut re := regex.regex_opt(query) or { panic(err.msg) }
|
mut re := regex.regex_opt(query) or { panic(err) }
|
||||||
start, end := re.match_string(in_col)
|
start, end := re.match_string(in_col)
|
||||||
println('start: $start, end: $end')
|
println('start: $start, end: $end')
|
||||||
mut res := u32(0)
|
mut res := u32(0)
|
||||||
|
@ -49,7 +49,7 @@ fn convert_html_rgb_n(in_col string) u32 {
|
||||||
|
|
||||||
query := '#(?P<red>[a-fA-F0-9]{$n_digit})(?P<green>[a-fA-F0-9]{$n_digit})(?P<blue>[a-fA-F0-9]{$n_digit})'
|
query := '#(?P<red>[a-fA-F0-9]{$n_digit})(?P<green>[a-fA-F0-9]{$n_digit})(?P<blue>[a-fA-F0-9]{$n_digit})'
|
||||||
|
|
||||||
mut re := regex.regex_opt(query) or { panic(err.msg) }
|
mut re := regex.regex_opt(query) or { panic(err) }
|
||||||
start, end := re.match_string(in_col)
|
start, end := re.match_string(in_col)
|
||||||
println('start: $start, end: $end')
|
println('start: $start, end: $end')
|
||||||
mut res := u32(0)
|
mut res := u32(0)
|
||||||
|
|
|
@ -171,12 +171,12 @@ fn data_get() []SiteConfig {
|
||||||
|
|
||||||
fn data_dump(data []SiteConfig) {
|
fn data_dump(data []SiteConfig) {
|
||||||
a := json.encode_pretty(data)
|
a := json.encode_pretty(data)
|
||||||
os.write_file(os.resource_abs_path('data.json'), a) or { panic(err.msg) }
|
os.write_file(os.resource_abs_path('data.json'), a) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn data_load() []SiteConfig {
|
fn data_load() []SiteConfig {
|
||||||
data := os.read_file(os.resource_abs_path('data.json')) or { panic(err.msg) }
|
data := os.read_file(os.resource_abs_path('data.json')) or { panic(err) }
|
||||||
a := json.decode([]SiteConfig, data) or { panic(err.msg) }
|
a := json.decode([]SiteConfig, data) or { panic(err) }
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,5 +192,5 @@ fn main() {
|
||||||
// data_dump(data)
|
// data_dump(data)
|
||||||
b := filled_in_template()
|
b := filled_in_template()
|
||||||
println(b)
|
println(b)
|
||||||
os.write_file('result.md', b) or { panic(err.msg) }
|
os.write_file('result.md', b) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ fn (mut a App) set_status(msg string, duration_ms int) {
|
||||||
fn (mut a App) save() {
|
fn (mut a App) save() {
|
||||||
if a.cfile().len > 0 {
|
if a.cfile().len > 0 {
|
||||||
b := a.ed
|
b := a.ed
|
||||||
os.write_file(a.cfile(), b.raw()) or { panic(err.msg) }
|
os.write_file(a.cfile(), b.raw()) or { panic(err) }
|
||||||
a.set_status('Saved', 2000)
|
a.set_status('Saved', 2000)
|
||||||
} else {
|
} else {
|
||||||
a.set_status('No file loaded', 4000)
|
a.set_status('No file loaded', 4000)
|
||||||
|
@ -456,7 +456,7 @@ fn (mut a App) init_file() {
|
||||||
// 'vico: ' +
|
// 'vico: ' +
|
||||||
a.tui.set_window_title(a.files[a.current_file])
|
a.tui.set_window_title(a.files[a.current_file])
|
||||||
mut b := a.ed
|
mut b := a.ed
|
||||||
content := os.read_file(a.files[a.current_file]) or { panic(err.msg) }
|
content := os.read_file(a.files[a.current_file]) or { panic(err) }
|
||||||
b.put(content)
|
b.put(content)
|
||||||
a.ed.cursor.pos_x = init_x
|
a.ed.cursor.pos_x = init_x
|
||||||
a.ed.cursor.pos_y = init_y
|
a.ed.cursor.pos_y = init_y
|
||||||
|
|
|
@ -135,7 +135,7 @@ fn main() {
|
||||||
// load TTF fonts
|
// load TTF fonts
|
||||||
for font_path in font_paths {
|
for font_path in font_paths {
|
||||||
mut tf := ttf.TTF_File{}
|
mut tf := ttf.TTF_File{}
|
||||||
tf.buf = os.read_bytes(font_path) or { panic(err.msg) }
|
tf.buf = os.read_bytes(font_path) or { panic(err) }
|
||||||
println('TrueTypeFont file [$font_path] len: $tf.buf.len')
|
println('TrueTypeFont file [$font_path] len: $tf.buf.len')
|
||||||
tf.init()
|
tf.init()
|
||||||
println('Unit per EM: $tf.units_per_em')
|
println('Unit per EM: $tf.units_per_em')
|
||||||
|
|
|
@ -28,7 +28,7 @@ fn start_server() ? {
|
||||||
for i, _ in m.clients {
|
for i, _ in m.clients {
|
||||||
mut c := m.clients[i]
|
mut c := m.clients[i]
|
||||||
if c.client.state == .open && c.client.id != ws.id {
|
if c.client.state == .open && c.client.id != ws.id {
|
||||||
c.client.write(msg.payload, websocket.OPCode.text_frame) or { panic(err.msg) }
|
c.client.write(msg.payload, websocket.OPCode.text_frame) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, s)
|
}, s)
|
||||||
|
|
|
@ -25,7 +25,7 @@ fn start_server() ? {
|
||||||
return true
|
return true
|
||||||
}) ?
|
}) ?
|
||||||
s.on_message(fn (mut ws websocket.Client, msg &websocket.Message) ? {
|
s.on_message(fn (mut ws websocket.Client, msg &websocket.Message) ? {
|
||||||
ws.write(msg.payload, msg.opcode) or { panic(err.msg) }
|
ws.write(msg.payload, msg.opcode) or { panic(err) }
|
||||||
})
|
})
|
||||||
s.on_close(fn (mut ws websocket.Client, code int, reason string) ? {
|
s.on_close(fn (mut ws websocket.Client, code int, reason string) ? {
|
||||||
// println('client ($ws.id) closed connection')
|
// println('client ($ws.id) closed connection')
|
||||||
|
|
|
@ -32,7 +32,7 @@ pub fn (app &App) index() vweb.Result {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut app App) init_once() {
|
pub fn (mut app App) init_once() {
|
||||||
app.db = sqlite.connect('blog.db') or { panic(err.msg) }
|
app.db = sqlite.connect('blog.db') or { panic(err) }
|
||||||
app.db.exec('create table if not exists article (' + 'id integer primary key, ' + "title text default ''," +
|
app.db.exec('create table if not exists article (' + 'id integer primary key, ' + "title text default ''," +
|
||||||
"text text default ''" + ');')
|
"text text default ''" + ');')
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ fn test_syscallwrappers() {
|
||||||
os.chdir(dot_checks)
|
os.chdir(dot_checks)
|
||||||
checks_v := "checks.v"
|
checks_v := "checks.v"
|
||||||
assert os.exists(checks_v)
|
assert os.exists(checks_v)
|
||||||
rc := os.exec("v run $checks_v") or { panic(err.msg) }
|
rc := os.exec("v run $checks_v") or { panic(err) }
|
||||||
assert !rc.output.contains("V panic: An assertion failed.")
|
assert !rc.output.contains("V panic: An assertion failed.")
|
||||||
assert !rc.output.contains("failed")
|
assert !rc.output.contains("failed")
|
||||||
assert rc.exit_code == 0
|
assert rc.exit_code == 0
|
||||||
|
|
|
@ -259,7 +259,7 @@ fn (cmd Command) check_version_flag() {
|
||||||
version_flag := cmd.flags.get_bool('version') or { return } // ignore error and handle command normally
|
version_flag := cmd.flags.get_bool('version') or { return } // ignore error and handle command normally
|
||||||
if version_flag {
|
if version_flag {
|
||||||
version_cmd := cmd.commands.get('version') or { return } // ignore error and handle command normally
|
version_cmd := cmd.commands.get('version') or { return } // ignore error and handle command normally
|
||||||
version_cmd.execute(version_cmd) or { panic(err.msg) }
|
version_cmd.execute(version_cmd) or { panic(err) }
|
||||||
exit(0)
|
exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -280,7 +280,7 @@ fn (cmd Command) check_required_flags() {
|
||||||
pub fn (cmd Command) execute_help() {
|
pub fn (cmd Command) execute_help() {
|
||||||
if cmd.commands.contains('help') {
|
if cmd.commands.contains('help') {
|
||||||
help_cmd := cmd.commands.get('help') or { return } // ignore error and handle command normally
|
help_cmd := cmd.commands.get('help') or { return } // ignore error and handle command normally
|
||||||
help_cmd.execute(help_cmd) or { panic(err.msg) }
|
help_cmd.execute(help_cmd) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
print(cmd.help_message())
|
print(cmd.help_message())
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ fn test_if_required_flags_get_set() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn flag_is_set_in_subcommand(cmd cli.Command) ? {
|
fn flag_is_set_in_subcommand(cmd cli.Command) ? {
|
||||||
flag := cmd.flags.get_string('flag') or { panic(err.msg) }
|
flag := cmd.flags.get_string('flag') or { panic(err) }
|
||||||
assert flag == 'value'
|
assert flag == 'value'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,16 +5,16 @@ fn test_if_string_flag_parses() {
|
||||||
flag: .string
|
flag: .string
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
flag.parse(['-flag', 'value1'], false) or { panic(err.msg) }
|
flag.parse(['-flag', 'value1'], false) or { panic(err) }
|
||||||
mut value := flag.get_string() or { panic(err.msg) }
|
mut value := flag.get_string() or { panic(err) }
|
||||||
assert value == 'value1'
|
assert value == 'value1'
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
flag: .string
|
flag: .string
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
flag.parse(['-flag=value2'], false) or { panic(err.msg) }
|
flag.parse(['-flag=value2'], false) or { panic(err) }
|
||||||
value = flag.get_string() or { panic(err.msg) }
|
value = flag.get_string() or { panic(err) }
|
||||||
assert value == 'value2'
|
assert value == 'value2'
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
|
@ -22,9 +22,9 @@ fn test_if_string_flag_parses() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
multiple: true
|
multiple: true
|
||||||
}
|
}
|
||||||
flag.parse(['-flag=value1'], false) or { panic(err.msg) }
|
flag.parse(['-flag=value1'], false) or { panic(err) }
|
||||||
flag.parse(['-flag=value2'], false) or { panic(err.msg) }
|
flag.parse(['-flag=value2'], false) or { panic(err) }
|
||||||
mut values := flag.get_strings() or { panic(err.msg) }
|
mut values := flag.get_strings() or { panic(err) }
|
||||||
assert values == ['value1', 'value2']
|
assert values == ['value1', 'value2']
|
||||||
|
|
||||||
flags := [
|
flags := [
|
||||||
|
@ -40,7 +40,7 @@ fn test_if_string_flag_parses() {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
values = flags.get_strings('flag') or { panic(err.msg) }
|
values = flags.get_strings('flag') or { panic(err) }
|
||||||
assert values == ['a', 'b', 'c']
|
assert values == ['a', 'b', 'c']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,20 +50,20 @@ fn test_if_bool_flag_parses() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
mut value := false
|
mut value := false
|
||||||
flag.parse(['-flag'], false) or { panic(err.msg) }
|
flag.parse(['-flag'], false) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == true
|
assert value == true
|
||||||
flag.parse(['-flag', 'false'], false) or { panic(err.msg) }
|
flag.parse(['-flag', 'false'], false) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == false
|
assert value == false
|
||||||
flag.parse(['-flag', 'true'], false) or { panic(err.msg) }
|
flag.parse(['-flag', 'true'], false) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == true
|
assert value == true
|
||||||
flag.parse(['-flag=false'], false) or { panic(err.msg) }
|
flag.parse(['-flag=false'], false) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == false
|
assert value == false
|
||||||
flag.parse(['-flag=true'], false) or { panic(err.msg) }
|
flag.parse(['-flag=true'], false) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == true
|
assert value == true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,8 +74,8 @@ fn test_if_int_flag_parses() {
|
||||||
}
|
}
|
||||||
|
|
||||||
mut value := 0
|
mut value := 0
|
||||||
flag.parse(['-flag', '42'], false) or { panic(err.msg) }
|
flag.parse(['-flag', '42'], false) or { panic(err) }
|
||||||
value = flag.get_int() or { panic(err.msg) }
|
value = flag.get_int() or { panic(err) }
|
||||||
assert value == 42
|
assert value == 42
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
|
@ -83,8 +83,8 @@ fn test_if_int_flag_parses() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
|
|
||||||
flag.parse(['-flag=45'], false) or { panic(err.msg) }
|
flag.parse(['-flag=45'], false) or { panic(err) }
|
||||||
value = flag.get_int() or { panic(err.msg) }
|
value = flag.get_int() or { panic(err) }
|
||||||
assert value == 45
|
assert value == 45
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
|
@ -93,9 +93,9 @@ fn test_if_int_flag_parses() {
|
||||||
multiple: true
|
multiple: true
|
||||||
}
|
}
|
||||||
|
|
||||||
flag.parse(['-flag=42'], false) or { panic(err.msg) }
|
flag.parse(['-flag=42'], false) or { panic(err) }
|
||||||
flag.parse(['-flag=45'], false) or { panic(err.msg) }
|
flag.parse(['-flag=45'], false) or { panic(err) }
|
||||||
mut values := flag.get_ints() or { panic(err.msg) }
|
mut values := flag.get_ints() or { panic(err) }
|
||||||
assert values == [42, 45]
|
assert values == [42, 45]
|
||||||
|
|
||||||
flags := [
|
flags := [
|
||||||
|
@ -111,7 +111,7 @@ fn test_if_int_flag_parses() {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
values = flags.get_ints('flag') or { panic(err.msg) }
|
values = flags.get_ints('flag') or { panic(err) }
|
||||||
assert values == [1, 2, 3]
|
assert values == [1, 2, 3]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,8 +121,8 @@ fn test_if_float_flag_parses() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
mut value := f64(0)
|
mut value := f64(0)
|
||||||
flag.parse(['-flag', '3.14158'], false) or { panic(err.msg) }
|
flag.parse(['-flag', '3.14158'], false) or { panic(err) }
|
||||||
value = flag.get_float() or { panic(err.msg) }
|
value = flag.get_float() or { panic(err) }
|
||||||
assert value == 3.14158
|
assert value == 3.14158
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
|
@ -130,9 +130,9 @@ fn test_if_float_flag_parses() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
|
|
||||||
flag.parse(['-flag=3.14159'], false) or { panic(err.msg) }
|
flag.parse(['-flag=3.14159'], false) or { panic(err) }
|
||||||
assert flag.value[0].f64() == 3.14159
|
assert flag.value[0].f64() == 3.14159
|
||||||
value = flag.get_float() or { panic(err.msg) }
|
value = flag.get_float() or { panic(err) }
|
||||||
assert value == 3.14159
|
assert value == 3.14159
|
||||||
|
|
||||||
flag = cli.Flag{
|
flag = cli.Flag{
|
||||||
|
@ -141,9 +141,9 @@ fn test_if_float_flag_parses() {
|
||||||
multiple: true
|
multiple: true
|
||||||
}
|
}
|
||||||
|
|
||||||
flag.parse(['-flag=3.1'], false) or { panic(err.msg) }
|
flag.parse(['-flag=3.1'], false) or { panic(err) }
|
||||||
flag.parse(['-flag=1.3'], false) or { panic(err.msg) }
|
flag.parse(['-flag=1.3'], false) or { panic(err) }
|
||||||
mut values := flag.get_floats() or { panic(err.msg) }
|
mut values := flag.get_floats() or { panic(err) }
|
||||||
assert values == [3.1, 1.3]
|
assert values == [3.1, 1.3]
|
||||||
|
|
||||||
flags := [
|
flags := [
|
||||||
|
@ -159,7 +159,7 @@ fn test_if_float_flag_parses() {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
values = flags.get_floats('flag') or { panic(err.msg) }
|
values = flags.get_floats('flag') or { panic(err) }
|
||||||
assert values == [1.1, 2.2, 3.3]
|
assert values == [1.1, 2.2, 3.3]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,8 +170,8 @@ fn test_if_flag_parses_with_abbrev() {
|
||||||
abbrev: 'f'
|
abbrev: 'f'
|
||||||
}
|
}
|
||||||
mut value := false
|
mut value := false
|
||||||
flag.parse(['--flag'], true) or { panic(err.msg) }
|
flag.parse(['--flag'], true) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == true
|
assert value == true
|
||||||
|
|
||||||
value = false
|
value = false
|
||||||
|
@ -180,8 +180,8 @@ fn test_if_flag_parses_with_abbrev() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
abbrev: 'f'
|
abbrev: 'f'
|
||||||
}
|
}
|
||||||
flag.parse(['-f'], true) or { panic(err.msg) }
|
flag.parse(['-f'], true) or { panic(err) }
|
||||||
value = flag.get_bool() or { panic(err.msg) }
|
value = flag.get_bool() or { panic(err) }
|
||||||
assert value == true
|
assert value == true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ fn test_if_multiple_value_on_single_value() {
|
||||||
name: 'flag'
|
name: 'flag'
|
||||||
}
|
}
|
||||||
|
|
||||||
flag.parse(['-flag', '3.14158'], false) or { panic(err.msg) }
|
flag.parse(['-flag', '3.14158'], false) or { panic(err) }
|
||||||
|
|
||||||
if _ := flag.parse(['-flag', '3.222'], false) {
|
if _ := flag.parse(['-flag', '3.222'], false) {
|
||||||
panic("No multiple value flag don't raise an error!")
|
panic("No multiple value flag don't raise an error!")
|
||||||
|
|
|
@ -110,7 +110,7 @@ pub fn (mut d Digest) checksum() []byte {
|
||||||
tmp[0] = 0x80
|
tmp[0] = 0x80
|
||||||
pad := ((55 - d.len) % 64) // calculate number of padding bytes
|
pad := ((55 - d.len) % 64) // calculate number of padding bytes
|
||||||
binary.little_endian_put_u64(mut tmp[1 + pad..], d.len << 3) // append length in bits
|
binary.little_endian_put_u64(mut tmp[1 + pad..], d.len << 3) // append length in bits
|
||||||
d.write(tmp[..1 + pad + 8]) or { panic(err.msg) }
|
d.write(tmp[..1 + pad + 8]) or { panic(err) }
|
||||||
// The previous write ensures that a whole number of
|
// The previous write ensures that a whole number of
|
||||||
// blocks (i.e. a multiple of 64 bytes) have been hashed.
|
// blocks (i.e. a multiple of 64 bytes) have been hashed.
|
||||||
if d.nx != 0 {
|
if d.nx != 0 {
|
||||||
|
@ -127,7 +127,7 @@ pub fn (mut d Digest) checksum() []byte {
|
||||||
// sum returns the MD5 checksum of the data.
|
// sum returns the MD5 checksum of the data.
|
||||||
pub fn sum(data []byte) []byte {
|
pub fn sum(data []byte) []byte {
|
||||||
mut d := new()
|
mut d := new()
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
return d.checksum()
|
return d.checksum()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,14 +109,14 @@ fn (mut d Digest) checksum() []byte {
|
||||||
mut tmp := []byte{len: (64)}
|
mut tmp := []byte{len: (64)}
|
||||||
tmp[0] = 0x80
|
tmp[0] = 0x80
|
||||||
if int(len) % 64 < 56 {
|
if int(len) % 64 < 56 {
|
||||||
d.write(tmp[..56 - int(len) % 64]) or { panic(err.msg) }
|
d.write(tmp[..56 - int(len) % 64]) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err.msg) }
|
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err) }
|
||||||
}
|
}
|
||||||
// Length in bits.
|
// Length in bits.
|
||||||
len <<= 3
|
len <<= 3
|
||||||
binary.big_endian_put_u64(mut tmp, len)
|
binary.big_endian_put_u64(mut tmp, len)
|
||||||
d.write(tmp[..8]) or { panic(err.msg) }
|
d.write(tmp[..8]) or { panic(err) }
|
||||||
mut digest := []byte{len: (size)}
|
mut digest := []byte{len: (size)}
|
||||||
binary.big_endian_put_u32(mut digest, d.h[0])
|
binary.big_endian_put_u32(mut digest, d.h[0])
|
||||||
binary.big_endian_put_u32(mut digest[4..], d.h[1])
|
binary.big_endian_put_u32(mut digest[4..], d.h[1])
|
||||||
|
@ -129,7 +129,7 @@ fn (mut d Digest) checksum() []byte {
|
||||||
// sum returns the SHA-1 checksum of the bytes passed in `data`.
|
// sum returns the SHA-1 checksum of the bytes passed in `data`.
|
||||||
pub fn sum(data []byte) []byte {
|
pub fn sum(data []byte) []byte {
|
||||||
mut d := new()
|
mut d := new()
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
return d.checksum()
|
return d.checksum()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,14 +147,14 @@ fn (mut d Digest) checksum() []byte {
|
||||||
mut tmp := []byte{len: (64)}
|
mut tmp := []byte{len: (64)}
|
||||||
tmp[0] = 0x80
|
tmp[0] = 0x80
|
||||||
if int(len) % 64 < 56 {
|
if int(len) % 64 < 56 {
|
||||||
d.write(tmp[..56 - int(len) % 64]) or { panic(err.msg) }
|
d.write(tmp[..56 - int(len) % 64]) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err.msg) }
|
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err) }
|
||||||
}
|
}
|
||||||
// Length in bits.
|
// Length in bits.
|
||||||
len <<= u64(3)
|
len <<= u64(3)
|
||||||
binary.big_endian_put_u64(mut tmp, len)
|
binary.big_endian_put_u64(mut tmp, len)
|
||||||
d.write(tmp[..8]) or { panic(err.msg) }
|
d.write(tmp[..8]) or { panic(err) }
|
||||||
if d.nx != 0 {
|
if d.nx != 0 {
|
||||||
panic('d.nx != 0')
|
panic('d.nx != 0')
|
||||||
}
|
}
|
||||||
|
@ -181,14 +181,14 @@ pub fn sum(data []byte) []byte {
|
||||||
// sum256 returns the SHA256 checksum of the data.
|
// sum256 returns the SHA256 checksum of the data.
|
||||||
pub fn sum256(data []byte) []byte {
|
pub fn sum256(data []byte) []byte {
|
||||||
mut d := new()
|
mut d := new()
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
return d.checksum()
|
return d.checksum()
|
||||||
}
|
}
|
||||||
|
|
||||||
// sum224 returns the SHA224 checksum of the data.
|
// sum224 returns the SHA224 checksum of the data.
|
||||||
pub fn sum224(data []byte) []byte {
|
pub fn sum224(data []byte) []byte {
|
||||||
mut d := new224()
|
mut d := new224()
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
sum := d.checksum()
|
sum := d.checksum()
|
||||||
sum224 := []byte{len: (size224)}
|
sum224 := []byte{len: (size224)}
|
||||||
copy(sum224, sum[..size224])
|
copy(sum224, sum[..size224])
|
||||||
|
|
|
@ -219,15 +219,15 @@ fn (mut d Digest) checksum() []byte {
|
||||||
mut tmp := []byte{len: (128)}
|
mut tmp := []byte{len: (128)}
|
||||||
tmp[0] = 0x80
|
tmp[0] = 0x80
|
||||||
if int(len) % 128 < 112 {
|
if int(len) % 128 < 112 {
|
||||||
d.write(tmp[..112 - int(len) % 128]) or { panic(err.msg) }
|
d.write(tmp[..112 - int(len) % 128]) or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
d.write(tmp[..128 + 112 - int(len) % 128]) or { panic(err.msg) }
|
d.write(tmp[..128 + 112 - int(len) % 128]) or { panic(err) }
|
||||||
}
|
}
|
||||||
// Length in bits.
|
// Length in bits.
|
||||||
len <<= u64(3)
|
len <<= u64(3)
|
||||||
binary.big_endian_put_u64(mut tmp, u64(0)) // upper 64 bits are always zero, because len variable has type u64
|
binary.big_endian_put_u64(mut tmp, u64(0)) // upper 64 bits are always zero, because len variable has type u64
|
||||||
binary.big_endian_put_u64(mut tmp[8..], len)
|
binary.big_endian_put_u64(mut tmp[8..], len)
|
||||||
d.write(tmp[..16]) or { panic(err.msg) }
|
d.write(tmp[..16]) or { panic(err) }
|
||||||
if d.nx != 0 {
|
if d.nx != 0 {
|
||||||
panic('d.nx != 0')
|
panic('d.nx != 0')
|
||||||
}
|
}
|
||||||
|
@ -248,14 +248,14 @@ fn (mut d Digest) checksum() []byte {
|
||||||
// sum512 returns the SHA512 checksum of the data.
|
// sum512 returns the SHA512 checksum of the data.
|
||||||
pub fn sum512(data []byte) []byte {
|
pub fn sum512(data []byte) []byte {
|
||||||
mut d := new_digest(.sha512)
|
mut d := new_digest(.sha512)
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
return d.checksum()
|
return d.checksum()
|
||||||
}
|
}
|
||||||
|
|
||||||
// sum384 returns the SHA384 checksum of the data.
|
// sum384 returns the SHA384 checksum of the data.
|
||||||
pub fn sum384(data []byte) []byte {
|
pub fn sum384(data []byte) []byte {
|
||||||
mut d := new_digest(.sha384)
|
mut d := new_digest(.sha384)
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
sum := d.checksum()
|
sum := d.checksum()
|
||||||
sum384 := []byte{len: (size384)}
|
sum384 := []byte{len: (size384)}
|
||||||
copy(sum384, sum[..size384])
|
copy(sum384, sum[..size384])
|
||||||
|
@ -265,7 +265,7 @@ pub fn sum384(data []byte) []byte {
|
||||||
// sum512_224 returns the Sum512/224 checksum of the data.
|
// sum512_224 returns the Sum512/224 checksum of the data.
|
||||||
pub fn sum512_224(data []byte) []byte {
|
pub fn sum512_224(data []byte) []byte {
|
||||||
mut d := new_digest(.sha512_224)
|
mut d := new_digest(.sha512_224)
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
sum := d.checksum()
|
sum := d.checksum()
|
||||||
sum224 := []byte{len: (size224)}
|
sum224 := []byte{len: (size224)}
|
||||||
copy(sum224, sum[..size224])
|
copy(sum224, sum[..size224])
|
||||||
|
@ -275,7 +275,7 @@ pub fn sum512_224(data []byte) []byte {
|
||||||
// sum512_256 returns the Sum512/256 checksum of the data.
|
// sum512_256 returns the Sum512/256 checksum of the data.
|
||||||
pub fn sum512_256(data []byte) []byte {
|
pub fn sum512_256(data []byte) []byte {
|
||||||
mut d := new_digest(.sha512_256)
|
mut d := new_digest(.sha512_256)
|
||||||
d.write(data) or { panic(err.msg) }
|
d.write(data) or { panic(err) }
|
||||||
sum := d.checksum()
|
sum := d.checksum()
|
||||||
sum256 := []byte{len: (size256)}
|
sum256 := []byte{len: (size256)}
|
||||||
copy(sum256, sum[..size256])
|
copy(sum256, sum[..size256])
|
||||||
|
|
|
@ -40,7 +40,7 @@ fn test_can_compile_main_program() {
|
||||||
fn v_compile(vopts string) os.Result {
|
fn v_compile(vopts string) os.Result {
|
||||||
cmd := '"$vexe" -showcc $vopts'
|
cmd := '"$vexe" -showcc $vopts'
|
||||||
eprintln('>>> v_compile cmd: $cmd')
|
eprintln('>>> v_compile cmd: $cmd')
|
||||||
res := os.exec(cmd) or { panic(err.msg) }
|
res := os.exec(cmd) or { panic(err) }
|
||||||
eprintln('>>> v_compile res: $res')
|
eprintln('>>> v_compile res: $res')
|
||||||
// assert res.exit_code == 0
|
// assert res.exit_code == 0
|
||||||
$if !windows {
|
$if !windows {
|
||||||
|
|
|
@ -162,7 +162,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
||||||
font_path: g.config.font_path
|
font_path: g.config.font_path
|
||||||
custom_bold_font_path: g.config.custom_bold_font_path
|
custom_bold_font_path: g.config.custom_bold_font_path
|
||||||
scale: dpi_scale()
|
scale: dpi_scale()
|
||||||
) or { panic(err.msg) }
|
) or { panic(err) }
|
||||||
// println('FT took ${time.ticks()-t} ms')
|
// println('FT took ${time.ticks()-t} ms')
|
||||||
g.font_inited = true
|
g.font_inited = true
|
||||||
} else {
|
} else {
|
||||||
|
@ -174,7 +174,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
||||||
bytes_mono: g.config.font_bytes_mono
|
bytes_mono: g.config.font_bytes_mono
|
||||||
bytes_italic: g.config.font_bytes_italic
|
bytes_italic: g.config.font_bytes_italic
|
||||||
scale: sapp.dpi_scale()
|
scale: sapp.dpi_scale()
|
||||||
) or { panic(err.msg) }
|
) or { panic(err) }
|
||||||
g.font_inited = true
|
g.font_inited = true
|
||||||
} else {
|
} else {
|
||||||
sfont := system_font_path()
|
sfont := system_font_path()
|
||||||
|
@ -183,7 +183,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
||||||
font_path: sfont
|
font_path: sfont
|
||||||
custom_bold_font_path: g.config.custom_bold_font_path
|
custom_bold_font_path: g.config.custom_bold_font_path
|
||||||
scale: sapp.dpi_scale()
|
scale: sapp.dpi_scale()
|
||||||
) or { panic(err.msg) }
|
) or { panic(err) }
|
||||||
g.font_inited = true
|
g.font_inited = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import io
|
||||||
|
|
||||||
fn read_file(file string, cap int) []string {
|
fn read_file(file string, cap int) []string {
|
||||||
mut lines := []string{}
|
mut lines := []string{}
|
||||||
mut f := os.open(file) or { panic(err.msg) }
|
mut f := os.open(file) or { panic(err) }
|
||||||
defer {
|
defer {
|
||||||
f.close()
|
f.close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ fn testsuite_begin() {
|
||||||
eprintln('testsuite_begin, tfolder = $tfolder')
|
eprintln('testsuite_begin, tfolder = $tfolder')
|
||||||
os.rmdir_all(tfolder) or { }
|
os.rmdir_all(tfolder) or { }
|
||||||
assert !os.is_dir(tfolder)
|
assert !os.is_dir(tfolder)
|
||||||
os.mkdir_all(tfolder) or { panic(err.msg) }
|
os.mkdir_all(tfolder) or { panic(err) }
|
||||||
os.chdir(tfolder)
|
os.chdir(tfolder)
|
||||||
assert os.is_dir(tfolder)
|
assert os.is_dir(tfolder)
|
||||||
}
|
}
|
||||||
|
|
|
@ -370,7 +370,7 @@ struct Info {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_decode_null_object() {
|
fn test_decode_null_object() {
|
||||||
info := json.decode(Info, '{"id": 22, "items": null, "maps": null}') or { panic(err.msg) }
|
info := json.decode(Info, '{"id": 22, "items": null, "maps": null}') or { panic(err) }
|
||||||
assert info.id == 22
|
assert info.id == 22
|
||||||
assert '$info.items' == '[]'
|
assert '$info.items' == '[]'
|
||||||
assert '$info.maps' == '{}'
|
assert '$info.maps' == '{}'
|
||||||
|
|
|
@ -106,7 +106,7 @@ pub fn (mut l Log) close() {
|
||||||
fn (mut l Log) log_file(s string, level Level) {
|
fn (mut l Log) log_file(s string, level Level) {
|
||||||
timestamp := time.now().format_ss()
|
timestamp := time.now().format_ss()
|
||||||
e := tag_to_file(level)
|
e := tag_to_file(level)
|
||||||
l.ofile.writeln('$timestamp [$e] $s') or { panic(err.msg) }
|
l.ofile.writeln('$timestamp [$e] $s') or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// log_cli writes log line `s` with `level` to stdout.
|
// log_cli writes log line `s` with `level` to stdout.
|
||||||
|
|
|
@ -56,7 +56,7 @@ fn (mut dtp DTP) read() ?[]byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut dtp DTP) close() {
|
fn (mut dtp DTP) close() {
|
||||||
dtp.conn.close() or { panic(err.msg) }
|
dtp.conn.close() or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
struct FTP {
|
struct FTP {
|
||||||
|
|
|
@ -8,14 +8,14 @@ fn test_ftp_cleint() {
|
||||||
// that is why it is not a very good idea to run it in CI.
|
// that is why it is not a very good idea to run it in CI.
|
||||||
// If you want to run it manually, use:
|
// If you want to run it manually, use:
|
||||||
// `v -d network vlib/net/ftp/ftp_test.v`
|
// `v -d network vlib/net/ftp/ftp_test.v`
|
||||||
ftp_client_test_inside() or { panic(err.msg) }
|
ftp_client_test_inside() or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ftp_client_test_inside() ? {
|
fn ftp_client_test_inside() ? {
|
||||||
mut zftp := ftp.new()
|
mut zftp := ftp.new()
|
||||||
// eprintln(zftp)
|
// eprintln(zftp)
|
||||||
defer {
|
defer {
|
||||||
zftp.close() or { panic(err.msg) }
|
zftp.close() or { panic(err) }
|
||||||
}
|
}
|
||||||
connect_result := zftp.connect('ftp.redhat.com') ?
|
connect_result := zftp.connect('ftp.redhat.com') ?
|
||||||
assert connect_result
|
assert connect_result
|
||||||
|
|
|
@ -25,7 +25,7 @@ mut:
|
||||||
fn (mut dom DocumentObjectModel) print_debug(data string) {
|
fn (mut dom DocumentObjectModel) print_debug(data string) {
|
||||||
$if debug {
|
$if debug {
|
||||||
if data.len > 0 {
|
if data.len > 0 {
|
||||||
dom.debug_file.writeln(data) or { panic(err.msg) }
|
dom.debug_file.writeln(data) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ fn (parser Parser) builder_str() string {
|
||||||
fn (mut parser Parser) print_debug(data string) {
|
fn (mut parser Parser) print_debug(data string) {
|
||||||
$if debug {
|
$if debug {
|
||||||
if data.len > 0 {
|
if data.len > 0 {
|
||||||
parser.debug_file.writeln(data) or { panic(err.msg) }
|
parser.debug_file.writeln(data) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ fn http_fetch_mock(_methods []string, _config FetchConfig) ?[]Response {
|
||||||
fn test_http_fetch_bare() {
|
fn test_http_fetch_bare() {
|
||||||
$if !network ? { return }
|
$if !network ? { return }
|
||||||
responses := http_fetch_mock([], FetchConfig{}) or {
|
responses := http_fetch_mock([], FetchConfig{}) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
for response in responses {
|
for response in responses {
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -46,11 +46,11 @@ fn test_http_fetch_with_data() {
|
||||||
responses := http_fetch_mock(['POST', 'PUT', 'PATCH', 'DELETE'], {
|
responses := http_fetch_mock(['POST', 'PUT', 'PATCH', 'DELETE'], {
|
||||||
data: 'hello world'
|
data: 'hello world'
|
||||||
}) or {
|
}) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
for response in responses {
|
for response in responses {
|
||||||
payload := json.decode(HttpbinResponseBody,response.text) or {
|
payload := json.decode(HttpbinResponseBody,response.text) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert payload.data == 'hello world'
|
assert payload.data == 'hello world'
|
||||||
}
|
}
|
||||||
|
@ -64,11 +64,11 @@ fn test_http_fetch_with_params() {
|
||||||
'c': 'd'
|
'c': 'd'
|
||||||
}
|
}
|
||||||
}) or {
|
}) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
for response in responses {
|
for response in responses {
|
||||||
// payload := json.decode(HttpbinResponseBody,response.text) or {
|
// payload := json.decode(HttpbinResponseBody,response.text) or {
|
||||||
// panic(err.msg)
|
// panic(err)
|
||||||
// }
|
// }
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -84,11 +84,11 @@ fn test_http_fetch_with_headers() {
|
||||||
'Test-Header': 'hello world'
|
'Test-Header': 'hello world'
|
||||||
}
|
}
|
||||||
}) or {
|
}) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
for response in responses {
|
for response in responses {
|
||||||
// payload := json.decode(HttpbinResponseBody,response.text) or {
|
// payload := json.decode(HttpbinResponseBody,response.text) or {
|
||||||
// panic(err.msg)
|
// panic(err)
|
||||||
// }
|
// }
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
@ -16,7 +16,7 @@ fn test_http_get_from_vlang_utc_now() {
|
||||||
for url in urls {
|
for url in urls {
|
||||||
println('Test getting current time from $url by http.get')
|
println('Test getting current time from $url by http.get')
|
||||||
res := http.get(url) or {
|
res := http.get(url) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert 200 == res.status_code
|
assert 200 == res.status_code
|
||||||
assert res.text.len > 0
|
assert res.text.len > 0
|
||||||
|
@ -40,7 +40,7 @@ fn test_public_servers() {
|
||||||
for url in urls {
|
for url in urls {
|
||||||
println('Testing http.get on public url: $url ')
|
println('Testing http.get on public url: $url ')
|
||||||
res := http.get(url) or {
|
res := http.get(url) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert 200 == res.status_code
|
assert 200 == res.status_code
|
||||||
assert res.text.len > 0
|
assert res.text.len > 0
|
||||||
|
@ -54,7 +54,7 @@ fn test_relative_redirects() {
|
||||||
return
|
return
|
||||||
} // tempfix periodic: httpbin relative redirects are broken
|
} // tempfix periodic: httpbin relative redirects are broken
|
||||||
res := http.get('https://httpbin.org/relative-redirect/3?abc=xyz') or {
|
res := http.get('https://httpbin.org/relative-redirect/3?abc=xyz') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert 200 == res.status_code
|
assert 200 == res.status_code
|
||||||
assert res.text.len > 0
|
assert res.text.len > 0
|
||||||
|
|
|
@ -7,9 +7,9 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
fn setup() (&net.TcpListener, &net.TcpConn, &net.TcpConn) {
|
fn setup() (&net.TcpListener, &net.TcpConn, &net.TcpConn) {
|
||||||
mut server := net.listen_tcp(server_port) or { panic(err.msg) }
|
mut server := net.listen_tcp(server_port) or { panic(err) }
|
||||||
mut client := net.dial_tcp('127.0.0.1:$server_port') or { panic(err.msg) }
|
mut client := net.dial_tcp('127.0.0.1:$server_port') or { panic(err) }
|
||||||
mut socket := server.accept() or { panic(err.msg) }
|
mut socket := server.accept() or { panic(err) }
|
||||||
$if debug_peer_ip ? {
|
$if debug_peer_ip ? {
|
||||||
ip := con.peer_ip() or { '$err' }
|
ip := con.peer_ip() or { '$err' }
|
||||||
eprintln('connection peer_ip: $ip')
|
eprintln('connection peer_ip: $ip')
|
||||||
|
|
|
@ -44,8 +44,8 @@ fn echo() ? {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_tcp() {
|
fn test_tcp() {
|
||||||
mut l := net.listen_tcp(test_port) or { panic(err.msg) }
|
mut l := net.listen_tcp(test_port) or { panic(err) }
|
||||||
go echo_server(mut l)
|
go echo_server(mut l)
|
||||||
echo() or { panic(err.msg) }
|
echo() or { panic(err) }
|
||||||
l.close() or { }
|
l.close() or { }
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,8 +51,8 @@ fn echo() ? {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_tcp() {
|
fn test_tcp() {
|
||||||
mut l := unix.listen_stream(test_port) or { panic(err.msg) }
|
mut l := unix.listen_stream(test_port) or { panic(err) }
|
||||||
go echo_server(mut l)
|
go echo_server(mut l)
|
||||||
echo() or { panic(err.msg) }
|
echo() or { panic(err) }
|
||||||
l.close() or { }
|
l.close() or { }
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ struct Foo {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_orm_sqlite() {
|
fn test_orm_sqlite() {
|
||||||
db := sqlite.connect(':memory:') or { panic(err.msg) }
|
db := sqlite.connect(':memory:') or { panic(err) }
|
||||||
db.exec('drop table if exists User')
|
db.exec('drop table if exists User')
|
||||||
db.exec("create table User (id integer primary key, age int default 0, name text default '', is_customer int default 0);")
|
db.exec("create table User (id integer primary key, age int default 0, name text default '', is_customer int default 0);")
|
||||||
name := 'Peter'
|
name := 'Peter'
|
||||||
|
@ -230,7 +230,7 @@ fn test_orm_pg() {
|
||||||
eprintln(term.red('NB: this test requires VDB_NAME and VDB_USER env variables to be set'))
|
eprintln(term.red('NB: this test requires VDB_NAME and VDB_USER env variables to be set'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
db := pg.connect(dbname: dbname, user: dbuser) or { panic(err.msg) }
|
db := pg.connect(dbname: dbname, user: dbuser) or { panic(err) }
|
||||||
_ = db
|
_ = db
|
||||||
nr_modules := db.select count from modules
|
nr_modules := db.select count from modules
|
||||||
//nr_modules := db.select count from Modules where id == 1
|
//nr_modules := db.select count from Modules where id == 1
|
||||||
|
|
|
@ -11,14 +11,14 @@ fn testsuite_begin() {
|
||||||
eprintln('testsuite_begin, tfolder = $tfolder')
|
eprintln('testsuite_begin, tfolder = $tfolder')
|
||||||
os.rmdir_all(tfolder) or { }
|
os.rmdir_all(tfolder) or { }
|
||||||
assert !os.is_dir(tfolder)
|
assert !os.is_dir(tfolder)
|
||||||
os.mkdir_all(tfolder) or { panic(err.msg) }
|
os.mkdir_all(tfolder) or { panic(err) }
|
||||||
os.chdir(tfolder)
|
os.chdir(tfolder)
|
||||||
assert os.is_dir(tfolder)
|
assert os.is_dir(tfolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn testsuite_end() {
|
fn testsuite_end() {
|
||||||
os.chdir(os.wd_at_startup)
|
os.chdir(os.wd_at_startup)
|
||||||
os.rmdir_all(tfolder) or { panic(err.msg) }
|
os.rmdir_all(tfolder) or { panic(err) }
|
||||||
assert !os.is_dir(tfolder)
|
assert !os.is_dir(tfolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ fn test_inode_file_type() {
|
||||||
mut file := os.open_file(filename, 'w', 0o600) or { return }
|
mut file := os.open_file(filename, 'w', 0o600) or { return }
|
||||||
file.close()
|
file.close()
|
||||||
mode := os.inode(filename)
|
mode := os.inode(filename)
|
||||||
os.rm(filename) or { panic(err.msg) }
|
os.rm(filename) or { panic(err) }
|
||||||
assert mode.typ == .regular
|
assert mode.typ == .regular
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -507,7 +507,7 @@ pub fn cache_dir() string {
|
||||||
}
|
}
|
||||||
cdir := join_path(home_dir(), '.cache')
|
cdir := join_path(home_dir(), '.cache')
|
||||||
if !is_dir(cdir) && !is_link(cdir) {
|
if !is_dir(cdir) && !is_link(cdir) {
|
||||||
mkdir(cdir) or { panic(err.msg) }
|
mkdir(cdir) or { panic(err) }
|
||||||
}
|
}
|
||||||
return cdir
|
return cdir
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ fn testsuite_begin() {
|
||||||
eprintln('testsuite_begin, tfolder = $tfolder')
|
eprintln('testsuite_begin, tfolder = $tfolder')
|
||||||
os.rmdir_all(tfolder) or { }
|
os.rmdir_all(tfolder) or { }
|
||||||
assert !os.is_dir(tfolder)
|
assert !os.is_dir(tfolder)
|
||||||
os.mkdir_all(tfolder) or { panic(err.msg) }
|
os.mkdir_all(tfolder) or { panic(err) }
|
||||||
os.chdir(tfolder)
|
os.chdir(tfolder)
|
||||||
assert os.is_dir(tfolder)
|
assert os.is_dir(tfolder)
|
||||||
// println('args_at_start: $args_at_start')
|
// println('args_at_start: $args_at_start')
|
||||||
|
@ -37,13 +37,13 @@ fn test_open_file() {
|
||||||
assert err.msg == 'No such file or directory'
|
assert err.msg == 'No such file or directory'
|
||||||
os.File{}
|
os.File{}
|
||||||
}
|
}
|
||||||
mut file := os.open_file(filename, 'w+', 0o666) or { panic(err.msg) }
|
mut file := os.open_file(filename, 'w+', 0o666) or { panic(err) }
|
||||||
file.write_str(hello) or { panic(err.msg) }
|
file.write_str(hello) or { panic(err) }
|
||||||
file.close()
|
file.close()
|
||||||
assert hello.len == os.file_size(filename)
|
assert hello.len == os.file_size(filename)
|
||||||
read_hello := os.read_file(filename) or { panic('error reading file $filename') }
|
read_hello := os.read_file(filename) or { panic('error reading file $filename') }
|
||||||
assert hello == read_hello
|
assert hello == read_hello
|
||||||
os.rm(filename) or { panic(err.msg) }
|
os.rm(filename) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_open_file_binary() {
|
fn test_open_file_binary() {
|
||||||
|
@ -53,14 +53,14 @@ fn test_open_file_binary() {
|
||||||
assert err.msg == 'No such file or directory'
|
assert err.msg == 'No such file or directory'
|
||||||
os.File{}
|
os.File{}
|
||||||
}
|
}
|
||||||
mut file := os.open_file(filename, 'wb+', 0o666) or { panic(err.msg) }
|
mut file := os.open_file(filename, 'wb+', 0o666) or { panic(err) }
|
||||||
bytes := hello.bytes()
|
bytes := hello.bytes()
|
||||||
file.write_bytes(bytes.data, bytes.len)
|
file.write_bytes(bytes.data, bytes.len)
|
||||||
file.close()
|
file.close()
|
||||||
assert hello.len == os.file_size(filename)
|
assert hello.len == os.file_size(filename)
|
||||||
read_hello := os.read_bytes(filename) or { panic('error reading file $filename') }
|
read_hello := os.read_bytes(filename) or { panic('error reading file $filename') }
|
||||||
assert bytes == read_hello
|
assert bytes == read_hello
|
||||||
os.rm(filename) or { panic(err.msg) }
|
os.rm(filename) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn test_file_get_line() {
|
// fn test_file_get_line() {
|
||||||
|
@ -86,24 +86,24 @@ fn test_open_file_binary() {
|
||||||
fn test_create_file() {
|
fn test_create_file() {
|
||||||
filename := './test1.txt'
|
filename := './test1.txt'
|
||||||
hello := 'hello world!'
|
hello := 'hello world!'
|
||||||
mut f := os.create(filename) or { panic(err.msg) }
|
mut f := os.create(filename) or { panic(err) }
|
||||||
f.write_str(hello) or { panic(err.msg) }
|
f.write_str(hello) or { panic(err) }
|
||||||
f.close()
|
f.close()
|
||||||
assert hello.len == os.file_size(filename)
|
assert hello.len == os.file_size(filename)
|
||||||
os.rm(filename) or { panic(err.msg) }
|
os.rm(filename) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_is_file() {
|
fn test_is_file() {
|
||||||
// Setup
|
// Setup
|
||||||
work_dir := os.join_path(os.getwd(), 'is_file_test')
|
work_dir := os.join_path(os.getwd(), 'is_file_test')
|
||||||
os.mkdir_all(work_dir) or { panic(err.msg) }
|
os.mkdir_all(work_dir) or { panic(err) }
|
||||||
tfile := os.join_path(work_dir, 'tmp_file')
|
tfile := os.join_path(work_dir, 'tmp_file')
|
||||||
// Test things that shouldn't be a file
|
// Test things that shouldn't be a file
|
||||||
assert os.is_file(work_dir) == false
|
assert os.is_file(work_dir) == false
|
||||||
assert os.is_file('non-existent_file.tmp') == false
|
assert os.is_file('non-existent_file.tmp') == false
|
||||||
// Test file
|
// Test file
|
||||||
tfile_content := 'temporary file'
|
tfile_content := 'temporary file'
|
||||||
os.write_file(tfile, tfile_content) or { panic(err.msg) }
|
os.write_file(tfile, tfile_content) or { panic(err) }
|
||||||
assert os.is_file(tfile)
|
assert os.is_file(tfile)
|
||||||
// Test dir symlinks
|
// Test dir symlinks
|
||||||
$if windows {
|
$if windows {
|
||||||
|
@ -126,11 +126,11 @@ fn test_is_file() {
|
||||||
fn test_write_and_read_string_to_file() {
|
fn test_write_and_read_string_to_file() {
|
||||||
filename := './test1.txt'
|
filename := './test1.txt'
|
||||||
hello := 'hello world!'
|
hello := 'hello world!'
|
||||||
os.write_file(filename, hello) or { panic(err.msg) }
|
os.write_file(filename, hello) or { panic(err) }
|
||||||
assert hello.len == os.file_size(filename)
|
assert hello.len == os.file_size(filename)
|
||||||
read_hello := os.read_file(filename) or { panic('error reading file $filename') }
|
read_hello := os.read_file(filename) or { panic('error reading file $filename') }
|
||||||
assert hello == read_hello
|
assert hello == read_hello
|
||||||
os.rm(filename) or { panic(err.msg) }
|
os.rm(filename) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// test_write_and_read_bytes checks for regressions made in the functions
|
// test_write_and_read_bytes checks for regressions made in the functions
|
||||||
|
@ -166,16 +166,16 @@ fn test_write_and_read_bytes() {
|
||||||
assert nread == 0
|
assert nread == 0
|
||||||
file_read.close()
|
file_read.close()
|
||||||
// We finally delete the test file.
|
// We finally delete the test file.
|
||||||
os.rm(file_name) or { panic(err.msg) }
|
os.rm(file_name) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_create_and_delete_folder() {
|
fn test_create_and_delete_folder() {
|
||||||
folder := './test1'
|
folder := './test1'
|
||||||
os.mkdir(folder) or { panic(err.msg) }
|
os.mkdir(folder) or { panic(err) }
|
||||||
assert os.is_dir(folder)
|
assert os.is_dir(folder)
|
||||||
folder_contents := os.ls(folder) or { panic(err.msg) }
|
folder_contents := os.ls(folder) or { panic(err) }
|
||||||
assert folder_contents.len == 0
|
assert folder_contents.len == 0
|
||||||
os.rmdir(folder) or { panic(err.msg) }
|
os.rmdir(folder) or { panic(err) }
|
||||||
folder_exists := os.is_dir(folder)
|
folder_exists := os.is_dir(folder)
|
||||||
assert folder_exists == false
|
assert folder_exists == false
|
||||||
}
|
}
|
||||||
|
@ -189,63 +189,63 @@ fn walk_callback(file string) {
|
||||||
|
|
||||||
fn test_walk() {
|
fn test_walk() {
|
||||||
folder := 'test_walk'
|
folder := 'test_walk'
|
||||||
os.mkdir(folder) or { panic(err.msg) }
|
os.mkdir(folder) or { panic(err) }
|
||||||
file1 := folder + os.path_separator + 'test1'
|
file1 := folder + os.path_separator + 'test1'
|
||||||
os.write_file(file1, 'test-1') or { panic(err.msg) }
|
os.write_file(file1, 'test-1') or { panic(err) }
|
||||||
os.walk(folder, walk_callback)
|
os.walk(folder, walk_callback)
|
||||||
os.rm(file1) or { panic(err.msg) }
|
os.rm(file1) or { panic(err) }
|
||||||
os.rmdir(folder) or { panic(err.msg) }
|
os.rmdir(folder) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_cp() {
|
fn test_cp() {
|
||||||
old_file_name := 'cp_example.txt'
|
old_file_name := 'cp_example.txt'
|
||||||
new_file_name := 'cp_new_example.txt'
|
new_file_name := 'cp_new_example.txt'
|
||||||
os.write_file(old_file_name, 'Test data 1 2 3, V is awesome #$%^[]!~⭐') or { panic(err.msg) }
|
os.write_file(old_file_name, 'Test data 1 2 3, V is awesome #$%^[]!~⭐') or { panic(err) }
|
||||||
os.cp(old_file_name, new_file_name) or { panic('$err') }
|
os.cp(old_file_name, new_file_name) or { panic('$err') }
|
||||||
old_file := os.read_file(old_file_name) or { panic(err.msg) }
|
old_file := os.read_file(old_file_name) or { panic(err) }
|
||||||
new_file := os.read_file(new_file_name) or { panic(err.msg) }
|
new_file := os.read_file(new_file_name) or { panic(err) }
|
||||||
assert old_file == new_file
|
assert old_file == new_file
|
||||||
os.rm(old_file_name) or { panic(err.msg) }
|
os.rm(old_file_name) or { panic(err) }
|
||||||
os.rm(new_file_name) or { panic(err.msg) }
|
os.rm(new_file_name) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_mv() {
|
fn test_mv() {
|
||||||
work_dir := os.join_path(os.getwd(), 'mv_test')
|
work_dir := os.join_path(os.getwd(), 'mv_test')
|
||||||
os.mkdir_all(work_dir) or { panic(err.msg) }
|
os.mkdir_all(work_dir) or { panic(err) }
|
||||||
// Setup test files
|
// Setup test files
|
||||||
tfile1 := os.join_path(work_dir, 'file')
|
tfile1 := os.join_path(work_dir, 'file')
|
||||||
tfile2 := os.join_path(work_dir, 'file.test')
|
tfile2 := os.join_path(work_dir, 'file.test')
|
||||||
tfile3 := os.join_path(work_dir, 'file.3')
|
tfile3 := os.join_path(work_dir, 'file.3')
|
||||||
tfile_content := 'temporary file'
|
tfile_content := 'temporary file'
|
||||||
os.write_file(tfile1, tfile_content) or { panic(err.msg) }
|
os.write_file(tfile1, tfile_content) or { panic(err) }
|
||||||
os.write_file(tfile2, tfile_content) or { panic(err.msg) }
|
os.write_file(tfile2, tfile_content) or { panic(err) }
|
||||||
// Setup test dirs
|
// Setup test dirs
|
||||||
tdir1 := os.join_path(work_dir, 'dir')
|
tdir1 := os.join_path(work_dir, 'dir')
|
||||||
tdir2 := os.join_path(work_dir, 'dir2')
|
tdir2 := os.join_path(work_dir, 'dir2')
|
||||||
tdir3 := os.join_path(work_dir, 'dir3')
|
tdir3 := os.join_path(work_dir, 'dir3')
|
||||||
os.mkdir(tdir1) or { panic(err.msg) }
|
os.mkdir(tdir1) or { panic(err) }
|
||||||
os.mkdir(tdir2) or { panic(err.msg) }
|
os.mkdir(tdir2) or { panic(err) }
|
||||||
// Move file with no extension to dir
|
// Move file with no extension to dir
|
||||||
os.mv(tfile1, tdir1) or { panic(err.msg) }
|
os.mv(tfile1, tdir1) or { panic(err) }
|
||||||
mut expected := os.join_path(tdir1, 'file')
|
mut expected := os.join_path(tdir1, 'file')
|
||||||
assert os.exists(expected) && !is_dir(expected) == true
|
assert os.exists(expected) && !is_dir(expected) == true
|
||||||
// Move dir with contents to other dir
|
// Move dir with contents to other dir
|
||||||
os.mv(tdir1, tdir2) or { panic(err.msg) }
|
os.mv(tdir1, tdir2) or { panic(err) }
|
||||||
expected = os.join_path(tdir2, 'dir')
|
expected = os.join_path(tdir2, 'dir')
|
||||||
assert os.exists(expected) && is_dir(expected) == true
|
assert os.exists(expected) && is_dir(expected) == true
|
||||||
expected = os.join_path(tdir2, 'dir', 'file')
|
expected = os.join_path(tdir2, 'dir', 'file')
|
||||||
assert os.exists(expected) && !is_dir(expected) == true
|
assert os.exists(expected) && !is_dir(expected) == true
|
||||||
// Move dir with contents to other dir (by renaming)
|
// Move dir with contents to other dir (by renaming)
|
||||||
os.mv(os.join_path(tdir2, 'dir'), tdir3) or { panic(err.msg) }
|
os.mv(os.join_path(tdir2, 'dir'), tdir3) or { panic(err) }
|
||||||
expected = tdir3
|
expected = tdir3
|
||||||
assert os.exists(expected) && is_dir(expected) == true
|
assert os.exists(expected) && is_dir(expected) == true
|
||||||
assert os.is_dir_empty(tdir2) == true
|
assert os.is_dir_empty(tdir2) == true
|
||||||
// Move file with extension to dir
|
// Move file with extension to dir
|
||||||
os.mv(tfile2, tdir2) or { panic(err.msg) }
|
os.mv(tfile2, tdir2) or { panic(err) }
|
||||||
expected = os.join_path(tdir2, 'file.test')
|
expected = os.join_path(tdir2, 'file.test')
|
||||||
assert os.exists(expected) && !is_dir(expected) == true
|
assert os.exists(expected) && !is_dir(expected) == true
|
||||||
// Move file to dir (by renaming)
|
// Move file to dir (by renaming)
|
||||||
os.mv(os.join_path(tdir2, 'file.test'), tfile3) or { panic(err.msg) }
|
os.mv(os.join_path(tdir2, 'file.test'), tfile3) or { panic(err) }
|
||||||
expected = tfile3
|
expected = tfile3
|
||||||
assert os.exists(expected) && !is_dir(expected) == true
|
assert os.exists(expected) && !is_dir(expected) == true
|
||||||
}
|
}
|
||||||
|
@ -253,22 +253,22 @@ fn test_mv() {
|
||||||
fn test_cp_all() {
|
fn test_cp_all() {
|
||||||
// fileX -> dir/fileX
|
// fileX -> dir/fileX
|
||||||
// NB: clean up of the files happens inside the cleanup_leftovers function
|
// NB: clean up of the files happens inside the cleanup_leftovers function
|
||||||
os.write_file('ex1.txt', 'wow!') or { panic(err.msg) }
|
os.write_file('ex1.txt', 'wow!') or { panic(err) }
|
||||||
os.mkdir('ex') or { panic(err.msg) }
|
os.mkdir('ex') or { panic(err) }
|
||||||
os.cp_all('ex1.txt', 'ex', false) or { panic(err.msg) }
|
os.cp_all('ex1.txt', 'ex', false) or { panic(err) }
|
||||||
old := os.read_file('ex1.txt') or { panic(err.msg) }
|
old := os.read_file('ex1.txt') or { panic(err) }
|
||||||
new := os.read_file('ex/ex1.txt') or { panic(err.msg) }
|
new := os.read_file('ex/ex1.txt') or { panic(err) }
|
||||||
assert old == new
|
assert old == new
|
||||||
os.mkdir('ex/ex2') or { panic(err.msg) }
|
os.mkdir('ex/ex2') or { panic(err) }
|
||||||
os.write_file('ex2.txt', 'great!') or { panic(err.msg) }
|
os.write_file('ex2.txt', 'great!') or { panic(err) }
|
||||||
os.cp_all('ex2.txt', 'ex/ex2', false) or { panic(err.msg) }
|
os.cp_all('ex2.txt', 'ex/ex2', false) or { panic(err) }
|
||||||
old2 := os.read_file('ex2.txt') or { panic(err.msg) }
|
old2 := os.read_file('ex2.txt') or { panic(err) }
|
||||||
new2 := os.read_file('ex/ex2/ex2.txt') or { panic(err.msg) }
|
new2 := os.read_file('ex/ex2/ex2.txt') or { panic(err) }
|
||||||
assert old2 == new2
|
assert old2 == new2
|
||||||
// recurring on dir -> local dir
|
// recurring on dir -> local dir
|
||||||
os.cp_all('ex', './', true) or { panic(err.msg) }
|
os.cp_all('ex', './', true) or { panic(err) }
|
||||||
// regression test for executive runs with overwrite := true
|
// regression test for executive runs with overwrite := true
|
||||||
os.cp_all('ex', './', true) or { panic(err.msg) }
|
os.cp_all('ex', './', true) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_realpath() {
|
fn test_realpath() {
|
||||||
|
@ -282,10 +282,10 @@ fn test_tmpdir() {
|
||||||
tfile := t + os.path_separator + 'tmpfile.txt'
|
tfile := t + os.path_separator + 'tmpfile.txt'
|
||||||
os.rm(tfile) or { } // just in case
|
os.rm(tfile) or { } // just in case
|
||||||
tfile_content := 'this is a temporary file'
|
tfile_content := 'this is a temporary file'
|
||||||
os.write_file(tfile, tfile_content) or { panic(err.msg) }
|
os.write_file(tfile, tfile_content) or { panic(err) }
|
||||||
tfile_content_read := os.read_file(tfile) or { panic(err.msg) }
|
tfile_content_read := os.read_file(tfile) or { panic(err) }
|
||||||
assert tfile_content_read == tfile_content
|
assert tfile_content_read == tfile_content
|
||||||
os.rm(tfile) or { panic(err.msg) }
|
os.rm(tfile) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_is_writable_folder() {
|
fn test_is_writable_folder() {
|
||||||
|
@ -307,13 +307,13 @@ fn test_make_symlink_check_is_link_and_remove_symlink() {
|
||||||
symlink := 'tsymlink'
|
symlink := 'tsymlink'
|
||||||
os.rm(symlink) or { }
|
os.rm(symlink) or { }
|
||||||
os.rm(folder) or { }
|
os.rm(folder) or { }
|
||||||
os.mkdir(folder) or { panic(err.msg) }
|
os.mkdir(folder) or { panic(err) }
|
||||||
folder_contents := os.ls(folder) or { panic(err.msg) }
|
folder_contents := os.ls(folder) or { panic(err) }
|
||||||
assert folder_contents.len == 0
|
assert folder_contents.len == 0
|
||||||
os.system('ln -s $folder $symlink')
|
os.system('ln -s $folder $symlink')
|
||||||
assert os.is_link(symlink) == true
|
assert os.is_link(symlink) == true
|
||||||
os.rm(symlink) or { panic(err.msg) }
|
os.rm(symlink) or { panic(err) }
|
||||||
os.rm(folder) or { panic(err.msg) }
|
os.rm(folder) or { panic(err) }
|
||||||
folder_exists := os.is_dir(folder)
|
folder_exists := os.is_dir(folder)
|
||||||
assert folder_exists == false
|
assert folder_exists == false
|
||||||
symlink_exists := os.is_link(symlink)
|
symlink_exists := os.is_link(symlink)
|
||||||
|
@ -345,12 +345,12 @@ fn test_symlink() {
|
||||||
$if windows {
|
$if windows {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
os.mkdir('symlink') or { panic(err.msg) }
|
os.mkdir('symlink') or { panic(err) }
|
||||||
os.symlink('symlink', 'symlink2') or { panic(err.msg) }
|
os.symlink('symlink', 'symlink2') or { panic(err) }
|
||||||
assert os.exists('symlink2')
|
assert os.exists('symlink2')
|
||||||
// cleanup
|
// cleanup
|
||||||
os.rm('symlink') or { panic(err.msg) }
|
os.rm('symlink') or { panic(err) }
|
||||||
os.rm('symlink2') or { panic(err.msg) }
|
os.rm('symlink2') or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_is_executable_writable_readable() {
|
fn test_is_executable_writable_readable() {
|
||||||
|
@ -373,7 +373,7 @@ fn test_is_executable_writable_readable() {
|
||||||
assert os.is_executable(file_name)
|
assert os.is_executable(file_name)
|
||||||
}
|
}
|
||||||
// We finally delete the test file.
|
// We finally delete the test file.
|
||||||
os.rm(file_name) or { panic(err.msg) }
|
os.rm(file_name) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_ext() {
|
fn test_ext() {
|
||||||
|
@ -457,8 +457,8 @@ fn test_write_file_array_bytes() {
|
||||||
for i in 0 .. maxn {
|
for i in 0 .. maxn {
|
||||||
arr[i] = 65 + byte(i)
|
arr[i] = 65 + byte(i)
|
||||||
}
|
}
|
||||||
os.write_file_array(fpath, arr) or { panic(err.msg) }
|
os.write_file_array(fpath, arr) or { panic(err) }
|
||||||
rarr := os.read_bytes(fpath) or { panic(err.msg) }
|
rarr := os.read_bytes(fpath) or { panic(err) }
|
||||||
assert arr == rarr
|
assert arr == rarr
|
||||||
// eprintln(arr.str())
|
// eprintln(arr.str())
|
||||||
// eprintln(rarr.str())
|
// eprintln(rarr.str())
|
||||||
|
@ -470,7 +470,7 @@ fn test_write_file_array_structs() {
|
||||||
for i in 0 .. maxn {
|
for i in 0 .. maxn {
|
||||||
arr[i] = IntPoint{65 + i, 65 + i + 10}
|
arr[i] = IntPoint{65 + i, 65 + i + 10}
|
||||||
}
|
}
|
||||||
os.write_file_array(fpath, arr) or { panic(err.msg) }
|
os.write_file_array(fpath, arr) or { panic(err) }
|
||||||
rarr := os.read_file_array<IntPoint>(fpath)
|
rarr := os.read_file_array<IntPoint>(fpath)
|
||||||
assert rarr == arr
|
assert rarr == arr
|
||||||
assert rarr.len == maxn
|
assert rarr.len == maxn
|
||||||
|
|
|
@ -7,7 +7,7 @@ fn no_lines(s string) string {
|
||||||
fn test_struct_readline() {
|
fn test_struct_readline() {
|
||||||
// mut rl := Readline{}
|
// mut rl := Readline{}
|
||||||
// eprintln('rl: $rl')
|
// eprintln('rl: $rl')
|
||||||
// line := rl.read_line('Please, enter your name: ') or { panic(err.msg) }
|
// line := rl.read_line('Please, enter your name: ') or { panic(err) }
|
||||||
// eprintln('line: $line')
|
// eprintln('line: $line')
|
||||||
mut methods := []string{}
|
mut methods := []string{}
|
||||||
$for method in Readline.methods {
|
$for method in Readline.methods {
|
||||||
|
|
|
@ -5,7 +5,7 @@ fn test_sqlite() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mut db := sqlite.connect(':memory:') or {
|
mut db := sqlite.connect(':memory:') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert db.is_open
|
assert db.is_open
|
||||||
db.exec('drop table if exists users')
|
db.exec('drop table if exists users')
|
||||||
|
@ -23,11 +23,11 @@ fn test_sqlite() {
|
||||||
code = db.exec_none('vacuum')
|
code = db.exec_none('vacuum')
|
||||||
assert code == 101
|
assert code == 101
|
||||||
user := db.exec_one('select * from users where id = 3') or {
|
user := db.exec_one('select * from users where id = 3') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert user.vals.len == 2
|
assert user.vals.len == 2
|
||||||
db.close() or {
|
db.close() or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert !db.is_open
|
assert !db.is_open
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ fn (mut ctx Context) termios_setup() ? {
|
||||||
os.signal(C.SIGCONT, fn () {
|
os.signal(C.SIGCONT, fn () {
|
||||||
mut c := ctx_ptr
|
mut c := ctx_ptr
|
||||||
if c != 0 {
|
if c != 0 {
|
||||||
c.termios_setup() or { panic(err.msg) }
|
c.termios_setup() or { panic(err) }
|
||||||
c.window_height, c.window_width = get_terminal_size()
|
c.window_height, c.window_width = get_terminal_size()
|
||||||
mut event := &Event{
|
mut event := &Event{
|
||||||
typ: .resized
|
typ: .resized
|
||||||
|
|
|
@ -205,7 +205,7 @@ pub fn (b Builder) v_files_from_dir(dir string) []string {
|
||||||
} else if !os.is_dir(dir) {
|
} else if !os.is_dir(dir) {
|
||||||
verror("$dir isn't a directory!")
|
verror("$dir isn't a directory!")
|
||||||
}
|
}
|
||||||
mut files := os.ls(dir) or { panic(err.msg) }
|
mut files := os.ls(dir) or { panic(err) }
|
||||||
if b.pref.is_verbose {
|
if b.pref.is_verbose {
|
||||||
println('v_files_from_dir ("$dir")')
|
println('v_files_from_dir ("$dir")')
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,8 @@ pub fn (mut b Builder) build_c(v_files []string, out_file string) {
|
||||||
b.pref.out_name_c = os.real_path(out_file)
|
b.pref.out_name_c = os.real_path(out_file)
|
||||||
b.info('build_c($out_file)')
|
b.info('build_c($out_file)')
|
||||||
output2 := b.gen_c(v_files)
|
output2 := b.gen_c(v_files)
|
||||||
mut f := os.create(out_file) or { panic(err.msg) }
|
mut f := os.create(out_file) or { panic(err) }
|
||||||
f.writeln(output2) or { panic(err.msg) }
|
f.writeln(output2) or { panic(err) }
|
||||||
f.close()
|
f.close()
|
||||||
if b.pref.is_stats {
|
if b.pref.is_stats {
|
||||||
println('generated C source code size: ${util.bold((output2.count('\n') + 1).str())} lines, ${util.bold(output2.len.str())} bytes')
|
println('generated C source code size: ${util.bold((output2.count('\n') + 1).str())} lines, ${util.bold(output2.len.str())} bytes')
|
||||||
|
@ -86,9 +86,9 @@ pub fn (mut b Builder) compile_c() {
|
||||||
bundle_name := b.pref.out_name.split('/').last()
|
bundle_name := b.pref.out_name.split('/').last()
|
||||||
bundle_id := if b.pref.bundle_id != '' { b.pref.bundle_id } else { 'app.vlang.$bundle_name' }
|
bundle_id := if b.pref.bundle_id != '' { b.pref.bundle_id } else { 'app.vlang.$bundle_name' }
|
||||||
display_name := if b.pref.display_name != '' { b.pref.display_name } else { bundle_name }
|
display_name := if b.pref.display_name != '' { b.pref.display_name } else { bundle_name }
|
||||||
os.mkdir('${display_name}.app') or { panic(err.msg) }
|
os.mkdir('${display_name}.app') or { panic(err) }
|
||||||
os.write_file('${display_name}.app/Info.plist', make_ios_plist(display_name, bundle_id,
|
os.write_file('${display_name}.app/Info.plist', make_ios_plist(display_name, bundle_id,
|
||||||
bundle_name, 1)) or { panic(err.msg) }
|
bundle_name, 1)) or { panic(err) }
|
||||||
}
|
}
|
||||||
b.cc()
|
b.cc()
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ fn (mut v Builder) post_process_c_compiler_output(res os.Result) {
|
||||||
if v.pref.is_verbose {
|
if v.pref.is_verbose {
|
||||||
eprintln('>> remove tmp file: $tmpfile')
|
eprintln('>> remove tmp file: $tmpfile')
|
||||||
}
|
}
|
||||||
os.rm(tmpfile) or { panic(err.msg) }
|
os.rm(tmpfile) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -418,7 +418,7 @@ fn (mut v Builder) setup_output_name() {
|
||||||
println('Building $v.pref.path to $v.pref.out_name ...')
|
println('Building $v.pref.path to $v.pref.out_name ...')
|
||||||
}
|
}
|
||||||
v.pref.cache_manager.save('.description.txt', v.pref.path, '${v.pref.path:-30} @ $v.pref.cache_manager.vopts\n') or {
|
v.pref.cache_manager.save('.description.txt', v.pref.path, '${v.pref.path:-30} @ $v.pref.cache_manager.vopts\n') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
// println('v.table.imports:')
|
// println('v.table.imports:')
|
||||||
// println(v.table.imports)
|
// println(v.table.imports)
|
||||||
|
@ -469,7 +469,7 @@ fn (mut v Builder) vjs_cc() bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// v.out_name_c may be on a different partition than v.out_name
|
// v.out_name_c may be on a different partition than v.out_name
|
||||||
os.mv_by_cp(v.out_name_c, v.pref.out_name) or { panic(err.msg) }
|
os.mv_by_cp(v.out_name_c, v.pref.out_name) or { panic(err) }
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
@ -481,7 +481,7 @@ fn (mut v Builder) dump_c_options(all_args []string) {
|
||||||
if v.pref.dump_c_flags == '-' {
|
if v.pref.dump_c_flags == '-' {
|
||||||
print(non_empty_args)
|
print(non_empty_args)
|
||||||
} else {
|
} else {
|
||||||
os.write_file(v.pref.dump_c_flags, non_empty_args) or { panic(err.msg) }
|
os.write_file(v.pref.dump_c_flags, non_empty_args) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -759,7 +759,7 @@ fn (mut b Builder) cc_linux_cross() {
|
||||||
b.setup_output_name()
|
b.setup_output_name()
|
||||||
parent_dir := os.vmodules_dir()
|
parent_dir := os.vmodules_dir()
|
||||||
if !os.exists(parent_dir) {
|
if !os.exists(parent_dir) {
|
||||||
os.mkdir(parent_dir) or { panic(err.msg) }
|
os.mkdir(parent_dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
sysroot := os.join_path(os.vmodules_dir(), 'linuxroot')
|
sysroot := os.join_path(os.vmodules_dir(), 'linuxroot')
|
||||||
if !os.is_dir(sysroot) {
|
if !os.is_dir(sysroot) {
|
||||||
|
@ -963,7 +963,7 @@ fn (mut v Builder) build_thirdparty_obj_file(path string, moduleflags []cflag.CF
|
||||||
// for example thirdparty\tcc\lib\openlibm.o
|
// for example thirdparty\tcc\lib\openlibm.o
|
||||||
// the best we can do for them is just copy them,
|
// the best we can do for them is just copy them,
|
||||||
// and hope that they work with any compiler...
|
// and hope that they work with any compiler...
|
||||||
os.cp(obj_path, opath) or { panic(err.msg) }
|
os.cp(obj_path, opath) or { panic(err) }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
println('$obj_path not found, building it in $opath ...')
|
println('$obj_path not found, building it in $opath ...')
|
||||||
|
@ -994,7 +994,7 @@ fn (mut v Builder) build_thirdparty_obj_file(path string, moduleflags []cflag.CF
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
v.pref.cache_manager.save('.description.txt', obj_path, '${obj_path:-30} @ $cmd\n') or {
|
v.pref.cache_manager.save('.description.txt', obj_path, '${obj_path:-30} @ $cmd\n') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
println(res.output)
|
println(res.output)
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,12 +93,12 @@ fn (mut b Builder) run_compiled_executable_and_exit() {
|
||||||
}
|
}
|
||||||
if b.pref.os == .ios {
|
if b.pref.os == .ios {
|
||||||
device := '"iPhone SE (2nd generation)"'
|
device := '"iPhone SE (2nd generation)"'
|
||||||
os.exec('xcrun simctl boot $device') or { panic(err.msg) }
|
os.exec('xcrun simctl boot $device') or { panic(err) }
|
||||||
bundle_name := b.pref.out_name.split('/').last()
|
bundle_name := b.pref.out_name.split('/').last()
|
||||||
display_name := if b.pref.display_name != '' { b.pref.display_name } else { bundle_name }
|
display_name := if b.pref.display_name != '' { b.pref.display_name } else { bundle_name }
|
||||||
os.exec('xcrun simctl install $device ${display_name}.app') or { panic(err.msg) }
|
os.exec('xcrun simctl install $device ${display_name}.app') or { panic(err) }
|
||||||
bundle_id := if b.pref.bundle_id != '' { b.pref.bundle_id } else { 'app.vlang.$bundle_name' }
|
bundle_id := if b.pref.bundle_id != '' { b.pref.bundle_id } else { 'app.vlang.$bundle_name' }
|
||||||
os.exec('xcrun simctl launch $device $bundle_id') or { panic(err.msg) }
|
os.exec('xcrun simctl launch $device $bundle_id') or { panic(err) }
|
||||||
} else {
|
} else {
|
||||||
exefile := os.real_path(b.pref.out_name)
|
exefile := os.real_path(b.pref.out_name)
|
||||||
mut cmd := '"$exefile"'
|
mut cmd := '"$exefile"'
|
||||||
|
@ -133,7 +133,7 @@ fn (mut v Builder) cleanup_run_executable_after_exit(exefile string) {
|
||||||
}
|
}
|
||||||
if os.is_file(exefile) {
|
if os.is_file(exefile) {
|
||||||
v.pref.vrun_elog('remove run executable: $exefile')
|
v.pref.vrun_elog('remove run executable: $exefile')
|
||||||
os.rm(exefile) or { panic(err.msg) }
|
os.rm(exefile) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ pub fn (mut b Builder) build_js(v_files []string, out_file string) {
|
||||||
b.out_name_js = out_file
|
b.out_name_js = out_file
|
||||||
b.info('build_js($out_file)')
|
b.info('build_js($out_file)')
|
||||||
output := b.gen_js(v_files)
|
output := b.gen_js(v_files)
|
||||||
mut f := os.create(out_file) or { panic(err.msg) }
|
mut f := os.create(out_file) or { panic(err) }
|
||||||
f.writeln(output) or { panic(err.msg) }
|
f.writeln(output) or { panic(err) }
|
||||||
f.close()
|
f.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -329,7 +329,7 @@ pub fn (mut v Builder) cc_msvc() {
|
||||||
// println(res)
|
// println(res)
|
||||||
// println('C OUTPUT:')
|
// println('C OUTPUT:')
|
||||||
// Always remove the object file - it is completely unnecessary
|
// Always remove the object file - it is completely unnecessary
|
||||||
os.rm(out_name_obj) or { panic(err.msg) }
|
os.rm(out_name_obj) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut v Builder) build_thirdparty_obj_file_with_msvc(path string, moduleflags []cflag.CFlag) {
|
fn (mut v Builder) build_thirdparty_obj_file_with_msvc(path string, moduleflags []cflag.CFlag) {
|
||||||
|
|
|
@ -3656,7 +3656,7 @@ pub fn (mut c Checker) expr(node ast.Expr) table.Type {
|
||||||
return node.typ.to_ptr()
|
return node.typ.to_ptr()
|
||||||
}
|
}
|
||||||
ast.Assoc {
|
ast.Assoc {
|
||||||
v := node.scope.find_var(node.var_name) or { panic(err.msg) }
|
v := node.scope.find_var(node.var_name) or { panic(err) }
|
||||||
for i, _ in node.fields {
|
for i, _ in node.fields {
|
||||||
c.expr(node.exprs[i])
|
c.expr(node.exprs[i])
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,14 +239,14 @@ fn (mut task TaskDescription) execute() {
|
||||||
}
|
}
|
||||||
program := task.path
|
program := task.path
|
||||||
cli_cmd := '$task.vexe $task.voptions $program'
|
cli_cmd := '$task.vexe $task.voptions $program'
|
||||||
res := os.exec(cli_cmd) or { panic(err.msg) }
|
res := os.exec(cli_cmd) or { panic(err) }
|
||||||
expected_out_path := program.replace('.vv', '') + task.result_extension
|
expected_out_path := program.replace('.vv', '') + task.result_extension
|
||||||
task.expected_out_path = expected_out_path
|
task.expected_out_path = expected_out_path
|
||||||
task.cli_cmd = cli_cmd
|
task.cli_cmd = cli_cmd
|
||||||
if should_autofix && !os.exists(expected_out_path) {
|
if should_autofix && !os.exists(expected_out_path) {
|
||||||
os.write_file(expected_out_path, '') or { panic(err.msg) }
|
os.write_file(expected_out_path, '') or { panic(err) }
|
||||||
}
|
}
|
||||||
mut expected := os.read_file(expected_out_path) or { panic(err.msg) }
|
mut expected := os.read_file(expected_out_path) or { panic(err) }
|
||||||
task.expected = clean_line_endings(expected)
|
task.expected = clean_line_endings(expected)
|
||||||
task.found___ = clean_line_endings(res.output)
|
task.found___ = clean_line_endings(res.output)
|
||||||
$if windows {
|
$if windows {
|
||||||
|
@ -257,7 +257,7 @@ fn (mut task TaskDescription) execute() {
|
||||||
if task.expected != task.found___ {
|
if task.expected != task.found___ {
|
||||||
task.is_error = true
|
task.is_error = true
|
||||||
if should_autofix {
|
if should_autofix {
|
||||||
os.write_file(expected_out_path, res.output) or { panic(err.msg) }
|
os.write_file(expected_out_path, res.output) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ fn diff_content(s1 string, s2 string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_tests_in_dir(dir string, is_module bool) []string {
|
fn get_tests_in_dir(dir string, is_module bool) []string {
|
||||||
files := os.ls(dir) or { panic(err.msg) }
|
files := os.ls(dir) or { panic(err) }
|
||||||
mut tests := files.clone()
|
mut tests := files.clone()
|
||||||
if !is_module {
|
if !is_module {
|
||||||
tests = files.filter(it.ends_with('.vv'))
|
tests = files.filter(it.ends_with('.vv'))
|
||||||
|
|
|
@ -67,7 +67,7 @@ fn test_fmt() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
||||||
os.write_file(vfmt_result_file, result_ocontent) or { panic(err.msg) }
|
os.write_file(vfmt_result_file, result_ocontent) or { panic(err) }
|
||||||
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ fn test_fmt() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
||||||
os.write_file(vfmt_result_file, result_ocontent) or { panic(err.msg) }
|
os.write_file(vfmt_result_file, result_ocontent) or { panic(err) }
|
||||||
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ fn test_vlib_fmt() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_$ifilename')
|
||||||
os.write_file(vfmt_result_file, result_ocontent) or { panic(err.msg) }
|
os.write_file(vfmt_result_file, result_ocontent) or { panic(err) }
|
||||||
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -5590,7 +5590,7 @@ fn (mut g Gen) or_block(var_name string, or_block ast.OrExpr, return_type table.
|
||||||
}
|
}
|
||||||
} else if or_block.kind == .propagate {
|
} else if or_block.kind == .propagate {
|
||||||
if g.file.mod.name == 'main' && (isnil(g.fn_decl) || g.fn_decl.name == 'main.main') {
|
if g.file.mod.name == 'main' && (isnil(g.fn_decl) || g.fn_decl.name == 'main.main') {
|
||||||
// In main(), an `opt()?` call is sugar for `opt() or { panic(err.msg) }`
|
// In main(), an `opt()?` call is sugar for `opt() or { panic(err) }`
|
||||||
if g.pref.is_debug {
|
if g.pref.is_debug {
|
||||||
paline, pafile, pamod, pafn := g.panic_debug_info(or_block.pos)
|
paline, pafile, pamod, pafn := g.panic_debug_info(or_block.pos)
|
||||||
g.writeln('panic_debug($paline, tos3("$pafile"), tos3("$pamod"), tos3("$pafn"), ${cvar_name}.err.msg );')
|
g.writeln('panic_debug($paline, tos3("$pafile"), tos3("$pamod"), tos3("$pafn"), ${cvar_name}.err.msg );')
|
||||||
|
|
|
@ -18,7 +18,7 @@ fn test_c_files() {
|
||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
for i in 1 .. (nr_tests + 1) {
|
for i in 1 .. (nr_tests + 1) {
|
||||||
path := '$vroot/vlib/v/gen/tests/${i}.vv'
|
path := '$vroot/vlib/v/gen/tests/${i}.vv'
|
||||||
ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or { panic(err.msg) }
|
ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or { panic(err) }
|
||||||
mut b := builder.new_builder(&pref.Preferences{})
|
mut b := builder.new_builder(&pref.Preferences{})
|
||||||
b.module_search_paths = ['$vroot/vlib/v/gen/tests/']
|
b.module_search_paths = ['$vroot/vlib/v/gen/tests/']
|
||||||
mut res := b.gen_c([path]).after('#endbuiltin')
|
mut res := b.gen_c([path]).after('#endbuiltin')
|
||||||
|
|
|
@ -15,7 +15,7 @@ const there_is_node_available = is_nodejs_working()
|
||||||
fn test_example_compilation() {
|
fn test_example_compilation() {
|
||||||
vexe := os.getenv('VEXE')
|
vexe := os.getenv('VEXE')
|
||||||
os.chdir(os.dir(vexe))
|
os.chdir(os.dir(vexe))
|
||||||
os.mkdir_all(output_dir) or { panic(err.msg) }
|
os.mkdir_all(output_dir) or { panic(err) }
|
||||||
files := find_test_files()
|
files := find_test_files()
|
||||||
for file in files {
|
for file in files {
|
||||||
path := os.join_path(test_dir, file)
|
path := os.join_path(test_dir, file)
|
||||||
|
@ -40,7 +40,7 @@ fn test_example_compilation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_test_files() []string {
|
fn find_test_files() []string {
|
||||||
files := os.ls(test_dir) or { panic(err.msg) }
|
files := os.ls(test_dir) or { panic(err) }
|
||||||
// The life example never exits, so tests would hang with it, skip
|
// The life example never exits, so tests would hang with it, skip
|
||||||
mut tests := files.filter(it.ends_with('.v')).filter(it != 'life.v')
|
mut tests := files.filter(it.ends_with('.v')).filter(it != 'life.v')
|
||||||
tests.sort()
|
tests.sort()
|
||||||
|
|
|
@ -99,7 +99,7 @@ pub fn (mut g Gen) generate_elf_footer() {
|
||||||
// -5 is for "e8 00 00 00 00"
|
// -5 is for "e8 00 00 00 00"
|
||||||
g.write32_at(g.code_start_pos + 1, int(g.main_fn_addr - g.code_start_pos) - 5)
|
g.write32_at(g.code_start_pos + 1, int(g.main_fn_addr - g.code_start_pos) - 5)
|
||||||
// Create the binary
|
// Create the binary
|
||||||
mut f := os.create(g.out_name) or { panic(err.msg) }
|
mut f := os.create(g.out_name) or { panic(err) }
|
||||||
os.chmod(g.out_name, 0o775) // make it an executable
|
os.chmod(g.out_name, 0o775) // make it an executable
|
||||||
unsafe { f.write_bytes(g.buf.data, g.buf.len) }
|
unsafe { f.write_bytes(g.buf.data, g.buf.len) }
|
||||||
f.close()
|
f.close()
|
||||||
|
|
|
@ -15,10 +15,10 @@ fn test_x64() {
|
||||||
vexe := os.getenv('VEXE')
|
vexe := os.getenv('VEXE')
|
||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
dir := os.join_path(vroot, 'vlib/v/gen/x64/tests')
|
dir := os.join_path(vroot, 'vlib/v/gen/x64/tests')
|
||||||
files := os.ls(dir) or { panic(err.msg) }
|
files := os.ls(dir) or { panic(err) }
|
||||||
//
|
//
|
||||||
wrkdir := os.join_path(os.temp_dir(), 'vtests', 'x64')
|
wrkdir := os.join_path(os.temp_dir(), 'vtests', 'x64')
|
||||||
os.mkdir_all(wrkdir) or { panic(err.msg) }
|
os.mkdir_all(wrkdir) or { panic(err) }
|
||||||
os.chdir(wrkdir)
|
os.chdir(wrkdir)
|
||||||
tests := files.filter(it.ends_with('.vv'))
|
tests := files.filter(it.ends_with('.vv'))
|
||||||
if tests.len == 0 {
|
if tests.len == 0 {
|
||||||
|
@ -46,7 +46,7 @@ fn test_x64() {
|
||||||
eprintln(res.output)
|
eprintln(res.output)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
mut expected := os.read_file('$dir/${test}.out') or { panic(err.msg) }
|
mut expected := os.read_file('$dir/${test}.out') or { panic(err) }
|
||||||
expected = expected.trim_right('\r\n').replace('\r\n', '\n')
|
expected = expected.trim_right('\r\n').replace('\r\n', '\n')
|
||||||
mut found := res.output.trim_right('\r\n').replace('\r\n', '\n')
|
mut found := res.output.trim_right('\r\n').replace('\r\n', '\n')
|
||||||
found = found.trim_space()
|
found = found.trim_space()
|
||||||
|
|
|
@ -44,7 +44,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
fn get_source_template() string {
|
fn get_source_template() string {
|
||||||
src := os.read_file(os.join_path(os.dir(@FILE), 'live_test_template.vv')) or { panic(err.msg) }
|
src := os.read_file(os.join_path(os.dir(@FILE), 'live_test_template.vv')) or { panic(err) }
|
||||||
return src.replace('#OUTPUT_FILE#', output_file)
|
return src.replace('#OUTPUT_FILE#', output_file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,8 +60,8 @@ fn atomic_write_source(source string) {
|
||||||
// NB: here wrtiting is done in 2 steps, since os.write_file can take some time,
|
// NB: here wrtiting is done in 2 steps, since os.write_file can take some time,
|
||||||
// during which the file will be modified, but it will still be not completely written.
|
// during which the file will be modified, but it will still be not completely written.
|
||||||
// The os.mv after that, guarantees that the reloader will see a complete valid V program.
|
// The os.mv after that, guarantees that the reloader will see a complete valid V program.
|
||||||
os.write_file(tmp_file, source) or { panic(err.msg) }
|
os.write_file(tmp_file, source) or { panic(err) }
|
||||||
os.mv(tmp_file, source_file) or { panic(err.msg) }
|
os.mv(tmp_file, source_file) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -152,7 +152,7 @@ pub fn parse_file(path string, table &table.Table, comments_mode scanner.Comment
|
||||||
// for handling them, and should be removed when we do (the general solution is also needed for vfmt)
|
// for handling them, and should be removed when we do (the general solution is also needed for vfmt)
|
||||||
// println('parse_file("$path")')
|
// println('parse_file("$path")')
|
||||||
// text := os.read_file(path) or {
|
// text := os.read_file(path) or {
|
||||||
// panic(err.msg)
|
// panic(err)
|
||||||
// }
|
// }
|
||||||
mut p := Parser{
|
mut p := Parser{
|
||||||
scanner: scanner.new_scanner_file(path, comments_mode, pref)
|
scanner: scanner.new_scanner_file(path, comments_mode, pref)
|
||||||
|
|
|
@ -488,7 +488,7 @@ pub fn parse_args(known_external_commands []string, args []string) (&Preferences
|
||||||
os.rm(tmp_exe_file_path) or { }
|
os.rm(tmp_exe_file_path) or { }
|
||||||
}
|
}
|
||||||
res.vrun_elog('remove tmp v file: $tmp_v_file_path')
|
res.vrun_elog('remove tmp v file: $tmp_v_file_path')
|
||||||
os.rm(tmp_v_file_path) or { panic(err.msg) }
|
os.rm(tmp_v_file_path) or { panic(err) }
|
||||||
exit(tmp_result)
|
exit(tmp_result)
|
||||||
}
|
}
|
||||||
must_exist(res.path)
|
must_exist(res.path)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
type FnCb = fn (a string, b int) ?
|
type FnCb = fn (a string, b int) ?
|
||||||
|
|
||||||
fn test_calling_an_anon_function_returning_question() {
|
fn test_calling_an_anon_function_returning_question() {
|
||||||
create_and_call_anon_function() or { panic(err.msg) }
|
create_and_call_anon_function() or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_and_call_anon_function() ? {
|
fn create_and_call_anon_function() ? {
|
||||||
|
|
|
@ -16,7 +16,7 @@ fn test_all() {
|
||||||
os.chdir(vroot)
|
os.chdir(vroot)
|
||||||
diff_cmd := util.find_working_diff_command() or { '' }
|
diff_cmd := util.find_working_diff_command() or { '' }
|
||||||
dir := 'vlib/v/tests/inout'
|
dir := 'vlib/v/tests/inout'
|
||||||
files := os.ls(dir) or { panic(err.msg) }
|
files := os.ls(dir) or { panic(err) }
|
||||||
tests := files.filter(it.ends_with('.vv'))
|
tests := files.filter(it.ends_with('.vv'))
|
||||||
if tests.len == 0 {
|
if tests.len == 0 {
|
||||||
println('no compiler tests found')
|
println('no compiler tests found')
|
||||||
|
@ -28,13 +28,13 @@ fn test_all() {
|
||||||
for path in paths {
|
for path in paths {
|
||||||
print(path + ' ')
|
print(path + ' ')
|
||||||
program := path
|
program := path
|
||||||
compilation := os.exec('$vexe -o test -cflags "-w" -cg $program') or { panic(err.msg) }
|
compilation := os.exec('$vexe -o test -cflags "-w" -cg $program') or { panic(err) }
|
||||||
if compilation.exit_code != 0 {
|
if compilation.exit_code != 0 {
|
||||||
panic('compilation failed: $compilation.output')
|
panic('compilation failed: $compilation.output')
|
||||||
}
|
}
|
||||||
res := os.exec('./test') or {
|
res := os.exec('./test') or {
|
||||||
println('nope')
|
println('nope')
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
$if windows {
|
$if windows {
|
||||||
os.rm('./test.exe') or { }
|
os.rm('./test.exe') or { }
|
||||||
|
@ -49,7 +49,7 @@ fn test_all() {
|
||||||
// println(res.output)
|
// println(res.output)
|
||||||
// println('============')
|
// println('============')
|
||||||
mut found := res.output.trim_right('\r\n').replace('\r\n', '\n')
|
mut found := res.output.trim_right('\r\n').replace('\r\n', '\n')
|
||||||
mut expected := os.read_file(program.replace('.vv', '') + '.out') or { panic(err.msg) }
|
mut expected := os.read_file(program.replace('.vv', '') + '.out') or { panic(err) }
|
||||||
expected = expected.trim_right('\r\n').replace('\r\n', '\n')
|
expected = expected.trim_right('\r\n').replace('\r\n', '\n')
|
||||||
if expected.contains('================ V panic ================') {
|
if expected.contains('================ V panic ================') {
|
||||||
// panic include backtraces and absolute file paths, so can't do char by char comparison
|
// panic include backtraces and absolute file paths, so can't do char by char comparison
|
||||||
|
|
|
@ -18,7 +18,7 @@ fn test_vexe_is_set() {
|
||||||
fn test_compiling_without_vmodules_fails() {
|
fn test_compiling_without_vmodules_fails() {
|
||||||
os.chdir(vroot)
|
os.chdir(vroot)
|
||||||
os.setenv('VMODULES', '', true)
|
os.setenv('VMODULES', '', true)
|
||||||
res := os.exec('"$vexe" run "$mainvv"') or { panic(err.msg) }
|
res := os.exec('"$vexe" run "$mainvv"') or { panic(err) }
|
||||||
assert res.exit_code == 1
|
assert res.exit_code == 1
|
||||||
assert res.output.trim_space().contains('builder error: cannot import module "yyy" (not found)')
|
assert res.output.trim_space().contains('builder error: cannot import module "yyy" (not found)')
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ fn test_compiling_with_vmodules_works() {
|
||||||
os.chdir(vroot)
|
os.chdir(vroot)
|
||||||
vmpaths := ['path1', 'path2', 'path3'].map(os.join_path(basepath, it))
|
vmpaths := ['path1', 'path2', 'path3'].map(os.join_path(basepath, it))
|
||||||
os.setenv('VMODULES', vmpaths.join(os.path_delimiter), true)
|
os.setenv('VMODULES', vmpaths.join(os.path_delimiter), true)
|
||||||
res := os.exec('"$vexe" run "$mainvv"') or { panic(err.msg) }
|
res := os.exec('"$vexe" run "$mainvv"') or { panic(err) }
|
||||||
assert res.exit_code == 0
|
assert res.exit_code == 0
|
||||||
assert res.output.trim_space() == "['x', 'y', 'z']"
|
assert res.output.trim_space() == "['x', 'y', 'z']"
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ fn for_opt_default() ?string {
|
||||||
|
|
||||||
fn test_opt_default() {
|
fn test_opt_default() {
|
||||||
a := for_opt_default() or {
|
a := for_opt_default() or {
|
||||||
// panic(err.msg)
|
// panic(err)
|
||||||
'default'
|
'default'
|
||||||
}
|
}
|
||||||
assert a == 'default'
|
assert a == 'default'
|
||||||
|
@ -258,7 +258,7 @@ fn multi_return_opt(err bool) (string, string) {
|
||||||
|
|
||||||
fn test_multi_return_opt() {
|
fn test_multi_return_opt() {
|
||||||
a, b := multi_return_opt(false) or {
|
a, b := multi_return_opt(false) or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
assert a == 'hello' && b == 'v'
|
assert a == 'hello' && b == 'v'
|
||||||
_, _ := multi_return_opt(true) or {
|
_, _ := multi_return_opt(true) or {
|
||||||
|
|
|
@ -11,7 +11,7 @@ struct SubStruct {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_orm_sub_structs() {
|
fn test_orm_sub_structs() {
|
||||||
db := sqlite.connect(':memory:') or { panic(err.msg) }
|
db := sqlite.connect(':memory:') or { panic(err) }
|
||||||
db.exec('create table Upper (id integer primary key, sub int default 0)')
|
db.exec('create table Upper (id integer primary key, sub int default 0)')
|
||||||
db.exec('create table SubStruct (id integer primary key, name string default "")')
|
db.exec('create table SubStruct (id integer primary key, name string default "")')
|
||||||
|
|
||||||
|
|
|
@ -12,11 +12,11 @@ fn test_the_v_compiler_can_be_invoked() {
|
||||||
println('vexecutable: $vexec')
|
println('vexecutable: $vexec')
|
||||||
assert vexec != ''
|
assert vexec != ''
|
||||||
vcmd := '"$vexec" -version'
|
vcmd := '"$vexec" -version'
|
||||||
r := os.exec(vcmd) or { panic(err.msg) }
|
r := os.exec(vcmd) or { panic(err) }
|
||||||
// println('"$vcmd" exit_code: $r.exit_code | output: $r.output')
|
// println('"$vcmd" exit_code: $r.exit_code | output: $r.output')
|
||||||
assert r.exit_code == 0
|
assert r.exit_code == 0
|
||||||
vcmd_error := '"$vexec" nonexisting.v'
|
vcmd_error := '"$vexec" nonexisting.v'
|
||||||
r_error := os.exec(vcmd_error) or { panic(err.msg) }
|
r_error := os.exec(vcmd_error) or { panic(err) }
|
||||||
// println('"$vcmd_error" exit_code: $r_error.exit_code | output: $r_error.output')
|
// println('"$vcmd_error" exit_code: $r_error.exit_code | output: $r_error.output')
|
||||||
assert r_error.exit_code == 1
|
assert r_error.exit_code == 1
|
||||||
actual_error := r_error.output.trim_space()
|
actual_error := r_error.output.trim_space()
|
||||||
|
@ -36,7 +36,7 @@ fn test_all_v_repl_files() {
|
||||||
}
|
}
|
||||||
// warmup, and ensure that the vrepl is compiled in single threaded mode if it does not exist
|
// warmup, and ensure that the vrepl is compiled in single threaded mode if it does not exist
|
||||||
runner.run_repl_file(os.cache_dir(), session.options.vexec, 'vlib/v/tests/repl/nothing.repl') or {
|
runner.run_repl_file(os.cache_dir(), session.options.vexec, 'vlib/v/tests/repl/nothing.repl') or {
|
||||||
panic(err.msg)
|
panic(err)
|
||||||
}
|
}
|
||||||
session.bmark.set_total_expected_steps(session.options.files.len)
|
session.bmark.set_total_expected_steps(session.options.files.len)
|
||||||
mut pool_repl := pool.new_pool_processor(
|
mut pool_repl := pool.new_pool_processor(
|
||||||
|
@ -64,23 +64,23 @@ fn worker_repl(mut p pool.PoolProcessor, idx int, thread_id int) voidptr {
|
||||||
tls_bench.cstep = idx
|
tls_bench.cstep = idx
|
||||||
tfolder := os.join_path(cdir, 'vrepl_tests_$idx')
|
tfolder := os.join_path(cdir, 'vrepl_tests_$idx')
|
||||||
if os.is_dir(tfolder) {
|
if os.is_dir(tfolder) {
|
||||||
os.rmdir_all(tfolder) or { panic(err.msg) }
|
os.rmdir_all(tfolder) or { panic(err) }
|
||||||
}
|
}
|
||||||
os.mkdir(tfolder) or { panic(err.msg) }
|
os.mkdir(tfolder) or { panic(err) }
|
||||||
file := p.get_item<string>(idx)
|
file := p.get_item<string>(idx)
|
||||||
session.bmark.step()
|
session.bmark.step()
|
||||||
tls_bench.step()
|
tls_bench.step()
|
||||||
fres := runner.run_repl_file(tfolder, session.options.vexec, file) or {
|
fres := runner.run_repl_file(tfolder, session.options.vexec, file) or {
|
||||||
session.bmark.fail()
|
session.bmark.fail()
|
||||||
tls_bench.fail()
|
tls_bench.fail()
|
||||||
os.rmdir_all(tfolder) or { panic(err.msg) }
|
os.rmdir_all(tfolder) or { panic(err) }
|
||||||
eprintln(tls_bench.step_message_fail(err.msg))
|
eprintln(tls_bench.step_message_fail(err.msg))
|
||||||
assert false
|
assert false
|
||||||
return pool.no_result
|
return pool.no_result
|
||||||
}
|
}
|
||||||
session.bmark.ok()
|
session.bmark.ok()
|
||||||
tls_bench.ok()
|
tls_bench.ok()
|
||||||
os.rmdir_all(tfolder) or { panic(err.msg) }
|
os.rmdir_all(tfolder) or { panic(err) }
|
||||||
println(tls_bench.step_message_ok(fres))
|
println(tls_bench.step_message_ok(fres))
|
||||||
assert true
|
assert true
|
||||||
return pool.no_result
|
return pool.no_result
|
||||||
|
|
|
@ -47,22 +47,22 @@ pub fn run_repl_file(wd string, vexec string, file string) ?string {
|
||||||
output := content.all_after('===output===\n').trim_right('\n\r')
|
output := content.all_after('===output===\n').trim_right('\n\r')
|
||||||
fname := os.file_name(file)
|
fname := os.file_name(file)
|
||||||
input_temporary_filename := os.real_path(os.join_path(wd, 'input_temporary_filename.txt'))
|
input_temporary_filename := os.real_path(os.join_path(wd, 'input_temporary_filename.txt'))
|
||||||
os.write_file(input_temporary_filename, input) or { panic(err.msg) }
|
os.write_file(input_temporary_filename, input) or { panic(err) }
|
||||||
os.write_file(os.real_path(os.join_path(wd, 'original.txt')), fcontent) or { panic(err.msg) }
|
os.write_file(os.real_path(os.join_path(wd, 'original.txt')), fcontent) or { panic(err) }
|
||||||
rcmd := '"$vexec" repl -replfolder "$wd" -replprefix "${fname}." < $input_temporary_filename'
|
rcmd := '"$vexec" repl -replfolder "$wd" -replprefix "${fname}." < $input_temporary_filename'
|
||||||
r := os.exec(rcmd) or {
|
r := os.exec(rcmd) or {
|
||||||
os.rm(input_temporary_filename) or { panic(err.msg) }
|
os.rm(input_temporary_filename) or { panic(err) }
|
||||||
return error('Could not execute: $rcmd')
|
return error('Could not execute: $rcmd')
|
||||||
}
|
}
|
||||||
os.rm(input_temporary_filename) or { panic(err.msg) }
|
os.rm(input_temporary_filename) or { panic(err) }
|
||||||
result := r.output.replace('\r', '').replace('>>> ', '').replace('>>>', '').replace('... ',
|
result := r.output.replace('\r', '').replace('>>> ', '').replace('>>>', '').replace('... ',
|
||||||
'').replace(wd + os.path_separator, '').replace(vexec_folder, '').replace('\\',
|
'').replace(wd + os.path_separator, '').replace(vexec_folder, '').replace('\\',
|
||||||
'/').trim_right('\n\r')
|
'/').trim_right('\n\r')
|
||||||
if result != output {
|
if result != output {
|
||||||
file_result := '${file}.result.txt'
|
file_result := '${file}.result.txt'
|
||||||
file_expected := '${file}.expected.txt'
|
file_expected := '${file}.expected.txt'
|
||||||
os.write_file(file_result, result) or { panic(err.msg) }
|
os.write_file(file_result, result) or { panic(err) }
|
||||||
os.write_file(file_expected, output) or { panic(err.msg) }
|
os.write_file(file_expected, output) or { panic(err) }
|
||||||
diff := diff_files(file_expected, file_result)
|
diff := diff_files(file_expected, file_result)
|
||||||
return error('Difference found in REPL file: $file
|
return error('Difference found in REPL file: $file
|
||||||
====> Expected :
|
====> Expected :
|
||||||
|
@ -91,7 +91,7 @@ pub fn run_prod_file(wd string, vexec string, file string) ?string {
|
||||||
result := r.output.replace('\r', '')
|
result := r.output.replace('\r', '')
|
||||||
if result != expected_content {
|
if result != expected_content {
|
||||||
file_result := '${file}.result.txt'
|
file_result := '${file}.result.txt'
|
||||||
os.write_file(file_result, result) or { panic(err.msg) }
|
os.write_file(file_result, result) or { panic(err) }
|
||||||
diff := diff_files(file_result, file_expected)
|
diff := diff_files(file_result, file_expected)
|
||||||
return error('Difference found in test: $file
|
return error('Difference found in test: $file
|
||||||
====> Got :
|
====> Got :
|
||||||
|
|
|
@ -19,10 +19,10 @@ fn pipe_to_v_run() ? {
|
||||||
// eprintln('>> cmd: $cmd | res: $res')
|
// eprintln('>> cmd: $cmd | res: $res')
|
||||||
assert res.exit_code == 0
|
assert res.exit_code == 0
|
||||||
assert res.output.replace('\r', '').trim_space().split('\n') == ['4', 'hello']
|
assert res.output.replace('\r', '').trim_space().split('\n') == ['4', 'hello']
|
||||||
os.rm(tmp_v_file) or { panic(err.msg) }
|
os.rm(tmp_v_file) or { panic(err) }
|
||||||
assert !os.exists(tmp_v_file)
|
assert !os.exists(tmp_v_file)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_pipe_to_v_run() {
|
fn test_pipe_to_v_run() {
|
||||||
pipe_to_v_run() or { panic(err.msg) }
|
pipe_to_v_run() or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,10 +50,10 @@ fn test_all() {
|
||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
valgrind_test_path := 'vlib/v/tests/valgrind'
|
valgrind_test_path := 'vlib/v/tests/valgrind'
|
||||||
dir := os.join_path(vroot, valgrind_test_path)
|
dir := os.join_path(vroot, valgrind_test_path)
|
||||||
files := os.ls(dir) or { panic(err.msg) }
|
files := os.ls(dir) or { panic(err) }
|
||||||
//
|
//
|
||||||
wrkdir := os.join_path(os.temp_dir(), 'vtests', 'valgrind')
|
wrkdir := os.join_path(os.temp_dir(), 'vtests', 'valgrind')
|
||||||
os.mkdir_all(wrkdir) or { panic(err.msg) }
|
os.mkdir_all(wrkdir) or { panic(err) }
|
||||||
os.chdir(wrkdir)
|
os.chdir(wrkdir)
|
||||||
//
|
//
|
||||||
only_ordinary_v_files := files.filter(it.ends_with('.v') && !it.ends_with('_test.v'))
|
only_ordinary_v_files := files.filter(it.ends_with('.v') && !it.ends_with('_test.v'))
|
||||||
|
|
|
@ -14,7 +14,7 @@ fn new(config Config, shard_count ...int) ?&Client {
|
||||||
fn test_can_compile_an_empty_var_arg() {
|
fn test_can_compile_an_empty_var_arg() {
|
||||||
x := new(Config{
|
x := new(Config{
|
||||||
token: 'xyz'
|
token: 'xyz'
|
||||||
}) or { panic(err.msg) }
|
}) or { panic(err) }
|
||||||
assert x.x == 1
|
assert x.x == 1
|
||||||
assert x.y == 2
|
assert x.y == 2
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import os
|
||||||
|
|
||||||
fn test_from_file() {
|
fn test_from_file() {
|
||||||
os.chdir(os.dir(os.getenv('VEXE')))
|
os.chdir(os.dir(os.getenv('VEXE')))
|
||||||
data := vmod.from_file('./v.mod') or { panic(err.msg) }
|
data := vmod.from_file('./v.mod') or { panic(err) }
|
||||||
assert data.name == 'V'
|
assert data.name == 'V'
|
||||||
assert data.description == 'The V programming language.'
|
assert data.description == 'The V programming language.'
|
||||||
//assert data.version == '0.2.1'
|
//assert data.version == '0.2.1'
|
||||||
|
|
|
@ -64,10 +64,10 @@ pub fn color_compare_strings(diff_cmd string, expected string, found string) str
|
||||||
ctime := time.sys_mono_now()
|
ctime := time.sys_mono_now()
|
||||||
e_file := os.join_path(cdir, '${ctime}.expected.txt')
|
e_file := os.join_path(cdir, '${ctime}.expected.txt')
|
||||||
f_file := os.join_path(cdir, '${ctime}.found.txt')
|
f_file := os.join_path(cdir, '${ctime}.found.txt')
|
||||||
os.write_file(e_file, expected) or { panic(err.msg) }
|
os.write_file(e_file, expected) or { panic(err) }
|
||||||
os.write_file(f_file, found) or { panic(err.msg) }
|
os.write_file(f_file, found) or { panic(err) }
|
||||||
res := color_compare_files(diff_cmd, e_file, f_file)
|
res := color_compare_files(diff_cmd, e_file, f_file)
|
||||||
os.rm(e_file) or { panic(err.msg) }
|
os.rm(e_file) or { panic(err) }
|
||||||
os.rm(f_file) or { panic(err.msg) }
|
os.rm(f_file) or { panic(err) }
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,7 +214,7 @@ pub fn launch_tool(is_verbose bool, tool_name string, args []string) {
|
||||||
if should_compile {
|
if should_compile {
|
||||||
emodules := util.external_module_dependencies_for_tool[tool_name]
|
emodules := util.external_module_dependencies_for_tool[tool_name]
|
||||||
for emodule in emodules {
|
for emodule in emodules {
|
||||||
check_module_is_installed(emodule, is_verbose) or { panic(err.msg) }
|
check_module_is_installed(emodule, is_verbose) or { panic(err) }
|
||||||
}
|
}
|
||||||
mut compilation_command := '"$vexe" '
|
mut compilation_command := '"$vexe" '
|
||||||
if tool_name in ['vself', 'vup', 'vdoctor', 'vsymlink'] {
|
if tool_name in ['vself', 'vup', 'vdoctor', 'vsymlink'] {
|
||||||
|
@ -229,7 +229,7 @@ pub fn launch_tool(is_verbose bool, tool_name string, args []string) {
|
||||||
if is_verbose {
|
if is_verbose {
|
||||||
println('Compiling $tool_name with: "$compilation_command"')
|
println('Compiling $tool_name with: "$compilation_command"')
|
||||||
}
|
}
|
||||||
tool_compilation := os.exec(compilation_command) or { panic(err.msg) }
|
tool_compilation := os.exec(compilation_command) or { panic(err) }
|
||||||
if tool_compilation.exit_code != 0 {
|
if tool_compilation.exit_code != 0 {
|
||||||
eprintln('cannot compile `$tool_source`: \n$tool_compilation.output')
|
eprintln('cannot compile `$tool_source`: \n$tool_compilation.output')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -462,7 +462,7 @@ pub fn ensure_modules_for_all_tools_are_installed(is_verbose bool) {
|
||||||
eprintln('Installing modules for tool: $tool_name ...')
|
eprintln('Installing modules for tool: $tool_name ...')
|
||||||
}
|
}
|
||||||
for emodule in tool_modules {
|
for emodule in tool_modules {
|
||||||
check_module_is_installed(emodule, is_verbose) or { panic(err.msg) }
|
check_module_is_installed(emodule, is_verbose) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -535,7 +535,7 @@ pub fn get_vtmp_folder() string {
|
||||||
}
|
}
|
||||||
vtmp = os.join_path(os.temp_dir(), 'v')
|
vtmp = os.join_path(os.temp_dir(), 'v')
|
||||||
if !os.exists(vtmp) || !os.is_dir(vtmp) {
|
if !os.exists(vtmp) || !os.is_dir(vtmp) {
|
||||||
os.mkdir_all(vtmp) or { panic(err.msg) }
|
os.mkdir_all(vtmp) or { panic(err) }
|
||||||
}
|
}
|
||||||
os.setenv('VTMP', vtmp, true)
|
os.setenv('VTMP', vtmp, true)
|
||||||
return vtmp
|
return vtmp
|
||||||
|
|
|
@ -41,15 +41,13 @@ pub fn new_cache_manager(opts []string) CacheManager {
|
||||||
}
|
}
|
||||||
dlog(@FN, 'vcache_basepath: $vcache_basepath | opts:\n $opts')
|
dlog(@FN, 'vcache_basepath: $vcache_basepath | opts:\n $opts')
|
||||||
if !os.is_dir(vcache_basepath) {
|
if !os.is_dir(vcache_basepath) {
|
||||||
os.mkdir_all(vcache_basepath) or { panic(err.msg) }
|
os.mkdir_all(vcache_basepath) or { panic(err) }
|
||||||
readme_content := 'This folder contains cached build artifacts from the V build system.
|
readme_content := 'This folder contains cached build artifacts from the V build system.
|
||||||
|You can safely delete it, if it is getting too large.
|
|You can safely delete it, if it is getting too large.
|
||||||
|It will be recreated the next time you compile something with V.
|
|It will be recreated the next time you compile something with V.
|
||||||
|You can change its location with the VCACHE environment variable.
|
|You can change its location with the VCACHE environment variable.
|
||||||
'.strip_margin()
|
'.strip_margin()
|
||||||
os.write_file(os.join_path(vcache_basepath, 'README.md'), readme_content) or {
|
os.write_file(os.join_path(vcache_basepath, 'README.md'), readme_content) or { panic(err) }
|
||||||
panic(err.msg)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
original_vopts := opts.join('|')
|
original_vopts := opts.join('|')
|
||||||
return CacheManager{
|
return CacheManager{
|
||||||
|
@ -78,7 +76,7 @@ pub fn (mut cm CacheManager) key2cpath(key string) string {
|
||||||
cprefix_folder := os.join_path(cm.basepath, prefix)
|
cprefix_folder := os.join_path(cm.basepath, prefix)
|
||||||
cpath = os.join_path(cprefix_folder, khash)
|
cpath = os.join_path(cprefix_folder, khash)
|
||||||
if !os.is_dir(cprefix_folder) {
|
if !os.is_dir(cprefix_folder) {
|
||||||
os.mkdir_all(cprefix_folder) or { panic(err.msg) }
|
os.mkdir_all(cprefix_folder) or { panic(err) }
|
||||||
os.chmod(cprefix_folder, 0o777)
|
os.chmod(cprefix_folder, 0o777)
|
||||||
}
|
}
|
||||||
dlog(@FN, 'new hk')
|
dlog(@FN, 'new hk')
|
||||||
|
|
|
@ -96,10 +96,10 @@ fn (am AssetManager) combine(asset_type string, to_file bool) string {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
if !os.is_dir(am.cache_dir) {
|
if !os.is_dir(am.cache_dir) {
|
||||||
os.mkdir(am.cache_dir) or { panic(err.msg) }
|
os.mkdir(am.cache_dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
mut file := os.create(out_file) or { panic(err.msg) }
|
mut file := os.create(out_file) or { panic(err) }
|
||||||
file.write(out.bytes()) or { panic(err.msg) }
|
file.write(out.bytes()) or { panic(err) }
|
||||||
file.close()
|
file.close()
|
||||||
return out_file
|
return out_file
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import os
|
||||||
// unique cache dirs are needed per test function.
|
// unique cache dirs are needed per test function.
|
||||||
fn clean_cache_dir(dir string) {
|
fn clean_cache_dir(dir string) {
|
||||||
if os.is_dir(dir) {
|
if os.is_dir(dir) {
|
||||||
os.rmdir_all(dir) or { panic(err.msg) }
|
os.rmdir_all(dir) or { panic(err) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,10 +21,10 @@ fn cache_dir(test_name string) string {
|
||||||
fn get_test_file_path(file string) string {
|
fn get_test_file_path(file string) string {
|
||||||
path := os.join_path(base_cache_dir(), file)
|
path := os.join_path(base_cache_dir(), file)
|
||||||
if !os.is_dir(base_cache_dir()) {
|
if !os.is_dir(base_cache_dir()) {
|
||||||
os.mkdir_all(base_cache_dir()) or { panic(err.msg) }
|
os.mkdir_all(base_cache_dir()) or { panic(err) }
|
||||||
}
|
}
|
||||||
if !os.exists(path) {
|
if !os.exists(path) {
|
||||||
os.write_file(path, get_test_file_contents(file)) or { panic(err.msg) }
|
os.write_file(path, get_test_file_contents(file)) or { panic(err) }
|
||||||
}
|
}
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,14 +102,14 @@ fn assert_common_http_headers(x http.Response) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_index() {
|
fn test_http_client_index() {
|
||||||
x := http.get('http://127.0.0.1:$sport/') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.headers['Content-Type'] == 'text/plain'
|
assert x.headers['Content-Type'] == 'text/plain'
|
||||||
assert x.text == 'Welcome to VWeb'
|
assert x.text == 'Welcome to VWeb'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_chunk_transfer() {
|
fn test_http_client_chunk_transfer() {
|
||||||
x := http.get('http://127.0.0.1:$sport/chunk') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/chunk') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.headers['Transfer-Encoding'] == 'chunked'
|
assert x.headers['Transfer-Encoding'] == 'chunked'
|
||||||
assert x.text == 'Lorem ipsum dolor sit amet, consetetur sadipscing'
|
assert x.text == 'Lorem ipsum dolor sit amet, consetetur sadipscing'
|
||||||
|
@ -122,45 +122,45 @@ fn test_http_client_404() {
|
||||||
'http://127.0.0.1:$sport/unknown',
|
'http://127.0.0.1:$sport/unknown',
|
||||||
]
|
]
|
||||||
for url in url_404_list {
|
for url in url_404_list {
|
||||||
res := http.get(url) or { panic(err.msg) }
|
res := http.get(url) or { panic(err) }
|
||||||
assert res.status_code == 404
|
assert res.status_code == 404
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_simple() {
|
fn test_http_client_simple() {
|
||||||
x := http.get('http://127.0.0.1:$sport/simple') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/simple') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.headers['Content-Type'] == 'text/plain'
|
assert x.headers['Content-Type'] == 'text/plain'
|
||||||
assert x.text == 'A simple result'
|
assert x.text == 'A simple result'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_html_page() {
|
fn test_http_client_html_page() {
|
||||||
x := http.get('http://127.0.0.1:$sport/html_page') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/html_page') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.headers['Content-Type'] == 'text/html'
|
assert x.headers['Content-Type'] == 'text/html'
|
||||||
assert x.text == '<h1>ok</h1>'
|
assert x.text == '<h1>ok</h1>'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_settings_page() {
|
fn test_http_client_settings_page() {
|
||||||
x := http.get('http://127.0.0.1:$sport/bilbo/settings') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/bilbo/settings') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.text == 'username: bilbo'
|
assert x.text == 'username: bilbo'
|
||||||
//
|
//
|
||||||
y := http.get('http://127.0.0.1:$sport/kent/settings') or { panic(err.msg) }
|
y := http.get('http://127.0.0.1:$sport/kent/settings') or { panic(err) }
|
||||||
assert_common_http_headers(y)
|
assert_common_http_headers(y)
|
||||||
assert y.text == 'username: kent'
|
assert y.text == 'username: kent'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_http_client_user_repo_settings_page() {
|
fn test_http_client_user_repo_settings_page() {
|
||||||
x := http.get('http://127.0.0.1:$sport/bilbo/gostamp/settings') or { panic(err.msg) }
|
x := http.get('http://127.0.0.1:$sport/bilbo/gostamp/settings') or { panic(err) }
|
||||||
assert_common_http_headers(x)
|
assert_common_http_headers(x)
|
||||||
assert x.text == 'username: bilbo | repository: gostamp'
|
assert x.text == 'username: bilbo | repository: gostamp'
|
||||||
//
|
//
|
||||||
y := http.get('http://127.0.0.1:$sport/kent/golang/settings') or { panic(err.msg) }
|
y := http.get('http://127.0.0.1:$sport/kent/golang/settings') or { panic(err) }
|
||||||
assert_common_http_headers(y)
|
assert_common_http_headers(y)
|
||||||
assert y.text == 'username: kent | repository: golang'
|
assert y.text == 'username: kent | repository: golang'
|
||||||
//
|
//
|
||||||
z := http.get('http://127.0.0.1:$sport/missing/golang/settings') or { panic(err.msg) }
|
z := http.get('http://127.0.0.1:$sport/missing/golang/settings') or { panic(err) }
|
||||||
assert z.status_code == 404
|
assert z.status_code == 404
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,9 +175,7 @@ fn test_http_client_json_post() {
|
||||||
age: 123
|
age: 123
|
||||||
}
|
}
|
||||||
json_for_ouser := json.encode(ouser)
|
json_for_ouser := json.encode(ouser)
|
||||||
mut x := http.post_json('http://127.0.0.1:$sport/json_echo', json_for_ouser) or {
|
mut x := http.post_json('http://127.0.0.1:$sport/json_echo', json_for_ouser) or { panic(err) }
|
||||||
panic(err.msg)
|
|
||||||
}
|
|
||||||
$if debug_net_socket_client ? {
|
$if debug_net_socket_client ? {
|
||||||
eprintln('/json_echo endpoint response: $x')
|
eprintln('/json_echo endpoint response: $x')
|
||||||
}
|
}
|
||||||
|
@ -186,7 +184,7 @@ fn test_http_client_json_post() {
|
||||||
nuser := json.decode(User, x.text) or { User{} }
|
nuser := json.decode(User, x.text) or { User{} }
|
||||||
assert '$ouser' == '$nuser'
|
assert '$ouser' == '$nuser'
|
||||||
//
|
//
|
||||||
x = http.post_json('http://127.0.0.1:$sport/json', json_for_ouser) or { panic(err.msg) }
|
x = http.post_json('http://127.0.0.1:$sport/json', json_for_ouser) or { panic(err) }
|
||||||
$if debug_net_socket_client ? {
|
$if debug_net_socket_client ? {
|
||||||
eprintln('/json endpoint response: $x')
|
eprintln('/json endpoint response: $x')
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue