vim-flavor 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a818d197eec161218d1c58cd0fd414a3938c7db
4
- data.tar.gz: c2afd93c592d5944354ed61e1a8cf8b7abd756bc
3
+ metadata.gz: 3af3445611a09f669898cdd66a43f7591dc17b1a
4
+ data.tar.gz: 1ded87c558b1572b3f7a8099e71c9d64ac84126f
5
5
  SHA512:
6
- metadata.gz: ba27a0c96e51e0fe5b98d68e8ef493632dcbc48f95555bdaa390bc0aaa3ca197c8830d054cd6d0334e56d490b2a04f13283f0e358a3cff74f50ed75f37a49f7b
7
- data.tar.gz: afcb9952d6fb377449a6a634d758bacf1118ebdec02b806ea85479ab310643ea99f27c1104baa99c94ec5bd4cbe96691fb6a8374cbcf9e0f1b4c7e4daee8b516
6
+ metadata.gz: 01a5437a08c3acf45fa9f071099d1cd4f5e7bb1af8bd710f7e0fb9533fc5995ed126d7391b3cd50b3be277e3d9124ad65a667a5e6735f5c503dcbe7cb089b330
7
+ data.tar.gz: aa9837dd97da4f11979b9762dcf443a55526e62bceee3edaad4aeedf9981350b5c6abbc655fa6a046c1902e6c6034da8e9e88ae278e15fcff4fdd4bac028467c
@@ -0,0 +1,88 @@
1
+ Feature: Upgrade outdated dependencies of Vim plugins
2
+ In order to smoothly install Vim plugins,
3
+ as a lazy Vim user,
4
+ I want to automatically upgrade outdated dependencies of Vim plugins.
5
+
6
+ Scenario: Some plugins use outdated dependencies
7
+ Given a repository "L" with versions "0.1 0.2 0.3 0.4"
8
+ And a repository "A" with versions "0.0" and a flavorfile:
9
+ """ruby
10
+ flavor '$L_uri', '~> 0.3'
11
+ """
12
+ And a repository "B" with versions "0.0" and a flavorfile:
13
+ """ruby
14
+ flavor '$L_uri', '~> 0.3'
15
+ """
16
+ And a flavorfile with:
17
+ """ruby
18
+ flavor '$A_uri'
19
+ flavor '$B_uri'
20
+ flavor '$L_uri'
21
+ """
22
+ And I run `vim-flavor install`
23
+ And it should pass with template:
24
+ """
25
+ Checking versions...
26
+ Use $A_uri ... 0.0
27
+ Use $L_uri ... 0.4
28
+ Use $B_uri ... 0.0
29
+ Use $L_uri ... 0.4
30
+ Use $L_uri ... 0.4
31
+ Deploying plugins...
32
+ $A_uri 0.0 ... done
33
+ $B_uri 0.0 ... done
34
+ $L_uri 0.4 ... done
35
+ Completed.
36
+ """
37
+ And a lockfile is created with:
38
+ """
39
+ $A_uri (0.0)
40
+ $B_uri (0.0)
41
+ $L_uri (0.4)
42
+ """
43
+ And a bootstrap script is created in "$home/.vim"
44
+ And a flavor "$A_uri" version "0.0" is deployed to "$home/.vim"
45
+ And a flavor "$B_uri" version "0.0" is deployed to "$home/.vim"
46
+ And a flavor "$L_uri" version "0.4" is deployed to "$home/.vim"
47
+ When "L" version "0.5" is released
48
+ And a repository "X" with versions "0.0" and a flavorfile:
49
+ """ruby
50
+ flavor '$L_uri', '~> 0.5'
51
+ """
52
+ And I edit the flavorfile as:
53
+ """ruby
54
+ flavor '$A_uri'
55
+ flavor '$B_uri'
56
+ flavor '$L_uri'
57
+ flavor '$X_uri'
58
+ """
59
+ And I run `vim-flavor install`
60
+ Then it should pass with template:
61
+ """
62
+ Checking versions...
63
+ Use $A_uri ... 0.0
64
+ Use $L_uri ... 0.4
65
+ Use $B_uri ... 0.0
66
+ Use $L_uri ... 0.4
67
+ Use $L_uri ... 0.4
68
+ Use $X_uri ... 0.0
69
+ Use $L_uri ... 0.5
70
+ Deploying plugins...
71
+ $A_uri 0.0 ... skipped (already deployed)
72
+ $B_uri 0.0 ... skipped (already deployed)
73
+ $L_uri 0.5 ... done
74
+ $X_uri 0.0 ... done
75
+ Completed.
76
+ """
77
+ And a lockfile is created with:
78
+ """
79
+ $A_uri (0.0)
80
+ $B_uri (0.0)
81
+ $L_uri (0.5)
82
+ $X_uri (0.0)
83
+ """
84
+ And a bootstrap script is created in "$home/.vim"
85
+ And a flavor "$A_uri" version "0.0" is deployed to "$home/.vim"
86
+ And a flavor "$B_uri" version "0.0" is deployed to "$home/.vim"
87
+ And a flavor "$L_uri" version "0.5" is deployed to "$home/.vim"
88
+ And a flavor "$X_uri" version "0.0" is deployed to "$home/.vim"
@@ -33,7 +33,7 @@ FF
33
33
  end
34
34
 
35
35
  def expand(virtual_path)
36
- virtual_path.gsub(/\$([a-z_]+)/) {
36
+ virtual_path.gsub(/\$([A-Za-z_]+)/) {
37
37
  variable_table[$1]
38
38
  }
39
39
  end
@@ -89,26 +89,40 @@ module Vim
89
89
 
90
90
  def complete(current_flavor_table, locked_flavor_table, mode, level = 1)
91
91
  nfs = complete_flavors(current_flavor_table, locked_flavor_table, mode, level, 'you')
92
- nfgs = nfs.group_by {|nf| nf.repo_name}
93
92
 
94
93
  Hash[
95
- nfgs.keys.map {|repo_name|
96
- nfg = nfgs[repo_name]
97
- vs = nfg.group_by {|nf| nf.locked_version}.values
98
- if 2 <= vs.length
99
- ss = []
100
- ss << 'Found incompatible declarations:'
101
- nfg.each do |nf|
102
- ss << " #{nf.repo_name} #{nf.version_constraint} is required by #{nf.requirer}"
103
- end
104
- ss << 'Please resolve the conflict.'
105
- abort ss.join("\n")
106
- end
107
- [repo_name, nfg.first]
94
+ nfs.group_by {|nf| nf.repo_name}.map {|repo_name, nfg|
95
+ [repo_name, choose_a_flavor(nfg)]
108
96
  }
109
97
  ]
110
98
  end
111
99
 
100
+ def choose_a_flavor(nfg)
101
+ vs = nfg.map {|nf| nf.locked_version}.uniq
102
+ if vs.length == 1
103
+ nfg.first
104
+ else
105
+ latest_version = vs.max()
106
+ if nfg.all? {|nf| nf.satisfied_with?(latest_version)}
107
+ nf = nfg.first
108
+ nf.use_specific_version(latest_version)
109
+ nf
110
+ else
111
+ stop_by_incompatible_declarations(nfg)
112
+ end
113
+ end
114
+ end
115
+
116
+ def stop_by_incompatible_declarations(nfg)
117
+ ss = []
118
+ ss << 'Found incompatible declarations:'
119
+ nfg.each do |nf|
120
+ ss << " #{nf.repo_name} #{nf.version_constraint} is required by #{nf.requirer}"
121
+ end
122
+ ss << 'Please resolve the conflict.'
123
+ abort ss.join("\n")
124
+ end
125
+
112
126
  def complete_flavors(current_flavor_table, locked_flavor_table, mode, level, requirer)
113
127
  current_flavor_table.values.map(&:dup).sort_by(&:repo_name).
114
128
  on_failure {trace " failed\n"}.
@@ -129,7 +143,7 @@ module Vim
129
143
  already_cached = nf.cached?
130
144
  nf.clone() unless already_cached
131
145
 
132
- if mode == :install and lf and nf.satisfied_with?(lf)
146
+ if mode == :install and lf and nf.satisfied_with?(lf.locked_version)
133
147
  if not nf.cached_version?(lf.locked_version)
134
148
  nf.fetch()
135
149
  if not nf.cached_version?(lf.locked_version)
@@ -135,9 +135,8 @@ module Vim
135
135
  versions_from_tags(list_tags())
136
136
  end
137
137
 
138
- def satisfied_with?(locked_flavor)
139
- repo_name == locked_flavor.repo_name &&
140
- version_constraint.compatible?(locked_flavor.locked_version)
138
+ def satisfied_with?(version)
139
+ version_constraint.compatible?(version)
141
140
  end
142
141
  end
143
142
  end
@@ -57,7 +57,7 @@ module Vim
57
57
  ) {
58
58
  f = Flavor.new()
59
59
  f.repo_name = repo_name.to_s
60
- f.locked_version = locked_version.to_s
60
+ f.locked_version = Version.create(locked_version.to_s)
61
61
  f
62
62
  }
63
63
  end
@@ -1,6 +1,6 @@
1
1
  module Vim
2
2
  module Flavor
3
- VERSION = '1.1.4'
3
+ VERSION = '1.1.5'
4
4
 
5
5
  class Version < Gem::Version
6
6
  attr_accessor :original_tag_name
data/spec/flavor_spec.rb CHANGED
@@ -30,24 +30,19 @@ module Vim
30
30
  f
31
31
  }
