inqlude 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -0
  3. data/CHANGELOG.md +7 -0
  4. data/README.md +2 -0
  5. data/bin/inqlude +0 -6
  6. data/lib/cli.rb +18 -8
  7. data/lib/manifest.rb +1 -0
  8. data/lib/verifier.rb +23 -1
  9. data/lib/version.rb +1 -1
  10. data/manifest-format.md +12 -15
  11. data/schema/generic-manifest-v1 +7 -0
  12. data/schema/proprietary-release-manifest-v1 +7 -0
  13. data/schema/release-manifest-v1 +7 -0
  14. data/spec/data/inqlude-all.json +6 -0
  15. data/spec/data/{awesomelib → manifests/awesomelib}/awesomelib.2013-09-08.manifest +3 -0
  16. data/spec/data/{bleedingedge → manifests/bleedingedge}/bleedingedge.2012-01-01.manifest +0 -0
  17. data/spec/data/{commercial → manifests/commercial}/commercial.manifest +0 -0
  18. data/spec/data/{newlib → manifests/newlib}/newlib.manifest +3 -0
  19. data/spec/data/{proprietarylib → manifests/proprietarylib}/proprietarylib.2013-12-22.manifest +0 -0
  20. data/spec/data/missing-topics/miss-topics/miss-topics.manifest +20 -0
  21. data/spec/data/missing-topics/no-topics/no-topics.manifest +20 -0
  22. data/spec/integration/cli_general_spec.rb +1 -3
  23. data/spec/integration/cli_list_spec.rb +2 -2
  24. data/spec/integration/cli_verify_spec.rb +44 -7
  25. data/spec/integration/cli_view_spec.rb +2 -2
  26. data/spec/unit/creator_spec.rb +12 -12
  27. data/spec/unit/kde_frameworks_release_spec.rb +11 -11
  28. data/spec/unit/manifest_handler_spec.rb +18 -18
  29. data/spec/unit/spec_helper.rb +1 -3
  30. data/spec/unit/verifier_spec.rb +165 -16
  31. data/topics/README.md +11 -0
  32. data/topics/list_topics +11 -0
  33. data/topics/list_topics.rb +28 -0
  34. data/topics/list_topics_spec.rb +32 -0
  35. data/topics/topics-test.csv +5 -0
  36. data/topics/topics.csv +202 -0
  37. data/view/contribute.html.haml +3 -1
  38. metadata +16 -8
@@ -10,8 +10,8 @@ describe "Command line interface" do
10
10
  describe "view" do
11
11
  it "generates view" do
12
12
  dir = given_directory do
13
- given_directory_from_data("awesomelib")
14
- given_directory_from_data("newlib")
13
+ given_directory_from_data("awesomelib", from: "manifests/awesomelib")
14
+ given_directory_from_data("newlib", from: "manifests/newlib")
15
15
  end
16
16
 
17
17
  output_dir = given_directory
@@ -3,12 +3,12 @@ require File.expand_path('../spec_helper', __FILE__)
3
3
  describe Creator do
4
4
 
5
5
  include GivenFilesystemSpecHelpers
6
-
6
+
7
7
  use_given_filesystem
8
8
 
9
9
  let(:settings) do
10
10
  s = Settings.new
11
- s.manifest_path = File.expand_path('spec/data/')
11
+ s.manifest_path = File.expand_path('spec/data/manifests')
12
12
  s.offline = true
13
13
  s
14
14
  end
@@ -25,12 +25,12 @@ describe Creator do
25
25
  settings.manifest_path = given_directory do
26
26
  given_directory "awesomelib" do
27
27
  manifest_filename = given_file "awesomelib.2013-09-08.manifest",
28
- :from => "awesomelib/awesomelib.2013-09-08.manifest"
28
+ :from => "manifests/awesomelib/awesomelib.2013-09-08.manifest"
29
29
  end
30
30
  end
31
31
  manifest_filename = File.join( settings.manifest_path, "awesomelib",
32
32
  "awesomelib.2013-10-01.manifest" )
33
-
33
+
34
34
  c = Creator.new settings, "awesomelib"
35
35
 
36
36
  expect( File.exists?(manifest_filename) ).to be false
@@ -61,9 +61,9 @@ describe Creator do
61
61
 
62
62
  c = Creator.new settings, "newawesomelib"
63
63
  expect(File.exists?(manifest_filename)).to be false
64
-
64
+
65
65
  c.create "edge", "2013-09-01"
