resync 0.2.1 → 0.2.2

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: 8c504db116de3859b95c4acea4ea950fb2a37a48
4
- data.tar.gz: 1f0c7ef67cb41ca6dcdbf87ef943aa64b38b16d7
3
+ metadata.gz: 30958a3d136a05395b75151c4396cc3a396d8dc0
4
+ data.tar.gz: 1380f44a55d5305a1cf46988cbbc604f6672ad8f
5
5
  SHA512:
6
- metadata.gz: 8b4ae0258fe913c876274be50963832f0022a2a71fee6d0c9cb9ad40e7cb2e83e97cba776eba0a7194e631177b16e19aab8e80ce89a4343c862572c7f3c1fb87
7
- data.tar.gz: 3e04a2227d2434fda5c8628a484027542a9d7bf713f742a3c062d87a5836339037b0c520363dc348b59487eebb2d6fb801a9f41e7f7e0f21e548fac352bfa71f
6
+ metadata.gz: 2262fa5a7028254fb4144772ec3cfe44982596a1cd69f8114afad7a4c9f1db5de0f2de0de7d0f25990ce6cf8c0a3d16fb35eaeb504c3f877fe6a6f2ab31660de
7
+ data.tar.gz: 885631b5db2dae906e938f2a125c75f7f020d98dfbe2b964bd8ea6fe68ff3e3ba684137fd34ab2ff635ed94639e5c8b482eba457440de410d7830abc6d1c26a3
data/CHANGES.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.2.2
2
+
3
+ - Added `#changes` method to `ChangeList` and `ChangeDumpManifest`, allowing filtering by change type and modified time
4
+ - Added `#change_lists` method to `ChangeListIndex`, `ChangeDumpIndex`, and `ChangeDump`, allowing filtering by from and until times
5
+
1
6
  ## 0.2.1
2
7
 
3
8
  - Fixed issue where extra whitespace in `<loc/>` tags could prevent URI parsing.
@@ -1,11 +1,11 @@
1
- require_relative 'shared/sorted_resource_list'
1
+ require_relative 'shared/base_change_index'
2
2
  require_relative 'xml'
3
3
 
4
4
  module Resync
5
5
  # A change dump. See section 13.1,
6
6
  # "{http://www.openarchives.org/rs/1.0/resourcesync#ChangeDump Change Dump}",
7
7
  # in the ResourceSync specification.
8
- class ChangeDump < SortedResourceList
8
+ class ChangeDump < BaseChangeIndex
9
9
  include ::XML::Mapping
10
10
 
11
11
  # The capability provided by this type.
@@ -1,11 +1,11 @@
1
- require_relative 'shared/sorted_resource_list'
1
+ require_relative 'shared/base_change_index'
2
2
  require_relative 'shared/sitemap_index'
3
3
 
4
4
  module Resync
5
5
  # A change dump index. See under section 13.1,
6
6
  # "{http://www.openarchives.org/rs/1.0/resourcesync#ChangeDumpIndex Change Dump}",
7
7
  # in the ResourceSync specification.
8
- class ChangeDumpIndex < SortedResourceList
8
+ class ChangeDumpIndex < BaseChangeIndex
9
9
  include ::XML::Mapping
10
10
  include SitemapIndex
11
11
 
@@ -1,11 +1,11 @@
1
- require_relative 'shared/sorted_resource_list'
1
+ require_relative 'shared/base_change_list'
2
2
  require_relative 'xml'
3
3
 
4
4
  module Resync
5
5
  # A change dump manifest. See section 13.2,
6
6
  # "{http://www.openarchives.org/rs/1.0/resourcesync#ChangeDumpManifest Change Dump Manifest}",
7
7
  # in the ResourceSync specification.
8
- class ChangeDumpManifest < SortedResourceList
8
+ class ChangeDumpManifest < BaseChangeList
9
9
  include ::XML::Mapping
10
10
 
11
11
  # The capability provided by this type.
