ro-bundle 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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