66
-
66
+
67
67
  expect(File.exists?(manifest_filename)).to be true
68
68
 
69
69
  m = Manifest.parse_file(manifest_filename)
@@ -82,19 +82,19 @@ describe Creator do
82
82
 
83
83
  c = Creator.new settings, "newawesomelib"
84
84
  expect(File.exists?(manifest_filename)).to be false
85
-
85
+
86
86
  c.create_generic
87
-
87
+
88
88
  expect(File.exists?(manifest_filename)).to be true
89
89
  end
90
-
90
+
91
91
  describe "#create_dir" do
92
92
 
93
93
  before(:each) do
94
94
  @settings = Settings.new
95
95
  @settings.manifest_path = given_directory
96
96
  end
97
-
97
+
98
98
  it "creates dir" do
99
99
  c = Creator.new( @settings, "one" )
100
100
  c.create_dir()
@@ -103,7 +103,7 @@ describe Creator do
103
103
  expect( File.directory? File.join( @settings.manifest_path, "one" ) )
104
104
  .to be true
105
105
  end
106
-
106
+
107
107
  it "uses existing dir" do
108
108
  c = Creator.new( @settings, "one" )
109
109
  c.create_dir()
@@ -114,5 +114,5 @@ describe Creator do
114
114
  .to be true
115
115
  end
116
116
  end
117
-
117
+
118
118
  end
@@ -1,11 +1,11 @@
1
1
  require File.expand_path('../spec_helper', __FILE__)
2
2
 
3
3
  describe KdeFrameworksRelease do
4
-
4
+
5
5
  include GivenFilesystemSpecHelpers
6
6
 
7
7
  use_given_filesystem
8
-
8
+
9
9
  context "given KDE generic manifests" do
10
10
  before(:each) do
11
11
  @manifest_dir = given_directory do
@@ -16,31 +16,31 @@ describe KdeFrameworksRelease do
16
16
  given_file("kservice.manifest", :from => "kservice-generic.manifest")
17
17
  end
18
18
  given_directory("newlib") do
19
- given_file("newlib.manifest", :from => "newlib/newlib.manifest")
19
+ given_file("newlib.manifest", :from => "manifests/newlib/newlib.manifest")
20
20
  end
21
21
  end
22
-
22
+
23
23
  s = Settings.new
24
24
  s.manifest_path = @manifest_dir
25
25
  s.offline = true
26
26
  @manifest_handler = ManifestHandler.new s
27
27
  end
28
-
28
+
29
29
  it "reads generic manifests" do
30
30
  k = KdeFrameworksRelease.new @manifest_handler
31
31
  k.read_generic_manifests
32
-
32
+
33
33
  expect( k.generic_manifests.count ).to eq 2
34
34
  expect( k.generic_manifests[0].name ).to eq "karchive"
35
35
  expect( k.generic_manifests[1].name ).to eq "kservice"
36
36
  end
37
-
37
+
38
38
  it "writes release manifests" do
39
39
  k = KdeFrameworksRelease.new @manifest_handler
40
40
  k.read_generic_manifests
41
-
41
+
42
42
  k.write_release_manifests( "2014-02-01", "4.9.90" )
43
-
43
+
44
44
  manifest_path = File.join( @manifest_dir,
45
45
  "karchive/karchive.2014-02-01.manifest" )
46
46
  expect( File.exists? manifest_path ).to be true
@@ -48,7 +48,7 @@ describe KdeFrameworksRelease do
48
48
  manifest_path = File.join( @manifest_dir,
49
49
  "kservice/kservice.2014-02-01.manifest" )
50
50
  expect( File.exists? manifest_path ).to be true
51
-
51
+
52
52
  manifest = Manifest.parse_file( manifest_path )
53
53
  expect(manifest.class).to be ManifestRelease
54
54
  expect( manifest.name ).to eq "kservice"
@@ -72,5 +72,5 @@ describe KdeFrameworksRelease do
72
72
  it "strips patch release" do
73
73
  expect(KdeFrameworksRelease.strip_patch_release("5.4.0")).to eq "5.4"
74
74
  end
75
-
75
+
76
76
  end
@@ -6,17 +6,17 @@ describe ManifestHandler do
6
6
 
7
7
  let(:settings) do
8
8
  s = Settings.new
9
- s.manifest_path = File.expand_path('spec/data/')
9
+ s.manifest_path = File.expand_path('spec/data/manifests')
10
10
  s.offline = true