@@ -1,11 +1,11 @@
1
- require_relative 'shared/sorted_resource_list'
1
+ require_relative 'shared/base_change_list'
2
2
  require_relative 'xml'
3
3
 
4
4
  module Resync
5
5
  # A change list. See section 12.1,
6
6
  # "{http://www.openarchives.org/rs/1.0/resourcesync#ChangeList Change List}",
7
7
  # in the ResourceSync specification.
8
- class ChangeList < SortedResourceList
8
+ class ChangeList < BaseChangeList
9
9
  include ::XML::Mapping
10
10
 
11
11
  # The capability provided by this type.
@@ -1,11 +1,11 @@
1
- require_relative 'shared/sorted_resource_list'
1
+ require_relative 'shared/base_change_index'
2
2
  require_relative 'shared/sitemap_index'
3
3
 
4
4
  module Resync
5
5
  # A change list index. See section 12.2,
6
6
  # "{http://www.openarchives.org/rs/1.0/resourcesync#ChangeListIndex Change List Index}",
7
7
  # in the ResourceSync specification.
8
- class ChangeListIndex < SortedResourceList
8
+ class ChangeListIndex < BaseChangeIndex
9
9
  include ::XML::Mapping
10
10
  include SitemapIndex
11
11
 
@@ -48,7 +48,7 @@ module Resync
48
48
  # a change list (including change list indices, change dumps, etc.)
49
49
  # @param until_time [Time] the end of the time range represented by
50
50
  # a change list (including change list indices, change dumps, etc.)
51
- # @param completed_time the datetime at which assembling a resource list
51
+ # @param completed_time [Time] the datetime at which assembling a resource list
52
52
  # ended (including resource list indices, resource dumps, etc.)
53
53
  # @param modified_time [Time] The date and time when the referenced resource was last modified.
54
54
  # @param length [Integer] The content length of the referenced resource.
@@ -73,21 +73,44 @@ module Resync
73
73
  links.find { |l| l.rel == rel }
74
74
  end
75
75
 
76
+ # Convenience accessor for the +at_time+ metadata attribute
77
+ # @return [Time] the datetime at which assembling a resource list
78
+ # began (including resource list indices, resource dumps, etc.)
79
+ # @see Metadata#at_time
76
80
  def at_time
77
81
  metadata.at_time if metadata
78
82
  end
79
83
 
84
+ # Convenience accessor for the +from_time+ metadata attribute
85
+ # @return [Time] the beginning of the time range represented by
86
+ # a change list (including change list indices, change dumps, etc.)
87
+ # @see Metadata#from_time
80
88
  def from_time
81
89
  metadata.from_time if metadata
82
90
  end
83
91
 
92
+ # Convenience accessor for the +until_time+ metadata attribute
93
+ # @return [Time] the end of the time range represented by
94
+ # a change list (including change list indices, change dumps, etc.)
95
+ # @see Metadata#until_time
84
96
  def until_time
85
97
  metadata.until_time if metadata
86
98
  end
87
99
 
100
+ # Convenience accessor for the +completed_time+ metadata attribute
101
+ # @return [Time] the datetime at which assembling a resource list
102
+ # ended (including resource list indices, resource dumps, etc.)
103
+ # @see Metadata#completed_time
88
104
  def completed_time
89
105
  metadata.completed_time if metadata
90
106
  end
91
107
 
108
+ # Convenience accessor for the +change+ metadata attribute
109
+ # @return [Change] the type of change to a resource reported in
110
+ # a change list (including change list indices, change dumps, etc.)
111
+ # @see Metadata#change
112
+ def change
113
+ metadata.change if metadata
114
+ end
92
115
  end
93
116
  end
