yasnippet-snippets icon indicating copy to clipboard operation
yasnippet-snippets copied to clipboard

[clojure] test snippet triggered when typing -test for the deftest name

Open practicalli-johnny opened this issue 3 years ago • 1 comments
trafficstars

A very common convention in Clojure.test is to name unit tests ending in -test, which unfortunately can trigger yasnippet expansion

Reproduction of issue

Enable Yasnippets with this repository as a source of snippets

Type test and call yas-expand to generate a deftest form with the cursor placed on the deftest name as it matches the test snippet.

Type the test name, i.e. addition-test and press TAB to go to the next tab stop

Rather than jumping to the next tab stop, the test part of the deftest name is expanded into a deftest form, creating a second defttest form within the first.

If a space is typed after the deftest -test name then TAB does not expand to another deftest form.

Suggested options

  1. Rename the test snippet to deftest or other name that will not expand from -test
  2. Update test snippet to postfix -test to the name automatically (see deftest example below)
  3. Hope everyone remembers to press space after the -test name, before pressing TAB

Additional point

The (testing ,,,) form is typically used within a deftest to organise assertions, (is ,,,) expressions, into logical groups. This supports more specific test reports when tests fail. Consider adding testing to a snippet that generated a deftest, for example

(deftest ${1:name}-test
  (testing "${2:Context of the test assertions}"$>
    (is (= ${3:assertion-values}))$4))$>
$0

Tab stop 2 and 3 text will be substituted when visiting that tab stop.

practicalli-johnny avatar Jan 20 '22 02:01 practicalli-johnny

Hi @practicalli-john , so I just tried to reproduce the issue but I can't actually reproduce it. I do test TAB hello-test TAB and it just goes to the next placeholder. Do you have any yasnippet settings maybe that might cause this behaviour? I just had a couple of configs for yasnippet but I checked and even changing them the behaviour still doesn't change.

AndreaCrotti avatar Jun 01 '22 14:06 AndreaCrotti