| 1 | import os |
| 2 | import time |
| 3 | |
| 4 | const vexe = @VEXE |
| 5 | const vroot = os.dir(vexe) |
| 6 | const tdir = os.join_path(os.vtmp_dir(), 'vwatch_test_24571') |
| 7 | const tsource_dir = os.join_path(tdir, 'src') |
| 8 | const toutput_dir = os.join_path(tdir, 'out') |
| 9 | |
| 10 | fn testsuite_begin() { |
| 11 | os.rmdir_all(tdir) or {} |
| 12 | os.mkdir_all(tsource_dir)! |
| 13 | os.mkdir_all(toutput_dir)! |
| 14 | } |
| 15 | |
| 16 | fn testsuite_end() { |
| 17 | os.rmdir_all(tdir) or {} |
| 18 | } |
| 19 | |
| 20 | fn test_watch_keeps_backend_flag_intact() { |
| 21 | source_path := os.join_path(tsource_dir, 'hello.v') |
| 22 | output_path := os.join_path(toutput_dir, 'hello.js') |
| 23 | os.write_file(source_path, "fn main() {\n\tprintln('Hello world')\n}\n")! |
| 24 | |
| 25 | mut process := os.new_process(vexe) |
| 26 | process.set_work_folder(vroot) |
| 27 | process.set_redirect_stdio() |
| 28 | process.use_pgroup = true |
| 29 | process.set_args(['watch', '-backend', 'js_browser', '-output', output_path, source_path]) |
| 30 | process.run() |
| 31 | |
| 32 | for _ in 0 .. 300 { |
| 33 | if os.exists(output_path) || !process.is_alive() { |
| 34 | break |
| 35 | } |
| 36 | time.sleep(100 * time.millisecond) |
| 37 | } |
| 38 | if process.is_alive() { |
| 39 | process.signal_pgkill() |
| 40 | } |
| 41 | process.wait() |
| 42 | output := process.stdout_slurp() + process.stderr_slurp() |
| 43 | process.close() |
| 44 | |
| 45 | assert os.exists(output_path), output |
| 46 | assert output.contains(' -backend js_browser '), output |
| 47 | assert !output.contains('-baend'), output |
| 48 | assert !output.contains('Unknown argument `-baend`'), output |
| 49 | } |
| 50 | |