@@ -0,0 +1,35 @@
1
+ require_relative 'sorted_resource_list'
2
+
3
+ module Resync
4
+ # Adds useful methods to {ChangeListIndex}, {ChangeDumpIndex}, and {ChangeDump}.
5
+ class BaseChangeIndex < SortedResourceList
6
+ # Filters the list of change lists by from/until time. The filter can be *strict*, in which
7
+ # case only those change lists provably in the range are included, or *non-strict*, in which
8
+ # case only those change lists provably *not* in the range are *excluded*. (This is particularly
9
+ # useful for {ChangeDump}s, where the +from_time+ and +until_time+ attributes on the individual
10
+ # bitstream packages are optional.)
11
+ #
12
+ # @param in_range [Range<Time>] the range of times to filter by
13
+ # @param strict [Boolean] +true+ if resources without +from_time+ or +until_time+ should be
14
+ # excluded, +false+ if they should be included.
15
+ # @return [Enumerator::Lazy<Resource>] those change lists whose +from_time+ *or* +until_time+
16
+ # falls within +in_range+
17
+ def change_lists(in_range:, strict: true)
18
+ resources.select do |r|
19
+ strict ? strictly(in_range, r) : loosely(in_range, r)
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def strictly(in_range, resource)
26
+ from_in_range = resource.from_time ? in_range.cover?(resource.from_time) : false
27
+ until_in_range = resource.until_time ? in_range.cover?(resource.until_time) : false
28
+ from_in_range || until_in_range
29
+ end
30
+
31
+ def loosely(in_range, resource)
32
+ (resource.from_time || resource.until_time) ? strictly(in_range, resource) : true
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'sorted_resource_list'
2
+
3
+ module Resync
4
+ # Adds useful methods to {ChangeList} and {ChangeDumpManifest}.
5
+ class BaseChangeList < SortedResourceList
6
+ # Filters the list of changes by change type, modification time, or both.
7
+ # @param of_type [Types::Change] the change type
8
+ # @param in_range [Range<Time>] the range of modification times
9
+ # @return [Enumerator::Lazy<Resource>] the matching changes, or all changes
10
+ # if neither +of_type+ nor +in_range+ is specified.
11
+ def changes(of_type: nil, in_range: nil)
12
+ resources.select do |r|
13
+ is_of_type = of_type ? r.change == of_type : true
14
+ is_in_range = in_range ? in_range.cover?(r.modified_time) : true
15
+ is_of_type && is_in_range
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,4 @@
1
1
  module Resync
2
2
  # The version of this gem.
3
- VERSION = '0.2.1'
3
+ VERSION = '0.2.2'
4
4
  end
@@ -1,8 +1,8 @@
1
- require_relative 'shared/sorted_list_examples'
1
+ require_relative 'shared/base_change_index_examples'
2
2
 
3
3
  module Resync
4
4
  describe ChangeDumpIndex do
5
- it_behaves_like SortedResourceList
5
+ it_behaves_like BaseChangeIndex
6
6
 
7
7
  describe 'XML conversion' do
8
8
  describe '#from_xml' do
@@ -1,8 +1,8 @@
1
- require_relative 'shared/sorted_list_examples'
1
+ require_relative 'shared/base_change_list_examples'
2
2
 
3
3
  module Resync
4
4
  describe ChangeDumpManifest do
5
- it_behaves_like SortedResourceList
5
+ it_behaves_like BaseChangeList
6
6
  describe 'XML conversion' do
7
7
  describe '#from_xml' do
8
8
  it 'parses an XML string' do
@@ -1,8 +1,8 @@
1
- require_relative 'shared/sorted_list_examples'
1
+ require_relative 'shared/base_change_index_examples'
2
2
 
3
3
  module Resync
4
4
  describe ChangeDump do
5
- it_behaves_like SortedResourceList
5
+ it_behaves_like BaseChangeIndex
6
6
 
7
7
  describe 'XML conversion' do
8
8
  describe '#from_xml' do
@@ -1,8 +1,8 @@
1
- require_relative 'shared/sorted_list_examples'
1
+ require_relative 'shared/base_change_index_examples'
2
2
 
3
3
  module Resync
4
4
  describe ChangeListIndex do
5
- it_behaves_like SortedResourceList
5
+ it_behaves_like BaseChangeIndex
6
6
 
7
7
  describe 'XML conversion' do
8
8
  describe '#from_xml' do
