tests: test cflags parsing
							parent
							
								
									3d6142064d
								
							
						
					
					
						commit
						85c5103ba3
					
				| 
						 | 
					@ -22,7 +22,7 @@ pub fn (var table Table) parse_cflag(cflg, mod string, ctimedefines []string) ?b
 | 
				
			||||||
	flag_orig := cflg.trim_space()
 | 
						flag_orig := cflg.trim_space()
 | 
				
			||||||
	var flag := flag_orig
 | 
						var flag := flag_orig
 | 
				
			||||||
	if flag == '' {
 | 
						if flag == '' {
 | 
				
			||||||
		return true
 | 
							return none
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	var fos := ''
 | 
						var fos := ''
 | 
				
			||||||
	var allowed_os_overrides := ['linux', 'darwin', 'freebsd', 'windows', 'mingw', 'solaris']
 | 
						var allowed_os_overrides := ['linux', 'darwin', 'freebsd', 'windows', 'mingw', 'solaris']
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					import table
 | 
				
			||||||
 | 
					import v.cflag
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						module_name = 'main'
 | 
				
			||||||
 | 
						cdefines    = []string
 | 
				
			||||||
 | 
						no_name     = ''
 | 
				
			||||||
 | 
						no_flag     = ''
 | 
				
			||||||
 | 
						no_os       = ''
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_parse_valid_cflags() {
 | 
				
			||||||
 | 
						t := table.new_table()
 | 
				
			||||||
 | 
						expected_flags := [
 | 
				
			||||||
 | 
							make_flag('freebsd', '-I', '/usr/local/include/freetype2'),
 | 
				
			||||||
 | 
							make_flag('linux', '-l', 'glfw'),
 | 
				
			||||||
 | 
							make_flag('mingw', no_name, '-mwindows'),
 | 
				
			||||||
 | 
							make_flag('solaris', '-L', '/opt/local/lib'),
 | 
				
			||||||
 | 
							make_flag('darwin', '-framework', 'Cocoa'),
 | 
				
			||||||
 | 
							make_flag('windows', '-l', 'gdi32'),
 | 
				
			||||||
 | 
							make_flag(no_os, '-l', 'mysqlclient'),
 | 
				
			||||||
 | 
							make_flag(no_os, no_name, '-test'),
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
						parse_valid_flag(t, '-lmysqlclient')
 | 
				
			||||||
 | 
						parse_valid_flag(t, '-test')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'darwin -framework Cocoa')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'freebsd -I/usr/local/include/freetype2')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'linux -lglfw')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'mingw -mwindows')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'solaris -L/opt/local/lib')
 | 
				
			||||||
 | 
						parse_valid_flag(t, 'windows -lgdi32')
 | 
				
			||||||
 | 
						assert t.cflags.len == expected_flags.len
 | 
				
			||||||
 | 
						for f in expected_flags {
 | 
				
			||||||
 | 
							assert t.has_cflag(f)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_parse_invalid_cflags() {
 | 
				
			||||||
 | 
						t := table.new_table()
 | 
				
			||||||
 | 
						// -I, -L, -l must have values
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'windows -l')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, '-I')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, '-L')
 | 
				
			||||||
 | 
						// OS/compiler name only is not allowed
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'darwin')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'freebsd')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'linux')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'mingw')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'solaris')
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, 'windows')
 | 
				
			||||||
 | 
						// Empty flag is not allowed
 | 
				
			||||||
 | 
						assert_parse_invalid_flag(t, no_flag)
 | 
				
			||||||
 | 
						assert t.cflags.len == 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn parse_valid_flag(t &table.Table, flag string) {
 | 
				
			||||||
 | 
						t.parse_cflag(flag, module_name, cdefines) or {
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn assert_parse_invalid_flag(t &table.Table, flag string) {
 | 
				
			||||||
 | 
						t.parse_cflag(flag, module_name, cdefines) or {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						assert false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn make_flag(os, name, value string) cflag.CFlag {
 | 
				
			||||||
 | 
						return cflag.CFlag{
 | 
				
			||||||
 | 
							mod: module_name
 | 
				
			||||||
 | 
							os: os
 | 
				
			||||||
 | 
							name: name
 | 
				
			||||||
 | 
							value: value
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue