42 votes

outils pour tester les plugins vim

Je suis à la recherche pour certains des outils pour tester des scripts vim. Soit scripts vim

  • ne unitaires/tests fonctionnels, ou
  • classes pour une autre bibliothèque (par exemple Python unittest module) qui le rendent pratique à
    • exécuter vim avec des paramètres qui en sont la cause pour faire des tests sur son environnement, et
    • déterminer à partir de la sortie si oui ou non un test réussi.

Je suis au courant d'un couple de vim scripts qui ne l'unité de test, mais ils sont une sorte de vaguement documentée et peut ou peut ne pas être utile:

vim-unité:

  • vise À "fournir les scripts vim avec un simple framework de test unitaire et d'outils"
  • première et unique version (v0.1) a été publié en 2004
  • la documentation ne mentionne pas si oui ou non il fonctionne de manière fiable, autres que pour l'état qu'il est "fare [sic] de la fin".

des tests unitaires.vim:

  • Ce qui semble assez expérimental, et peuvent ne pas être particulièrement fiable.
  • Peuvent avoir été abandonnés ou mis de côté: le dernier commit a été en 2009-11 (> 6 mois)
  • Pas de tagged les révisions ont été créés (c'est à dire pas communiqués)

Si des informations provenant de personnes qui sont à l'aide de l'un de ces deux modules existants, et/ou des liens vers d'autres, plus clairement utilisable, options, sont les bienvenus.

19voto

Justin M. Keyes Points 2268

vader.vim est facile et incroyable. Il n'a pas de dépendances externes (ne nécessite pas de ruby / rake), c'est un plugin Vimscript pur. Voici un test entièrement spécifié:

 Given (description of test):
  foo bar baz

Do (move around, insert some text):
  2Wiab\<Enter>c

Expect:
  foo bar ab
  cbaz
 

Si vous avez le fichier de test ouvert, vous pouvez l'exécuter comme ceci:

 :Vader %
 

Ou vous pouvez pointer vers le chemin du fichier:

 :Vader ./test.vader
 

12voto

Paul Mucur Points 128

J'ai eu du succès en utilisant Andrew Radev de Vimrunner en conjonction avec RSpec à la fois de l'essai Vim plugins et de les mettre en place sur un serveur d'intégration continue.

En bref, Vimrunner utilise Vim client-serveur fonctionnalités à mettre le feu à un serveur Vim, puis envoyez les commandes à distance de sorte que vous pouvez inspecter (et vérifier le résultat. C'est un Rubis gemme de sorte que vous aurez besoin d'au moins une certaine connaissance de Ruby, mais si vous mettez le temps, alors vous obtenez la pleine puissance de RSpec pour écrire vos tests.

Par exemple, un fichier appelé spec/runspec.vim_spec.rb:

require "vimrunner"
require "fileutils"

describe "runspec.vim" do
  before(:suite) do
    VIM = Vimrunner.start_gui_vim
    VIM.add_plugin(File.expand_path('../..', __FILE__), 'plugin/runspec.vim')
  end

  after(:all) do
    VIM.kill
  end

  it "returns the current path if it ends in _test.rb" do
    VIM.echo('runspec#SpecPath("foo_test.rb")').should == "foo_test.rb"
    VIM.echo('runspec#SpecPath("bar/foo_test.rb")').should == "bar/foo_test.rb"
  end

  context "with a spec directory" do
    before do
      FileUtils.mkdir("spec")
    end

    after do
      FileUtils.remove_entry_secure("spec")
    end

    it "finds a spec with the same name" do
      FileUtils.touch("spec/foo_spec.rb")
      VIM.echo('runspec#SpecPath("foo.rb")').should == "spec/foo_spec.rb"
    end
  end
end

J'ai écrit à ce sujet en détail dans "Test de Vim Plugins sur Travis CI avec RSpec et Vimrunner" si vous voulez plus de détails.

9voto

Luc Hermitte Points 14171

Il y a un autre plugin UT que je maintiens.

Il est documenté, il est livré avec plusieurs exemples, et il est également utilisé par mes autres plugins.

3voto

richq Points 29694

J'ai utilisé vim-unit avant. À tout le moins, cela signifie que vous n'avez pas à écrire votre propre AssertEquals et AssertTrue fonctions. Il dispose également d'une fonctionnalité intéressante qui vous permet d'exécuter la fonction en cours, si elle commence par "Test", en plaçant le curseur dans le corps de la fonction et en tapant :call VUAutoRun().

La documentation est un peu douteux et inachevée, mais si vous avez de l'expérience avec d'autres XUnit tests de bibliothèques, il ne sera pas inconnu pour vous.

Ni de le script mentionné ont les moyens de le vérifier pour vim des fonctionnalités spécifiques, vous ne pouvez pas changer de tampons et de vérifier ensuite les attentes sur le résultat - de sorte que vous devrez écrire votre vimscript dans un testable façon. Par exemple, les chaînes de passer dans les fonctions plutôt que de les retirer de tampons avec getline() à l'intérieur de la fonction elle-même, le retour des chaînes au lieu d'utiliser setline(), ce genre de chose.

0voto

eventualEntropy Points 344

Un autre peu de candidats:

VimBot - Similaire à VimRunner en ce qu'il est écrit en ruby et vous permet de contrôler un vim instance à distance. Est conçu pour être utilisé avec le framework de test unitaire RSPEC

VimDriver - Même comme VimBot à l'exception de fait en python à la place de ruby (qui a commencé comme un port direct de VimBot) de sorte que vous pouvez utiliser python framework de test unitaire si vous êtes plus familier avec cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X