CI to catch incorrect use of clues (#5144)
<!-- PR description--> Catches issues where we use `WC` variant of clues when `ctx` is passed and as well as cases where we don't use WC variant when `ctx` is not passed in. --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [x] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [ ] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
e1cb5b6313
commit
8a7a61f05d
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
@ -518,6 +518,20 @@ jobs:
|
|||||||
echo "Make sure to propagate errors with clues"
|
echo "Make sure to propagate errors with clues"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
- name: Check if clues without context are used when context is passed in
|
||||||
|
run: |
|
||||||
|
# Using `grep .` as the exit codes are always true for correct grammar
|
||||||
|
if tree-grepper -q go '((function_declaration (parameter_list . (parameter_declaration (identifier) @_octx)) body: (block (short_var_declaration left: (expression_list (identifier) @_err . ) right: (expression_list (call_expression (argument_list . (identifier) @_ctx)))) . (if_statement (binary_expression) @_exp consequence: (block (return_statement (expression_list (call_expression (selector_expression (call_expression (selector_expression) @clue))) . )))))) (#eq? @_err "err") (#eq? @_octx "ctx") (#eq? @_ctx "ctx") (#eq? @_exp "err != nil") (#match? @clue "^clues\.") (#match? @clue "WC$"))' | grep .; then
|
||||||
|
echo "Do not use clues.*WC when context is passed in"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- name: Check clues with context is used when context is not passed in
|
||||||
|
run: |
|
||||||
|
# Using `grep .` as the exit codes are always true for correct grammar
|
||||||
|
if tree-grepper -q go '((function_declaration (parameter_list . (parameter_declaration (identifier) @_octx)) body: (block (short_var_declaration left: (expression_list (identifier) @_err . ) right: (expression_list (call_expression (argument_list . (identifier) @_ctx)))) . (if_statement (binary_expression) @_exp consequence: (block (return_statement (expression_list (call_expression (selector_expression (call_expression (selector_expression) @clue))) . )))))) (#eq? @_err "err") (#eq? @_octx "ctx") (#not-eq? @_ctx "ctx") (#eq? @_exp "err != nil") (#match? @clue "^clues\.") (#not-match? @clue "WC$"))' | grep .; then
|
||||||
|
echo "Use clues.*WC when context is not passed in"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------------------
|
||||||
# --- GitHub Actions Linting -------------------------------------------------------------------------
|
# --- GitHub Actions Linting -------------------------------------------------------------------------
|
||||||
|
|||||||
@ -86,7 +86,7 @@ func FromJSON(ctx context.Context, body []byte) (string, error) {
|
|||||||
|
|
||||||
data, err := api.BytesToContactable(body)
|
data, err := api.BytesToContactable(body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", clues.Wrap(err, "converting to contactable").
|
return "", clues.WrapWC(ctx, err, "converting to contactable").
|
||||||
With("body_length", len(body))
|
With("body_length", len(body))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user