emacsprojectileemacs-helmemacs-preludeemacs-projectile

How to use projectile-find-test-file


I'm using Emacs and projectile and trying to set the path to a test file so that I can use projectile-toggle-between-implementation-and-test.

I call M-xprojectile-find-test-file but the Helm buffer is empty. Whatever I put in the pattern field, no file shows up in the Helm buffer to select and entering the test file path relative to the project root just causes a Dired buffer to open at the project root.

Please advise how to use projectile-find-test-file


Solution

  • projectile guesses the test file name given a source file by adding suffix/prefix to your source file. For example, if you have a hello.rb then it tries to find a file called hello_test.rb in your project.

    It by default has some rules that maps from project type to test suffix/prefix. Here is the actual code:

    (defun projectile-test-suffix (project-type)
      "Find default test files suffix based on PROJECT-TYPE."
      (cond
       ((member project-type '(rails-rspec ruby-rspec)) "_spec")
       ((member project-type '(rails-test ruby-test lein-test go)) "_test")
       ((member project-type '(scons)) "test")
       ((member project-type '(maven symfony)) "Test")
       ((member project-type '(gradle grails)) "Spec")))
    

    If you don't see anything in projectile-find-test-file that means most likely it cannot find anything related to your source file by adding suffix/prefix.

    This can be customized via projectile-test-suffix-function. By default the variable points to the function above, but you can override it with your own rules.