11
11
  s
12
12
  end
13
-
13
+
14
14
  let(:mh) do
15
15
  mh = ManifestHandler.new settings
16
16
  mh.read_remote
17
17
  mh
18
18
  end
19
-
19
+
20
20
  it "reads manifests" do
21
21
  expect(mh.manifests.count).to eq 5
22
22
  expect(mh.libraries.count).to eq 5
@@ -53,33 +53,33 @@ describe ManifestHandler do
53
53
  File.expand_path( "~/.local/share/inqlude/manifests/mylib/mylib.2014-02-01.manifest" ) )
54
54
  end
55
55
  end
56
-
56
+
57
57
  describe "#libraries" do
58
58
 
59
59
  it "returns all libraries" do
60
60
  expect( mh.libraries.count ).to eq 5
61
61
  end
62
-
62
+
63
63
  it "returns stable libraries" do
64
64
  libraries = mh.libraries :stable
65
65
  expect( libraries.count ).to eq 2
66
66
  expect( libraries.first.manifests.last.name ).to eq "awesomelib"
67
67
  expect( libraries.first.manifests.last.version ).to eq "0.2.0"
68
68
  end
69
-
69
+
70
70
  it "returns development versions" do
71
71
  libraries = mh.libraries :edge
72
72
  expect( libraries.count ).to eq 1
73
73
  expect( libraries.first.manifests.last.name ).to eq "bleedingedge"
74
74
  expect( libraries.first.manifests.last.version ).to eq "edge"
75
75
  end
76
-
76
+
77
77
  it "returns unreleased libraries" do
78
78
  libraries = mh.unreleased_libraries
79
79
  expect( libraries.count ).to eq 1
80
80
  expect( libraries.first.manifests.last.name ).to eq "newlib"
81
81
  end
82
-
82
+
83
83
  it "returns commercial libraries" do
84
84
  libraries = mh.commercial_libraries
85
85
  expect( libraries.count ).to eq 3
@@ -88,7 +88,7 @@ describe ManifestHandler do
88
88
  end
89
89
 
90
90
  end
91
-
91
+
92
92
  describe "#group" do
93
93
  it "returns all libraries of a group" do
94
94
  libraries = mh.group("kde-frameworks")
@@ -96,16 +96,16 @@ describe ManifestHandler do
96
96
  expect( libraries.first.manifests.last.name ).to eq "awesomelib"
97
97
  end
98
98
  end
99
-
99
+
100
100
  describe "#library" do
101
-
101
+
102
102
  it "returns one library" do
103
103
  library = mh.library "awesomelib"
104
104
  expect( library.name ).to eq "awesomelib"
105
105
  end
106
-
106
+
107
107
  end
108
-
108
+
109
109
  context "library with generic and release manifest" do
110
110
  use_given_filesystem
111
111
 
@@ -116,34 +116,34 @@ describe ManifestHandler do
116
116
  given_file "karchive.2014-02-01.manifest", :from => "karchive-release-beta.manifest"
117
117
  end
118
118
  end
119
-
119
+
120
120
  s = Settings.new
121
121
  s.manifest_path = @manifest_path
122
122
  s.offline = true
123
123
  @manifest_handler = ManifestHandler.new s
124
124
  @manifest_handler.read_remote
125
125
  end
126
-
126
+
127
127
  it "reads generic manifest" do
128
128
  expect( @manifest_handler.library("karchive").manifests.count ).to eq 2
129
129
  generic_manifest = @manifest_handler.library("karchive").generic_manifest
130
130
  expect( generic_manifest.name ).to eq "karchive"
131
131
  expect( generic_manifest.class ).to be ManifestGeneric
132
132
  end
133
-
133
+
134
134
  it "lists development versions" do
135
135
  libraries = @manifest_handler.libraries :beta
136
136
  expect( libraries.count ).to eq 1
137
137
  expect( libraries.first.latest_manifest.name ).to eq "karchive"
138
138
  expect( libraries.first.latest_manifest.version ).to eq "4.9.90"
139
139
  end
140
-
140
+
141
141
  it "lists unreleased libraries" do
142
142
  libraries = @manifest_handler.unreleased_libraries
143
143
  expect( libraries.count ).to eq 0
144
144
  end
145
145
  end
146
-
146
+
147
147
  it "generates inqlude-all.json" do
148
148
  expected_json = File.read(test_data_path("inqlude-all.json"))
149
149
  expect(mh.generate_inqlude_all).to eq expected_json
