ro-bundle 0.1.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.
Files changed (47) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +11 -0
  3. data/.ruby-env +1 -0
  4. data/.ruby-gemset +2 -0
  5. data/.ruby-version +2 -0
  6. data/.travis.yml +11 -0
  7. data/Changes.rdoc +129 -0
  8. data/Gemfile +11 -0
  9. data/Licence.rdoc +29 -0
  10. data/Rakefile +29 -0
  11. data/ReadMe.rdoc +57 -0
  12. data/bin/dir2ro +48 -0
  13. data/bin/ro-bundle-info +45 -0
  14. data/bin/verify-ro-bundle +27 -0
  15. data/bin/zip2ro +57 -0
  16. data/lib/ro-bundle.rb +45 -0
  17. data/lib/ro-bundle/exceptions.rb +30 -0
  18. data/lib/ro-bundle/file.rb +323 -0
  19. data/lib/ro-bundle/ro/agent.rb +73 -0
  20. data/lib/ro-bundle/ro/aggregate.rb +107 -0
  21. data/lib/ro-bundle/ro/annotation.rb +89 -0
  22. data/lib/ro-bundle/ro/directory.rb +120 -0
  23. data/lib/ro-bundle/ro/manifest.rb +338 -0
  24. data/lib/ro-bundle/ro/provenance.rb +153 -0
  25. data/lib/ro-bundle/util.rb +57 -0
  26. data/lib/ro-bundle/version.rb +13 -0
  27. data/ro-bundle.gemspec +43 -0
  28. data/test/data/HelloAnyone.robundle +0 -0
  29. data/test/data/empty-manifest.json +1 -0
  30. data/test/data/example3-manifest.json +40 -0
  31. data/test/data/invalid-manifest.json +5 -0
  32. data/test/data/invalid-manifest.robundle +0 -0
  33. data/test/helpers/fake_manifest.rb +23 -0
  34. data/test/helpers/fake_provenance.rb +32 -0
  35. data/test/helpers/list_tests.rb +22 -0
  36. data/test/tc_add_annotation.rb +571 -0
  37. data/test/tc_agent.rb +63 -0
  38. data/test/tc_aggregate.rb +116 -0
  39. data/test/tc_annotation.rb +84 -0
  40. data/test/tc_create.rb +170 -0
  41. data/test/tc_manifest.rb +221 -0
  42. data/test/tc_provenance.rb +121 -0
  43. data/test/tc_read.rb +66 -0
  44. data/test/tc_remove.rb +140 -0
  45. data/test/tc_util.rb +64 -0
  46. data/test/ts_ro_bundle.rb +28 -0
  47. metadata +217 -0
