vim-flavor 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. data/features/.nav +3 -0
  2. data/features/caching.feature +16 -17
  3. data/features/command_line/progress_messages.feature +12 -16
  4. data/features/flavorfile/comments.feature +6 -7
  5. data/features/flavorfile/groups.feature +20 -19
  6. data/features/flavorfile/repository_name.feature +18 -19
  7. data/features/flavorfile/version_constraint.feature +16 -15
  8. data/features/step_definitions/bootstrap_script_steps.rb +5 -6
  9. data/features/step_definitions/cli_steps.rb +8 -40
  10. data/features/step_definitions/dependency_steps.rb +4 -2
  11. data/features/step_definitions/directory_steps.rb +4 -21
  12. data/features/step_definitions/file_steps.rb +8 -8
  13. data/features/step_definitions/flavor_steps.rb +22 -14
  14. data/features/step_definitions/flavorfile_steps.rb +12 -7
  15. data/features/step_definitions/lockfile_steps.rb +18 -7
  16. data/features/support/env.rb +19 -22
  17. data/features/testing_vim_plugins/dependencies.feature +12 -15
  18. data/features/testing_vim_plugins/failures.feature +60 -0
  19. data/features/testing_vim_plugins/typical_usage.feature +12 -15
  20. data/features/typical_usage/deploy_to_arbitrary_place.feature +8 -9
  21. data/features/typical_usage/install_vim_plugins.feature +7 -8
  22. data/features/typical_usage/uninstall_vim_plugins.feature +11 -11
  23. data/features/typical_usage/upgrade_vim_plugins.feature +7 -8
  24. data/features/version_lock.feature +7 -8
  25. data/lib/vim-flavor/cli.rb +3 -9
  26. data/lib/vim-flavor/facade.rb +8 -6
  27. data/lib/vim-flavor/flavor.rb +3 -4
  28. data/lib/vim-flavor/version.rb +1 -1
  29. data/vim-flavor.gemspec +1 -0
  30. metadata +20 -2
@@ -12,3 +12,6 @@
12
12
  - caching.feature
13
13
  - resolve_dependencies.feature
14
14
  - testing_vim_plugins:
15
+ - typical_usage.feature
16
+ - dependencies.feature
17
+ - failures.feature
@@ -4,47 +4,46 @@ Feature: Caching
4
4
  I want to cache repositories of plugins which are installed before.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
10
- And flavorfile
7
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
8
+ And a flavorfile with:
11
9
  """ruby
12
10
  flavor '$foo_uri', '~> 1.0'
13
11
  """
14
12
  And I run `vim-flavor install`
15
- And I disable network to the original repository of 'foo'
13
+ And I disable network to the original repository of "foo"
16
14
 
17
15
  Scenario: Install plugins - locked and compatible with new flavorfile
18
- Given I delete '$home/.vim'
19
- When I run `vim-flavor install` again
20
- Then I get lockfile
16
+ Given I remove the directory "home/.vim"
17
+ When I run `vim-flavor install`
18
+ Then it should pass
19
+ And a lockfile is created with:
21
20
  """
22
21
  $foo_uri (1.0.2)
23
22
  """
24
- And I get flavor '$foo_uri' with '1.0.2' in '$home/.vim'
23
+ And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
25
24
 
26
25
  Scenario: Install plugins - locked but incompatible with new flavorfile
27
- Given I edit flavorfile as
26
+ Given I edit the flavorfile as:
28
27
  """ruby
29
28
  flavor '$foo_uri', '~> 2.0'
30
29
  """
31
- When I run `vim-flavor install` but
32
- Then it fails with messages like
30
+ When I run `vim-flavor install`
31
+ Then it should fail with regexp:
33
32
  """
34
33
  fatal: \S+ does not appear to be a git repository
35
34
  """
36
35
 
37
36
  Scenario: Install plugins - not locked
38
- Given I delete lockfile
39
- When I run `vim-flavor install` but
40
- Then it fails with messages like
37
+ Given I delete the lockfile
38
+ When I run `vim-flavor install`
39
+ Then it should fail with regexp:
41
40
  """
42
41
  fatal: \S+ does not appear to be a git repository
43
42
  """
44
43
 
45
44
  Scenario: Upgrading plugins
46
- When I run `vim-flavor upgrade` but
47
- Then it fails with messages like
45
+ When I run `vim-flavor upgrade`
46
+ Then it should fail with regexp:
48
47
  """
49
48
  fatal: \S+ does not appear to be a git repository
50
49
  """
@@ -3,20 +3,16 @@ Feature: Progress messages
3
3
  as a lazy Vim user,
4
4
  I want to see messages about the current progress.
5
5
 
6
- Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
-
10
6
  Scenario: Install Vim plugins successfully
11
- Given a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
12
- And a repository 'bar' with versions '2.0.0 2.0.1 2.0.2'
13
- And flavorfile
7
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
8
+ And a repository "bar" with versions "2.0.0 2.0.1 2.0.2"
9
+ And a flavorfile with:
14
10
  """ruby
15
11
  flavor '$foo_uri', '~> 1.0'
16
12
  flavor '$bar_uri'
17
13
  """
18
14
  When I run `vim-flavor install`
19
- Then it outputs progress as follows
15
+ Then it should pass with template:
20
16
  """
21
17
  Checking versions...
22
18
  Use $bar_uri ... 2.0.2
@@ -28,17 +24,17 @@ Feature: Progress messages
28
24
  """
29
25
 
30
26
  Scenario: Install Vim plugins which are not existing
31
- Given flavorfile
27
+ Given a flavorfile with:
32
28
  """ruby
33
- flavor 'no-such-plugin'
29
+ flavor 'file://$tmp/no-such-plugin'
34
30
  """
35
- When I run `vim-flavor install` but
36
- Then it fails with messages like
31
+ When I run `vim-flavor install`
32
+ Then it should fail with template:
37
33
  """
38
- fatal: '\S+' does not appear to be a git repository
34
+ Checking versions...
35
+ Use file://$tmp/no-such-plugin ... failed
39
36
  """
