librarianp 0.1.2 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02a5b8a8fefca65597bdf2ead8377293039a73a8
4
- data.tar.gz: b9e2a7797f3b19acfc1b7b06cc1247380698f247
3
+ metadata.gz: 32e59b1fc3a6aaa7e1f6affb7bc95ac940151489
4
+ data.tar.gz: 183d10a379c2e3d925c9e1e7f45483f9f43b24bc
5
5
  SHA512:
6
- metadata.gz: c46e3c05255a2671b969b552d1bc6bf00989dac8748bbbe3a41baeb68ec0071b93d4640e60c73a77979cfb04453276f0fe204605327eb2e7d87ef877bf77d0f6
7
- data.tar.gz: 20c6573ed3ba861117641d37abeb2a8f72227278657b1f1b7cf3cbfe202ad461a246b06e0ea04e5fc111b1b2540fe904670a7ef99053c1c8a41db23fa0ab09eb
6
+ metadata.gz: 0ede0dafff66900070bf14ea10d9a206c9081fbbeca8114982e1eb6bdf99a129135107cf0bda02d1490d15cd99dd80e790ec7b6939077c1489b7b20ea9726d84
7
+ data.tar.gz: b99e91e02d4f3ae3acc4f74b30bbc2a01cf5149ff36f12c6c8c45790e43ac97c509029c38a47f31aa633d9952063dde58cd1d049316186f8b576d79a50bc654e
@@ -1,10 +1,11 @@
1
+ sudo: false
1
2
  language: ruby
2
- script: rspec spec -b
3
+ script: bundle exec rake
3
4
  rvm:
4
- - 2.2.x
5
- - 2.1.x
6
- - 2.0.x
7
- - 1.9.x
8
- - 1.8.x
5
+ - '2.2'
6
+ - '2.1'
7
+ - '2.0'
8
+ - '1.9'
9
+ - '1.8'
9
10
  - jruby-19mode
10
11
  - jruby-18mode
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- librarianp (0.1.2)
5
- highline
4
+ librarianp (0.2.0)
6
5
  thor (~> 0.15)
7
6
 
8
7
  GEM
@@ -11,9 +10,8 @@ GEM
11
10
  diff-lcs (1.2.5)
12
11
  fakefs (0.4.2)
13
12
  ffi2-generators (0.1.1)
14
- highline (1.7.0)
15
- json (1.7.7)
16
- rake (10.0.4)
13
+ json (1.8.2)
14
+ rake (10.4.2)
17
15
  rspec (2.99.0)
18
16
  rspec-core (~> 2.99.0)
19
17
  rspec-expectations (~> 2.99.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -40,7 +40,7 @@ module Librarian
40
40
  end
41
41
 
42
42
  def create_install_path
43
- install_path.rmtree if install_path.exist?
43
+ install_path.rmtree if install_path.exist? && destructive?
44
44
  install_path.mkpath
45
45
  end
46
46
 
@@ -54,6 +54,10 @@ module Librarian
54
54
  ManifestSet.sort(lock.manifests)
55
55
  end
56
56
 
57
+ def destructive?
58
+ environment.config_db.local['destructive'] == 'true'
59
+ end
60
+
57
61
  def specfile_name
58
62
  environment.specfile_name
59
63
  end
@@ -7,7 +7,7 @@ module Librarian
7
7
  def initialize(*args)
8
8
  args = initialize_normalize_args(args)
9
9
 
10
- self.backing = Gem::Requirement.create(*args)
10
+ self.backing = Gem::Requirement.create(args)
11
11
  end
12
12
 
13
13
  def to_gem_requirement
@@ -22,6 +22,12 @@ module Librarian
22
22
  to_gem_requirement == other.to_gem_requirement
23
23
  end
24
24
 
25
+ alias :eql? :==
26
+
27
+ def hash
28
+ self.to_s.hash
29
+ end
30
+
25
31
  def to_s
26
32
  to_gem_requirement.to_s
27
33
  end
@@ -84,8 +90,30 @@ module Librarian
84
90
  def initialize_normalize_args(args)
85
91
  args.map do |arg|
86
92
  arg = arg.backing if self.class === arg
87
- arg
88
- end
93
+ case arg
94
+ when nil
95
+ nil
96
+ when Array
97
+ arg.map { |item| parse(item) }
98
+ when String
99
+ parse(arg)
100
+ else
101
+ # Gem::Requirement, convert to string (ie. =1.0) so we can concat later
102
+ # Gem::Requirements can not be concatenated
103
+ arg.requirements.map{|x,y| "#{x}#{y}"}
104
+ end
105
+ end.flatten
106
+ end
107
+
108
+ # build an array if the argument is a string defining a range
109
+ # or a ~> 1.0 type version if string is 1.x
110
+ def parse(arg)
111
+ return nil if arg.nil?
112
+ match = range_requirement(arg)
113
+ return [match[1], match[2]] if match
114
+ match = pessimistic_requirement(arg)
115
+ return "~> #{match[1]}.0" if match
116
+ arg
89
117
  end
90
118
 
91
119
  def compatible?(a, b)
@@ -94,6 +122,16 @@ module Librarian
94
122
  r = r.call(a.last, b.last) if r.respond_to?(:call)
95
123
  r
96
124
  end
125
+
126
+ # A version range: >=1.0 <2.0
127
+ def range_requirement(arg)
128
+ arg.match(/(>=? ?\d+(?:\.\d+){0,2}) (<=? ?\d+(?:\.\d+){0,2})/)
129
+ end
130
+
131
+ # A string with .x: 1.x, 2.1.x
132
+ def pessimistic_requirement(arg)
133
+ arg.match(/(\d+(?:\.\d+)?)\.x/)
134
+ end
97
135
  end
98
136
 
99
137
  attr_accessor :name, :requirement, :source
@@ -12,6 +12,12 @@ module Librarian
12
12
  self.environment = environment
13
13
  end
14
14
 
15
+ def warn(string = nil, &block)
16
+ return unless ui
17
+
18
+ ui.warn(string || yield)
19
+ end
20
+
15
21
  def info(string = nil, &block)
16
22
  return unless ui
17
23
 
@@ -6,10 +6,21 @@ module Librarian
6
6
  class Version
7
7
  include Comparable
8
8
 
9
+ @@SEMANTIC_VERSION_PATTERN = /^([0-9]+\.[0-9]+(?:\.[0-9]+)?)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/
10
+
11
+ attr_reader :prerelease
12
+
9
13
  def initialize(*args)
10
14
  args = initialize_normalize_args(args)
11
-
12
- self.backing = Gem::Version.new(*args)
15
+ semver = Version.parse_semver(*args)
16
+ if semver
17
+ self.backing = Gem::Version.new(semver[:version])
18
+ @prerelease = semver[:prerelease]
19
+ @full_version = semver[:full_version]
20
+ else
21
+ self.backing = Gem::Version.new(*args)
22
+ @full_version = to_gem_version.to_s
23
+ end
13
24
  end
14
25
 
15
26
  def to_gem_version
@@ -17,17 +28,43 @@ module Librarian
17
28
  end
18
29
 
19
30
  def <=>(other)
20
- to_gem_version <=> other.to_gem_version
31
+ cmp = to_gem_version <=> other.to_gem_version
32
+
33
+ # Should compare pre-release versions?
34
+ if cmp == 0 and not (prerelease.nil? and other.prerelease.nil?)
35
+ case # Versions without prerelease take precedence
36
+ when (prerelease.nil? and not other.prerelease.nil?)
37
+ 1
38
+ when (not prerelease.nil? and other.prerelease.nil?)
39
+ -1
40
+ else
41
+ prerelease <=> other.prerelease
42
+ end
43
+ else
44
+ cmp
45
+ end
21
46
  end
22
47
 
23
48
  def to_s
24
- to_gem_version.to_s
49
+ @full_version
25
50
  end
26
51
 
27
52
  def inspect
28
53
  "#<#{self.class} #{to_s}>"
29
54
  end
30
55
 
56
+ def self.parse_semver(version_string)
57
+ parsed = @@SEMANTIC_VERSION_PATTERN.match(version_string.strip)
58
+ if parsed
59
+ {
60
+ :full_version => parsed[0],
61
+ :version => parsed[1],
62
+ :prerelease => (PreReleaseVersion.new(parsed[2]) if parsed[2]),
63
+ :build => parsed[3]
64
+ }
65
+ end
66
+ end
67
+
31
68
  private
32
69
 
33
70
  def initialize_normalize_args(args)
@@ -40,6 +77,66 @@ module Librarian
40
77
  attr_accessor :backing
41
78
  end
42
79
 
80
+ class PreReleaseVersion
81
+
82
+ # Compares pre-release component ids using Semver 2.0.0 spec
83
+ def self.compare_components(this_id,other_id)
84
+ case # Strings have higher precedence than numbers
85
+ when (this_id.is_a?(Integer) and other_id.is_a?(String))
86
+ -1
87
+ when (this_id.is_a?(String) and other_id.is_a?(Integer))
88
+ 1
89
+ else
90
+ this_id <=> other_id
91
+ end
92
+ end
93
+
94
+ # Parses pre-release components `a.b.c` into an array ``[a,b,c]`
95
+ # Converts numeric components into +Integer+
96
+ def self.parse(prerelease)
97
+ if prerelease.nil?
98
+ []
99
+ else
100
+ prerelease.split('.').collect do |id|
101
+ id = Integer(id) if /^[0-9]+$/ =~ id
102
+ id
103
+ end
104
+ end
105
+ end
106
+
107
+ include Comparable
108
+
109
+ attr_reader :components
110
+
111
+ def initialize(prerelease)
112
+ @prerelease = prerelease
113
+ @components = PreReleaseVersion.parse(prerelease)
114
+ end
115
+
116
+ def to_s
117
+ @prerelease
118
+ end
119
+
120
+ def <=>(other)
121
+ # null-fill zip array to prevent loss of components
122
+ z = Array.new([components.length,other.components.length])
123
+
124
+ # Compare each component against the other
125
+ comp = z.zip(components,other.components).collect do |ids|
126
+ case # All components being equal, the version with more of them takes precedence
127
+ when ids[1].nil? # Self has less elements, other wins
128
+ -1
129
+ when ids[2].nil? # Other has less elements, self wins
130
+ 1
131
+ else
132
+ PreReleaseVersion.compare_components(ids[1],ids[2])
133
+ end
134
+ end
135
+ # Chose the first non-zero comparison or return 0
136
+ comp.delete_if {|c| c == 0}[0] || 0
137
+ end
138
+ end
139
+
43
140
  attr_accessor :source, :name, :extra
44
141
  private :source=, :name=, :extra=
45
142
 
@@ -137,6 +137,7 @@ module Librarian
137
137
  next if deps.include?(name)
138
138
 
139
139
  deps << name
140
+ raise(Error, "Unable to find module #{name}. The dependency descriptor may be out of sync with the lock, try running 'install' first") if index[name].nil?
140
141
  names.concat index[name].dependencies.map(&:name)
141
142
  end
142
143
  deps.to_a
@@ -30,6 +30,12 @@ module Librarian
30
30
  self.name == other.name
31
31
  end
32
32
 
33
+ alias :eql? :==
34
+
35
+ def hash
36
+ self.to_s.hash
37
+ end
38
+
33
39
  def to_spec_args
34
40
  [name, {}]
35
41
  end
@@ -52,6 +52,12 @@ module Librarian
52
52
  (self.sha.nil? || other.sha.nil? || self.sha == other.sha)
53
53
  end
54
54
 
55
+ alias :eql? :==
56
+
57
+ def hash
58
+ self.to_s.hash
59
+ end
60
+
55
61
  def to_spec_args
56
62
  options = {}
57
63
  options.merge!(:ref => ref) if ref != DEFAULTS[:ref]
@@ -29,6 +29,12 @@ module Librarian
29
29
  self.path == other.path
30
30
  end
31
31
 
32
+ alias :eql? :==
33
+
34
+ def hash
35
+ self.to_s.hash
36
+ end
37
+
32
38
  def to_spec_args
33
39
  [path.to_s, {}]
34
40
  end
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: librarianp 0.1.2 ruby lib
2
+ # stub: librarianp 0.2.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "librarianp"
6
- s.version = "0.1.2"
6
+ s.version = "0.2.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
10
10
  s.authors = ["Jay Feldblum", "Carlos Sanchez"]
11
- s.date = "2015-02-24"
11
+ s.date = "2015-02-25"
12
12
  s.description = "A Framework for Bundlers, used by librarian-puppet."
13
13
  s.email = ["y_feldblum@yahoo.com", "carlos@apache.org"]
14
14
  s.files = [".gitignore", ".rspec", ".travis.yml", "CHANGELOG.md", "Gemfile", "Gemfile.lock", "LICENSE.txt", "README.md", "Rakefile", "VERSION", "lib/librarian.rb", "lib/librarian/action.rb", "lib/librarian/action/base.rb", "lib/librarian/action/clean.rb", "lib/librarian/action/ensure.rb", "lib/librarian/action/install.rb", "lib/librarian/action/persist_resolution_mixin.rb", "lib/librarian/action/resolve.rb", "lib/librarian/action/update.rb", "lib/librarian/algorithms.rb", "lib/librarian/cli.rb", "lib/librarian/cli/manifest_presenter.rb", "lib/librarian/config.rb", "lib/librarian/config/database.rb", "lib/librarian/config/file_source.rb", "lib/librarian/config/hash_source.rb", "lib/librarian/config/source.rb", "lib/librarian/dependency.rb", "lib/librarian/dsl.rb", "lib/librarian/dsl/receiver.rb", "lib/librarian/dsl/target.rb", "lib/librarian/environment.rb", "lib/librarian/environment/runtime_cache.rb", "lib/librarian/error.rb", "lib/librarian/helpers.rb", "lib/librarian/linter/source_linter.rb", "lib/librarian/lockfile.rb", "lib/librarian/lockfile/compiler.rb", "lib/librarian/lockfile/parser.rb", "lib/librarian/logger.rb", "lib/librarian/manifest.rb", "lib/librarian/manifest_set.rb", "lib/librarian/mock.rb", "lib/librarian/mock/cli.rb", "lib/librarian/mock/dsl.rb", "lib/librarian/mock/environment.rb", "lib/librarian/mock/extension.rb", "lib/librarian/mock/source.rb", "lib/librarian/mock/source/mock.rb", "lib/librarian/mock/source/mock/registry.rb", "lib/librarian/mock/version.rb", "lib/librarian/posix.rb", "lib/librarian/resolution.rb", "lib/librarian/resolver.rb", "lib/librarian/resolver/implementation.rb", "lib/librarian/rspec/support/cli_macro.rb", "lib/librarian/source.rb", "lib/librarian/source/basic_api.rb", "lib/librarian/source/git.rb", "lib/librarian/source/git/repository.rb", "lib/librarian/source/local.rb", "lib/librarian/source/path.rb", "lib/librarian/spec.rb", "lib/librarian/spec_change_set.rb", "lib/librarian/specfile.rb", "lib/librarian/support/abstract_method.rb", "lib/librarian/ui.rb", "lib/librarian/version.rb", "librarian.gemspec", "spec/functional/cli_spec.rb", "spec/functional/posix_spec.rb", "spec/functional/source/git/repository_spec.rb", "spec/functional/source/git_spec.rb", "spec/support/fakefs.rb", "spec/support/method_patch_macro.rb", "spec/support/project_path_macro.rb", "spec/support/with_env_macro.rb", "spec/unit/action/base_spec.rb", "spec/unit/action/clean_spec.rb", "spec/unit/action/ensure_spec.rb", "spec/unit/action/install_spec.rb", "spec/unit/algorithms_spec.rb", "spec/unit/config/database_spec.rb", "spec/unit/dependency/requirement_spec.rb", "spec/unit/dependency_spec.rb", "spec/unit/dsl_spec.rb", "spec/unit/environment/runtime_cache_spec.rb", "spec/unit/environment_spec.rb", "spec/unit/lockfile/parser_spec.rb", "spec/unit/lockfile_spec.rb", "spec/unit/manifest/version_spec.rb", "spec/unit/manifest_set_spec.rb", "spec/unit/manifest_spec.rb", "spec/unit/mock/environment_spec.rb", "spec/unit/mock/source/mock_spec.rb", "spec/unit/resolver_spec.rb", "spec/unit/source/git_spec.rb", "spec/unit/spec_change_set_spec.rb"]
@@ -23,14 +23,12 @@ Gem::Specification.new do |s|
23
23
 
24
24
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
25
  s.add_runtime_dependency(%q<thor>, ["~> 0.15"])
26
- s.add_runtime_dependency(%q<highline>, [">= 0"])
27
26
  s.add_development_dependency(%q<rake>, [">= 0"])
28
27
  s.add_development_dependency(%q<rspec>, ["~> 2.14"])
29
28
  s.add_development_dependency(%q<json>, [">= 0"])
30
29
  s.add_development_dependency(%q<fakefs>, ["~> 0.4.2"])
31
30
  else
32
31
  s.add_dependency(%q<thor>, ["~> 0.15"])
33
- s.add_dependency(%q<highline>, [">= 0"])
34
32
  s.add_dependency(%q<rake>, [">= 0"])
35
33
  s.add_dependency(%q<rspec>, ["~> 2.14"])
36
34
  s.add_dependency(%q<json>, [">= 0"])
@@ -38,7 +36,6 @@ Gem::Specification.new do |s|
38
36
  end
39
37
  else
40
38
  s.add_dependency(%q<thor>, ["~> 0.15"])
41
- s.add_dependency(%q<highline>, [">= 0"])
42
39
  s.add_dependency(%q<rake>, [">= 0"])
43
40
  s.add_dependency(%q<rspec>, ["~> 2.14"])
44
41
  s.add_dependency(%q<json>, [">= 0"])
@@ -74,6 +74,7 @@ module Librarian
74
74
  before do
75
75
  env.stub(:install_path) { install_path }
76
76
  action.stub(:check_preconditions)
77
+ action.stub(:destructive?) { true }
77
78
  action.stub_chain(:lock, :manifests) { manifests }
78
79
  end
79
80
 
@@ -123,6 +123,16 @@ module Librarian
123
123
  it { should be == [?a, ?b, ?c, ?d] }
124
124
  end
125
125
 
126
+ # Dependencies are sorted alphabetically. Should they?
127
+ context "should be deterministic" do
128
+ let(:graph) { { ?a => [], ?b => [?c], ?c => [] } }
129
+ it { should be == [?a, ?c, ?b] }
130
+ end
131
+
132
+ context "should be deterministic" do
133
+ let(:graph) { { ?c => [], ?b => [?a], ?a => [] } }
134
+ it { should be == [?a, ?b, ?c] }
135
+ end
126
136
  end
127
137
 
128
138
  end
@@ -9,4 +9,28 @@ describe Librarian::Dependency::Requirement do
9
9
  to eq "#<Librarian::Dependency::Requirement >= 3.2.1>" }
10
10
  end
11
11
 
12
+ it 'should handle nil versions' do
13
+ described_class.new(nil).to_gem_requirement.should eq(Gem::Requirement.new)
14
+ end
15
+
16
+ it 'should handle nil versions in arrays' do
17
+ described_class.new([nil]).to_gem_requirement.should eq(Gem::Requirement.new)
18
+ end
19
+
20
+ it 'should handle .x versions' do
21
+ described_class.new('1.x').to_gem_requirement.should eq(Gem::Requirement.new('~> 1.0'))
22
+ described_class.new('1.0.x').to_gem_requirement.should eq(Gem::Requirement.new('~> 1.0.0'))
23
+ end
24
+
25
+ it 'should handle version ranges' do
26
+ described_class.new('>=1.1.0 <2.0.0').to_gem_requirement.should eq(Gem::Requirement.new(['>=1.1.0', '<2.0.0']))
27
+ end
28
+
29
+ it 'should print to_s' do
30
+ described_class.new('1.x').to_s.should eq('~> 1.0')
31
+ s = described_class.new('>=1.1.0 <2.0.0').to_s
32
+ s.should include(">= 1.1.0")
33
+ s.should include("< 2.0.0")
34
+ end
35
+
12
36
  end
@@ -8,4 +8,94 @@ describe Librarian::Manifest::Version do
8
8
  specify { expect(version.inspect).to eq "#<Librarian::Manifest::Version 3.2.1>" }
