v2 / vlib / v / tests / vmod_parser_test.v
51 lines · 48 sloc · 1.26 KB · 9d0a5942acc0f75c500efb5d9cff98ebeb2630b4
Raw
1import v.vmod
2import os
3
4fn test_from_file() {
5 os.chdir(os.dir(os.getenv('VEXE'))) or {}
6 data := vmod.from_file('./v.mod') or { panic(err) }
7 assert data.name == 'V'
8 assert data.description == 'The V programming language.'
9 // assert data.version == '0.2.1'
10 assert data.version.contains('.')
11 assert data.version.starts_with('0.')
12 assert data.dependencies.len == 0
13}
14
15fn test_decode() {
16 content := "
17 Module {
18 name: 'foobar',
19 description: 'Just a sample module'
20 version: '0.2.0',
21 repo_url: 'https://gitlab.com',
22 author: 'Fooz Bar',
23 license: 'GPL-2.0',
24 dependencies: ['hello'],
25 test: 'foo'
26 }
27 "
28 data := vmod.decode(content) or {
29 println(err)
30 exit(1)
31 }
32 assert data.name == 'foobar'
33 assert data.version == '0.2.0'
34 assert data.description == 'Just a sample module'
35 assert data.repo_url == 'https://gitlab.com'
36 assert data.author == 'Fooz Bar'
37 assert data.license == 'GPL-2.0'
38 assert data.dependencies[0] == 'hello'
39 assert data.unknown['test'][0] == 'foo'
40 vmod.decode('') or {
41 assert err.msg() == 'vmod: no content.'
42 exit(0)
43 }
44}
45
46fn test_decode_with_comptime_vmod_file() {
47 mod := vmod.decode(@VMOD_FILE) or { panic('Error decoding v.mod') }
48 assert mod.name == 'V'
49 assert mod.repo_url == 'https://github.com/vlang/v'
50 assert mod.license == 'MIT'
51}
52