Skip to content
Snippets Groups Projects
Commit d1c3e316 authored by Yoav Hizkiahou's avatar Yoav Hizkiahou
Browse files

Genereate expected result automatically for each test

parent 53ef7739
No related branches found
No related tags found
No related merge requests found
......@@ -72,6 +72,7 @@ type Check struct {
State `json:"status"`
ActualValue string `json:"actual_value"`
Scored bool `json:"scored"`
ExpectedResult string `json:"expected_result"`
}
// Runner wraps the basic Run method.
......@@ -188,6 +189,7 @@ func (c *Check) run() State {
finalOutput := c.Tests.execute(out.String())
if finalOutput != nil {
c.ActualValue = finalOutput.actualResult
c.ExpectedResult = finalOutput.ExpectedResult
if finalOutput.testResult {
c.State = PASS
} else {
......
......@@ -58,6 +58,7 @@ type compare struct {
type testOutput struct {
testResult bool
actualResult string
ExpectedResult string
}
func failTestItem(s string) *testOutput {
......@@ -135,8 +136,10 @@ func (t *testItem) execute(s string) *testOutput {
}
}
expectedResultPattern := ""
switch t.Compare.Op {
case "eq":
expectedResultPattern = "'%s' is equal to '%s'"
value := strings.ToLower(flagVal)
// Do case insensitive comparaison for booleans ...
if value == "false" || value == "true" {
......@@ -146,6 +149,7 @@ func (t *testItem) execute(s string) *testOutput {
}
case "noteq":
expectedResultPattern = "'%s' is not equal to '%s'"
value := strings.ToLower(flagVal)
// Do case insensitive comparaison for booleans ...
if value == "false" || value == "true" {
......@@ -155,32 +159,41 @@ func (t *testItem) execute(s string) *testOutput {
}
case "gt":
expectedResultPattern = "%s is greater then %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a > b
case "gte":
expectedResultPattern = "%s is greater or equal to %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a >= b
case "lt":
expectedResultPattern = "%s is lower then %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a < b
case "lte":
expectedResultPattern = "%s is lower or equal to %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a <= b
case "has":
expectedResultPattern = "'%s' has '%s'"
result.testResult = strings.Contains(flagVal, t.Compare.Value)
case "nothave":
expectedResultPattern = " '%s' not have '%s'"
result.testResult = !strings.Contains(flagVal, t.Compare.Value)
}
result.ExpectedResult = fmt.Sprintf(expectedResultPattern, t.Flag, t.Compare.Value)
} else {
result.ExpectedResult = fmt.Sprintf("'%s' is present", t.Flag)
result.testResult = isset
}
} else {
result.ExpectedResult = fmt.Sprintf("'%s' is not present", t.Flag)
notset := !match
result.testResult = notset
}
......@@ -219,13 +232,19 @@ func (ts *tests) execute(s string) *testOutput {
case and, "":
result = true
for i := range res {
finalOutput.ExpectedResult += fmt.Sprintf("%s AND ", res[i].ExpectedResult)
result = result && res[i].testResult
}
// Delete last iteration ' AND '
finalOutput.ExpectedResult = finalOutput.ExpectedResult[:len(finalOutput.ExpectedResult)-5]
case or:
result = false
for i := range res {
finalOutput.ExpectedResult += fmt.Sprintf("%s OR ", res[i].ExpectedResult)
result = result || res[i].testResult
}
// Delete last iteration ' OR '
finalOutput.ExpectedResult = finalOutput.ExpectedResult[:len(finalOutput.ExpectedResult)-4]
}
finalOutput.testResult = result
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment