mirror of
https://github.com/ivanizag/izapple2.git
synced 2025-01-10 12:30:17 +00:00
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package screen
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestSnapshots(t *testing.T) {
|
|
// Verifies all the scenarios on the ./test_resources folder
|
|
files, err := ioutil.ReadDir("./test_resources/")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, fileInfo := range files {
|
|
if !fileInfo.IsDir() &&
|
|
strings.HasSuffix(fileInfo.Name(), ".json") {
|
|
testScenario(t, "./test_resources/"+fileInfo.Name())
|
|
}
|
|
}
|
|
}
|
|
|
|
func testScenario(t *testing.T, fileName string) {
|
|
ts, err := loadTestScenario(fileName)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
ts.generateSnapshots(fileName, true)
|
|
|
|
for _, screenMode := range ts.ScreenModes {
|
|
referenceName := buildImageName(fileName, screenMode, false)
|
|
actualName := buildImageName(fileName, screenMode, true)
|
|
|
|
reference, err := ioutil.ReadFile(referenceName)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
actual, err := ioutil.ReadFile(actualName)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if bytes.Compare(reference, actual) != 0 {
|
|
t.Errorf("Files %s and %s should be equal", referenceName, actualName)
|
|
replaceIfNeeded(referenceName, actualName)
|
|
} else {
|
|
os.Remove(actualName)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
func replaceIfNeeded(referenceName string, actualName string) {
|
|
// If the "update" argument is passed to test. The new images replace the old.
|
|
// Run the tests with: "go test . -args update"
|
|
for _, arg := range os.Args {
|
|
if arg == "update" {
|
|
os.Remove(referenceName)
|
|
os.Rename(actualName, referenceName)
|
|
}
|
|
}
|
|
}
|