v2 / vlib / v / util / vflags / vflags_test.v
47 lines · 41 sloc · 1.55 KB · ec1f95ac5024aa944e7887de927492271457bf95
Raw
1import os
2import v.util.vflags
3
4fn test_tokenize_to_args() {
5 assert vflags.tokenize_to_args('-cc gcc -ldflags ""') == ['-cc', 'gcc', '-ldflags', '']
6 assert vflags.tokenize_to_args('abc def xyz') == ['abc', 'def', 'xyz']
7 assert vflags.tokenize_to_args('abc -def --xyz') == ['abc', '-def', '--xyz']
8 assert vflags.tokenize_to_args('abc -def --xyz') == ['abc', '-def', '--xyz']
9 assert vflags.tokenize_to_args('abc "a b" --xyz') == ['abc', 'a b', '--xyz'], 'Using double quote should work'
10 assert vflags.tokenize_to_args("abc 'a b' --xyz") == ['abc', 'a b', '--xyz'], 'Using single quote instead of a double " should work too'
11 assert vflags.tokenize_to_args('abc "a quote: \\" . The end." --xyz') == [
12 'abc',
13 'a quote: " . The end.',
14 '--xyz',
15 ], 'escaping " should work'
16}
17
18fn test_join_env_vflags_and_os_args() {
19 os.unsetenv('VFLAGS')
20 os.unsetenv('VOSARGS')
21
22 start := vflags.join_env_vflags_and_os_args()
23 // dump(start)
24 assert start.len > 0
25
26 os.setenv('VFLAGS', r'-cc gcc -ldflags ""', true)
27 x := vflags.join_env_vflags_and_os_args()
28 // dump(x)
29 assert x.len > 0
30 assert 'gcc' in x
31 assert '-cc' in x
32 assert '-ldflags' in x
33 assert x.last() == ''
34
35 os.setenv('VFLAGS', r'-cc gcc -ldflags "-lpthread -lm"', true)
36 y := vflags.join_env_vflags_and_os_args()
37 // dump(y)
38 assert '-ldflags' in y
39 assert y.last() == '-lpthread -lm'
40
41 os.setenv('VFLAGS', r'-cc gcc -ldflags "-lpthread -lm" -showcc', true)
42 z := vflags.join_env_vflags_and_os_args()
43 // dump(z)
44 assert '-ldflags' in z
45 assert z#[-2..-1][0] == '-lpthread -lm'
46 assert z.last() == '-showcc'
47}
48