@@ -1,8 +1,8 @@
1
- require_relative 'shared/sorted_list_examples'
1
+ require_relative 'shared/base_change_list_examples'
2
2
 
3
3
  module Resync
4
4
  describe ChangeList do
5
- it_behaves_like SortedResourceList
5
+ it_behaves_like BaseChangeList
6
6
 
7
7
  describe 'XML conversion' do
8
8
  describe '#from_xml' do
@@ -0,0 +1,66 @@
1
+ require_relative 'sorted_list_examples'
2
+
3
+ module Resync
4
+ RSpec.shared_examples BaseChangeIndex do
5
+ it_behaves_like SortedResourceList
6
+
7
+ describe '#change_lists' do
8
+ it 'filters by time range' do
9
+ resources = []
10
+ resources[0] = Resource.new(uri: 'http://example.org/changes-0', metadata: Metadata.new(until_time: Time.utc(2000)))
11
+ resources[1] = Resource.new(uri: 'http://example.org/changes-1', metadata: Metadata.new(from_time: Time.utc(2000), until_time: Time.utc(2001)))
12
+ resources[2] = Resource.new(uri: 'http://example.org/changes-2', metadata: Metadata.new(from_time: Time.utc(2001), until_time: Time.utc(2002)))
13
+ resources[3] = Resource.new(uri: 'http://example.org/changes-3', metadata: Metadata.new(from_time: Time.utc(2002)))
14
+ index = ChangeListIndex.new(resources: resources)
15
+
16
+ changes = index.change_lists(in_range: Time.utc(1999)..Time.utc(2000, 7, 1)).to_a
17
+ expect(changes.size).to eq(2)
18
+ expect(changes).to include(resources[0])
19
+ expect(changes).to include(resources[1])
20
+
21
+ changes = index.change_lists(in_range: Time.utc(2000, 7, 1)..Time.utc(2001, 7, 1)).to_a
22
+ expect(changes.size).to eq(2)
23
+ expect(changes).to include(resources[1])
24
+ expect(changes).to include(resources[2])
25
+
26
+ changes = index.change_lists(in_range: Time.utc(2001, 7, 1)..Time.utc(2003, 7, 1)).to_a
27
+ expect(changes.size).to eq(2)
28
+ expect(changes).to include(resources[2])
29
+ expect(changes).to include(resources[3])
30
+ end
31
+
32
+ it 'ignores resources with neither from nor until time' do
33
+ resources = []
34
+ resources[0] = Resource.new(uri: 'http://example.org/changes-0', metadata: Metadata.new(until_time: Time.utc(2000)))
35
+ resources[1] = Resource.new(uri: 'http://example.org/changes-1', metadata: Metadata.new(from_time: Time.utc(2000), until_time: Time.utc(2001)))
36
+ resources[2] = Resource.new(uri: 'http://example.org/changes-2', metadata: Metadata.new(from_time: Time.utc(2001), until_time: Time.utc(2002)))
37
+ resources[3] = Resource.new(uri: 'http://example.org/changes-3', metadata: Metadata.new(from_time: Time.utc(2002)))
38
+ resources[4] = Resource.new(uri: 'http://example.org/changes-4')
39
+ resources[5] = Resource.new(uri: 'http://example.org/changes-5')
40
+ index = ChangeListIndex.new(resources: resources)
41
+ changes = index.change_lists(in_range: Time.utc(2000, 7, 1)..Time.utc(2001, 7, 1)).to_a
42
+ expect(changes.size).to eq(2)
43
+ expect(changes).to include(resources[1])
44
+ expect(changes).to include(resources[2])
45
+ end
46
+
47
+ it 'includes resources with neither from nor until time when in non-strict mode' do
48
+ resources = []
49
+ resources[0] = Resource.new(uri: 'http://example.org/changes-0', metadata: Metadata.new(until_time: Time.utc(2000)))
50
+ resources[1] = Resource.new(uri: 'http://example.org/changes-1', metadata: Metadata.new(from_time: Time.utc(2000), until_time: Time.utc(2001)))
51
+ resources[2] = Resource.new(uri: 'http://example.org/changes-2', metadata: Metadata.new(from_time: Time.utc(2001), until_time: Time.utc(2002)))
52
+ resources[3] = Resource.new(uri: 'http://example.org/changes-3', metadata: Metadata.new(from_time: Time.utc(2002)))
53
+ resources[4] = Resource.new(uri: 'http://example.org/changes-4')
54
+ resources[5] = Resource.new(uri: 'http://example.org/changes-5')
55
+ index = ChangeListIndex.new(resources: resources)
56
+ changes = index.change_lists(in_range: Time.utc(2000, 7, 1)..Time.utc(2001, 7, 1), strict: false).to_a
57
+ expect(changes.size).to eq(4)
58
+ expect(changes).to include(resources[1])
59
+ expect(changes).to include(resources[2])
60
+ expect(changes).to include(resources[4])
61
+ expect(changes).to include(resources[5])
62
+ end
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,69 @@
1
+ require_relative 'sorted_list_examples'
2
+
3
+ module Resync
4
+ RSpec.shared_examples BaseChangeList do
5
+
6
+ # ------------------------------------------------------
7
+ # Superclass conformance
8
+
9
+ it_behaves_like SortedResourceList
10
+
11
+ def new_instance(**args)
12
+ required_args = (defined? required_arguments) ? required_arguments : {}
13
+ args = required_args.merge(args)
14
+ described_class.new(**args)
15
+ end
16
+
17
+ # ------------------------------------------------------
18
+ # Tests
19
+
20
+ describe '#changes' do
21
+
22
+ it 'returns all changes if called without arguments' do
23
+ resource0 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1997, 7, 16, 19, 20, 30.45))
24
+ resource1 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 7, 16, 19, 20, 30.45))
25
+ resource2 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 8, 16, 19, 20, 30.45))
26
+ resource3 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1999, 1, 16, 19, 20, 30.45))
27
+ list = new_instance(resources: [resource1, resource3, resource2, resource0])
28
+ expect(list.changes.to_a).to eq([resource0, resource1, resource2, resource3])
29
+ end
30
+
31
+ it 'filters on change type' do
32
+ resource0 = Resource.new(uri: 'http://example.org', metadata: Metadata.new(change: Types::Change::CREATED), modified_time: Time.utc(1997, 7, 16, 19, 20, 30.45))
33
+ resource1 = Resource.new(uri: 'http://example.org', metadata: Metadata.new(change: Types::Change::UPDATED), modified_time: Time.utc(1998, 7, 16, 19, 20, 30.45))
34
+ resource2 = Resource.new(uri: 'http://example.org', metadata: Metadata.new(change: Types::Change::UPDATED), modified_time: Time.utc(1998, 8, 16, 19, 20, 30.45))
35
+ resource3 = Resource.new(uri: 'http://example.org', metadata: Metadata.new(change: Types::Change::DELETED), modified_time: Time.utc(1999, 1, 16, 19, 20, 30.45))
36
+ list = new_instance(resources: [resource0, resource1, resource2, resource3])
37
+ changes = list.changes(of_type: Types::Change::UPDATED)
38
+ expect(changes.to_a).to eq([resource1, resource2])
39
+ end
40
+
41
+ it 'filters on modified time' do
42
+ resource0 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1997, 7, 16, 19, 20, 30.45))
43
+ resource1 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 7, 16, 19, 20, 30.45))
44
+ resource2 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 8, 16, 19, 20, 30.45))
45
+ resource3 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1999, 1, 16, 19, 20, 30.45))
46
+ list = new_instance(resources: [resource0, resource1, resource2, resource3])
47
+ range = Time.utc(1998, 1, 1)...Time.utc(1999, 1, 1)
48
+ changes = list.changes(in_range: range)
49
+ expect(changes.to_a).to eq([resource1, resource2])
50
+ end
51
+
52
+ it 'filters on combinations' do
53
+ resources = []
54
+ resources[0] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(1999, 1, 1), metadata: Metadata.new(change: Types::Change::CREATED))
55
+ resources[1] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(2000, 1, 1), metadata: Metadata.new(change: Types::Change::CREATED))
56
+ resources[2] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(1999, 3, 1), metadata: Metadata.new(change: Types::Change::UPDATED))
57
+ resources[3] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(1999, 6, 1), metadata: Metadata.new(change: Types::Change::UPDATED))
58
+ resources[4] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(2000, 3, 1), metadata: Metadata.new(change: Types::Change::UPDATED))
59
+ resources[5] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(2000, 6, 1), metadata: Metadata.new(change: Types::Change::UPDATED))
60
+ resources[6] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(1999, 9, 1), metadata: Metadata.new(change: Types::Change::DELETED))
61
+ resources[7] = Resource.new(uri: 'http://example.org/', modified_time: Time.utc(2000, 9, 1), metadata: Metadata.new(change: Types::Change::DELETED))
62
+ list = new_instance(resources: resources)
63
+ changes = list.changes(of_type: Types::Change::UPDATED, in_range: Time.utc(1999, 4, 1)..Time.utc(2000, 4, 1))
64
+ expect(changes.to_a).to eq([resources[3], resources[4]])
65
+ end
66
+ end
67
+
68
+ end
69
+ end
@@ -31,11 +31,11 @@ module Resync
31
31
  resource0 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1997, 7, 16, 19, 20, 30.45))
32
32
  resource1 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 7, 16, 19, 20, 30.45))
33
33
  resource2 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 7, 16, 19, 20, 30.45))
34
- resource4 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 1, 16, 19, 20, 30.45))
35
- list = new_instance(resources: [resource1, resource4, resource2, resource0])
34
+ resource3 = Resource.new(uri: 'http://example.org', modified_time: Time.utc(1998, 1, 16, 19, 20, 30.45))
35
+ list = new_instance(resources: [resource1, resource3, resource2, resource0])
36
36
  resources = list.resources.to_a
37
37
  expect(resources[0]).to be(resource0)
38
- expect(resources[1]).to be(resource4)
38
+ expect(resources[1]).to be(resource3)
39
39
  expect(resources).to include(resource1)
40
40
  expect(resources).to include(resource2)
41
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-09 00:00:00.000000000 Z
11
+ date: 2015-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -183,6 +183,8 @@ files:
183
183
  - lib/resync/resource_list.rb
184
184
  - lib/resync/resource_list_index.rb
185
185
  - lib/resync/shared/augmented.rb
186
+ - lib/resync/shared/base_change_index.rb
187
+ - lib/resync/shared/base_change_list.rb
186
188
  - lib/resync/shared/base_resource_list.rb
187
189
  - lib/resync/shared/descriptor.rb
