mirror of
https://github.com/neilotoole/sq.git
synced 2024-12-21 07:01:41 +03:00
86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
package sakila_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/neilotoole/sq/testh/tutil"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/neilotoole/sq/testh"
|
|
"github.com/neilotoole/sq/testh/sakila"
|
|
)
|
|
|
|
// TestSakila_SQL is a sanity check for Sakila SQL test sources.
|
|
func TestSakila_SQL(t *testing.T) { //nolint:tparallel
|
|
// Verify that the latest-version aliases are as expected
|
|
require.Equal(t, sakila.Pg, sakila.Pg12)
|
|
require.Equal(t, sakila.My, sakila.My8)
|
|
require.Equal(t, sakila.MS, sakila.MS19)
|
|
|
|
handles := sakila.SQLAll()
|
|
for _, handle := range handles {
|
|
handle := handle
|
|
t.Run(handle, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
th := testh.New(t)
|
|
src := th.Source(handle)
|
|
sink, err := th.QuerySQL(src, "SELECT * FROM actor")
|
|
require.NoError(t, err)
|
|
require.Equal(t, sakila.TblActorCount, len(sink.Recs))
|
|
})
|
|
}
|
|
}
|
|
|
|
// TestSakila_XLSX is a sanity check for Sakila XLSX test sources.
|
|
func TestSakila_XLSX(t *testing.T) {
|
|
tutil.SkipWindows(t, "XLSX fails on windows pipeline (too slow)")
|
|
|
|
handles := []string{sakila.XLSXSubset}
|
|
// TODO: Add sakila.XLSX to handles when performance is reasonable
|
|
// enough not to break CI.
|
|
|
|
for _, handle := range handles {
|
|
handle := handle
|
|
|
|
t.Run(handle, func(t *testing.T) {
|
|
th := testh.New(t)
|
|
src := th.Source(handle)
|
|
|
|
sink, err := th.QuerySQL(src, "SELECT * FROM actor")
|
|
require.NoError(t, err)
|
|
require.Equal(t, sakila.TblActorCount, len(sink.Recs))
|
|
})
|
|
}
|
|
}
|
|
|
|
// TestSakila_CSV is a sanity check for Sakila CSV/TSV test sources.
|
|
func TestSakila_CSV(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
handles := []string{sakila.CSVActor, sakila.CSVActorNoHeader, sakila.TSVActor, sakila.TSVActorNoHeader}
|
|
for _, handle := range handles {
|
|
handle := handle
|
|
t.Run(handle, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
th := testh.New(t)
|
|
src := th.Source(handle)
|
|
// Note table "data" instead of "actor", because CSV is monotable
|
|
sink, err := th.QuerySQL(src, "SELECT * FROM data")
|
|
require.NoError(t, err)
|
|
require.Equal(t, sakila.TblActorCount, len(sink.Recs))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSQLiteCloseError(t *testing.T) {
|
|
th := testh.New(t)
|
|
src := th.Source(sakila.CSVActor)
|
|
// Note table "data" instead of "actor", because CSV is monotable
|
|
sink, err := th.QuerySQL(src, "SELECT * FROM data")
|
|
require.NoError(t, err)
|
|
require.Equal(t, sakila.TblActorCount, len(sink.Recs))
|
|
}
|