@@ -23,10 +23,9 @@ def create_generic_manifest name
23
23
  end
24
24
 
25
25
  shared_context "manifest_files" do
26
-
27
26
  let(:settings) do
28
27
  s = Settings.new
29
- s.manifest_path = File.expand_path('spec/data/')
28
+ s.manifest_path = File.expand_path('spec/data/manifests')
30
29
  s.offline = true
31
30
  s
32
31
  end
@@ -42,5 +41,4 @@ shared_context "manifest_files" do
42
41
  let(:proprietarylib_manifest_file) do
43
42
  "proprietarylib/proprietarylib.2013-12-22.manifest"
44
43
  end
45
-
46
44
  end
@@ -3,13 +3,126 @@ require File.expand_path('../spec_helper', __FILE__)
3
3
  describe Verifier do
4
4
 
5
5
  include_context "manifest_files"
6
-
7
- it "defines result class" do
8
- r = Verifier::Result.new
9
- expect(r.valid?).to be true
10
- expect(r.errors.class).to be Array
6
+
7
+ describe Verifier::Result do
8
+ it "defines result class" do
9
+ expect(subject.valid?).to be true
10
+ expect(subject.errors.class).to be Array
11
+ end
12
+
13
+ context "no errors" do
14
+ before do
15
+ subject.name = "abc"
16
+ end
17
+
18
+ it "is valid" do
19
+ expect(subject.valid?).to be true
20
+ end
21
+
22
+ it "prints result" do
23
+ expected_output = <<EOT
24
+ Verify manifest abc...ok
25
+ EOT
26
+
27
+ expect {
28
+ subject.print_result
29
+ }.to output(expected_output).to_stdout
30
+ end
31
+ end
32
+
33
+ context "one error" do
34
+ before do
35
+ subject.name = "abc"
36
+ subject.errors.push("an error")
37
+ end
38
+
39
+ it "is invalid" do
40
+ expect(subject.valid?).to be false
41
+ end
42
+
43
+ it "prints result" do
44
+ expected_output = <<EOT
45
+ Verify manifest abc...error
46
+ an error
47
+ EOT
48
+
49
+ expect {
50
+ subject.print_result
51
+ }.to output(expected_output).to_stdout
52
+ end
53
+ end
54
+
55
+ context "multiple errors" do
56
+ before do
57
+ subject.name = "abc"
58
+ subject.errors.push("an error")
59
+ subject.errors.push("another error")
60
+ end
61
+
62
+ it "is invalid" do
63
+ expect(subject.valid?).to be false
64
+ end
65
+
66
+ it "prints result" do
67
+ expected_output = <<EOT
68
+ Verify manifest abc...error
69
+ an error
70
+ another error
71
+ EOT
72
+
73
+ expect {
74
+ subject.print_result
75
+ }.to output(expected_output).to_stdout
76
+ end
77
+ end
78
+
79
+ context "one warning" do
80
+ before do
81
+ subject.name = "xyz"
82
+ subject.warnings.push("a warning")
83
+ end
84
+
85
+ it "has warning" do
86
+ expect(subject.has_warnings?).to be true
87
+ end
88
+
89
+ it "prints warning" do
90
+ expected_output = <<EOT
91
+ Verify manifest xyz...ok
92
+ a warning
93
+ EOT
94
+
95
+ expect {
96
+ subject.print_result
97
+ }.to output(expected_output).to_stdout
98
+ end
99
+ end
100
+
101
+ context "multiple warnings" do
102
+ before do
103
+ subject.name = "xyz"
104
+ subject.warnings.push("a warning")
105
+ subject.warnings.push("another warning")
106
+ end
107
+
108
+ it "has warning" do
109
+ expect(subject.has_warnings?).to be true
110
+ end
111
+
112
+ it "prints warning" do
113
+ expected_output = <<EOT
114
+ Verify manifest xyz...ok
115
+ a warning
116
+ another warning
117
+ EOT
118
+
119
+ expect {
120
+ subject.print_result
121
+ }.to output(expected_output).to_stdout
122
+ end
123
+ end
11
124
  end
12
-
125
+
13
126
  it "verifies read manifests" do
14
127
  handler = ManifestHandler.new settings
15
128
  handler.read_remote
@@ -25,7 +138,7 @@ describe Verifier do
25
138
  manifest = ManifestRelease.new
26
139
  expect(verifier.verify( manifest ).valid?).to be false