9
9
  end
10
10
 
11
+ describe "version comparison" do
12
+
13
+ context "when version has only two components" do
14
+ it "creates a new version with only 2 version components" do
15
+ v1 = described_class.new("1.0")
16
+ end
17
+ end
18
+
19
+ context "when neither version has pre-release items" do
20
+ it "compares 1.0.0 < 2.0.0" do
21
+ v1 = described_class.new("1.0.0")
22
+ v2 = described_class.new("2.0.0")
23
+ expect(v1 <=> v2).to eq(-1)
24
+ end
25
+ it "compares 2.0.0 < 2.1.0" do
26
+ v1 = described_class.new("2.0.0")
27
+ v2 = described_class.new("2.1.0")
28
+ expect(v1 <=> v2).to eq(-1)
29
+ end
30
+ it "compares 2.1.0 < 2.1.1" do
31
+ v1 = described_class.new("2.1.0")
32
+ v2 = described_class.new("2.1.1")
33
+ expect(v1 <=> v2).to eq(-1)
34
+ end
35
+ end
36
+
37
+ context "when versions have pre-release information" do
38
+ it "compares 1.0.0-alpha < 1.0.0-alpha1" do
39
+ v1 = described_class.new("1.0.0-alpha")
40
+ v2 = described_class.new("1.0.0-alpha.1")
41
+ expect(v1 <=> v2).to eq(-1)
42
+ end
43
+ it "compares 1.0.0-alpha.1 < 1.0.0-alpha.beta" do
44
+ v1 = described_class.new("1.0.0-alpha.1")
45
+ v2 = described_class.new("1.0.0-alpha.beta")
46
+ expect(v1 <=> v2).to eq(-1)
47
+ end
48
+ it "compares 1.0.0-alpha.beta < 1.0.0-beta" do
49
+ v1 = described_class.new("1.0.0-alpha.beta")
50
+ v2 = described_class.new("1.0.0-beta")
51
+ expect(v1 <=> v2).to eq(-1)
52
+ end
53
+ it "compares 1.0.0-beta < 1.0.0-beta.2" do
54
+ v1 = described_class.new("1.0.0-beta")
55
+ v2 = described_class.new("1.0.0-beta.2")
56
+ expect(v1 <=> v2).to eq(-1)
57
+ end
58
+ it "compares 1.0.0-beta.2 < 1.0.0-beta.11" do
59
+ v1 = described_class.new("1.0.0-beta.2")
60
+ v2 = described_class.new("1.0.0-beta.11")
61
+ expect(v1 <=> v2).to eq(-1)
62
+ end
63
+ it "compares 1.0.0-beta.11 < 1.0.0-rc.1" do
64
+ v1 = described_class.new("1.0.0-beta.11")
65
+ v2 = described_class.new("1.0.0-rc.1")
66
+ expect(v1 <=> v2).to eq(-1)
67
+ end
68
+ it "compares 1.0.0-rc.1 < 1.0.0" do
69
+ v1 = described_class.new("1.0.0-rc.1")
70
+ v2 = described_class.new("1.0.0")
71
+ expect(v1 <=> v2).to eq(-1)
72
+ end
73
+ end
74
+
75
+ context "when an invalid version number is provided" do
76
+ it "raises" do
77
+ expect { described_class.new("invalidversion") }.
78
+ to raise_error(ArgumentError)
79
+ end
80
+ end
81
+
82
+ context "when a version is converted to string" do
83
+ it "should be the full semver" do
84
+ version = "1.0.0-beta.11+200.1.2"
85
+ v1 = described_class.new(version)
86
+ expect(v1.to_s).to eq(version)
87
+ end
88
+ it "should be the full gem version" do
89
+ version = "1.0.0.a"
90
+ v1 = described_class.new(version)
91
+ expect(v1.to_s).to eq(version)
92
+ end
93
+ it "should be the two-component version" do
94
+ version = "1.0"
95
+ v1 = described_class.new(version)
96
+ expect(v1.to_s).to eq(version)
97
+ end
98
+ end
99
+ end
100
+
11
101
  end
@@ -143,6 +143,10 @@ module Librarian
143
143
 
144
144
  expect(set.to_a).to match_array( [] )
145
145
  end
146
+
147
+ it "should fail if index does not contain manifest" do
148
+ expect { set.deep_strip!(["a", "z"]) }.to raise_error(Librarian::Error, /^Unable to find module z/)
149
+ end
146
150
  end
147
151
 
148
152
  describe "#deep_keep!" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarianp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Feldblum
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-24 00:00:00.000000000 Z
12
+ date: 2015-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -25,20 +25,6 @@ dependencies:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.15'
28
- - !ruby/object:Gem::Dependency
29
- name: highline
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: rake
44
30
  requirement: !ruby/object:Gem::Requirement