codeberg.org/slaxor/imagediff/cmd/imagediff@v0.0.0-20231206162245-7cdf37896847/main_test.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestMain(m *testing.M) {
    13  	// call flag.Parse() here if TestMain uses flags
    14  	os.Exit(m.Run())
    15  }
    16  
    17  func ls() []string {
    18  	entries, err := os.ReadDir("./")
    19  	if err != nil {
    20  		log.Fatal(err)
    21  	}
    22  	names := make([]string, len(entries))
    23  	for _, entry := range entries {
    24  		names = append(names, entry.Name())
    25  	}
    26  	return names
    27  }
    28  
    29  func TestImagediff(t *testing.T) {
    30  	abs, err := filepath.Abs("../../testdata")
    31  	assert.NoError(t, err)
    32  	testCases := []struct {
    33  		name     string
    34  		file1    string
    35  		file2    string
    36  		expFile  string
    37  		equalExp bool
    38  	}{
    39  		{
    40  			name:     "equal",
    41  			file1:    abs + "/01_equal/a.png",
    42  			file2:    abs + "/01_equal/b.png",
    43  			expFile:  "a_png_b_png_diff.png",
    44  			equalExp: true,
    45  		},
    46  		{
    47  			name:     "different",
    48  			file1:    abs + "/02_different/a.png",
    49  			file2:    abs + "/02_different/b.png",
    50  			expFile:  "a_png_b_png_diff.png",
    51  			equalExp: false,
    52  		},
    53  	}
    54  
    55  	for _, tc := range testCases {
    56  		t.Run(tc.name, func(t *testing.T) {
    57  			os.Args = []string{"cmd", tc.file1, tc.file2}
    58  			tempDir := t.TempDir()
    59  			os.Chdir(tempDir)
    60  			main()
    61  			if tc.equalExp {
    62  				assert.NotContains(t, ls(), tc.expFile)
    63  				return
    64  			}
    65  			assert.Contains(t, ls(), tc.expFile)
    66  		})
    67  	}
    68  }