You've already forked sap-jenkins-library
							
							
				mirror of
				https://github.com/SAP/jenkins-library.git
				synced 2025-10-30 23:57:50 +02:00 
			
		
		
		
	fix(config) conversion of small ints into string (#2274)
* fix(config) conversion of small ints into string * beautify and improve comment
This commit is contained in:
		| @@ -366,12 +366,18 @@ func convertValueFromFloat(config map[string]interface{}, optionsField *reflect. | ||||
| 	switch optionsField.Type.Kind() { | ||||
| 	case reflect.String: | ||||
| 		val := strconv.FormatFloat(paramValue, 'f', -1, 64) | ||||
| 		// if Sprinted value and val are equal, we can be pretty sure that the result fits | ||||
| 		// for very large numbers for example an exponential format is printed | ||||
| 		if val == fmt.Sprint(paramValue) { | ||||
| 			config[paramName] = val | ||||
| 			return nil | ||||
| 		} | ||||
| 		// allow float numbers containing a decimal separator | ||||
| 		if strings.Contains(val, ".") { | ||||
| 			config[paramName] = val | ||||
| 			return nil | ||||
| 		} | ||||
| 		// if no decimal separator is available we cannot be sure that the result is correct: | ||||
| 		// if now no decimal separator is available we cannot be sure that the result is correct: | ||||
| 		// long numbers like e.g. 73554900100200011600 will not be represented correctly after reading the yaml | ||||
| 		// thus we cannot assume that the string is correct. | ||||
| 		// short numbers will be handled as int anyway | ||||
|   | ||||
| @@ -385,6 +385,32 @@ bar: 42 | ||||
| 		// Assert | ||||
| 		assert.True(t, hasFailed, "Expected checkTypes() to exit via logging framework") | ||||
| 	}) | ||||
| 	t.Run("Properly handle small ints", func(t *testing.T) { | ||||
| 		// Init | ||||
| 		hasFailed := false | ||||
|  | ||||
| 		exitFunc := log.Entry().Logger.ExitFunc | ||||
| 		log.Entry().Logger.ExitFunc = func(int) { | ||||
| 			hasFailed = true | ||||
| 		} | ||||
| 		defer func() { log.Entry().Logger.ExitFunc = exitFunc }() | ||||
|  | ||||
| 		options := struct { | ||||
| 			Foo string `json:"foo,omitempty"` | ||||
| 		}{} | ||||
|  | ||||
| 		stepConfig := map[string]interface{}{} | ||||
|  | ||||
| 		content := []byte("foo: 11") | ||||
| 		err := yaml.Unmarshal(content, &stepConfig) | ||||
| 		assert.NoError(t, err) | ||||
|  | ||||
| 		// Test | ||||
| 		stepConfig = checkTypes(stepConfig, options) | ||||
|  | ||||
| 		// Assert | ||||
| 		assert.False(t, hasFailed, "Expected checkTypes() NOT to exit via logging framework") | ||||
| 	}) | ||||
| 	t.Run("Ignores nil values", func(t *testing.T) { | ||||
| 		// Init | ||||
| 		hasFailed := false | ||||
|   | ||||
		Reference in New Issue
	
	Block a user