40
- And it outputs progress as follows
37
+ And it should fail with regexp:
41
38
  """
42
- Checking versions...
43
- Use no-such-plugin ... failed
39
+ fatal: '\S+' does not appear to be a git repository
44
40
  """
@@ -4,12 +4,10 @@ Feature: Comments
4
4
  I want to leave comments in my flavorfile.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'foo' with versions '1.0 1.1 1.2 2.0'
7
+ Given a repository "foo" with versions "1.0 1.1 1.2 2.0"
10
8
 
11
9
  Scenario: Comment out declarations
12
- Given flavorfile
10
+ Given a flavorfile with:
13
11
  """ruby
14
12
  # Since flavorfile is parsed as a Ruby script,
15
13
  # you can comment out arbitrary lines like this.
@@ -17,8 +15,9 @@ Feature: Comments
17
15
  # flavor '$foo_uri', '~> 1.0'
18
16
  """
19
17
  When I run `vim-flavor install`
20
- Then I get lockfile
18
+ Then it should pass
19
+ And a lockfile is created with:
21
20
  """
22
21
  """
23
- And I get a bootstrap script in '$home/.vim'
24
- But I don't have flavor '$foo_uri' in '$home/.vim'
22
+ And a bootstrap script is created in "$home/.vim"
23
+ But a flavor "$foo_uri" is not deployed to "$home/.vim"
@@ -4,45 +4,45 @@ Feature: Groups
4
4
  I want to declare groups of flavors.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'foo' with versions '1.0 1.1 1.2'
10
- And a repository 'bar' with versions '2.0 2.1 2.2'
7
+ Given a repository "foo" with versions "1.0 1.1 1.2"
8
+ And a repository "bar" with versions "2.0 2.1 2.2"
11
9
 
12
10
  Scenario: Install only runtime dependencies
13
- Given flavorfile
11
+ Given a flavorfile with:
14
12
  """ruby
15
13
  flavor '$foo_uri', :group => :runtime
16
14
  flavor '$bar_uri', :group => :development
17
15
  """
18
16
  When I run `vim-flavor install`
19
- Then I get lockfile
17
+ Then it should pass
18
+ And a lockfile is created with:
20
19
  """
21
20
  $bar_uri (2.2)
22
21
  $foo_uri (1.2)
23
22
  """
24
- And I get a bootstrap script in '$home/.vim'
25
- And I get flavor '$foo_uri' with '1.2' in '$home/.vim'
26
- But I don't have flavor '$bar_uri' in '$home/.vim'
23
+ And a bootstrap script is created in "$home/.vim"
24
+ And a flavor "$foo_uri" version "1.2" is deployed to "$home/.vim"
25
+ But a flavor "$bar_uri" is not deployed to "$home/.vim"
27
26
 
28
27
  Scenario: The default group
29
- Given flavorfile
28
+ Given a flavorfile with:
30
29
  """ruby
31
30
  flavor '$foo_uri'
32
31
  flavor '$bar_uri', :group => :development
33
32
  """
34
33
  When I run `vim-flavor install`
35
- Then I get lockfile
34
+ Then it should pass
35
+ And a lockfile is created with:
36
36
  """
37
37
  $bar_uri (2.2)
38
38
  $foo_uri (1.2)
39
39
  """
40
- And I get a bootstrap script in '$home/.vim'
41
- And I get flavor '$foo_uri' with '1.2' in '$home/.vim'
42
- But I don't have flavor '$bar_uri' in '$home/.vim'
40
+ And a bootstrap script is created in "$home/.vim"
41
+ And a flavor "$foo_uri" version "1.2" is deployed to "$home/.vim"
42
+ But a flavor "$bar_uri" is not deployed to "$home/.vim"
43
43
 
44
44
  Scenario: Group a bunch of flavors at once
45
- Given flavorfile
45
+ Given a flavorfile with:
46
46
  """ruby
47
47
  group :development do
48
48
  flavor '$foo_uri'
@@ -50,11 +50,12 @@ Feature: Groups
50
50
  end
51
51
  """
52
52
  When I run `vim-flavor install`
53
- Then I get lockfile
53
+ Then it should pass
54
+ And a lockfile is created with:
54
55
  """
55
56
  $bar_uri (2.2)
56
57
  $foo_uri (1.2)
57
58
  """
58
- And I get a bootstrap script in '$home/.vim'
59
- But I don't have flavor '$foo_uri' in '$home/.vim'
60
- But I don't have flavor '$bar_uri' in '$home/.vim'
59
+ And a bootstrap script is created in "$home/.vim"
60
+ But a flavor "$foo_uri" is not deployed to "$home/.vim"
61
+ But a flavor "$bar_uri" is not deployed to "$home/.vim"
@@ -3,51 +3,50 @@ Feature: Repository name
3
3
  as a lazy Vim user,
4
4
  I also want to use shorthands for frequently used repositories.
5
5
 
6
- Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
-
10
6
  Scenario: Declare using a Vim plugin from www.vim.org
11
- Given a repository 'vim-scripts/vspec' with versions '0.0.4 1.2.0'
12
- And flavorfile
7
+ Given a GitHub repository "vim-scripts/vspec" with versions "0.0.4 1.2.0"
8
+ And a flavorfile with:
13
9
  """ruby
14
10
  # Fetch the plugin from git://github.com/vim-scripts/vspec.git
15
11
  flavor 'vspec', '~> 0.0'
16
12
  """
17
13
  When I run `vim-flavor install`
18
- Then I get lockfile
14
+ Then it should pass
15
+ And a lockfile is created with:
19
16
  """
20
17
  vspec (0.0.4)
21
18
  """
22
- And I get a bootstrap script in '$home/.vim'
23
- And I get flavor 'vspec' with '0.0.4' in '$home/.vim'
19
+ And a bootstrap script is created in "$home/.vim"
20
+ And a flavor "vspec" version "0.0.4" is deployed to "$home/.vim"
24
21
 
25
22
  Scenario: Declare using a Vim plugin from GitHub
26
- Given a repository 'kana/vim-vspec' with versions '0.0.4 1.2.0'
27
- And flavorfile
23
+ Given a GitHub repository "kana/vim-vspec" with versions "0.0.4 1.2.0"
24
+ And a flavorfile with:
28
25
  """ruby
29
26
  # Fetch the plugin from git://github.com/kana/vim-vspec.git
30
27
  flavor 'kana/vim-vspec', '~> 0.0'
31
28
  """
32
29
  When I run `vim-flavor install`
33
- Then I get lockfile
30
+ Then it should pass
31
+ And a lockfile is created with:
34
32
  """
35
33
  kana/vim-vspec (0.0.4)
36
34
  """
37
- And I get a bootstrap script in '$home/.vim'
38
- And I get flavor 'kana/vim-vspec' with '0.0.4' in '$home/.vim'
35
+ And a bootstrap script is created in "$home/.vim"
36
+ And a flavor "kana/vim-vspec" version "0.0.4" is deployed to "$home/.vim"
39
37
 
40
38
  Scenario: Declare using a Vim plugin from an arbitrary URI
41
- Given a repository 'vspec' with versions '0.0.4 1.2.0'
42
- And flavorfile
39
+ Given a local repository "vspec" with versions "0.0.4 1.2.0"
40
+ And a flavorfile with:
43
41
  """ruby
44
42
  # Fetch the plugin from the URI.
45
43
  flavor '$vspec_uri', '~> 0.0'
46
44
  """
47
45
  When I run `vim-flavor install`
48
- Then I get lockfile
46
+ Then it should pass
47
+ And a lockfile is created with:
49
48
  """
50
49
  $vspec_uri (0.0.4)
51
50
  """
52
- And I get a bootstrap script in '$home/.vim'
53
- And I get flavor '$vspec_uri' with '0.0.4' in '$home/.vim'
51
+ And a bootstrap script is created in "$home/.vim"
52
+ And a flavor "$vspec_uri" version "0.0.4" is deployed to "$home/.vim"
@@ -8,45 +8,46 @@ Feature: Version constraint
8
8
  compatibility of plugins. See also [Philosophy](philosophy) for the details.
9
9
 
10
10
  Background:
11
- Given a temporary directory called 'tmp'
12
- And a home directory called 'home' in '$tmp/home'
13
- And a repository 'foo' with versions '1.0 1.1 1.2 2.0'
11
+ Given a repository "foo" with versions "1.0 1.1 1.2 2.0"
14
12
 
15
13
  Scenario: Declare using the latest version of a Vim plugin
16
- Given flavorfile
14
+ Given a flavorfile with:
17
15
  """ruby
18
16
  flavor '$foo_uri'
19
17
  """
20
18
  When I run `vim-flavor install`
21
- Then I get lockfile
19
+ Then it should pass
20
+ And a lockfile is created with:
22
21
  """
23
22
  $foo_uri (2.0)
24
23
  """
25
- And I get a bootstrap script in '$home/.vim'
26
- And I get flavor '$foo_uri' with '2.0' in '$home/.vim'
24
+ And a bootstrap script is created in "$home/.vim"
25
+ And a flavor "$foo_uri" version "2.0" is deployed to "$home/.vim"
27
26
 
28
27
  Scenario: Declare using a Vim plugin not older than a specific version
29
- Given flavorfile
28
+ Given a flavorfile with:
30
29
  """ruby
31
30
  flavor '$foo_uri', '>= 1.1'
32
31
  """
33
32
  When I run `vim-flavor install`
34
- Then I get lockfile
33
+ Then it should pass
34
+ And a lockfile is created with:
35
35
  """
36
36
  $foo_uri (2.0)
37
37
  """
38
- And I get a bootstrap script in '$home/.vim'
39
- And I get flavor '$foo_uri' with '2.0' in '$home/.vim'
38
+ And a bootstrap script is created in "$home/.vim"
39
+ And a flavor "$foo_uri" version "2.0" is deployed to "$home/.vim"
40
40
 
41
41
  Scenario: Declare using the latest and compatible version of a Vim plugin
42
- Given flavorfile
42
+ Given a flavorfile with:
43
43
  """ruby
44
44
  flavor '$foo_uri', '~> 1.0'
45
45
  """
46
46
  When I run `vim-flavor install`
47
- Then I get lockfile
47
+ Then it should pass
48
+ And a lockfile is created with:
48
49
  """
49
50
  $foo_uri (1.2)
50
51
  """
51
- And I get a bootstrap script in '$home/.vim'
52
- And I get flavor '$foo_uri' with '1.2' in '$home/.vim'
52
+ And a bootstrap script is created in "$home/.vim"
53
+ And a flavor "$foo_uri" version "1.2" is deployed to "$home/.vim"
@@ -1,7 +1,6 @@
1
- Then /^I get a bootstrap script in '(.+)'$/ do |virtual_path|
2
- File.should exist(
3
- expand(virtual_path).
4
- to_flavors_path.
5
- to_bootstrap_path
6
- )
1
+ Then /^a bootstrap script is created in "(.+)"$/ do |v_vimfiles_path|
2
+ p = expand(v_vimfiles_path).to_flavors_path.to_bootstrap_path
3
+ steps %Q{
4
+ Then a file named "#{p}" should exist
5
+ }
7
6
  end
