Skip to content

Commit 018b6a9

Browse files
author
kuba--
committed
Test syntax for regression queries
Signed-off-by: kuba-- <[email protected]>
1 parent d98c5ec commit 018b6a9

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

_testdata/regression.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
---
12
-
23
ID: 'query0'
34
Name: 'All commits'
@@ -68,12 +69,12 @@
6869
ID: 'query12'
6970
Name: '10 top repos by file count in HEAD'
7071
Statements:
71-
- SELECT repository_id, num_files FROM (SELECT COUNT(f.*) num_files, f.repository_id FROM ref_commits r INNER JOIN commit_files cf ON r.commit_hash = cf.commit_hash AND r.repository_id = cf.repository_id INNER JOIN files fON cf.repository_id = f.repository_id AND cf.blob_hash = f.blob_hash AND cf.tree_hash = f.tree_hash AND cf.file_path = f.file_path WHERE r.ref_name = 'HEAD' GROUP BY f.repository_id) t ORDER BY num_files DESC LIMIT 10
72+
- SELECT repository_id, num_files FROM (SELECT COUNT(f.*) num_files, f.repository_id FROM ref_commits r INNER JOIN commit_files cf ON r.commit_hash = cf.commit_hash AND r.repository_id = cf.repository_id INNER JOIN files f ON cf.repository_id = f.repository_id AND cf.blob_hash = f.blob_hash AND cf.tree_hash = f.tree_hash AND cf.file_path = f.file_path WHERE r.ref_name = 'HEAD' GROUP BY f.repository_id) t ORDER BY num_files DESC LIMIT 10
7273
-
7374
ID: 'query13'
7475
Name: 'Top committers per repository'
7576
Statements:
76-
- SELECT * FROM (SELECT commit_author_email as author,repository_id as id,count(*) as num_commits FROM commits GROUP BY commit_author_email, repository_id) t ORDER BY num_commits DESC"
77+
- SELECT * FROM (SELECT commit_author_email as author, repository_id as id, count(*) as num_commits FROM commits GROUP BY commit_author_email, repository_id) AS t ORDER BY num_commits DESC
7778
-
7879
ID: 'query14'
7980
Name: 'Top committers in all repositories'

regression_test.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package gitbase_test
2+
3+
import (
4+
"context"
5+
"io/ioutil"
6+
"testing"
7+
8+
"github.com/src-d/gitbase"
9+
"github.com/stretchr/testify/require"
10+
"gopkg.in/src-d/go-mysql-server.v0/sql"
11+
"gopkg.in/src-d/go-mysql-server.v0/sql/parse"
12+
yaml "gopkg.in/yaml.v2"
13+
)
14+
15+
type Query struct {
16+
ID string `yaml:"ID"`
17+
Name string `yaml:"Name,omitempty"`
18+
Statements []string `yaml:"Statements"`
19+
}
20+
21+
func TestParseRegressionQueries(t *testing.T) {
22+
require := require.New(t)
23+
24+
queries, err := loadQueriesYaml("./_testdata/regression.yml")
25+
require.NoError(err)
26+
27+
ctx := sql.NewContext(
28+
context.TODO(),
29+
sql.WithSession(gitbase.NewSession(gitbase.NewRepositoryPool())),
30+
)
31+
32+
for _, q := range queries {
33+
for _, stmt := range q.Statements {
34+
if _, err := parse.Parse(ctx, stmt); err != nil {
35+
require.Failf(err.Error(), "%v", q)
36+
}
37+
}
38+
}
39+
}
40+
41+
func loadQueriesYaml(file string) ([]Query, error) {
42+
text, err := ioutil.ReadFile(file)
43+
if err != nil {
44+
return nil, err
45+
}
46+
var q []Query
47+
err = yaml.Unmarshal(text, &q)
48+
if err != nil {
49+
return nil, err
50+
}
51+
52+
return q, nil
53+
}

0 commit comments

Comments
 (0)