32
32
 
33
- def locked_flavor(repo_name, locked_version)
34
- f = Flavor.new()
35
- f.repo_name = repo_name
36
- f.locked_version = locked_version
37
- f
33
+ def version(s)
34
+ Version.create(s)
38
35
  end
39
36
 
40
- it {should be_satisfied_with locked_flavor('foo', '1.2.3')}
41
-
42
- it {should be_satisfied_with locked_flavor('foo', '1.2.4')}
43
- it {should be_satisfied_with locked_flavor('foo', '1.3.3')}
44
- it {should be_satisfied_with locked_flavor('foo', '2.2.3')}
37
+ it {should be_satisfied_with version('1.2.3')}
45
38
 
46
- it {should_not be_satisfied_with locked_flavor('foo', '0.2.3')}
47
- it {should_not be_satisfied_with locked_flavor('foo', '1.1.3')}
48
- it {should_not be_satisfied_with locked_flavor('foo', '1.2.2')}
39
+ it {should be_satisfied_with version('1.2.4')}
40
+ it {should be_satisfied_with version('1.3.3')}
41
+ it {should be_satisfied_with version('2.2.3')}
49
42
 
50
- it {should_not be_satisfied_with locked_flavor('bar', '1.2.3')}
43
+ it {should_not be_satisfied_with version('0.2.3')}
44
+ it {should_not be_satisfied_with version('1.1.3')}
45
+ it {should_not be_satisfied_with version('1.2.2')}
51
46
  end
52
47
  end
53
48
  end
@@ -14,10 +14,14 @@ module Vim
14
14
  def flavor(repo_name, locked_version)
15
15
  f = Flavor.new()
16
16
  f.repo_name = repo_name
17
- f.locked_version = locked_version
17
+ f.locked_version = version(locked_version)
18
18
  f
19
19
  end
20
20
 
21
+ def version(s)
22
+ Version.create(s)
23
+ end
24
+
21
25
  it 'has flavors sorted by repo_name' do
22
26
  l = LockFile.new(@tmp_path.to_lockfile_path)
23
27
  foo = flavor('foo', '1.2.3')
@@ -52,11 +56,11 @@ module Vim
52
56
 
53
57
  l.load()
54
58
  l.flavor_table['foo'].repo_name.should == 'foo'
55
- l.flavor_table['foo'].locked_version.should == '1.2.3'
59
+ l.flavor_table['foo'].locked_version.should == version('1.2.3')
56
60
  l.flavor_table['bar'].repo_name.should == 'bar'
57
- l.flavor_table['bar'].locked_version.should == '2.3.4'
61
+ l.flavor_table['bar'].locked_version.should == version('2.3.4')
58
62
  l.flavor_table['baz'].repo_name.should == 'baz'
59
- l.flavor_table['baz'].locked_version.should == '3.4.5'
63
+ l.flavor_table['baz'].locked_version.should == version('3.4.5')
60
64
  end
61
65
  end
62
66
 
@@ -70,7 +74,7 @@ module Vim
70
74
 
71
75
  l = LockFile.load_or_new(@tmp_path.to_lockfile_path)
72
76
  l.flavor_table['foo'].repo_name.should == 'foo'
73
- l.flavor_table['foo'].locked_version.should == '1.2.3'
77
+ l.flavor_table['foo'].locked_version.should == version('1.2.3')
74
78
  end
75
79
 
76
80
  it 'only creates a new instance if a given path does not exist' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vim-flavor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kana Natsuno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-09 00:00:00.000000000 Z
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parslet
@@ -115,6 +115,7 @@ files:
115
115
  - features/philosophy.md
116
116
  - features/resolve_dependencies/README.md
117
117
  - features/resolve_dependencies/basics.feature
118
+ - features/resolve_dependencies/upgrade_outdated_dependencies.feature
118
119
  - features/resolve_dependencies/version_conflict.feature
119
120
  - features/step_definitions/bootstrap_script_steps.rb
120
121
  - features/step_definitions/cli_steps.rb
@@ -202,6 +203,7 @@ test_files:
202
203
  - features/philosophy.md
203
204
  - features/resolve_dependencies/README.md
204
205
  - features/resolve_dependencies/basics.feature
206
+ - features/resolve_dependencies/upgrade_outdated_dependencies.feature
205
207
  - features/resolve_dependencies/version_conflict.feature
206
208
  - features/step_definitions/bootstrap_script_steps.rb
207
209
  - features/step_definitions/cli_steps.rb