@@ -0,0 +1,121 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Author: Robert Haines
7
+ #------------------------------------------------------------------------------
8
+
9
+ require 'test/unit'
10
+ require "ro-bundle"
11
+ require "helpers/fake_provenance"
12
+
13
+ class TestProvenance < Test::Unit::TestCase
14
+
15
+ def setup
16
+ @prov = FakeProvenance.new
17
+
18
+ @agent = ROBundle::Agent.new(
19
+ "Robert Haines",
20
+ "https://github.com/hainesr",
21
+ "http://orcid.org/0000-0002-9538-7919"
22
+ )
23
+ end
24
+
25
+ def test_created_on
26
+ assert @prov.created_on.instance_of?(Time)
27
+ end
28
+
29
+ def test_change_created_on
30
+ old = @prov.created_on
31
+ now = Time.now.to_s
32
+ @prov.created_on = now
33
+
34
+ assert_equal now, @prov.created_on.to_s
35
+ assert_not_equal old.to_s, @prov.created_on.to_s
36
+ assert @prov.edited?
37
+ end
38
+
39
+ def test_created_by
40
+ creator = @prov.created_by
41
+ assert creator.instance_of?(ROBundle::Agent)
42
+ assert_equal creator.name, "Robert Haines"
43
+ end
44
+
45
+ def test_change_created_by
46
+ agent = ROBundle::Agent.new("Matt Gamble")
47
+ @prov.created_by = agent
48
+
49
+ assert_same agent, @prov.created_by
50
+ assert @prov.edited?
51
+ end
52
+
53
+ def test_created_by_string_agent
54
+ old = @prov.created_by
55
+ agent = "Stian Soiland-Reyes"
56
+ @prov.created_by = agent
57
+
58
+ assert_not_same old, @prov.created_by
59
+ assert @prov.edited?
60
+ end
61
+
62
+ def test_authored_on
63
+ assert_nil @prov.authored_on
64
+ end
65
+
66
+ def test_change_authored_on
67
+ old = @prov.authored_on
68
+ now = Time.now.to_s
69
+ @prov.authored_on = now
70
+
71
+ assert_equal now, @prov.authored_on.to_s
72
+ assert_not_equal old.to_s, @prov.authored_on.to_s
73
+ assert @prov.edited?
74
+ end
75
+
76
+ def test_authored_by
77
+ assert @prov.authored_by.instance_of?(Array)
78
+ end
79
+
80
+ def test_add_author
81
+ name = "Mr. Bigglesworth"
82
+
83
+ assert @prov.authored_by.empty?
84
+
85
+ author = @prov.add_author(@agent)
86
+ assert @prov.authored_by.include?(@agent)
87
+ assert_same @agent, author
88
+ assert @prov.edited?
89
+
90
+ author = @prov.add_author(name)
91
+ assert name_in_agent_list(name, @prov.authored_by)
92
+ assert author.instance_of?(ROBundle::Agent)
93
+ assert @prov.edited?
94
+ end
95
+
96
+ def test_remove_author_by_object
97
+ name = "Mr. Bigglesworth"
98
+
99
+ author = @prov.add_author(name)
100
+ refute @prov.authored_by.empty?
101
+ assert name_in_agent_list(name, @prov.authored_by)
102
+
103
+ @prov.remove_author(author)
104
+ assert @prov.authored_by.empty?
105
+ refute name_in_agent_list(name, @prov.authored_by)
106
+ end
107
+
108
+ def test_remove_authors_by_name
109
+ name = "Robert Haines"
110
+ @prov.add_author(@agent)
111
+ @prov.add_author(name)
112
+
113
+ assert_equal 2, @prov.authored_by.length
114
+ assert name_in_agent_list(name, @prov.authored_by)
115
+
116
+ @prov.remove_author(name)
117
+ assert @prov.authored_by.empty?
118
+ refute name_in_agent_list(name, @prov.authored_by)
119
+ end
120
+
121
+ end
data/test/tc_read.rb ADDED
@@ -0,0 +1,66 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Author: Robert Haines
7
+ #------------------------------------------------------------------------------
8
+
9
+ require 'test/unit'
10
+ require "ro-bundle"
11
+
12
+ class TestRead < Test::Unit::TestCase
13
+
14
+ def test_verify_valid
15
+ assert_nothing_raised(ZipContainer::MalformedContainerError, ZipContainer::ZipError) do
16
+ ROBundle::File.verify!($hello)
17
+ end
18
+
19
+ assert(ROBundle::File.verify($hello))
20
+ end
21
+
22
+ def test_verify_invalid
23
+ assert_raises(ZipContainer::MalformedContainerError) do
24
+ ROBundle::File.verify!($invalid)
25
+ end
26
+
27
+ refute ROBundle::File.verify($invalid)
28
+ end
29
+
30
+ def test_manifest
31
+ ROBundle::File.open($hello) do |b|
32
+ assert_equal("/", b.id)
33
+
34
+ assert b.created_on.instance_of?(Time)
35
+ assert_nil b.authored_on
36
+
37
+ creator = b.created_by
38
+ assert creator.instance_of?(ROBundle::Agent)
39
+
40
+ author = b.authored_by
41
+ assert author.instance_of?(Array)
42
+
43
+ history = b.history
44
+ assert history.instance_of?(Array)
45
+
46
+ aggregates = b.aggregates
47
+ assert aggregates.instance_of?(Array)
48
+
49
+ annotations = b.annotations
50
+ assert annotations.instance_of?(Array)
51
+
52
+ refute b.commit_required?
53
+ end
54
+ end
55
+
56
+ def test_aggregates
57
+ ROBundle::File.open($hello) do |b|
58
+ assert b.aggregate?(b.id)
59
+ assert b.aggregate?("/")
60
+
61
+ assert b.aggregate?("/inputs/name.txt")
62
+ assert b.aggregate?("inputs/name.txt")
63
+ end
64
+ end
65
+
66
+ end
data/test/tc_remove.rb ADDED
@@ -0,0 +1,140 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Author: Robert Haines
7
+ #------------------------------------------------------------------------------
8
+
9
+ require 'test/unit'
10
+ require "fileutils"
11
+ require "ro-bundle"
12
+
13
+ class TestRemove < Test::Unit::TestCase
14
+
15
+ def test_remove_entry
16
+ Dir.mktmpdir do |dir|
17
+ filename = File.join(dir, "test.bundle")
18
+ FileUtils.cp $hello, filename
19
+
20
+ rm_file = "workflow.wfbundle"
21
+
22
+ ROBundle::File.open(filename) do |b|
23
+ assert b.aggregate?(rm_file)
24
+ assert_not_nil b.find_entry(rm_file)
25
+ num_agg = b.aggregates.length
26
+ num_ann = b.annotations.length
27
+
28
+ b.remove(rm_file)
29
+
30
+ refute b.aggregate?(rm_file)
31
+ assert_nil b.find_entry(rm_file)
32
+ assert_equal num_agg - 1, b.aggregates.length
33
+ assert_equal num_ann - 4, b.annotations.length
34
+ end
35
+
36
+ removed_annotations = [
37
+ ".ro/annotations/workflow.wfdesc.ttl",
38
+ ".ro/annotations/d2757512-7149-4ff7-b7f8-78de3e3a2bd5.ttl"
39
+ ]
40
+
41
+ ROBundle::File.open(filename) do |b|
42
+ assert_nil b.find_entry(rm_file)
43
+ removed_annotations.each do |ann|
44
+ assert_nil b.find_entry(ann, :include_hidden => true)
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ def test_remove_aggregate_by_filename
51
+ Dir.mktmpdir do |dir|
52
+ filename = File.join(dir, "test.bundle")
53
+ FileUtils.cp $hello, filename
54
+
55
+ rm_file = "workflow.wfbundle"
56
+
57
+ ROBundle::File.open(filename) do |b|
58
+ assert b.aggregate?(rm_file)
59
+ assert_not_nil b.find_entry(rm_file)
60
+ num_agg = b.aggregates.length
61
+ num_ann = b.annotations.length
62
+
63
+ b.remove_aggregate(rm_file)
64
+
65
+ refute b.aggregate?(rm_file)
66
+ assert_nil b.find_entry(rm_file)
67
+ assert_equal num_agg - 1, b.aggregates.length
68
+ assert_equal num_ann - 4, b.annotations.length
69
+ end
70
+ end
71
+ end
72
+
73
+ def test_remove_aggregate_by_object
74
+ Dir.mktmpdir do |dir|
75
+ filename = File.join(dir, "test.bundle")
76
+ FileUtils.cp $hello, filename
77
+
78
+ ROBundle::File.open(filename) do |b|
79
+ rm_file = b.aggregates[0]
80
+ assert b.aggregate?(rm_file.file)
81
+ assert_not_nil b.find_entry(rm_file.file_entry)
82
+ num_agg = b.aggregates.length
83
+ num_ann = b.annotations.length
84
+
85
+ b.remove_aggregate(rm_file)
86
+
87
+ refute b.aggregate?(rm_file.file)
88
+ assert_nil b.find_entry(rm_file.file_entry)
89
+ assert_equal num_agg - 1, b.aggregates.length
90
+ assert_equal num_ann - 4, b.annotations.length
91
+ end
92
+ end
93
+ end
94
+
95
+ def test_remove_aggregate_by_filename_keep_file
96
+ Dir.mktmpdir do |dir|
97
+ filename = File.join(dir, "test.bundle")
98
+ FileUtils.cp $hello, filename
99
+
100
+ rm_file = "workflow.wfbundle"
101
+
102
+ ROBundle::File.open(filename) do |b|
103
+ assert b.aggregate?(rm_file)
104
+ assert_not_nil b.find_entry(rm_file)
105
+ num_agg = b.aggregates.length
106
+ num_ann = b.annotations.length
107
+
108
+ b.remove_aggregate(rm_file, :keep_file => true)
109
+
110
+ refute b.aggregate?(rm_file)
111
+ assert_not_nil b.find_entry(rm_file)
112
+ assert_equal num_agg - 1, b.aggregates.length
113
+ assert_equal num_ann - 4, b.annotations.length
114
+ end
115
+ end
116
+ end
117
+
118
+ def test_remove_aggregate_by_object_keep_file
119
+ Dir.mktmpdir do |dir|
120
+ filename = File.join(dir, "test.bundle")
121
+ FileUtils.cp $hello, filename
122
+
123
+ ROBundle::File.open(filename) do |b|
124
+ rm_file = b.aggregates[0]
125
+ assert b.aggregate?(rm_file.file)
126
+ assert_not_nil b.find_entry(rm_file.file_entry)
127
+ num_agg = b.aggregates.length
128
+ num_ann = b.annotations.length
129
+
130
+ b.remove_aggregate(rm_file, :keep_file => true)
131
+
132
+ refute b.aggregate?(rm_file.file)
133
+ assert_not_nil b.find_entry(rm_file.file_entry)
134
+ assert_equal num_agg - 1, b.aggregates.length
135
+ assert_equal num_ann - 4, b.annotations.length
136
+ end
137
+ end
138
+ end
139
+
140
+ end
data/test/tc_util.rb ADDED
@@ -0,0 +1,64 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Author: Robert Haines
7
+ #------------------------------------------------------------------------------
8
+
9
+ require 'test/unit'
10
+ require "ro-bundle"
11
+
12
+ class TestUtil < Test::Unit::TestCase
13
+
14
+ def test_clean_json
15
+ json_ok = { :one => "one", :uri => URI.parse("/file.txt") }
16
+ json_nil = { :nil => nil }
17
+ json_empty = { :empty1 => "", :empty2 => [], :empty3 => {} }
18
+ json_mix = json_ok.merge(json_nil).merge(json_empty)
19
+ empty = {}
20
+
21
+ assert_same json_ok, ROBundle::Util.clean_json(json_ok)
22
+ assert_equal empty, ROBundle::Util.clean_json(json_nil)
23
+ assert_equal empty, ROBundle::Util.clean_json(json_empty)
24
+ assert_equal json_ok, ROBundle::Util.clean_json(json_mix)
25
+ end
26
+
27
+ def test_parse_time
28
+ now = Time.now
29
+ iso = now.iso8601
30
+
31
+ assert ROBundle::Util.parse_time(iso).instance_of?(Time)
32
+ assert_nil ROBundle::Util.parse_time(nil)
33
+ end
34
+
35
+ def test_absolute_uri
36
+ assert ROBundle::Util.is_absolute_uri?("http://example.com/test.txt")
37
+ assert ROBundle::Util.is_absolute_uri?("urn:uuid:and-so-on")
38
+ assert ROBundle::Util.is_absolute_uri?(URI.parse("http://example.com/test.txt"))
39
+ assert ROBundle::Util.is_absolute_uri?(URI.parse("urn:uuid:and-so-on"))
40
+ refute ROBundle::Util.is_absolute_uri?("/file.txt")
41
+ refute ROBundle::Util.is_absolute_uri?("file.txt")
42
+ refute ROBundle::Util.is_absolute_uri?(URI.parse("/file.txt"))
43
+ refute ROBundle::Util.is_absolute_uri?(URI.parse("file.txt"))
44
+ refute ROBundle::Util.is_absolute_uri?(":file.txt")
45
+ refute ROBundle::Util.is_absolute_uri?("")
46
+ refute ROBundle::Util.is_absolute_uri?(nil)
47
+ end
48
+
49
+ def test_strip_slash
50
+ str1 = ""
51
+ str2 = "/"
52
+ str3 = "test"
53
+ str4 = "test/path"
54
+ str5 = "test/path/trailing/"
55
+
56
+ assert_nil ROBundle::Util.strip_leading_slash(nil)
57
+ assert_equal str1, ROBundle::Util.strip_leading_slash(str1)
58
+ assert_equal str1, ROBundle::Util.strip_leading_slash(str2)
59
+ assert_equal str3, ROBundle::Util.strip_leading_slash("/#{str3}")
60
+ assert_equal str4, ROBundle::Util.strip_leading_slash("/#{str4}")
61
+ assert_equal str5, ROBundle::Util.strip_leading_slash("/#{str5}")
62
+ end
63
+
64
+ end
@@ -0,0 +1,28 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Author: Robert Haines
7
+ #------------------------------------------------------------------------------
8
+
9
+ require 'coveralls'
10
+ Coveralls.wear!
11
+
12
+ # Example data files
13
+ $hello = "test/data/HelloAnyone.robundle"
14
+ $invalid = "test/data/invalid-manifest.robundle"
15
+ $man_ex3 = "test/data/example3-manifest.json"
16
+ $man_empty = "test/data/empty-manifest.json"
17
+ $man_invalid = "test/data/invalid-manifest.json"
18
+
19
+ require "tc_util"
20
+ require "tc_agent"
21
+ require "tc_provenance"
22
+ require "tc_annotation"
23
+ require "tc_aggregate"
24
+ require "tc_manifest"
25
+ require "tc_read"
26
+ require "tc_create"
27
+ require "tc_add_annotation"
28
+ require "tc_remove"
metadata ADDED
@@ -0,0 +1,217 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ro-bundle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Robert Haines
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '4.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '4.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ucf
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: uuid
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '2.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '2.3'
111
+ description: This library provides an API for manipulating Research Object (RO) bundles.
112
+ The RO bundle specification can be found at http://purl.org/wf4ever/ro-bundle.
113
+ email:
114
+ - support@mygrid.org.uk
115
+ executables:
116
+ - dir2ro
117
+ - ro-bundle-info
118
+ - verify-ro-bundle
119
+ - zip2ro
120
+ extensions: []
121
+ extra_rdoc_files:
122
+ - Changes.rdoc
123
+ - Licence.rdoc
124
+ - ReadMe.rdoc
125
+ files:
126
+ - .gitignore
127
+ - .ruby-env
128
+ - .ruby-gemset
129
+ - .ruby-version
130
+ - .travis.yml
131
+ - Changes.rdoc
132
+ - Gemfile
133
+ - Licence.rdoc
134
+ - Rakefile
135
+ - ReadMe.rdoc
136
+ - bin/dir2ro
137
+ - bin/ro-bundle-info
138
+ - bin/verify-ro-bundle
139
+ - bin/zip2ro
140
+ - lib/ro-bundle.rb
141
+ - lib/ro-bundle/exceptions.rb
142
+ - lib/ro-bundle/file.rb
143
+ - lib/ro-bundle/ro/agent.rb
144
+ - lib/ro-bundle/ro/aggregate.rb
145
+ - lib/ro-bundle/ro/annotation.rb
146
+ - lib/ro-bundle/ro/directory.rb
147
+ - lib/ro-bundle/ro/manifest.rb
148
+ - lib/ro-bundle/ro/provenance.rb
149
+ - lib/ro-bundle/util.rb
150
+ - lib/ro-bundle/version.rb
151
+ - ro-bundle.gemspec
152
+ - test/data/HelloAnyone.robundle
153
+ - test/data/empty-manifest.json
154
+ - test/data/example3-manifest.json
155
+ - test/data/invalid-manifest.json
156
+ - test/data/invalid-manifest.robundle
157
+ - test/helpers/fake_manifest.rb
158
+ - test/helpers/fake_provenance.rb
159
+ - test/helpers/list_tests.rb
160
+ - test/tc_add_annotation.rb
161
+ - test/tc_agent.rb
162
+ - test/tc_aggregate.rb
163
+ - test/tc_annotation.rb
164
+ - test/tc_create.rb
165
+ - test/tc_manifest.rb
166
+ - test/tc_provenance.rb
167
+ - test/tc_read.rb
168
+ - test/tc_remove.rb
169
+ - test/tc_util.rb
170
+ - test/ts_ro_bundle.rb
171
+ homepage: http://www.taverna.org.uk
172
+ licenses:
173
+ - BSD
174
+ metadata: {}
175
+ post_install_message:
176
+ rdoc_options:
177
+ - -N
178
+ - --tab-width=2
179
+ - --main=ReadMe.rdoc
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: 1.9.3
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ requirements: []
193
+ rubyforge_project:
194
+ rubygems_version: 2.2.2
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: This library provides an API for manipulating Research Object (RO) bundles.
198
+ test_files:
199
+ - test/data/HelloAnyone.robundle
200
+ - test/data/empty-manifest.json
201
+ - test/data/example3-manifest.json
202
+ - test/data/invalid-manifest.json
203
+ - test/data/invalid-manifest.robundle
204
+ - test/helpers/fake_manifest.rb
205
+ - test/helpers/fake_provenance.rb
206
+ - test/helpers/list_tests.rb
207
+ - test/tc_add_annotation.rb
208
+ - test/tc_agent.rb
209
+ - test/tc_aggregate.rb
210
+ - test/tc_annotation.rb
211
+ - test/tc_create.rb
212
+ - test/tc_manifest.rb
213
+ - test/tc_provenance.rb
214
+ - test/tc_read.rb
215
+ - test/tc_remove.rb
216
+ - test/tc_util.rb
217
+ - test/ts_ro_bundle.rb