inqlude 0.7.0 → 0.7.1
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 +7 -0
- data/CHANGELOG.md +23 -0
- data/{README → README.md} +0 -0
- data/TODO +24 -9
- data/accessing-inqlude-data.md +55 -0
- data/inqlude.gemspec +2 -1
- data/lib/cli.rb +36 -4
- data/lib/creator.rb +17 -32
- data/lib/distros/suse.rb +2 -2
- data/lib/downloader.rb +37 -0
- data/lib/exceptions.rb +2 -0
- data/lib/inqlude.rb +21 -15
- data/lib/json_object.rb +104 -0
- data/lib/kde_frameworks_creator.rb +14 -10
- data/lib/kde_frameworks_release.rb +14 -13
- data/lib/library.rb +4 -4
- data/lib/manifest.rb +165 -28
- data/lib/manifest_handler.rb +14 -16
- data/lib/verifier.rb +23 -48
- data/lib/version.rb +1 -1
- data/lib/view.rb +29 -26
- data/manifest-format.md +15 -0
- data/spec/data/inqlude-all-karchive.json +31 -0
- data/spec/data/inqlude-all.json +120 -0
- data/spec/data/invalid-schema.manifest +4 -0
- data/spec/data/karchive-release-5.4.manifest +29 -0
- data/spec/data/karchive-release.manifest +7 -7
- data/spec/data/karchive.readme +0 -6
- data/spec/data/newlib/newlib.manifest +11 -4
- data/spec/data/rendertest-generic.manifest +4 -1
- data/spec/integration/cli_create_spec.rb +24 -0
- data/spec/integration/cli_general_spec.rb +19 -0
- data/spec/integration/cli_get_involved_spec.rb +14 -0
- data/spec/integration/cli_help_spec.rb +21 -0
- data/spec/integration/cli_list_spec.rb +23 -0
- data/spec/integration/cli_verify_spec.rb +37 -0
- data/spec/integration/cli_view_spec.rb +28 -0
- data/spec/integration/spec_helper.rb +2 -0
- data/spec/{creator_spec.rb → unit/creator_spec.rb} +8 -41
- data/spec/unit/downloader_spec.rb +32 -0
- data/spec/unit/json_object_spec.rb +273 -0
- data/spec/{kde_frameworks_creator_spec.rb → unit/kde_frameworks_creator_spec.rb} +13 -14
- data/spec/{kde_frameworks_release_spec.rb → unit/kde_frameworks_release_spec.rb} +14 -10
- data/spec/{library_spec.rb → unit/library_spec.rb} +7 -7
- data/spec/{manifest_handler_spec.rb → unit/manifest_handler_spec.rb} +21 -17
- data/spec/unit/manifest_spec.rb +301 -0
- data/spec/{rpm_manifestizer_spec.rb → unit/rpm_manifestizer_spec.rb} +0 -0
- data/spec/{settings_spec.rb → unit/settings_spec.rb} +0 -0
- data/spec/{spec_helper.rb → unit/spec_helper.rb} +10 -12
- data/spec/{verifier_spec.rb → unit/verifier_spec.rb} +24 -15
- data/spec/{view_spec.rb → unit/view_spec.rb} +38 -7
- data/view/all.html.haml +4 -4
- data/view/commercial.html.haml +1 -1
- data/view/development.html.haml +3 -3
- data/view/get.html.haml +11 -2
- data/view/group.html.haml +4 -4
- data/view/index.html.haml +1 -1
- data/view/library.html.haml +8 -9
- data/view/unreleased.html.haml +1 -1
- data/yes_ship_it.conf +3 -0
- metadata +67 -51
- data/spec/manifest_spec.rb +0 -63
@@ -7,7 +7,7 @@ describe KdeFrameworksCreator do
|
|
7
7
|
describe "#framework" do
|
8
8
|
it "raises error on invalid name" do
|
9
9
|
c = KdeFrameworksCreator.new
|
10
|
-
expect{c.framework("invalid-name")}.to raise_error
|
10
|
+
expect{c.framework("invalid-name")}.to raise_error(InqludeError)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -24,9 +24,9 @@ describe KdeFrameworksCreator do
|
|
24
24
|
}
|
25
25
|
k.fill_in_data framework, manifest
|
26
26
|
|
27
|
-
expect( manifest
|
28
|
-
expect( manifest
|
29
|
-
expect( manifest
|
27
|
+
expect( manifest.display_name ).to eq "KArchive"
|
28
|
+
expect( manifest.description ).to eq "The intro"
|
29
|
+
expect( manifest.urls.vcs ).to eq "http://git.kde.org/karchive"
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -144,7 +144,7 @@ describe KdeFrameworksCreator do
|
|
144
144
|
|
145
145
|
f = c.framework("ki18n")
|
146
146
|
|
147
|
-
expect( c.errors.count ).to eq
|
147
|
+
expect( c.errors.count ).to eq 3
|
148
148
|
|
149
149
|
error_hash = {}
|
150
150
|
c.errors.each do |error|
|
@@ -154,7 +154,6 @@ describe KdeFrameworksCreator do
|
|
154
154
|
expect( error_hash.has_key? "missing_title" ).to be true
|
155
155
|
expect( error_hash.has_key? "missing_summary" ).to be true
|
156
156
|
expect( error_hash.has_key? "missing_introduction" ).to be true
|
157
|
-
expect( error_hash.has_key? "missing_link_home_page" ).to be true
|
158
157
|
end
|
159
158
|
|
160
159
|
it "generates error for missing summary" do
|
@@ -173,7 +172,7 @@ describe KdeFrameworksCreator do
|
|
173
172
|
expect( f["title"] ).to eq "KService"
|
174
173
|
expect( f["summary"] ).to be nil
|
175
174
|
|
176
|
-
expect( c.errors.count ).to eq
|
175
|
+
expect( c.errors.count ).to eq 2
|
177
176
|
end
|
178
177
|
|
179
178
|
it "optionally doesn't generate error for missing summary" do
|
@@ -232,13 +231,13 @@ describe KdeFrameworksCreator do
|
|
232
231
|
manifest = Manifest.parse_file File.join(output_dir,"karchive",
|
233
232
|
"karchive.manifest")
|
234
233
|
|
235
|
-
expect( manifest
|
236
|
-
expect( manifest
|
237
|
-
expect( manifest
|
238
|
-
expect( manifest
|
239
|
-
expect( manifest
|
240
|
-
expect( manifest
|
241
|
-
expect( manifest
|
234
|
+
expect( manifest.name ).to eq "karchive"
|
235
|
+
expect( manifest.display_name ).to eq "KArchive"
|
236
|
+
expect( manifest.urls.vcs ).to eq "https://projects.kde.org/projects/frameworks/karchive/repository"
|
237
|
+
expect( manifest.urls.homepage ).to eq "https://projects.kde.org/projects/frameworks/karchive"
|
238
|
+
expect( manifest.description ).to eq "KArchive provides classes for easy reading, creation and manipulation of\n\"archive\" formats like ZIP and TAR.\n\nIf also provides transparent compression and decompression of data, like the\nGZip format, via a subclass of QIODevice."
|
239
|
+
expect( manifest.urls.mailing_list ).to eq "https://mail.kde.org/mailman/listinfo/kde-frameworks-devel"
|
240
|
+
expect( manifest.summary ).to eq "Reading, creation, and manipulation of file archives"
|
242
241
|
end
|
243
242
|
|
244
243
|
it "overwrites existing manifests" do
|
@@ -31,8 +31,8 @@ describe KdeFrameworksRelease do
|
|
31
31
|
k.read_generic_manifests
|
32
32
|
|
33
33
|
expect( k.generic_manifests.count ).to eq 2
|
34
|
-
expect( k.generic_manifests[0]
|
35
|
-
expect( k.generic_manifests[1]
|
34
|
+
expect( k.generic_manifests[0].name ).to eq "karchive"
|
35
|
+
expect( k.generic_manifests[1].name ).to eq "kservice"
|
36
36
|
end
|
37
37
|
|
38
38
|
it "writes release manifests" do
|
@@ -50,23 +50,27 @@ describe KdeFrameworksRelease do
|
|
50
50
|
expect( File.exists? manifest_path ).to be true
|
51
51
|
|
52
52
|
manifest = Manifest.parse_file( manifest_path )
|
53
|
-
expect(
|
54
|
-
expect( manifest
|
55
|
-
expect( manifest
|
56
|
-
expect( manifest
|
53
|
+
expect(manifest.class).to be ManifestRelease
|
54
|
+
expect( manifest.name ).to eq "kservice"
|
55
|
+
expect( manifest.version ).to eq "4.9.90"
|
56
|
+
expect( manifest.release_date ).to eq "2014-02-01"
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
it "creates release manifest from generic manifest" do
|
61
61
|
generic_manifest = Manifest.parse_file(
|
62
62
|
given_file("karchive-generic.manifest") )
|
63
|
-
date = "2014-
|
64
|
-
version = "5.
|
63
|
+
date = "2014-11-06"
|
64
|
+
version = "5.4.0"
|
65
65
|
release_manifest = KdeFrameworksRelease.create_release_manifest(
|
66
66
|
generic_manifest, date, version)
|
67
|
-
expected_json = File.read( given_file("karchive-release.manifest") )
|
67
|
+
expected_json = File.read( given_file("karchive-release-5.4.manifest") )
|
68
68
|
expected_json.chomp! # Remove newline added by File.read
|
69
|
-
expect(
|
69
|
+
expect( release_manifest.to_json ).to eq expected_json
|
70
|
+
end
|
71
|
+
|
72
|
+
it "strips patch release" do
|
73
|
+
expect(KdeFrameworksRelease.strip_patch_release("5.4.0")).to eq "5.4"
|
70
74
|
end
|
71
75
|
|
72
76
|
end
|
@@ -25,8 +25,8 @@ describe Library do
|
|
25
25
|
library = Library.new
|
26
26
|
library.manifests = manifests
|
27
27
|
|
28
|
-
expect( library.generic_manifest
|
29
|
-
expect( library.generic_manifest
|
28
|
+
expect( library.generic_manifest.name ).to eq "mylib"
|
29
|
+
expect( library.generic_manifest.class ).to be ManifestGeneric
|
30
30
|
end
|
31
31
|
|
32
32
|
it "returns relase manifests" do
|
@@ -40,7 +40,7 @@ describe Library do
|
|
40
40
|
|
41
41
|
expect( library.release_manifests.count ).to eq 2
|
42
42
|
library.release_manifests.each do |release_manifest|
|
43
|
-
expect( release_manifest
|
43
|
+
expect( release_manifest.class ).to be ManifestRelease
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -53,8 +53,8 @@ describe Library do
|
|
53
53
|
library = Library.new
|
54
54
|
library.manifests = manifests
|
55
55
|
|
56
|
-
expect( library.latest_manifest
|
57
|
-
expect( library.latest_manifest
|
56
|
+
expect( library.latest_manifest.class ).to be ManifestRelease
|
57
|
+
expect( library.latest_manifest.version ).to eq "1.1"
|
58
58
|
end
|
59
59
|
|
60
60
|
it "returns latest manifest from generic manifest" do
|
@@ -64,8 +64,8 @@ describe Library do
|
|
64
64
|
library = Library.new
|
65
65
|
library.manifests = manifests
|
66
66
|
|
67
|
-
expect( library.latest_manifest
|
68
|
-
expect( library.latest_manifest
|
67
|
+
expect( library.latest_manifest.class ).to be ManifestGeneric
|
68
|
+
expect( library.latest_manifest.version ).to be nil
|
69
69
|
end
|
70
70
|
|
71
71
|
end
|
@@ -26,14 +26,14 @@ describe ManifestHandler do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "provides access to manifests" do
|
29
|
-
expect(mh.manifest("awesomelib")
|
30
|
-
expect { mh.manifest("nonexisting") }.to raise_error
|
29
|
+
expect(mh.manifest("awesomelib")).to be_a Manifest
|
30
|
+
expect { mh.manifest("nonexisting") }.to raise_error(InqludeError)
|
31
31
|
end
|
32
32
|
|
33
33
|
it "reads schema type" do
|
34
|
-
expect(mh.manifest("awesomelib")
|
35
|
-
expect(mh.manifest("newlib")
|
36
|
-
expect(mh.manifest("proprietarylib")
|
34
|
+
expect(mh.manifest("awesomelib").class).to be ManifestRelease
|
35
|
+
expect(mh.manifest("newlib").class).to be ManifestGeneric
|
36
|
+
expect(mh.manifest("proprietarylib").class).to be ManifestProprietaryRelease
|
37
37
|
end
|
38
38
|
|
39
39
|
context "default manifest path" do
|
@@ -63,28 +63,28 @@ describe ManifestHandler do
|
|
63
63
|
it "returns stable libraries" do
|
64
64
|
libraries = mh.libraries :stable
|
65
65
|
expect( libraries.count ).to eq 2
|
66
|
-
expect( libraries.first.manifests.last
|
67
|
-
expect( libraries.first.manifests.last
|
66
|
+
expect( libraries.first.manifests.last.name ).to eq "awesomelib"
|
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
|
-
expect( libraries.first.manifests.last
|
74
|
-
expect( libraries.first.manifests.last
|
73
|
+
expect( libraries.first.manifests.last.name ).to eq "bleedingedge"
|
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
|
-
expect( libraries.first.manifests.last
|
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
|
86
|
-
expect( libraries.first.manifests.last
|
87
|
-
expect( libraries[1].manifests.last
|
86
|
+
expect( libraries.first.manifests.last.name ).to eq "awesomelib"
|
87
|
+
expect( libraries[1].manifests.last.name ).to eq "commercial"
|
88
88
|
end
|
89
89
|
|
90
90
|
end
|
@@ -93,7 +93,7 @@ describe ManifestHandler do
|
|
93
93
|
it "returns all libraries of a group" do
|
94
94
|
libraries = mh.group("kde-frameworks")
|
95
95
|
expect( libraries.count ).to eq 2
|
96
|
-
expect( libraries.first.manifests.last
|
96
|
+
expect( libraries.first.manifests.last.name ).to eq "awesomelib"
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
@@ -127,15 +127,15 @@ describe ManifestHandler do
|
|
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
|
-
expect( generic_manifest
|
131
|
-
expect( generic_manifest
|
130
|
+
expect( generic_manifest.name ).to eq "karchive"
|
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
|
-
expect( libraries.first.latest_manifest
|
138
|
-
expect( libraries.first.latest_manifest
|
137
|
+
expect( libraries.first.latest_manifest.name ).to eq "karchive"
|
138
|
+
expect( libraries.first.latest_manifest.version ).to eq "4.9.90"
|
139
139
|
end
|
140
140
|
|
141
141
|
it "lists unreleased libraries" do
|
@@ -144,4 +144,8 @@ describe ManifestHandler do
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
+
it "generates inqlude-all.json" do
|
148
|
+
expected_json = File.read(test_data_path("inqlude-all.json"))
|
149
|
+
expect(mh.generate_inqlude_all).to eq expected_json
|
150
|
+
end
|
147
151
|
end
|
@@ -0,0 +1,301 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Manifest do
|
4
|
+
|
5
|
+
include_context "manifest_files"
|
6
|
+
|
7
|
+
it "provides schema identifier" do
|
8
|
+
expect(ManifestRelease.schema_id).to include("inqlude.org")
|
9
|
+
expect(ManifestRelease.schema_id).to include("release")
|
10
|
+
|
11
|
+
expect(ManifestGeneric.schema_id).to include("inqlude.org")
|
12
|
+
expect(ManifestGeneric.schema_id).to include("generic")
|
13
|
+
|
14
|
+
expect(ManifestProprietaryRelease.schema_id).to include("inqlude.org")
|
15
|
+
expect(ManifestProprietaryRelease.schema_id).to include("proprietary")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns schema id" do
|
19
|
+
expect(ManifestGeneric.schema_id).to eq(
|
20
|
+
"http://inqlude.org/schema/generic-manifest-v1#")
|
21
|
+
expect(ManifestRelease.schema_id).to eq(
|
22
|
+
"http://inqlude.org/schema/release-manifest-v1#")
|
23
|
+
expect(ManifestProprietaryRelease.schema_id).to eq(
|
24
|
+
"http://inqlude.org/schema/proprietary-release-manifest-v1#")
|
25
|
+
end
|
26
|
+
|
27
|
+
it "parses schema version" do
|
28
|
+
expect{Manifest.parse_schema_version("xxx")}.to raise_error(InqludeError)
|
29
|
+
|
30
|
+
version = Manifest.parse_schema_version(
|
31
|
+
"http://inqlude.org/schema/release-manifest-v1#" )
|
32
|
+
expect(version).to eq 1
|
33
|
+
|
34
|
+
version = Manifest.parse_schema_version(
|
35
|
+
"http://inqlude.org/schema/release-manifest-v2#" )
|
36
|
+
expect(version).to eq 2
|
37
|
+
|
38
|
+
version = Manifest.parse_schema_version(
|
39
|
+
"http://inqlude.org/schema/generic-manifest-v1#" )
|
40
|
+
expect(version).to eq 1
|
41
|
+
end
|
42
|
+
|
43
|
+
it "parses release manifest" do
|
44
|
+
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
45
|
+
manifest = Manifest.parse_file filename
|
46
|
+
expect(manifest.class).to be ManifestRelease
|
47
|
+
expect(manifest.name).to eq "awesomelib"
|
48
|
+
expect(manifest.version).to eq "0.2.0"
|
49
|
+
|
50
|
+
expect(manifest.filename).to eq "awesomelib.2013-09-08.manifest"
|
51
|
+
expect(manifest.libraryname).to eq "awesomelib"
|
52
|
+
|
53
|
+
expect(manifest.schema_version).to eq 1
|
54
|
+
end
|
55
|
+
|
56
|
+
it "parses generic manifest" do
|
57
|
+
filename = File.join settings.manifest_path, newlib_manifest_file
|
58
|
+
manifest = Manifest.parse_file filename
|
59
|
+
expect(manifest.class).to be ManifestGeneric
|
60
|
+
expect(manifest.name).to eq "newlib"
|
61
|
+
expect(manifest.version).to eq nil
|
62
|
+
|
63
|
+
expect(manifest.filename).to eq "newlib.manifest"
|
64
|
+
|
65
|
+
expect(manifest.schema_version).to eq 1
|
66
|
+
end
|
67
|
+
|
68
|
+
it "writes JSON for release manifest" do
|
69
|
+
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
70
|
+
manifest = Manifest.parse_file filename
|
71
|
+
expect( manifest.to_json ).to eq File.read( filename )
|
72
|
+
end
|
73
|
+
|
74
|
+
it "writes JSON for generic manifest" do
|
75
|
+
filename = File.join settings.manifest_path, newlib_manifest_file
|
76
|
+
manifest = Manifest.parse_file filename
|
77
|
+
expect( manifest.to_json ).to eq File.read( filename )
|
78
|
+
end
|
79
|
+
|
80
|
+
it "has accessors for all attributes" do
|
81
|
+
m = ManifestRelease.new
|
82
|
+
|
83
|
+
m.name = "Name"
|
84
|
+
expect(m.name).to eq "Name"
|
85
|
+
|
86
|
+
m.release_date = Date.parse("2014-08-11")
|
87
|
+
expect(m.release_date).to eq Date.parse("2014-08-11")
|
88
|
+
expect(m.release_date.to_s).to eq "2014-08-11"
|
89
|
+
|
90
|
+
m.version = "0.7.0"
|
91
|
+
expect(m.version).to eq "0.7.0"
|
92
|
+
|
93
|
+
m.summary = "One-line summary"
|
94
|
+
expect(m.summary).to eq "One-line summary"
|
95
|
+
|
96
|
+
m.urls.homepage = "http://example.com"
|
97
|
+
expect(m.urls.homepage).to eq "http://example.com"
|
98
|
+
m.urls.api_docs = "http://example.com/api"
|
99
|
+
expect(m.urls.api_docs).to eq "http://example.com/api"
|
100
|
+
m.urls.download = "http://example.com/download"
|
101
|
+
expect(m.urls.download).to eq "http://example.com/download"
|
102
|
+
m.urls.vcs = "https://example.com/git"
|
103
|
+
expect(m.urls.vcs).to eq "https://example.com/git"
|
104
|
+
m.urls.tutorial = "http://tutorial.example.com"
|
105
|
+
expect(m.urls.tutorial).to eq "http://tutorial.example.com"
|
106
|
+
m.urls.description_source = "http://wikipedia.de/juhu"
|
107
|
+
expect(m.urls.description_source).to eq "http://wikipedia.de/juhu"
|
108
|
+
m.urls.announcement = "http://cnn.com/headline"
|
109
|
+
expect(m.urls.announcement).to eq "http://cnn.com/headline"
|
110
|
+
m.urls.mailing_list = "mailto:list@example.com"
|
111
|
+
expect(m.urls.mailing_list).to eq "mailto:list@example.com"
|
112
|
+
m.urls.contact = "contact@example.com"
|
113
|
+
expect(m.urls.contact).to eq "contact@example.com"
|
114
|
+
|
115
|
+
m.urls.custom = { "special" => "pointer" }
|
116
|
+
expect(m.urls.custom["special"]).to eq "pointer"
|
117
|
+
|
118
|
+
m.licenses = ["GPLv2", "LGPLv2"]
|
119
|
+
expect(m.licenses).to eq ["GPLv2", "LGPLv2"]
|
120
|
+
|
121
|
+
m.description = "Multi-line description\nwith info."
|
122
|
+
expect(m.description).to eq "Multi-line description\nwith info."
|
123
|
+
|
124
|
+
m.authors = ["Clark Kent <ck@example.com>"]
|
125
|
+
expect(m.authors).to be_a Array
|
126
|
+
expect(m.authors).to eq ["Clark Kent <ck@example.com>"]
|
127
|
+
|
128
|
+
m.maturity = "stable"
|
129
|
+
expect(m.maturity).to eq "stable"
|
130
|
+
|
131
|
+
m.platforms = ["Linux", "Windows"]
|
132
|
+
expect(m.platforms).to eq ["Linux", "Windows"]
|
133
|
+
|
134
|
+
m.packages.source = "http://download.example.com/file"
|
135
|
+
expect(m.packages.source).to eq "http://download.example.com/file"
|
136
|
+
|
137
|
+
m.packages.openSUSE = { "something" => "here" }
|
138
|
+
expect(m.packages.openSUSE).to eq( { "something" => "here" } )
|
139
|
+
|
140
|
+
m.group = "kde-frameworks"
|
141
|
+
expect(m.group).to eq "kde-frameworks"
|
142
|
+
end
|
143
|
+
|
144
|
+
it "constructs object from schema id" do
|
145
|
+
m = Manifest.new(ManifestRelease.schema_id)
|
146
|
+
expect(m.schema_version).to eq 1
|
147
|
+
end
|
148
|
+
|
149
|
+
it "returns descendants" do
|
150
|
+
expect(Manifest.descendants).to be_a(Array)
|
151
|
+
expect(Manifest.descendants.count).to be >= 3
|
152
|
+
expect(Manifest.descendants).to include ManifestGeneric
|
153
|
+
expect(Manifest.descendants).to include ManifestRelease
|
154
|
+
end
|
155
|
+
|
156
|
+
it "contructs generic manifest from schema id" do
|
157
|
+
expect(Manifest.for_schema_id(ManifestGeneric.schema_id)).to(
|
158
|
+
be_a ManifestGeneric)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "contructs release manifest from schema id" do
|
162
|
+
expect(Manifest.for_schema_id(ManifestRelease.schema_id)).to(
|
163
|
+
be_a ManifestRelease)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "contructs proprietary release manifest from schema id" do
|
167
|
+
expect(Manifest.for_schema_id(ManifestProprietaryRelease.schema_id)).to(
|
168
|
+
be_a ManifestProprietaryRelease)
|
169
|
+
end
|
170
|
+
|
171
|
+
describe ".is_released?" do
|
172
|
+
it "returns release state for generic manifest without commercial license" do
|
173
|
+
expect(ManifestGeneric.new.is_released?).to be false
|
174
|
+
end
|
175
|
+
|
176
|
+
it "returns release state for generic manifest with only commercial license" do
|
177
|
+
manifest = ManifestGeneric.new
|
178
|
+
manifest.licenses = ["Commercial"]
|
179
|
+
expect(manifest.is_released?).to be true
|
180
|
+
end
|
181
|
+
|
182
|
+
it "returns release state for generic manifest with additional commercial license" do
|
183
|
+
manifest = ManifestGeneric.new
|
184
|
+
manifest.licenses = ["Commercial", "GPLv2"]
|
185
|
+
expect(manifest.is_released?).to be false
|
186
|
+
end
|
187
|
+
|
188
|
+
it "returns release state for release manifest" do
|
189
|
+
expect(ManifestRelease.new.is_released?).to be true
|
190
|
+
end
|
191
|
+
|
192
|
+
it "returns release state for proprietary release manifest" do
|
193
|
+
expect(ManifestProprietaryRelease.new.is_released?).to be true
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe ".path" do
|
198
|
+
it "returns generic manifest path" do
|
199
|
+
manifest = create_generic_manifest( "mylib" )
|
200
|
+
expect( manifest.path ).to eq( "mylib/mylib.manifest" )
|
201
|
+
end
|
202
|
+
|
203
|
+
it "returns release manifest path" do
|
204
|
+
manifest = create_manifest( "mylib", "2014-02-01", "1.0" )
|
205
|
+
expect( manifest.path ).to eq( "mylib/mylib.2014-02-01.manifest" )
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe ".expected_filename" do
|
210
|
+
it "returns expected filename for generic manifest" do
|
211
|
+
m = ManifestGeneric.new
|
212
|
+
m.name = "xyz"
|
213
|
+
|
214
|
+
expect(m.expected_filename).to eq "xyz.manifest"
|
215
|
+
end
|
216
|
+
|
217
|
+
it "returns expected filename for release manifest" do
|
218
|
+
m = ManifestRelease.new
|
219
|
+
m.name = "xyz"
|
220
|
+
m.release_date = "2014-08-14"
|
221
|
+
|
222
|
+
expect(m.expected_filename).to eq "xyz.2014-08-14.manifest"
|
223
|
+
end
|
224
|
+
|
225
|
+
it "returns expected filename for proprietary release manifest" do
|
226
|
+
m = ManifestProprietaryRelease.new
|
227
|
+
m.name = "xyz"
|
228
|
+
m.release_date = "2014-08-14"
|
229
|
+
|
230
|
+
expect(m.expected_filename).to eq "xyz.2014-08-14.manifest"
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
describe ".schema_name" do
|
235
|
+
it "returns expected schema name for generic manifest" do
|
236
|
+
m = ManifestGeneric.new
|
237
|
+
expect(m.schema_name).to eq "generic-manifest-v1"
|
238
|
+
end
|
239
|
+
|
240
|
+
it "returns expected schema name for release manifest" do
|
241
|
+
m = ManifestRelease.new
|
242
|
+
expect(m.schema_name).to eq "release-manifest-v1"
|
243
|
+
end
|
244
|
+
|
245
|
+
it "returns expected schema name for proprietary release manifest" do
|
246
|
+
m = ManifestProprietaryRelease.new
|
247
|
+
expect(m.schema_name).to eq "proprietary-release-manifest-v1"
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
describe ".has_version?" do
|
252
|
+
it "returns if generic manifest has version" do
|
253
|
+
expect(ManifestGeneric.new.has_version?).to be false
|
254
|
+
end
|
255
|
+
|
256
|
+
it "returns if release manifest has version" do
|
257
|
+
expect(ManifestGeneric.new.has_version?).to be false
|
258
|
+
end
|
259
|
+
|
260
|
+
it "returns if proprietary release manifest has version" do
|
261
|
+
expect(ManifestGeneric.new.has_version?).to be false
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
describe ".create_release_manifest" do
|
266
|
+
it "copies all data" do
|
267
|
+
generic = ManifestGeneric.new
|
268
|
+
generic.name = "MyLib"
|
269
|
+
generic.summary = "My Lib"
|
270
|
+
generic.urls.homepage = "http://example.com"
|
271
|
+
generic.urls.download = "http://example.com/download"
|
272
|
+
generic.licenses = ["LGPLv2.1+", "Commercial"]
|
273
|
+
generic.description = "My Library"
|
274
|
+
generic.authors = "Cornelius Schumacher <schumacher@kde.org>"
|
275
|
+
generic.maturity = "stable"
|
276
|
+
generic.platforms = ["Linux"]
|
277
|
+
generic.packages.source = "ftp://example.com"
|
278
|
+
generic.group = "magic"
|
279
|
+
|
280
|
+
release = generic.create_release_manifest("2014-08-17", "1.0")
|
281
|
+
|
282
|
+
expect(release.name).to eq "MyLib"
|
283
|
+
expect(release.summary).to eq "My Lib"
|
284
|
+
expect(release.urls.homepage).to eq "http://example.com"
|
285
|
+
expect(release.urls.download).to eq "http://example.com/download"
|
286
|
+
expect(release.licenses).to eq ["LGPLv2.1+", "Commercial"]
|
287
|
+
expect(release.description).to eq "My Library"
|
288
|
+
expect(release.authors).to eq "Cornelius Schumacher <schumacher@kde.org>"
|
289
|
+
expect(release.maturity).to eq "stable"
|
290
|
+
expect(release.platforms).to eq ["Linux"]
|
291
|
+
expect(release.packages.source).to eq "ftp://example.com"
|
292
|
+
expect(release.group).to eq "magic"
|
293
|
+
|
294
|
+
expect(release.release_date).to eq "2014-08-17"
|
295
|
+
expect(release.version).to eq "1.0"
|
296
|
+
end
|
297
|
+
|
298
|
+
it "sets release_date and version" do
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|