Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updated tests to cover new vet disabling behaviour.
  • Loading branch information
rhodeon authored and kyleconroy committed Nov 25, 2024
commit 28e7e4be6567f340bd1dbb471a42e0c5c29dd51f
27 changes: 25 additions & 2 deletions internal/endtoend/testdata/vet_disable/query.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
-- name: SkipVet :exec
-- name: RunVetAll :exec
SELECT true;

-- name: SkipVetAll :exec
-- @sqlc-vet-disable
SELECT true;

-- name: RunVet :exec
-- name: SkipVetSingleLine :exec
-- @sqlc-vet-disable always-fail no-exec
SELECT true;

-- name: SkipVetMultiLine :exec
-- @sqlc-vet-disable always-fail
-- @sqlc-vet-disable no-exec
SELECT true;

-- name: SkipVet_always_fail :exec
-- @sqlc-vet-disable always-fail
SELECT true;

-- name: SkipVet_no_exec :exec
-- @sqlc-vet-disable no-exec
SELECT true;

-- name: SkipVetInvalidRule :exec
-- @sqlc-vet-disable always-fail
-- @sqlc-vet-disable block-delete
-- @sqlc-vet-disable no-exec
SELECT true;
6 changes: 6 additions & 0 deletions internal/endtoend/testdata/vet_disable/sqlc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@ sql:
out: "db"
rules:
- always-fail
- no-exec
rules:
- name: always-fail
message: "Fail"
rule: "true"

- name: no-exec
message: "don't use exec"
rule: |
query.cmd == "exec"
6 changes: 5 additions & 1 deletion internal/endtoend/testdata/vet_disable/stderr.txt
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
query.sql: RunVet: always-fail: Fail
query.sql: RunVetAll: always-fail: Fail
query.sql: RunVetAll: no-exec: don't use exec
query.sql: SkipVet_always_fail: no-exec: don't use exec
query.sql: SkipVet_no_exec: always-fail: Fail
query.sql: SkipVetInvalidRule: rule-check error: rule "block-delete" does not exist in the config file
49 changes: 46 additions & 3 deletions internal/metadata/meta_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package metadata

import "testing"
import (
"testing"
)

func TestParseQueryNameAndType(t *testing.T) {

Expand Down Expand Up @@ -77,7 +79,7 @@ func TestParseQueryParams(t *testing.T) {
" @param @invalid UUID ",
},
} {
params, _, err := ParseParamsAndFlags(comments)
params, _, _, err := ParseParamsAndFlags(comments)
if err != nil {
t.Errorf("expected comments to parse, got err: %s", err)
}
Expand Down Expand Up @@ -123,7 +125,7 @@ func TestParseQueryFlags(t *testing.T) {
" @param @flag-bar UUID",
},
} {
_, flags, err := ParseParamsAndFlags(comments)
_, flags, _, err := ParseParamsAndFlags(comments)
if err != nil {
t.Errorf("expected comments to parse, got err: %s", err)
}
Expand All @@ -137,3 +139,44 @@ func TestParseQueryFlags(t *testing.T) {
}
}
}

func TestParseQueryRuleBlocklist(t *testing.T) {
for _, comments := range [][]string{
{
" name: CreateFoo :one",
" @sqlc-vet-disable sqlc/db-prepare delete-without-where ",
},
{
" name: CreateFoo :one ",
" @sqlc-vet-disable sqlc/db-prepare ",
" @sqlc-vet-disable delete-without-where ",
},
{
" name: CreateFoo :one",
" @sqlc-vet-disable sqlc/db-prepare ",
" update-without where",
" @sqlc-vet-disable delete-without-where ",
},
} {
_, flags, ruleBlocklist, err := ParseParamsAndFlags(comments)
if err != nil {
t.Errorf("expected comments to parse, got err: %s", err)
}

if !flags["@sqlc-vet-disable"] {
t.Errorf("expected @sqlc-vet-disable flag not found")
}

if _, ok := ruleBlocklist["sqlc/db-prepare"]; !ok {
t.Errorf("expected rule not found in blocklist")
}

if _, ok := ruleBlocklist["delete-without-where"]; !ok {
t.Errorf("expected rule not found in blocklist")
}

if _, ok := ruleBlocklist["update-without-where"]; ok {
t.Errorf("unexpected rule found in blocklist")
}
}
}