Как выполнить модульное тестирование функции vim в файле vimrc? - PullRequest
1 голос
/ 24 октября 2019

В моем файле .vimrc есть функции, и я хочу проверить, что эта функция делает то, что я хочу. Я хочу знать, есть ли быстрый способ модульного тестирования функции в .vimrc.

моя функция выглядит так:

fun! FindPythonMainFile(filename, )
    let file = findfile(filename)  
      if (file)
         echo "file exists"
      else
         echo "file doesn't exists"
     endif

endf

наилучшее отношение.

1 Ответ

1 голос
/ 24 октября 2019

Первое, что я хотел бы сделать, это переместить эти функции из вашего .vimrc в отдельные autoload-functions. Вы получите дополнительные преимущества, такие как уникальные пространства имен, меньше беспорядка, более быстрый запуск Vim, и они могут (все еще) быть вызваны из любого места (сопоставления, команды, модульные тесты).

Для минимальной, свертываемой -собственный тест, просто вызовите функцию и сделайте утверждения. Ваша функция, как указано, будет трудно проверить, поскольку ее побочным эффектом является :echo, и вам придется сделать громоздкие :redir или execute(), чтобы ее захватить. Было бы лучше разделить это на фактическую проверку (которая возвращает логическое значение) и отдельную функцию отчетности с :echo s.

. Чтобы уведомить себя о результатах теста, вы можете просто :echo любойошибки / результаты или отмена с :cquit. См. здесь , чтобы узнать, как использовать встроенные в Vim функции assert_...() для создания утверждений и минимальных отчетов.

Я не думаю, что многие люди проверяют свои личные настройки (но я приветствую вас за попыткусделать это!) Для плагинов (которые вы, возможно, намереваетесь опубликовать для других), это другой вопрос. Существует множество подходов и структур, поэтому, возможно, стоит оценить их, если вы намерены идти в этом направлении. Мой плагин runVimTests - одна из таких платформ (которую я использую для тестирования десятков моих плагинов);На странице плагина есть ссылки на альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...