@@ -1,43 +1,11 @@
1
- When /^I run `vim-flavor(.*)`(?: again)?(?:,? (but))?$/ do |args, mode|
2
- begin
3
- original_home = ENV['HOME']
4
- ENV['HOME'] = expand('$home')
5
- Dir.chdir(expand('$tmp')) do
6
- original_stdout = $stdout
7
- begin
8
- $stdout = @output = StringIO.new()
9
- Vim::Flavor::CLI.start(args.strip().split(/\s+/).map {|a| expand(a)})
10
- rescue RuntimeError => e
11
- @last_error = e
12
- ensure
13
- $stdout = original_stdout
14
- end
15
- if mode == 'but'
16
- raise RuntimeError, 'Command succeeded unexpectedly' if not @last_error
17
- else
18
- raise @last_error if @last_error
19
- end
20
- end
21
- ensure
22
- ENV['HOME'] = original_home
23
- end
1
+ Then 'it should pass' do
2
+ steps %Q{
3
+ Then it should pass with:
4
+ """
5
+ """
6
+ }
24
7
  end
25
8
 
26
- Then /^it succeeds$/ do
27
- @last_error.should be_nil
28
- end
29
-
30
- Then /^it fails with messages like$/ do |pattern|
31
- @last_error.should_not be_nil
32
- @last_error.message.should match Regexp.new(pattern.strip().gsub(/\s+/, '\s+'))
33
- end
34
-
35
- Then 'it outputs progress as follows' do |text|
36
- # For some reason, Cucumber drops the last newline from every docstring...
37
- @output.string.should include expand(text + "\n")
38
- end
39
-
40
- Then 'it outputs progress like' do |pattern|
41
- # For some reason, Cucumber drops the last newline from every docstring...
42
- @output.string.should match Regexp.new(expand(pattern + "\n"))
9
+ Then /^it should (pass|fail) with template:$/ do |pass_fail, template|
10
+ self.__send__("assert_#{pass_fail}ing_with", expand(template))
43
11
  end
@@ -1,3 +1,5 @@
1
- Then /^it stores a dependency '(.*)' in '(.*)'$/ do |repo_name, vdir|
2
- Dir.should exist expand("#{vdir}/#{repo_name.zap}")
1
+ Then /^a dependency "(.*)" is stored in "(.*)"$/ do |repo_name, deps_path|
2
+ steps %Q{
3
+ Then a directory named "#{deps_path}/#{repo_name.zap}" should exist
4
+ }
3
5
  end
@@ -1,23 +1,6 @@
1
- require 'tmpdir'
2
-
3
- Given /^a temporary directory called '(.+)'$/ do |name|
4
- path = Dir.mktmpdir
5
- at_exit do
6
- delete_path path
1
+ When /^I remove the directory "([^"]*)"$/ do |dir_name|
2
+ in_current_dir do
3
+ # FileUtils#rmdir cannot delete non-empty directories.
4
+ FileUtils.rm_r(dir_name)
7
5
  end
8
- variable_table[name] = path
9
- end
10
-
11
- Given /^a home directory called '(.+)' in '(.+)'$/ do |name, virtual_path|
12
- actual_path = expand(virtual_path)
13
- Dir.mkdir actual_path, 0700
14
- variable_table[name] = actual_path
15
- end
16
-
17
- Given /^I don't have a directory called '(.+)'$/ do |virtual_path|
18
- Dir.should_not exist(expand(virtual_path))
19
- end
20
-
21
- Given /^I delete '(.+)'$/ do |virtual_path|
22
- delete_path expand(virtual_path)
23
6
  end
@@ -1,9 +1,9 @@
1
- Given /^a file called '(.*)'$/ do |virtual_path, content|
2
- create_file expand(virtual_path), expand(content)
3
- end
4
-
5
- Given /^an executable called '(.*)'$/ do |virtual_path, content|
6
- path = expand(virtual_path)
7
- create_file path, expand(content)
8
- File.chmod(0755, path)
1
+ Given /^an executable file named "(.*)" with:$/ do |file_path, content|
2
+ steps %Q{
3
+ Given a file named "#{file_path}" with:
4
+ """
5
+ #{content}
6
+ """
7
+ }
8
+ File.chmod(0755, File.join([current_dir, file_path]))
9
9
  end
@@ -1,4 +1,4 @@
1
- Given /^a repository '(.+)' with versions '(.+)'$/ do |basename, versions|
1
+ Given /^a (?:(?:GitHub|local) )?repository "(.+)" with versions "(.+)"$/ do |basename, versions|
2
2
  repository_path = make_repo_path(basename)
3
3
  doc_name = basename.split('/').last.sub(/^vim-/, '')
4
4
  variable_table["#{basename}_uri"] = make_repo_uri(basename)
@@ -19,28 +19,36 @@ Given /^a repository '(.+)' with versions '(.+)'$/ do |basename, versions|
19
19
  END
20
20
  end
21
21
 
22
- Given /^a repository '(.+)' from offline cache$/ do |repo_name|
23
- repository_path = make_repo_path(repo_name)
22
+ Given /^a repository "(.+)" from offline cache$/ do |repo_name|
23
+ repository_path = make_repo_path(repo_name).sub(expand('$tmp/'), '')
24
24
  sh <<-"END"
25
25
  {
26
- git clone 'vendor/#{repo_name}' '#{repository_path}'
26
+ git clone 'vendor/#{repo_name}' '#{current_dir}/#{repository_path}'
27
27
  } >/dev/null
28
28
  END
29
29
  end
30
30
 
31
- Given /^I disable network to the original repository of '(.+)'$/ do |basename|
32
- delete_path make_repo_path(basename)
31
+ Given /^I disable network to the original repository of "(.+)"$/ do |basename|
32
+ steps %Q{
33
+ Given I remove the directory "#{make_repo_path(basename)}"
34
+ }
33
35
  end
34
36
 
35
- Then /^I get flavor '(.+)' with '(.+)' in '(.+)'$/ do |v_repo_name, version, virtual_path|
36
- flavor_path = make_flavor_path(expand(virtual_path), expand(v_repo_name))
37
+ Then /^a flavor "(.+)" version "(.+)" is deployed to "(.+)"$/ do |v_repo_name, version, v_vimfiles_path|
38
+ flavor_path = make_flavor_path(expand(v_vimfiles_path), expand(v_repo_name))
37
39
  basename = expand(v_repo_name).split('/').last.sub(/^vim-/, '')
