flag: run vfmt over vlib/flag, add it to vtest-cleancode.v
							parent
							
								
									5cd2dffafb
								
							
						
					
					
						commit
						9eb6c4ef87
					
				|  | @ -21,6 +21,7 @@ const ( | |||
| 		'cmd/tools/vdoc.v', | ||||
| 		'cmd/v/v.v', | ||||
| 		'vlib/builtin/array.v', | ||||
| 		'vlib/builtin/array_test.v', | ||||
| 		'vlib/builtin/map.v', | ||||
| 		'vlib/math/bits/bits.v', | ||||
| 		'vlib/time/time.v', | ||||
|  | @ -56,12 +57,13 @@ const ( | |||
| 		'vlib/v/util/', | ||||
| 		'vlib/v/vet/', | ||||
| 		'vlib/v/vmod/', | ||||
| 		'vlib/cli/', | ||||
| 		'vlib/flag/', | ||||
| 		'vlib/gg/gg.v', | ||||
| 		'vlib/os/', | ||||
| 		'vlib/semver/', | ||||
| 		'vlib/strings/', | ||||
| 		'vlib/time/', | ||||
| 		'vlib/builtin/array_test.v', | ||||
| 	] | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
|  | @ -187,9 +187,7 @@ fn (mut fs FlagParser) parse_bool_value(longhand string, shorthand byte) ?string | |||
| // In the situation that the flag was not provided, it returns null.
 | ||||
| pub fn (mut fs FlagParser) bool_opt(name string, abbr byte, usage string) ?bool { | ||||
| 	fs.add_flag(name, abbr, usage, '<bool>') | ||||
| 	parsed := fs.parse_bool_value(name, abbr) or { | ||||
| 		return error("parameter '$name' not provided") | ||||
| 	} | ||||
| 	parsed := fs.parse_bool_value(name, abbr) or { return error("parameter '$name' not provided") } | ||||
| 	return parsed == 'true' | ||||
| } | ||||
| 
 | ||||
|  | @ -201,9 +199,7 @@ pub fn (mut fs FlagParser) bool_opt(name string, abbr byte, usage string) ?bool | |||
| // version with abbr
 | ||||
| // TODO error handling for invalid string to bool conversion
 | ||||
| pub fn (mut fs FlagParser) bool(name string, abbr byte, bdefault bool, usage string) bool { | ||||
| 	value := fs.bool_opt(name, abbr, usage) or { | ||||
| 		return bdefault | ||||
| 	} | ||||
| 	value := fs.bool_opt(name, abbr, usage) or { return bdefault } | ||||
| 	return value | ||||
| } | ||||
| 
 | ||||
|  | @ -238,9 +234,7 @@ pub fn (mut fs FlagParser) int_opt(name string, abbr byte, usage string) ?int { | |||
| // version with abbr
 | ||||
| // TODO error handling for invalid string to int conversion
 | ||||
| pub fn (mut fs FlagParser) int(name string, abbr byte, idefault int, usage string) int { | ||||
| 	value := fs.int_opt(name, abbr, usage) or { | ||||
| 		return idefault | ||||
| 	} | ||||
| 	value := fs.int_opt(name, abbr, usage) or { return idefault } | ||||
| 	return value | ||||
| } | ||||
| 
 | ||||
|  | @ -275,9 +269,7 @@ pub fn (mut fs FlagParser) float_opt(name string, abbr byte, usage string) ?f64 | |||
| // version with abbr
 | ||||
| // TODO error handling for invalid string to float conversion
 | ||||
| pub fn (mut fs FlagParser) float(name string, abbr byte, fdefault f64, usage string) f64 { | ||||
| 	value := fs.float_opt(name, abbr, usage) or { | ||||
| 		return fdefault | ||||
| 	} | ||||
| 	value := fs.float_opt(name, abbr, usage) or { return fdefault } | ||||
| 	return value | ||||
| } | ||||
| 
 | ||||
|  | @ -306,9 +298,7 @@ pub fn (mut fs FlagParser) string_opt(name string, abbr byte, usage string) ?str | |||
| // the default value is returned
 | ||||
| // version with abbr
 | ||||
| pub fn (mut fs FlagParser) string(name string, abbr byte, sdefault string, usage string) string { | ||||
| 	value := fs.string_opt(name, abbr, usage) or { | ||||
| 		return sdefault | ||||
| 	} | ||||
| 	value := fs.string_opt(name, abbr, usage) or { return sdefault } | ||||
| 	return value | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,101 +2,101 @@ import flag | |||
| 
 | ||||
| fn test_if_flag_not_given_return_default_values() { | ||||
| 	mut fp := flag.new_flag_parser([]) | ||||
| 
 | ||||
| 	assert false == fp.bool('a_bool', 0, false, '') | ||||
| 	&& 42 == fp.int('an_int', 0, 42, '') | ||||
| 	&& 1.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	&& 'stuff' == fp.string('a_string', 0, 'stuff', '') | ||||
| 	assert 42 == fp.int('an_int', 0, 42, '') | ||||
| 	assert 1.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	assert 'stuff' == fp.string('a_string', 0, 'stuff', '') | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| fn test_could_define_application_name_and_version() { | ||||
| 	mut fp := flag.new_flag_parser([]) | ||||
| 	fp.application('test app') | ||||
| 	fp.version('0.0.42') | ||||
| 	fp.description('some text') | ||||
| 
 | ||||
| 	assert fp.application_name == 'test app' | ||||
| 	&& fp.application_version == '0.0.42' | ||||
| 	&& fp.application_description == 'some text' | ||||
| 	assert fp.application_version == '0.0.42' | ||||
| 	assert fp.application_description == 'some text' | ||||
| } | ||||
| 
 | ||||
| fn test_bool_flags_do_not_need_an_value() { | ||||
| 	mut fp := flag.new_flag_parser(['--a_bool']) | ||||
| 
 | ||||
| 	assert true == fp.bool('a_bool', 0, false, '') | ||||
| } | ||||
| 
 | ||||
| fn test_flags_could_be_defined_with_eq() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'--an_int=42', | ||||
| 	'--a_float=2.0', | ||||
| 	'--bool_without', | ||||
| 	'--a_string=stuff', | ||||
| 	'--a_bool=true']) | ||||
| 
 | ||||
| 		'--an_int=42', | ||||
| 		'--a_float=2.0', | ||||
| 		'--bool_without', | ||||
| 		'--a_string=stuff', | ||||
| 		'--a_bool=true', | ||||
| 	]) | ||||
| 	assert 42 == fp.int('an_int', 0, 0o666, '') | ||||
| 	&& true == fp.bool('a_bool', 0, false, '') | ||||
| 	&& true == fp.bool('bool_without', 0, false, '') | ||||
| 	&& 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	&& 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| 	assert true == fp.bool('a_bool', 0, false, '') | ||||
| 	assert true == fp.bool('bool_without', 0, false, '') | ||||
| 	assert 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	assert 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| } | ||||
| 
 | ||||