27
140
  end
28
-
141
+
29
142
  it "detects invalid entries" do
30
143
  handler = ManifestHandler.new settings
31
144
  handler.read_remote
@@ -45,7 +158,7 @@ describe Verifier do
45
158
 
46
159
  manifest = handler.manifest("awesomelib")
47
160
  expect(verifier.verify(manifest).valid?).to be true
48
-
161
+
49
162
  manifest.filename = "wrongname"
50
163
 
51
164
  result = verifier.verify(manifest)
@@ -54,9 +167,45 @@ describe Verifier do
54
167
  expect(result.errors.first).to eq "Expected file name: awesomelib.2013-09-08.manifest"
55
168
  end
56
169
 
170
+ context "one invalid topic" do
171
+ it "detects invalid topics" do
172
+ handler = ManifestHandler.new settings
173
+ handler.read_remote
174
+ verifier = Verifier.new settings
175
+
176
+ manifest = handler.manifest("awesomelib")
177
+ expect(verifier.verify(manifest).valid?).to be true
178
+
179
+ manifest.topics = ["Invalid"]
180
+
181
+ result = verifier.verify(manifest)
182
+
183
+ expect(result.valid?).to be false
184
+ expect(result.errors).to include "Invalid topics 'Invalid'. Valid topics are 'API', 'Artwork', 'Bindings', 'Communication', 'Data', 'Desktop', 'Development', 'Graphics', 'Logging', 'Mobile', 'Multimedia', 'Printing', 'QML', 'Scripting', 'Security', 'Text', 'Web', 'Widgets'"
185
+ end
186
+ end
187
+
188
+ context "multiple invalid topics" do
189
+ it "detects invalid topics" do
190
+ handler = ManifestHandler.new settings
191
+ handler.read_remote
192
+ verifier = Verifier.new settings
193
+
194
+ manifest = handler.manifest("awesomelib")
195
+ expect(verifier.verify(manifest).valid?).to be true
196
+
197
+ manifest.topics = ["API","Invalid1","Invalid2"]
198
+
199
+ result = verifier.verify(manifest)
200
+
201
+ expect(result.valid?).to be false
202
+ expect(result.errors).to include "Invalid topics 'Invalid1', 'Invalid2'. Valid topics are 'API', 'Artwork', 'Bindings', 'Communication', 'Data', 'Desktop', 'Development', 'Graphics', 'Logging', 'Mobile', 'Multimedia', 'Printing', 'QML', 'Scripting', 'Security', 'Text', 'Web', 'Widgets'"
203
+ end
204
+ end
205
+
57
206
  it "verifies release manifest file" do
58
207
  filename = File.join settings.manifest_path, awesomelib_manifest_file
59
-
208
+
60
209
  verifier = Verifier.new settings
61
210
 
62
211
  expect( verifier.verify_file( filename ).valid? ).to be true
@@ -64,16 +213,16 @@ describe Verifier do
64
213
 
65
214
  it "verifies generic manifest file" do
66
215
  filename = File.join settings.manifest_path, newlib_manifest_file
67
-
216
+
68
217
  verifier = Verifier.new settings
69
218
 
70
219
  verification_result = verifier.verify_file( filename )
71
220
  expect( verification_result.valid? ).to be true
72
221
  end
73
-
222
+
74
223
  it "verifies proprietary release manifest file" do
75
224
  filename = File.join settings.manifest_path, proprietarylib_manifest_file
76
-
225
+
77
226
  verifier = Verifier.new settings
78
227
 
79
228
  verification_result = verifier.verify_file( filename )
@@ -88,21 +237,21 @@ describe Verifier do
88
237
  verification_result = verifier.verify_file( filename )
89
238
  expect( verification_result.valid? ).to be false
90
239
  end
91
-
240
+
92
241
  it "verifies schema" do
93
242
  manifest = ManifestRelease.new
94
243
  manifest.name = "mylib"
95
244
  manifest.release_date = "2013-02-28"
96
245
  manifest.filename = "mylib.2013-02-28.manifest"
97
246
  manifest.libraryname = "mylib"
98
-
247
+
99
248
  verifier = Verifier.new settings
100
-
249
+
101
250
  errors = verifier.verify(manifest).errors
102
251
 
103
252
  expect( errors.class ).to be Array
104
253
  expect(errors[0]).to match /^Schema validation error/
105
254
  expect(errors.count).to eq 8
106
255
  end
107
-
256
+
108
257
  end