38
- File.open("#{flavor_path}/doc/#{basename}.txt", 'r').read().should ==
39
- "*#{basename}* #{version}\n"
40
- File.should exist("#{flavor_path}/doc/tags")
40
+ steps %Q{
41
+ Then the file "#{flavor_path}/doc/#{basename}.txt" should contain:
42
+ """
43
+ *#{basename}* #{version}
44
+ """
45
+ Then a file named "#{flavor_path}/doc/tags" should exist
46
+ }
41
47
  end
42
48
 
43
- Then /^I don't have flavor '(.+)' in '(.+)'$/ do |v_repo_name, virtual_path|
44
- flavor_path = make_flavor_path(expand(virtual_path), expand(v_repo_name))
45
- Dir.should_not exist(flavor_path)
49
+ Then /^a flavor "(.+)" is not deployed to "(.+)"$/ do |v_repo_name, v_vimfiles_path|
50
+ flavor_path = make_flavor_path(expand(v_vimfiles_path), expand(v_repo_name))
51
+ steps %Q{
52
+ Then a directory named "#{flavor_path}" should not exist
53
+ }
46
54
  end
@@ -1,12 +1,17 @@
1
- Given 'flavorfile' do |content|
2
- create_file expand('$tmp').to_flavorfile_path, expand(content)
1
+ Given 'a flavorfile with:' do |content|
2
+ steps %Q{
3
+ Given a file named "#{'.'.to_flavorfile_path}" with:
4
+ """
5
+ #{expand(content)}
6
+ """
7
+ }
3
8
  end
4
9
 
5
- When 'I edit flavorfile as' do |content|
10
+ When 'I edit the flavorfile as:' do |content|
6
11
  steps %Q{
7
- Given flavorfile
8
- """
9
- #{content}
10
- """
12
+ Given a flavorfile with:
13
+ """
14
+ #{content}
15
+ """
11
16
  }
12
17
  end
@@ -1,13 +1,24 @@
1
- Given 'lockfile' do |content|
2
- create_file expand('$tmp').to_lockfile_path, expand(content)
1
+ Given 'a lockfile with:' do |content|
2
+ steps %Q{
3
+ Given a file named "#{'.'.to_lockfile_path}" with:
4
+ """
5
+ #{expand(content)}
6
+ """
7
+ }
3
8
  end
4
9
 
5
- Given /^I delete lockfile$/ do
6
- delete_path expand('$tmp').to_lockfile_path
10
+ Given 'I delete the lockfile' do
11
+ steps %Q{
12
+ Given I remove the file "#{'.'.to_lockfile_path}"
13
+ }
7
14
  end
8
15
 
9
- Then 'I get lockfile' do |content|
16
+ Then /^(?:a|the) lockfile is (?:created|updated) with:$/ do |content|
10
17
  # For some reason, Cucumber drops the last newline from every docstring...
11
- File.open(expand('$tmp').to_lockfile_path, 'r').read().should ==
12
- (content == '' ? '' : expand(content) + "\n")
18
+ steps %Q{
19
+ Then the file "#{'.'.to_lockfile_path}" should contain exactly:
20
+ """
21
+ #{content == '' ? '' : expand(content) + "\n"}
22
+ """
23
+ }
13
24
  end
@@ -1,29 +1,11 @@
1
+ require 'aruba/api'
2
+ require 'aruba/cucumber'
1
3
  require 'fileutils'
2
4
  require 'vim-flavor'
3
5
 
4
6
  class FakeUserEnvironment
5
7
  include Vim::Flavor::ShellUtility
6
8
 
7
- def initialize()
8
- env = self
9
- Vim::Flavor::Flavor.instance_eval do
10
- @github_repo_uri = lambda {|user, repo|
11
- "file://#{env.expand('$tmp')}/repos/#{user}/#{repo}"
12
- }
13
- end
14
- end
15
-
16
- def create_file path, content
17
- FileUtils.mkdir_p(File.dirname(path))
18
- File.open(path, 'w') do |f|
19
- f.write(content)
20
- end
21
- end
22
-
23
- def delete_path path
24
- FileUtils.remove_entry_secure(path)
25
- end
26
-
27
9
  def expand(virtual_path)