| fn test_values_could_be_defined_without_eq() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'--an_int', '42', | ||||
| 	'--a_float', '2.0', | ||||
| 	'--bool_without', | ||||
| 	'--a_string', 'stuff', | ||||
| 	'--a_bool', 'true']) | ||||
| 
 | ||||
| 		'--an_int', | ||||
| 		'42', | ||||
| 		'--a_float', | ||||
| 		'2.0', | ||||
| 		'--bool_without', | ||||
| 		'--a_string', | ||||
| 		'stuff', | ||||
| 		'--a_bool', | ||||
| 		'true', | ||||
| 	]) | ||||
| 	assert 42 == fp.int('an_int', 0, 0o666, '') | ||||
| 	&& true == fp.bool('a_bool', 0, false, '') | ||||
| 	&& true == fp.bool('bool_without', 0, false, '') | ||||
| 	&& 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	&& 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| 	assert true == fp.bool('a_bool', 0, false, '') | ||||
| 	assert true == fp.bool('bool_without', 0, false, '') | ||||
| 	assert 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	assert 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| } | ||||
| 
 | ||||
| fn test_values_could_be_defined_mixed() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'--an_int', '42', | ||||
| 	'--a_float=2.0', | ||||
| 	'--bool_without', | ||||
| 	'--a_string', 'stuff', | ||||
| 	'--a_bool=true']) | ||||
| 
 | ||||
