Skip to content

Commit

Permalink
Merge pull request #7644 from liggitt/conversion_test
Browse files Browse the repository at this point in the history
Output generated conversion functions/names
  • Loading branch information
wojtek-t committed May 4, 2015
2 parents 982cac3 + 26caf9e commit e225a2e
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions pkg/conversion/code_generation_test.go
Expand Up @@ -21,6 +21,7 @@ import (
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
"testing"

Expand Down Expand Up @@ -114,26 +115,31 @@ func bufferExistingConversions(t *testing.T, fileName string) (bytes.Buffer, byt
return functions, names
}

func compareBuffers(t *testing.T, existing, generated bytes.Buffer) {
func compareBuffers(t *testing.T, generatedFile string, existing, generated bytes.Buffer) bool {
ok := true
for {
existingLine, existingErr := existing.ReadString('\n')
generatedLine, generatedErr := generated.ReadString('\n')
if existingErr == io.EOF && generatedErr == io.EOF {
break
}
if existingErr != generatedErr {
ok = false
t.Errorf("reading errors: existing %v generated %v", existingErr, generatedErr)
return
return ok
}
if existingErr != nil {
ok = false
t.Errorf("error while reading: %v", existingErr)
}
if existingLine != generatedLine {
ok = false
diff := fmt.Sprintf("first difference: expected %s, got %s", generatedLine, existingLine)
t.Errorf("please regenerate conversion functions; %s", diff)
return
t.Errorf("please update conversion functions; generated: %s; diff: %s", generatedFile, diff)
return ok
}
}
return ok
}

func TestNoManualChangesToGenerateConversions(t *testing.T) {
Expand All @@ -145,7 +151,17 @@ func TestNoManualChangesToGenerateConversions(t *testing.T) {
existingFunctions, existingNames := bufferExistingConversions(t, fileName)
generatedFunctions, generatedNames := generateConversions(t, version)

compareBuffers(t, existingFunctions, generatedFunctions)
compareBuffers(t, existingNames, generatedNames)
functionsTxt := fmt.Sprintf("%s.functions.txt", version)
ioutil.WriteFile(functionsTxt, generatedFunctions.Bytes(), os.FileMode(0644))

namesTxt := fmt.Sprintf("%s.names.txt", version)
ioutil.WriteFile(namesTxt, generatedNames.Bytes(), os.FileMode(0644))

if ok := compareBuffers(t, functionsTxt, existingFunctions, generatedFunctions); ok {
os.Remove(functionsTxt)
}
if ok := compareBuffers(t, namesTxt, existingNames, generatedNames); ok {
os.Remove(namesTxt)
}
}
}

0 comments on commit e225a2e

Please sign in to comment.