188
190
  - lib/resync/shared/sitemap_index.rb
@@ -252,6 +254,8 @@ files:
252
254
  - spec/unit/resync/resource_list_spec.rb
253
255
  - spec/unit/resync/resource_spec.rb
254
256
  - spec/unit/resync/shared/augmented_examples.rb
257
+ - spec/unit/resync/shared/base_change_index_examples.rb
258
+ - spec/unit/resync/shared/base_change_list_examples.rb
255
259
  - spec/unit/resync/shared/base_resource_list_examples.rb
256
260
  - spec/unit/resync/shared/descriptor_examples.rb
257
261
  - spec/unit/resync/shared/descriptor_spec.rb
@@ -342,6 +346,8 @@ test_files:
342
346
  - spec/unit/resync/resource_list_spec.rb
343
347
  - spec/unit/resync/resource_spec.rb
344
348
  - spec/unit/resync/shared/augmented_examples.rb
349
+ - spec/unit/resync/shared/base_change_index_examples.rb
350
+ - spec/unit/resync/shared/base_change_list_examples.rb
345
351
  - spec/unit/resync/shared/base_resource_list_examples.rb
346
352
  - spec/unit/resync/shared/descriptor_examples.rb
347
353
  - spec/unit/resync/shared/descriptor_spec.rb