package wait import ( "context" "os" "path/filepath" "strconv" "strings" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gotest.tools/v3/fs" ) func TestMain(m *testing.M) { os.Exit(m.Run()) } func TestCheckDevices(t *testing.T) { testCases := map[string]struct { expectedCount int actualCount int expectedResult bool }{ "BelowExpected": { expectedCount: 3, actualCount: 2, expectedResult: false, }, "EqualExpected": { expectedCount: 3, actualCount: 3, expectedResult: true, }, "AboveExpected": { expectedCount: 3, actualCount: 4, expectedResult: true, }, } for name, tc := range testCases { t.Run(name, func(t *testing.T) { dir := fs.NewDir(t, name) defer dir.Remove() dirPath := dir.Path() w := waiter{ deviceDir: dirPath, } for i := range tc.actualCount { filename := strings.Join([]string{"ds-", strconv.Itoa(i), ".sock"}, "") fp := filepath.Join(dirPath, filename) require.NoError(t, os.WriteFile(fp, []byte{}, 0644)) } res, err := w.checkDevices(context.Background(), tc.expectedCount) require.NoError(t, err) assert.Equal(t, tc.expectedResult, res) }) } }