| 		'--an_int', | ||||
| 		'42', | ||||
| 		'--a_float=2.0', | ||||
| 		'--bool_without', | ||||
| 		'--a_string', | ||||
| 		'stuff', | ||||
| 		'--a_bool=true', | ||||
| 	]) | ||||
| 	assert 42 == fp.int('an_int', 0, 0o666, '') | ||||
| 	&& true == fp.bool('a_bool', 0, false, '') | ||||
| 	&& true == fp.bool('bool_without', 0, false, '') | ||||
| 	&& 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	&& 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| 	assert true == fp.bool('a_bool', 0, false, '') | ||||
| 	assert true == fp.bool('bool_without', 0, false, '') | ||||
| 	assert 2.0 == fp.float('a_float', 0, 1.0, '') | ||||
| 	assert 'stuff' == fp.string('a_string', 0, 'not_stuff', '') | ||||
| } | ||||
| 
 | ||||
| fn test_beaware_for_argument_names_with_same_prefix() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'--short', '5', | ||||
| 	'--shorter=7' | ||||
| 		'--short', | ||||
| 		'5', | ||||
| 		'--shorter=7', | ||||
| 	]) | ||||
| 
 | ||||
| 	assert 5 == fp.int('short', 0, 0o666, '') | ||||
| 	&& 7 == fp.int('shorter', 0, 0o666, '') | ||||
| 	assert 7 == fp.int('shorter', 0, 0o666, '') | ||||
| } | ||||
| 
 | ||||
| fn test_beaware_for_argument_names_with_same_prefix_inverse() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'--shorter=7', | ||||
| 	'--short', '5', | ||||
| 		'--shorter=7', | ||||
| 		'--short', | ||||
| 		'5', | ||||
| 	]) | ||||
| 
 | ||||
| 	assert 5 == fp.int('short', 0, 0o666, '') | ||||
| 	&& 7 == fp.int('shorter', 0, 0o666, '') | ||||
| 	assert 7 == fp.int('shorter', 0, 0o666, '') | ||||
| } | ||||
| 
 | ||||
| fn test_allow_to_skip_executable_path() { | ||||
| 	mut fp := flag.new_flag_parser(['./path/to/execuable']) | ||||
| 
 | ||||
| 	fp.skip_executable() | ||||
| 
 | ||||
| 	args := fp.finalize() or { | ||||
| 		assert false | ||||
| 		return | ||||
|  | @ -106,37 +106,38 @@ fn test_allow_to_skip_executable_path() { | |||
| 
 | ||||
| fn test_none_flag_arguments_are_allowed() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 	'file1', '--an_int=2', 'file2', 'file3', '--bool_without', 'file4', '--outfile', 'outfile']) | ||||
| 
 | ||||
| 		'file1', | ||||
| 		'--an_int=2', | ||||
| 		'file2', | ||||
| 		'file3', | ||||
| 		'--bool_without', | ||||
| 		'file4', | ||||
| 		'--outfile', | ||||
| 		'outfile', | ||||
| 	]) | ||||
| 	assert 2 == fp.int('an_int', 0, 0o666, '') | ||||
| 	&& 'outfile' == fp.string('outfile', 0, 'bad', '') | ||||
| 	&& true == fp.bool('bool_without', 0, false, '') | ||||
| 	assert 'outfile' == fp.string('outfile', 0, 'bad', '') | ||||
| 	assert true == fp.bool('bool_without', 0, false, '') | ||||
| } | ||||
| 
 | ||||