28
10
  virtual_path.gsub(/\$([a-z_]+)/) {
29
11
  variable_table[$1]
@@ -47,8 +29,23 @@ class FakeUserEnvironment
47
29
  end
48
30
  end
49
31
 
32
+ Before do
33
+ variable_table['tmp'] = File.absolute_path(current_dir)
34
+
35
+ steps %Q{
36
+ Given a directory named "home"
37
+ }
38
+ variable_table['home'] = File.absolute_path(File.join([current_dir, 'home']))
39
+ end
40
+
41
+ Aruba.configure do |config|
42
+ config.before_cmd do |cmd|
43
+ set_env 'HOME', variable_table['home']
44
+ set_env 'VIM_FLAVOR_GITHUB_URI_PREFIX', expand('file://$tmp/repos/')
45
+ set_env 'VIM_FLAVOR_GITHUB_URI_SUFFIX', ''
46
+ end
47
+ end
48
+
50
49
  World do
51
50
  FakeUserEnvironment.new
52
51
  end
53
-
54
- ENV['THOR_DEBUG'] = '1' # To raise an exception as is.
@@ -4,18 +4,16 @@ Feature: Dependencies
4
4
  I want to hide details to do proper testing.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'kana/vim-vspec' from offline cache
10
- And a repository 'kana/vim-textobj-user' from offline cache
7
+ Given a repository "kana/vim-vspec" from offline cache
8
+ And a repository "kana/vim-textobj-user" from offline cache
11
9
 
12
10
  Scenario: Testing a Vim plugin with dependencies
13
- Given flavorfile
14
- """
11
+ Given a flavorfile with:
12
+ """ruby
15
13
  flavor 'kana/vim-textobj-user', '~> 0.3'
16
14
  """
17
- And a file called '$tmp/plugin/textobj/date.vim'
18
- """
15
+ And a file named "plugin/textobj/date.vim" with:
16
+ """vim
19
17
  call textobj#user#plugin('date', {
20
18
  \ '-': {
21
19
  \ '*pattern*': '\v<\d{4}-\d{2}-\d{2}>',
@@ -23,8 +21,8 @@ Feature: Dependencies
23
21
  \ }
24
22
  \ })
25
23
  """
26
- And a file called '$tmp/t/basics.vim'
27
- """
24
+ And a file named "t/basics.vim" with:
25
+ """vim
28
26
  " Tests are written with vim-vspec.
29
27
  runtime! plugin/textobj/date.vim
30
28
  describe 'Text object: date'
@@ -34,8 +32,7 @@ Feature: Dependencies
34
32
  end
35
33
  """
36
34
  When I run `vim-flavor test`
37
- Then it succeeds
38
- And it outputs progress like
35
+ Then it should pass with regexp:
39
36
  """
40
37
  -------- Preparing dependencies
41
38
  Checking versions...
@@ -52,10 +49,10 @@ Feature: Dependencies
52
49
  Files=1, Tests=1, \d+ wallclock secs .*
53
50
  Result: PASS
54
51
  """
55
- And I get lockfile
52
+ And a lockfile is created with:
56
53
  """
57
54
  kana/vim-textobj-user (0.3.12)
58
55
  kana/vim-vspec (1.1.0)
59
56
  """
60
- And it stores a dependency 'kana/vim-vspec' in '$tmp/.vim-flavor/deps'
61
- And it stores a dependency 'kana/vim-textobj-user' in '$tmp/.vim-flavor/deps'
57
+ And a dependency "kana/vim-vspec" is stored in ".vim-flavor/deps"
58
+ And a dependency "kana/vim-textobj-user" is stored in ".vim-flavor/deps"
@@ -0,0 +1,60 @@
1
+ Feature: Failures
2
+ In order to automate varisous processes about testing Vim plugins,
3
+ As a lazy Vim user,
4
+ I want to get a proper exit status according to test results.
5
+
6
+ Background:
7
+ Given a repository "kana/vim-vspec" from offline cache
8
+
9
+ Scenario: Failed test cases
10
+ Given a flavorfile with:
11
+ """ruby
12
+ # No dependency
13
+ """
14
+ And a file named "plugin/foo.vim" with:
15
+ """vim
16
+ let g:foo = 3
17
+ """
18
+ And a file named "t/basics.vim" with:
19
+ """vim
20
+ runtime! plugin/foo.vim
21
+ describe 'g:foo'
22
+ it 'is equal to 5'
23
+ Expect g:foo == 5
24
+ end
25
+ end
26
+ """
27
+ When I run `vim-flavor test`
28
+ Then it should fail with regexp:
29
+ """
30
+ -------- Preparing dependencies
31
+ Checking versions...
32
+ Use kana/vim-vspec ... 1.1.0
33
+ Deploying plugins...
34
+ kana/vim-vspec 1.1.0 ... done
35
+ -------- Testing a Vim plugin
36
+ Files=0, Tests=0, 0 wallclock secs (.*)
37
+ Result: NOTESTS
38
+ t/basics.vim ..\s
39
+ not ok 1 - g:foo is equal to 5\r
40
+ # Expected g:foo == 5\r
41
+ # Actual value: 3\r
42
+ # Expected value: 5\r
43
+ Failed 1/1 subtests
44
+
45
+ Test Summary Report
46
+ -------------------
47
+ t/basics.vim \(Wstat: 0 Tests: 1 Failed: 1\)
48
+ Failed test: 1
49
+ Files=1, Tests=1, 0 wallclock secs (.*)
50
+ Result: FAIL
51
+ """
52
+ And the output should not contain:
53
+ """
54
+ :in `test':
55
+ """
56
+ And a lockfile with:
57
+ """
58
+ kana/vim-vspec (1.1.0)
59
+ """
60
+ And a dependency "kana/vim-vspec" is stored in ".vim-flavor/deps"
@@ -4,21 +4,19 @@ Feature: Typical usage
4
4
  I want to hide details to do proper testing.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'kana/vim-vspec' from offline cache
7
+ Given a repository "kana/vim-vspec" from offline cache
10
8
 
11
9
  Scenario: Testing a Vim plugin without any dependency
12
- Given flavorfile
13
- """
10
+ Given a flavorfile with:
11
+ """ruby
14
12
  # No dependency
15
13
  """
16
- And a file called '$tmp/plugin/foo.vim'
17
- """
14
+ And a file named "plugin/foo.vim" with:
15
+ """vim
18
16
  let g:foo = 3
19
17
  """
20
- And a file called '$tmp/t/basics.vim'
21
- """
18
+ And a file named "t/basics.vim" with:
19
+ """vim
22
20
  " Tests are written with vim-vspec.
23
21
  runtime! plugin/foo.vim
24
22
  describe 'g:foo'
@@ -27,8 +25,8 @@ Feature: Typical usage
27
25
  end
28
26
  end
29
27
  """
30
- And an executable called '$tmp/t/sh.t'
31
- """
28
+ And an executable file named "t/sh.t" with:
29
+ """bash
32
30
  #!/bin/bash
33
31
  # It is also possible to write tests with arbitrary tools.
34
32
  # Such tests must output results in Test Anything Protocol.
@@ -36,8 +34,7 @@ Feature: Typical usage
36
34
  echo '1..1'
37
35
  """
38
36
  When I run `vim-flavor test`
39
- Then it succeeds
40
- And it outputs progress like
37
+ Then it should pass with regexp:
41
38
  """
42
39
  -------- Preparing dependencies
43
40
  Checking versions...
@@ -54,8 +51,8 @@ Feature: Typical usage
54
51
  Files=1, Tests=1, \d+ wallclock secs .*
55
52
  Result: PASS
56
53
  """
57
- And I get lockfile
54
+ And a lockfile is created with:
58
55
  """
59
56
  kana/vim-vspec (1.1.0)
60
57
  """
61
- And it stores a dependency 'kana/vim-vspec' in '$tmp/.vim-flavor/deps'
58
+ And a dependency "kana/vim-vspec" is stored in ".vim-flavor/deps"
@@ -5,20 +5,19 @@ Feature: Deploy Vim plugins to a non-standard directory
5
5
  I want to deploy Vim plugins to arbitrary place.
6
6
 
7
7
  Background:
8
- Given a temporary directory called 'tmp'
9
- And a home directory called 'home' in '$tmp/home'
10
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
8
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
11
9
 
12
10
  Scenario: Install to specified vimfiles path which does not exist
13
- Given flavorfile
11
+ Given a flavorfile with:
14
12
  """ruby
15
13
  flavor '$foo_uri'
16
14
  """
17
- And I don't have a directory called '$tmp/my-vimfiles'
18
- When I run `vim-flavor install --vimfiles-path=$tmp/my-vimfiles`
19
- Then I get lockfile
15
+ And a directory named "my-vimfiles" should not exist
16
+ When I run `vim-flavor install --vimfiles-path=my-vimfiles`
17
+ Then it should pass
18
+ And a lockfile is created with:
20
19
  """
21
20
  $foo_uri (1.0.2)
22
21
  """
23
- And I get a bootstrap script in '$tmp/my-vimfiles'
24
- And I get flavor '$foo_uri' with '1.0.2' in '$tmp/my-vimfiles'
22
+ And a bootstrap script is created in "my-vimfiles"
23
+ And a flavor "$foo_uri" version "1.0.2" is deployed to "my-vimfiles"
@@ -5,22 +5,21 @@ Feature: Install Vim plugins
5
5
  I want to use a declarative way to start using new Vim plugins.
6
6
 
7
7
  Background:
8
- Given a temporary directory called 'tmp'
9
- And a home directory called 'home' in '$tmp/home'
10
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
8
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
11
9
 
12
10
  Scenario: Install from scratch
13
- Given flavorfile
11
+ Given a flavorfile with:
14
12
  """ruby
15
13
  """
16
- When I edit flavorfile as
14
+ When I edit the flavorfile as:
17
15
  """ruby
18
16
  flavor '$foo_uri'
19
17
  """
20
18
  And I run `vim-flavor install`
21
- Then I get lockfile
19
+ Then it should pass
20
+ And a lockfile is created with:
22
21
  """
23
22
  $foo_uri (1.0.2)
24
23
  """
25
- And I get a bootstrap script in '$home/.vim'
26
- And I get flavor '$foo_uri' with '1.0.2' in '$home/.vim'
24
+ And a bootstrap script is created in "$home/.vim"
25
+ And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
@@ -5,27 +5,27 @@ Feature: Uninstall Vim plugins
5
5
  I want to use a declarative way to delete Vim plugins from my configuration.
6
6
 
7
7
  Background:
8
- Given a temporary directory called 'tmp'
9
- And a home directory called 'home' in '$tmp/home'
10
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
11
- And a repository 'bar' with versions '2.0.0 2.0.1 2.0.2'
8
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
9
+ And a repository "bar" with versions "2.0.0 2.0.1 2.0.2"
12
10
 
13
11
  Scenario: Install after deleting some flavors in flavorfile
14
- Given flavorfile
12
+ Given a flavorfile with:
15
13
  """ruby
16
14
  flavor '$foo_uri'
17
15
  flavor '$bar_uri'
18
16
  """
19
17
  And I run `vim-flavor install`
20
- When I edit flavorfile as
18
+ And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
19
+ When I edit the flavorfile as:
21
20
  """ruby
22
21
  flavor '$bar_uri'
23
22
  """
24
- And I run `vim-flavor install` again
25
- Then I get lockfile
23
+ And I run `vim-flavor install`
24
+ Then it should pass
25
+ And a lockfile is created with:
26
26
  """
27
27
  $bar_uri (2.0.2)
28
28
  """
29
- And I get a bootstrap script in '$home/.vim'
30
- And I get flavor '$bar_uri' with '2.0.2' in '$home/.vim'
31
- But I don't have flavor '$foo_uri' in '$home/.vim'
29
+ And a bootstrap script is created in "$home/.vim"
30
+ And a flavor "$bar_uri" version "2.0.2" is deployed to "$home/.vim"
31
+ But a flavor "$foo_uri" is not deployed to "$home/.vim"
@@ -5,23 +5,22 @@ Feature: Upgrade Vim plugins
5
5
  I want to use a declarative way to upgrade my favorite Vim plugins.
6
6
 
7
7
  Background:
8
- Given a temporary directory called 'tmp'
9
- And a home directory called 'home' in '$tmp/home'
10
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
8
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
11
9
 
12
10
  Scenario: Upgrade with lockfile
13
- Given flavorfile
11
+ Given a flavorfile with:
14
12
  """ruby
15
13
  flavor '$foo_uri'
16
14
  """
17
- And lockfile
15
+ And a lockfile with:
18
16
  """
19
17
  $foo_uri (1.0.0)
20
18
  """
21
19
  When I run `vim-flavor upgrade`
22
- Then I get lockfile
20
+ Then it should pass
21
+ And the lockfile is updated with:
23
22
  """
24
23
  $foo_uri (1.0.2)
25
24
  """
26
- And I get a bootstrap script in '$home/.vim'
27
- And I get flavor '$foo_uri' with '1.0.2' in '$home/.vim'
25
+ And a bootstrap script is created in "$home/.vim"
26
+ And a flavor "$foo_uri" version "1.0.2" is deployed to "$home/.vim"
@@ -4,23 +4,22 @@ Feature: Version lock
4
4
  I want to keep versions of Vim plugins which I installed before.
5
5
 
6
6
  Background:
7
- Given a temporary directory called 'tmp'
8
- And a home directory called 'home' in '$tmp/home'
9
- And a repository 'foo' with versions '1.0.0 1.0.1 1.0.2'
7
+ Given a repository "foo" with versions "1.0.0 1.0.1 1.0.2"
10
8
 
11
9
  Scenario: Install with lockfile
12
- Given flavorfile
10
+ Given a flavorfile with:
13
11
  """ruby
14
12
  flavor '$foo_uri'
15
13
  """
16
- And lockfile
14
+ And a lockfile with:
17
15
  """
18
16
  $foo_uri (1.0.0)
19
17
  """
20
18
  When I run `vim-flavor install`
21
- Then I get lockfile
19
+ Then it should pass
20
+ And the lockfile is updated with:
22
21
  """
23
22
  $foo_uri (1.0.0)
24
23
  """
25
- And I get a bootstrap script in '$home/.vim'
26
- And I get flavor '$foo_uri' with '1.0.0' in '$home/.vim'
24
+ And a bootstrap script is created in "$home/.vim"
25
+ And a flavor "$foo_uri" version "1.0.0" is deployed to "$home/.vim"
@@ -34,16 +34,10 @@ module Vim
34
34
  def default_vimfiles_path
35
35
  ENV['HOME'].to_vimfiles_path
36
36
  end
37
+ end
37
38
 
38
- def normalize_groups(s)
39
- groups =
40
- (s || '').
41
- split(/,/).
42
- map(&:strip).
43
- reject(&:empty?).
44
- map(&:to_sym)
45
- 0 < groups.length ? groups : nil
46
- end
39
+ def self.exit_on_failure?
40
+ true
47
41
  end
48
42
  end
49
43
  end
@@ -24,7 +24,7 @@ module Vim
24
24
 
25
25
  deploy_flavors(
26
26
  lockfile.flavors.select {|f| f.group == :runtime},
27
- vimfiles_path.to_flavors_path
27
+ File.absolute_path(vimfiles_path).to_flavors_path
28
28
  )
29
29
 
30
30
  trace "Completed.\n"
@@ -69,19 +69,21 @@ module Vim
69
69
  def deploy_flavors(flavors, flavors_path)
70
70
  trace "Deploying plugins...\n"
71
71
 
72
+ a_flavors_path = File.absolute_path(flavors_path)
73
+
72
74
  FileUtils.rm_rf(
73
- [flavors_path],
75
+ [a_flavors_path],
74
76
  :secure => true
75
77
  )
76
78
 
77
- create_vim_script_for_bootstrap(flavors_path)
79
+ create_vim_script_for_bootstrap(a_flavors_path)
78
80
 
79
81
  flavors.
80
82
  before_each {|f| trace " #{f.repo_name} #{f.locked_version} ..."}.
81
83
  after_each {|f| trace " done\n"}.
82
84
  on_failure {trace " failed\n"}.
83
85
  each do |f|
84
- f.deploy(flavors_path)
86
+ f.deploy(a_flavors_path)
85
87
  end
86
88
  end
87
89
 
@@ -150,12 +152,12 @@ module Vim
150
152
  plugin_paths = lockfile.flavors.map {|f|
151
153
  "#{deps_path}/#{f.repo_name.zap}"
152
154
  }
153
- # FIXME: Testing messages are not outputted in real time.
154
- print sh %Q{
155
+ succeeded = system %Q{
155
156
  prove --ext '.t' #{prove_options} &&
156
157
  prove --ext '.vim' #{prove_options} \
157
158
  --exec '#{vspec} #{Dir.getwd()} #{plugin_paths.join(' ')}'
158
159
  }
160
+ exit(1) unless succeeded
159
161
  end
160
162
  end
161
163
  end
@@ -27,10 +27,9 @@ module Vim
27
27
  end
28
28
 
29
29
  def self.github_repo_uri(user, repo)
30
- @github_repo_uri ||= lambda {|user, repo|
31
- "git://github.com/#{user}/#{repo}.git"
32
- }
33
- @github_repo_uri.call(user, repo)
30
+ p = (ENV['VIM_FLAVOR_GITHUB_URI_PREFIX'] ||= 'git://github.com/')
31
+ s = (ENV['VIM_FLAVOR_GITHUB_URI_SUFFIX'] ||= '.git')
32
+ "#{p}#{user}/#{repo}#{s}"
34
33
  end
35
34
 
36
35
  def repo_uri
@@ -1,5 +1,5 @@
1
1
  module Vim
2
2
  module Flavor
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
  end
5
5
  end
@@ -18,6 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency('parslet', '~> 1.0')
19
19
  gem.add_dependency('thor', '~> 0.14')
20
20
 
21
+ gem.add_development_dependency('aruba', '~> 0.5')
21
22
  gem.add_development_dependency('cucumber', '~> 1.2')
22
23
  gem.add_development_dependency('rspec', '~> 2.8')
23
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vim-flavor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-04 00:00:00.000000000 Z
12
+ date: 2012-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parslet
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0.14'
46
+ - !ruby/object:Gem::Dependency
47
+ name: aruba
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0.5'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.5'
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: cucumber
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +132,7 @@ files:
116
132
  - features/support/env.rb
117
133
  - features/testing_vim_plugins/README.md
118
134
  - features/testing_vim_plugins/dependencies.feature
135
+ - features/testing_vim_plugins/failures.feature
119
136
  - features/testing_vim_plugins/typical_usage.feature
120
137
  - features/typical_usage/README.md
121
138
  - features/typical_usage/deploy_to_arbitrary_place.feature
@@ -193,6 +210,7 @@ test_files:
193
210
  - features/support/env.rb
194
211
  - features/testing_vim_plugins/README.md
195
212
  - features/testing_vim_plugins/dependencies.feature
213
+ - features/testing_vim_plugins/failures.feature
196
214
  - features/testing_vim_plugins/typical_usage.feature
197
215
  - features/typical_usage/README.md
198
216
  - features/typical_usage/deploy_to_arbitrary_place.feature