v2 / cmd / tools / vdoc / vdoc_run_examples_test.v
56 lines · 50 sloc · 2.18 KB · 6538b624e135684960987af58636a6a336166e67
Raw
1import os
2
3const vexe_path = @VEXE
4const vexe = os.quoted_path(vexe_path)
5const vroot = os.dir(vexe_path)
6
7fn testsuite_begin() {
8 os.setenv('VCOLORS', 'never', true)
9 os.chdir(vroot)!
10}
11
12fn test_check_examples_good() {
13 cmd := '${vexe} doc -comments -check-examples cmd/tools/vdoc/testdata/run_examples_good/main.v'
14 println('${@METHOD:30} running ${cmd} ...')
15 res := os.execute(cmd)
16 assert res.exit_code == 0
17 assert res.output.contains('module main'), res.output
18 assert res.output.contains('fn abc()'), res.output
19 assert res.output.contains("abc just prints 'xyz'"), res.output
20 assert res.output.contains('and should succeed'), res.output
21 assert res.output.contains('Example: assert 5 * 5 == 25'), res.output
22}
23
24fn test_check_examples_bad() {
25 cmd := '${vexe} doc -comments -check-examples cmd/tools/vdoc/testdata/run_examples_bad/main.v'
26 println('${@METHOD:30} running ${cmd} ...')
27 res := os.execute(cmd)
28 assert res.exit_code == 0
29 assert res.output.contains('module main'), res.output
30 assert res.output.contains('Example: assert 5 * 5 == 77'), res.output
31}
32
33fn test_run_examples_good() {
34 cmd := '${vexe} doc -comments -unsafe-run-examples cmd/tools/vdoc/testdata/run_examples_good/main.v'
35 println('${@METHOD:30} running ${cmd} ...')
36 res := os.execute(cmd)
37 assert res.exit_code == 0
38 assert res.output.contains('module main'), res.output
39 assert res.output.contains('fn abc()'), res.output
40 assert res.output.contains("abc just prints 'xyz'"), res.output
41 assert res.output.contains('and should succeed'), res.output
42 assert res.output.contains('Example: assert 5 * 5 == 25'), res.output
43}
44
45fn test_run_examples_bad() {
46 cmd := '${vexe} doc -comments -unsafe-run-examples cmd/tools/vdoc/testdata/run_examples_bad/main.v'
47 println('${@METHOD:30} running ${cmd} ...')
48 res := os.execute(cmd)
49 assert res.exit_code != 0
50 assert res.output.contains('error in documentation example'), res.output
51 assert res.output.contains(' left value: 5 * 5 = 25'), res.output
52 assert res.output.contains('right value: 77'), res.output
53 assert res.output.contains('V panic: Assertion failed...'), res.output
54 assert res.output.contains('module main'), res.output
55 assert res.output.contains('Example: assert 5 * 5 == 77'), res.output
56}
57