| fn test_finalize_returns_none_flag_arguments_ordered() { | ||||
| 	mut fp := flag.new_flag_parser(['d', 'b', 'x', 'a', '--outfile', 'outfile']) | ||||
| 	fp.string('outfile', 0, 'bad', '') | ||||
| 
 | ||||
| 	finalized := fp.finalize() or { | ||||
| 		assert false | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	expected := ['d', 'b', 'x', 'a'] | ||||
| 	mut all_as_expected := true | ||||
| 	for i, v in finalized { | ||||
| 		all_as_expected = all_as_expected && v == expected[i] | ||||
| 		assert v == expected[i] | ||||
| 	} | ||||
| 	assert all_as_expected | ||||
| } | ||||
| 
 | ||||
| fn test_finalize_returns_error_for_unknown_flags() { | ||||
| 	mut fp := flag.new_flag_parser(['--known', '--unknown']) | ||||
| 
 | ||||
| 	fp.bool('known', 0, false, '') | ||||
| 
 | ||||
| 	finalized := fp.finalize() or { | ||||
| 		assert err == 'Unknown argument \'unknown\'' | ||||
| 		assert err == "Unknown argument \'unknown\'" | ||||
| 		return | ||||
| 	} | ||||
| 	assert finalized.len < 0 // expect error to be returned
 | ||||
|  | @ -148,27 +149,19 @@ fn test_allow_to_build_usage_message() { | |||
| 	fp.application('flag_tool') | ||||
| 	fp.version('v0.0.0') | ||||
| 	fp.description('some short information about this tool') | ||||
| 
 | ||||
| 	fp.int('an_int', 0, 0o666, 'some int to define') | ||||
| 	fp.bool('a_bool', 0, false, 'some bool to define') | ||||
| 	fp.bool('bool_without_but_really_big', 0, false, 'this should appear on the next line') | ||||
| 	fp.float('a_float', 0, 1.0, 'some float as well') | ||||
| 	fp.string('a_string', 0, 'not_stuff', 'your credit card number') | ||||
| 
 | ||||
| 	usage := fp.usage() | ||||
| 	mut all_strings_found := true | ||||
| 	for s in ['flag_tool', 'v0.0.0', | ||||
| 	'an_int <int>', 'a_bool', 'bool_without', 'a_float <float>', 'a_string <string>', | ||||
| 	'some int to define', | ||||
| 	'some bool to define', | ||||
| 	'this should appear on the next line', | ||||
| 	'some float as well', | ||||
| 	'your credit card number', | ||||
| 	'The arguments should be at least 1 and at most 4 in number.', | ||||
| 	'Usage', 'Options:', 'Description:', | ||||
| 	'some short information about this tool'] { | ||||
| 	for s in ['flag_tool', 'v0.0.0', 'an_int <int>', 'a_bool', 'bool_without', 'a_float <float>', | ||||
| 		'a_string <string>', 'some int to define', 'some bool to define', 'this should appear on the next line', | ||||
| 		'some float as well', 'your credit card number', 'The arguments should be at least 1 and at most 4 in number.', | ||||
| 		'Usage', 'Options:', 'Description:', 'some short information about this tool'] { | ||||
| 		if !usage.contains(s) { | ||||
| 			eprintln(' missing \'$s\' in usage message') | ||||
| 			eprintln(" missing '$s' in usage message") | ||||
| 			all_strings_found = false | ||||
| 		} | ||||
| 	} | ||||
|  | @ -179,9 +172,7 @@ fn test_if_no_description_given_usage_message_does_not_contain_descpription() { | |||
| 	mut fp := flag.new_flag_parser([]) | ||||
| 	fp.application('flag_tool') | ||||
| 	fp.version('v0.0.0') | ||||
| 
 | ||||
| 	fp.bool('a_bool', 0, false, '') | ||||
| 
 | ||||
| 	assert !fp.usage().contains('Description:') | ||||
| } | ||||
| 
 | ||||
|  | @ -189,7 +180,6 @@ fn test_if_no_options_given_usage_message_does_not_contain_options() { | |||
| 	mut fp := flag.new_flag_parser([]) | ||||
| 	fp.application('flag_tool') | ||||
| 	fp.version('v0.0.0') | ||||
| 
 | ||||
| 	assert !fp.usage().contains('Options:') | ||||
| } | ||||
| 
 | ||||
|  | @ -200,7 +190,9 @@ fn test_free_args_could_be_limited() { | |||
| 		assert false | ||||
| 		return | ||||
| 	} | ||||
| 	assert args[0] == 'a' && args[1] == 'b' && args[2] == 'c' | ||||
| 	assert args[0] == 'a' | ||||
| 	assert args[1] == 'b' | ||||
| 	assert args[2] == 'c' | ||||
| } | ||||
| 
 | ||||
| fn test_error_for_to_few_free_args() { | ||||
|  | @ -235,16 +227,19 @@ fn test_could_expect_no_free_args() { | |||
| 
 | ||||
| fn test_allow_abreviations() { | ||||
| 	mut fp := flag.new_flag_parser(['-v', '-o', 'some_file', '-i', '42', '-f', '2.0']) | ||||
| 
 | ||||
| 	v := fp.bool('version', `v`, false, '') | ||||
| 	o := fp.string('output', `o`, 'empty', '') | ||||
| 	i := fp.int('count', `i`, 0, '') | ||||
| 	f := fp.float('value', `f`, 0.0, '') | ||||
| 
 | ||||
| 	assert v && o == 'some_file' && i == 42 && f == 2.0 | ||||
| 
 | ||||
| 	assert v == true | ||||
| 	assert o == 'some_file' | ||||
| 	assert i == 42 | ||||
| 	assert f == 2.0 | ||||
| 	u := fp.usage() | ||||
| 	assert u.contains(' -v') && u.contains(' -o') && u.contains(' -i') && u.contains(' -f') | ||||
| 	assert u.contains(' -v') | ||||
| 	assert u.contains(' -o') | ||||
| 	assert u.contains(' -i') | ||||
| 	assert u.contains(' -f') | ||||
| 	assert u.contains('  -o, --output <string>') | ||||
| 	assert u.contains('  -i, --count <int>') | ||||
| 	assert u.contains('  -f, --value <float>') | ||||
|  | @ -253,15 +248,11 @@ fn test_allow_abreviations() { | |||
| fn test_allow_kebab_options() { | ||||
| 	default_value := 'this_is_the_default_value_of_long_option' | ||||
| 	long_option_value := 'this_is_a_long_option_value_as_argument' | ||||
| 
 | ||||
| 	mut fp := flag.new_flag_parser(['--my-long-flag', 'true', '--my-long-option', long_option_value ]) | ||||
| 
 | ||||
| 	mut fp := flag.new_flag_parser(['--my-long-flag', 'true', '--my-long-option', long_option_value]) | ||||
| 	my_flag := fp.bool('my-long-flag', 0, false, 'flag with long-kebab-name') | ||||
| 	my_option := fp.string('my-long-option', 0, default_value, 'string with long-kebab-name') | ||||
| 
 | ||||
| 	assert my_flag == true | ||||
| 	assert my_option == long_option_value | ||||
| 
 | ||||
| 	u := fp.usage() | ||||
| 	assert u.contains(' --my-long-flag') | ||||
| 	assert u.contains(' --my-long-option') | ||||
|  | @ -273,7 +264,7 @@ fn test_not_provided_option_is_not_returned() { | |||
| 		fp.int_opt('some-flag', `a`, '') or { | ||||
| 			fp.float_opt('some-flag', `a`, '') or { | ||||
| 				fp.string_opt('some-flag', `a`, '') or { | ||||
| 					//Everything should not return
 | ||||
| 					// Everything should not return
 | ||||
| 					return | ||||
| 				} | ||||
| 				return | ||||
|  | @ -282,54 +273,71 @@ fn test_not_provided_option_is_not_returned() { | |||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	//If we reach here, one of them returned a value.
 | ||||
| 	// If we reach here, one of them returned a value.
 | ||||
| 	assert false | ||||
| } | ||||
| 
 | ||||
| fn test_provided_option_is_returned() { | ||||
| 	mut fp := flag.new_flag_parser(['-a', '-b', '3', '-c', 'hello', '-d', '3.14']) | ||||
| 	a := fp.bool_opt('some-flag', `a`, '') or { | ||||
| 		panic('bool_opt did not return a bool') | ||||
| 	} | ||||
| 	b := fp.int_opt('some-flag', `b`, '') or { | ||||
| 		panic('int_opt did not return an int') | ||||
| 	} | ||||
| 	c := fp.string_opt('some-flag', `c`, '') or { | ||||
| 		panic('string_opt did not return a string') | ||||
| 	} | ||||
| 	d := fp.float_opt('some-flag', `d`, '') or { | ||||
| 		panic('float_opt did not return a float') | ||||
| 	} | ||||
| 	assert a && b == 3 && c == 'hello' && d == 3.14 | ||||
| 	a := fp.bool_opt('some-flag', `a`, '') or { panic('bool_opt did not return a bool') } | ||||
| 	b := fp.int_opt('some-flag', `b`, '') or { panic('int_opt did not return an int') } | ||||
| 	c := fp.string_opt('some-flag', `c`, '') or { panic('string_opt did not return a string') } | ||||
| 	d := fp.float_opt('some-flag', `d`, '') or { panic('float_opt did not return a float') } | ||||
| 	assert true == a | ||||
| 	assert b == 3 | ||||
| 	assert c == 'hello' | ||||
| 	assert d == 3.14 | ||||
| } | ||||
| 
 | ||||
| fn test_multiple_arguments() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 		'-a', '2', '-a', '3', '-a', '5', | ||||
| 		'-b', 'a', '-b', 'c', '-b', 'b', | ||||
| 		'-c', '1.23', '-c', '2.34', '-c', '3.45' | ||||
| 		'-a', | ||||
| 		'2', | ||||
| 		'-a', | ||||
| 		'3', | ||||
| 		'-a', | ||||
| 		'5', | ||||
| 		'-b', | ||||
| 		'a', | ||||
| 		'-b', | ||||
| 		'c', | ||||
| 		'-b', | ||||
| 		'b', | ||||
| 		'-c', | ||||
| 		'1.23', | ||||
| 		'-c', | ||||
| 		'2.34', | ||||
| 		'-c', | ||||
| 		'3.45', | ||||
| 	]) | ||||
| 
 | ||||
| 	//TODO Move to array comparison once it's implemented
 | ||||
| 	//assert fp.int_multi('some-flag', `a`, '') == [2, 3, 5] &&
 | ||||
| 	// TODO Move to array comparison once it's implemented
 | ||||
| 	// assert fp.int_multi('some-flag', `a`, '') == [2, 3, 5] &&
 | ||||
| 	//	fp.string_multi('some-flag', `b`, '') == ['a', 'c', 'b'] &&
 | ||||
| 	//	fp.float_multi('some-flag', `c`, '') == [1.23, 2.34, 3.45]
 | ||||
| 
 | ||||
| 	a := fp.int_multi('some-flag', `a`, '') | ||||
| 	b := fp.string_multi('some-flag', `b`, '') | ||||
| 	c := fp.float_multi('some-flag', `c`, '') | ||||
| 	assert a.len == 3 && b.len == 3 && c.len == 3 | ||||
| 	assert a[0] == 2 && a[1] == 3 && a[2] == 5 | ||||
| 	assert b[0] == 'a' && b[1] == 'c' && b[2] == 'b' | ||||
| 	assert c[0] == 1.23 && c[1] == 2.34 && c[2] == 3.45 | ||||
| 	assert a.len == 3 | ||||
| 	assert b.len == 3 | ||||
| 	assert c.len == 3 | ||||
| 	assert a[0] == 2 | ||||
| 	assert a[1] == 3 | ||||
| 	assert a[2] == 5 | ||||
| 	assert b[0] == 'a' | ||||
| 	assert b[1] == 'c' | ||||
| 	assert b[2] == 'b' | ||||
| 	assert c[0] == 1.23 | ||||
| 	assert c[1] == 2.34 | ||||
| 	assert c[2] == 3.45 | ||||
| } | ||||
| 
 | ||||
| fn test_long_options_that_start_with_the_same_letter_as_another_short_option() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 		'--vabc', '/abc', | ||||
| 		'--vabc', | ||||
| 		'/abc', | ||||
| 	]) | ||||
| 	verbose := fp.bool('verbose', `v`, false, 'Be more verbose.') | ||||
| 	vabc    := fp.string('vabc', `x`, 'default', 'Another option that *may* conflict with v, but *should not*') | ||||
| 	vabc := fp.string('vabc', `x`, 'default', 'Another option that *may* conflict with v, but *should not*') | ||||
| 	assert verbose == false | ||||
| 	assert vabc == '/abc' | ||||
| } | ||||
|  | @ -337,17 +345,18 @@ fn test_long_options_that_start_with_the_same_letter_as_another_short_option() { | |||
| fn test_long_options_that_start_with_the_same_letter_as_another_short_option_both_set() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 		'-v', | ||||
| 		'--vabc', '/abc', | ||||
| 		'--vabc', | ||||
| 		'/abc', | ||||
| 	]) | ||||
| 	verbose := fp.bool('verbose', `v`, false, 'Be more verbose.') | ||||
| 	vabc    := fp.string('vabc', `x`, 'default', 'Another option that *may* conflict with v, but *should not*') | ||||
| 	vabc := fp.string('vabc', `x`, 'default', 'Another option that *may* conflict with v, but *should not*') | ||||
| 	assert verbose == true | ||||
| 	assert vabc == '/abc' | ||||
| } | ||||
| 
 | ||||
| fn test_single_dash() { | ||||
| 	mut fp := flag.new_flag_parser([ | ||||
| 		'-' | ||||
| 		'-', | ||||
| 	]) | ||||
| 	flag_update := fp.bool('update', `u`, false, 'Update tools') | ||||
| 	assert flag_update == false | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue