Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
testing: fix
v -stats test folder/
not failing for a _test.v that f…
…ails (#21483)
- Loading branch information
Showing
5 changed files
with
108 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
import os | ||
import encoding.txtar | ||
|
||
const vexe = @VEXE | ||
const vroot = os.dir(vexe) | ||
const tpath = os.join_path(os.vtmp_dir(), 'vtest_folder') | ||
const tpath_passing = os.join_path(tpath, 'passing') | ||
const tpath_partial = os.join_path(tpath, 'partial') | ||
const mytest_exe = os.join_path(tpath, 'mytest.exe') | ||
|
||
fn testsuite_end() { | ||
os.rmdir_all(tpath) or {} | ||
} | ||
|
||
fn testsuite_begin() { | ||
os.setenv('VFLAGS', '', true) | ||
os.setenv('VCOLORS', 'never', true) | ||
os.setenv('VJOBS', '2', true) | ||
os.rmdir_all(tpath) or {} | ||
os.mkdir_all(tpath)! | ||
|
||
txtar.parse('Some known test files to make sure `v test` and `v -stats test` work: | ||
-- passing/1_test.v -- | ||
fn test_abc() { assert true; assert true; assert true } | ||
fn test_def() { assert 2 * 2 == 4 } | ||
-- passing/2_test.v -- | ||
fn test_xyz() { assert 1 == 2 - 1 } | ||
fn test_abc() { assert 10 == 2 * 5 } | ||
-- partial/passing_test.v -- | ||
fn test_xyz() { assert 3 == 10 - 7 } | ||
fn test_def() { assert 10 == 100 / 10 } | ||
-- partial/failing_test.v -- | ||
fn test_xyz() { assert 5 == 7, "oh no" } | ||
').unpack_to(tpath)! | ||
assert os.exists(os.join_path(tpath, 'passing/1_test.v')) | ||
assert os.exists(os.join_path(tpath, 'passing/2_test.v')) | ||
assert os.exists(os.join_path(tpath, 'partial/passing_test.v')) | ||
assert os.exists(os.join_path(tpath, 'partial/failing_test.v')) | ||
} | ||
|
||
fn test_vtest_executable_compiles() { | ||
os.chdir(vroot)! | ||
os.execute_or_exit('${os.quoted_path(vexe)} -o ${tpath}/mytest.exe cmd/tools/vtest.v') | ||
assert os.exists(mytest_exe), 'executable file: `${mytest_exe}` should exist' | ||
} | ||
|
||
fn test_with_several_test_files() { | ||
res := os.execute_or_exit('${os.quoted_path(mytest_exe)} test ${os.quoted_path(tpath_passing)}') | ||
assert !res.output.contains('1 assert'), res.output | ||
assert !res.output.contains('3 asserts'), res.output | ||
assert res.output.contains('2 passed, 2 total'), res.output | ||
assert res.output.count('OK') == 2, res.output | ||
assert res.output.contains('on 2 parallel jobs'), res.output | ||
} | ||
|
||
fn test_with_stats_and_several_test_files() { | ||
// There should be more OKs here, since the output will have the inner OKs for each individual test fn: | ||
res := os.execute_or_exit('${os.quoted_path(mytest_exe)} -stats test ${os.quoted_path(tpath_passing)}') | ||
assert res.output.contains('1 assert'), res.output | ||
assert res.output.contains('3 asserts'), res.output | ||
assert res.output.contains('2 passed, 2 total'), res.output | ||
assert res.output.count('OK') == 6, res.output | ||
} | ||
|
||
fn test_partial_failure() { | ||
res := os.execute('${os.quoted_path(mytest_exe)} test ${os.quoted_path(tpath_partial)}') | ||
assert res.exit_code == 1 | ||
assert res.output.contains('assert 5 == 7'), res.output | ||
assert res.output.contains(' 1 failed, 1 passed, 2 total'), res.output | ||
assert res.output.contains('Failed command'), res.output | ||
} | ||
|
||
fn test_with_stats_and_partial_failure() { | ||
res := os.execute('${os.quoted_path(mytest_exe)} -stats test ${os.quoted_path(tpath_partial)}') | ||
assert res.exit_code == 1 | ||
assert res.output.contains('assert 5 == 7'), res.output | ||
assert res.output.contains(' 1 failed, 1 passed, 2 total'), res.output | ||
assert res.output.contains('Failed command'), res.output | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters