inqlude 0.0.8 → 0.7.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.
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/Gemfile +3 -0
- data/README +35 -1
- data/TODO +50 -15
- data/inqlude.gemspec +7 -2
- data/lib/cli.rb +70 -6
- data/lib/creator.rb +32 -8
- data/lib/git_hub_tool.rb +92 -0
- data/lib/inqlude.rb +7 -0
- data/lib/kde_frameworks_creator.rb +173 -0
- data/lib/kde_frameworks_release.rb +61 -0
- data/lib/library.rb +26 -1
- data/lib/manifest.rb +43 -0
- data/lib/manifest_handler.rb +59 -17
- data/lib/rpm_manifestizer.rb +2 -2
- data/lib/settings.rb +21 -10
- data/lib/verifier.rb +29 -18
- data/lib/version.rb +1 -1
- data/lib/view.rb +55 -10
- data/manifest-format.md +27 -12
- data/schema/generic-manifest-v1 +54 -0
- data/schema/proprietary-release-manifest-v1 +63 -0
- data/schema/release-manifest-v1 +73 -0
- data/spec/creator_spec.rb +94 -34
- data/spec/data/awesomelib/awesomelib.2013-09-08.manifest +14 -6
- data/spec/data/bleedingedge/bleedingedge.2012-01-01.manifest +3 -2
- data/spec/data/commercial/commercial.manifest +13 -0
- data/spec/data/karchive-generic.manifest +22 -0
- data/spec/data/karchive-release-beta.manifest +29 -0
- data/spec/data/karchive-release.manifest +29 -0
- data/spec/data/karchive-release2.manifest +29 -0
- data/spec/data/karchive.authors +10 -0
- data/spec/data/karchive.readme +35 -0
- data/spec/data/kservice-generic.manifest +22 -0
- data/spec/data/kservice.readme +9 -0
- data/spec/data/newlib/newlib.manifest +13 -0
- data/spec/data/proprietarylib/proprietarylib.2013-12-22.manifest +16 -0
- data/spec/data/rendertest-generic.manifest +20 -0
- data/spec/data/testcontent +1 -0
- data/spec/kde_frameworks_creator_spec.rb +263 -0
- data/spec/kde_frameworks_release_spec.rb +72 -0
- data/spec/library_spec.rb +54 -2
- data/spec/manifest_handler_spec.rb +102 -8
- data/spec/manifest_spec.rb +63 -0
- data/spec/rpm_manifestizer_spec.rb +2 -2
- data/spec/settings_spec.rb +53 -4
- data/spec/spec_helper.rb +40 -1
- data/spec/verifier_spec.rb +53 -22
- data/spec/view_spec.rb +145 -0
- data/view/all.html.haml +24 -0
- data/view/commercial.html.haml +17 -0
- data/view/contribute.html.haml +7 -3
- data/view/development.html.haml +36 -0
- data/view/favicon.ico +0 -0
- data/view/group.html.haml +20 -0
- data/view/index.html.haml +11 -1
- data/view/layout.html.haml +0 -5
- data/view/library.html.haml +4 -4
- data/view/public/inqlude.css +2 -2
- data/view/unreleased.html.haml +18 -0
- metadata +172 -97
- data/view/edge.html.haml +0 -9
@@ -1,5 +1,7 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
|
3
|
+
include GivenFilesystemSpecHelpers
|
4
|
+
|
3
5
|
describe ManifestHandler do
|
4
6
|
|
5
7
|
let(:settings) do
|
@@ -16,27 +18,51 @@ describe ManifestHandler do
|
|
16
18
|
end
|
17
19
|
|
18
20
|
it "reads manifests" do
|
19
|
-
mh.manifests.count.
|
20
|
-
mh.libraries.count.
|
21
|
+
expect(mh.manifests.count).to eq 5
|
22
|
+
expect(mh.libraries.count).to eq 5
|
21
23
|
mh.read_remote
|
22
|
-
mh.manifests.count.
|
23
|
-
mh.libraries.count.
|
24
|
+
expect(mh.manifests.count).to eq 5
|
25
|
+
expect(mh.libraries.count).to eq 5
|
24
26
|
end
|
25
27
|
|
26
28
|
it "provides access to manifests" do
|
27
|
-
mh.manifest("awesomelib").class.
|
29
|
+
expect(mh.manifest("awesomelib").class).to be Hash
|
28
30
|
expect { mh.manifest("nonexisting") }.to raise_error
|
29
31
|
end
|
32
|
+
|
33
|
+
it "reads schema type" do
|
34
|
+
expect(mh.manifest("awesomelib")["schema_type"]).to eq "release"
|
35
|
+
expect(mh.manifest("newlib")["schema_type"]).to eq "generic"
|
36
|
+
expect(mh.manifest("proprietarylib")["schema_type"]).to eq "proprietary-release"
|
37
|
+
end
|
38
|
+
|
39
|
+
context "default manifest path" do
|
40
|
+
before(:each) do
|
41
|
+
@handler = ManifestHandler.new Settings.new
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns generic manifest path" do
|
45
|
+
manifest = create_generic_manifest( "mylib" )
|
46
|
+
expect( @handler.manifest_path( manifest ) ).to eq(
|
47
|
+
File.expand_path( "~/.local/share/inqlude/manifests/mylib/mylib.manifest" ) )
|
48
|
+
end
|
49
|
+
|
50
|
+
it "returns release manifest path" do
|
51
|
+
manifest = create_manifest( "mylib", "2014-02-01", "1.0" )
|
52
|
+
expect( @handler.manifest_path( manifest ) ).to eq(
|
53
|
+
File.expand_path( "~/.local/share/inqlude/manifests/mylib/mylib.2014-02-01.manifest" ) )
|
54
|
+
end
|
55
|
+
end
|
30
56
|
|
31
|
-
|
57
|
+
describe "#libraries" do
|
32
58
|
|
33
59
|
it "returns all libraries" do
|
34
|
-
expect( mh.libraries.count ).to eq
|
60
|
+
expect( mh.libraries.count ).to eq 5
|
35
61
|
end
|
36
62
|
|
37
63
|
it "returns stable libraries" do
|
38
64
|
libraries = mh.libraries :stable
|
39
|
-
expect( libraries.count ).to eq
|
65
|
+
expect( libraries.count ).to eq 2
|
40
66
|
expect( libraries.first.manifests.last["name"] ).to eq "awesomelib"
|
41
67
|
expect( libraries.first.manifests.last["version"] ).to eq "0.2.0"
|
42
68
|
end
|
@@ -47,7 +73,75 @@ describe ManifestHandler do
|
|
47
73
|
expect( libraries.first.manifests.last["name"] ).to eq "bleedingedge"
|
48
74
|
expect( libraries.first.manifests.last["version"] ).to eq "edge"
|
49
75
|
end
|
76
|
+
|
77
|
+
it "returns unreleased libraries" do
|
78
|
+
libraries = mh.unreleased_libraries
|
79
|
+
expect( libraries.count ).to eq 1
|
80
|
+
expect( libraries.first.manifests.last["name"] ).to eq "newlib"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "returns commercial libraries" do
|
84
|
+
libraries = mh.commercial_libraries
|
85
|
+
expect( libraries.count ).to eq 3
|
86
|
+
expect( libraries.first.manifests.last["name"] ).to eq "awesomelib"
|
87
|
+
expect( libraries[1].manifests.last["name"] ).to eq "commercial"
|
88
|
+
end
|
50
89
|
|
51
90
|
end
|
52
91
|
|
92
|
+
describe "#group" do
|
93
|
+
it "returns all libraries of a group" do
|
94
|
+
libraries = mh.group("kde-frameworks")
|
95
|
+
expect( libraries.count ).to eq 2
|
96
|
+
expect( libraries.first.manifests.last["name"] ).to eq "awesomelib"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "#library" do
|
101
|
+
|
102
|
+
it "returns one library" do
|
103
|
+
library = mh.library "awesomelib"
|
104
|
+
expect( library.name ).to eq "awesomelib"
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
context "library with generic and release manifest" do
|
110
|
+
use_given_filesystem
|
111
|
+
|
112
|
+
before(:each) do
|
113
|
+
@manifest_path = given_directory do
|
114
|
+
given_directory "karchive" do
|
115
|
+
given_file "karchive.manifest", :from => "karchive-generic.manifest"
|
116
|
+
given_file "karchive.2014-02-01.manifest", :from => "karchive-release-beta.manifest"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
s = Settings.new
|
121
|
+
s.manifest_path = @manifest_path
|
122
|
+
s.offline = true
|
123
|
+
@manifest_handler = ManifestHandler.new s
|
124
|
+
@manifest_handler.read_remote
|
125
|
+
end
|
126
|
+
|
127
|
+
it "reads generic manifest" do
|
128
|
+
expect( @manifest_handler.library("karchive").manifests.count ).to eq 2
|
129
|
+
generic_manifest = @manifest_handler.library("karchive").generic_manifest
|
130
|
+
expect( generic_manifest["name"] ).to eq "karchive"
|
131
|
+
expect( generic_manifest["schema_type"] ).to eq "generic"
|
132
|
+
end
|
133
|
+
|
134
|
+
it "lists development versions" do
|
135
|
+
libraries = @manifest_handler.libraries :beta
|
136
|
+
expect( libraries.count ).to eq 1
|
137
|
+
expect( libraries.first.latest_manifest["name"] ).to eq "karchive"
|
138
|
+
expect( libraries.first.latest_manifest["version"] ).to eq "4.9.90"
|
139
|
+
end
|
140
|
+
|
141
|
+
it "lists unreleased libraries" do
|
142
|
+
libraries = @manifest_handler.unreleased_libraries
|
143
|
+
expect( libraries.count ).to eq 0
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
53
147
|
end
|
@@ -0,0 +1,63 @@
|
|
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(Manifest.release_schema_id).to include("inqlude.org")
|
9
|
+
expect(Manifest.release_schema_id).to include("release")
|
10
|
+
|
11
|
+
expect(Manifest.generic_schema_id).to include("inqlude.org")
|
12
|
+
expect(Manifest.generic_schema_id).to include("generic")
|
13
|
+
|
14
|
+
expect(Manifest.proprietary_release_schema_id).to include("inqlude.org")
|
15
|
+
expect(Manifest.proprietary_release_schema_id).to include("proprietary")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "parses schema id" do
|
19
|
+
expect{Manifest.parse_schema_id("xxx")}.to raise_error StandardError
|
20
|
+
|
21
|
+
type, version = Manifest.parse_schema_id(
|
22
|
+
"http://inqlude.org/schema/release-manifest-v1#" )
|
23
|
+
expect(type).to eq "release"
|
24
|
+
expect(version).to eq 1
|
25
|
+
|
26
|
+
type, version = Manifest.parse_schema_id(
|
27
|
+
"http://inqlude.org/schema/release-manifest-v2#" )
|
28
|
+
expect(type).to eq "release"
|
29
|
+
expect(version).to eq 2
|
30
|
+
|
31
|
+
type, version = Manifest.parse_schema_id(
|
32
|
+
"http://inqlude.org/schema/generic-manifest-v1#" )
|
33
|
+
expect(type).to eq "generic"
|
34
|
+
expect(version).to eq 1
|
35
|
+
end
|
36
|
+
|
37
|
+
it "parses release manifest" do
|
38
|
+
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
39
|
+
manifest = Manifest.parse_file filename
|
40
|
+
expect(manifest["name"]).to eq "awesomelib"
|
41
|
+
expect(manifest["version"]).to eq "0.2.0"
|
42
|
+
expect(manifest["filename"]).to eq "awesomelib.2013-09-08.manifest"
|
43
|
+
expect(manifest["libraryname"]).to eq "awesomelib"
|
44
|
+
expect(manifest["schema_type"]).to eq "release"
|
45
|
+
expect(manifest["schema_version"]).to eq 1
|
46
|
+
end
|
47
|
+
|
48
|
+
it "parses generic manifest" do
|
49
|
+
filename = File.join settings.manifest_path, newlib_manifest_file
|
50
|
+
manifest = Manifest.parse_file filename
|
51
|
+
expect(manifest["name"]).to eq "newlib"
|
52
|
+
expect(manifest.has_key? "version").to eq false
|
53
|
+
expect(manifest["filename"]).to eq "newlib.manifest"
|
54
|
+
expect(manifest["schema_type"]).to eq "generic"
|
55
|
+
expect(manifest["schema_version"]).to eq 1
|
56
|
+
end
|
57
|
+
|
58
|
+
it "writes JSON" do
|
59
|
+
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
60
|
+
manifest = Manifest.parse_file filename
|
61
|
+
expect( Manifest.to_json( manifest ) ).to eq File.read( filename )
|
62
|
+
end
|
63
|
+
end
|
@@ -4,8 +4,8 @@ describe RpmManifestizer do
|
|
4
4
|
|
5
5
|
it "detects libraries" do
|
6
6
|
m = RpmManifestizer.new Settings.new
|
7
|
-
m.is_library?( "libjson" ).
|
8
|
-
m.is_library?( "kontact" ).
|
7
|
+
expect(m.is_library?( "libjson" )).to be true
|
8
|
+
expect(m.is_library?( "kontact" )).to be false
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
data/spec/settings_spec.rb
CHANGED
@@ -2,14 +2,63 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
2
2
|
|
3
3
|
describe Settings do
|
4
4
|
|
5
|
-
|
6
|
-
Settings.new.manifest_path.should == File.join( ENV["HOME"], ".inqlude/manifests" )
|
7
|
-
end
|
5
|
+
include GivenFilesystemSpecHelpers
|
8
6
|
|
9
7
|
it "lets manifest path to be set" do
|
10
8
|
s = Settings.new
|
11
9
|
s.manifest_path = "abc/xyz"
|
12
|
-
s.manifest_path.
|
10
|
+
expect(s.manifest_path).to eq "abc/xyz"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "has default xdg data path" do
|
14
|
+
s = Settings.new
|
15
|
+
expected_path = File.join(ENV["HOME"], ".local/share/inqlude")
|
16
|
+
received_path = s.xdg_data_path.to_s
|
17
|
+
expect(received_path).to eq expected_path
|
18
|
+
end
|
19
|
+
|
20
|
+
it "has default xdg cache path" do
|
21
|
+
s = Settings.new
|
22
|
+
expected_path = File.join(ENV["HOME"], ".cache/inqlude")
|
23
|
+
received_path = s.xdg_cache_path.to_s
|
24
|
+
expect(received_path).to eq expected_path
|
25
|
+
end
|
26
|
+
|
27
|
+
it "has default manifest path" do
|
28
|
+
expect(Settings.new.manifest_path).to eq(
|
29
|
+
File.join( ENV["HOME"], ".local/share/inqlude/manifests"))
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
context "fake HOME" do
|
34
|
+
use_given_filesystem
|
35
|
+
|
36
|
+
before(:each) do
|
37
|
+
@old_home = ENV["HOME"]
|
38
|
+
|
39
|
+
@home = given_directory
|
40
|
+
ENV["HOME"] = @home
|
41
|
+
end
|
42
|
+
|
43
|
+
after(:each) do
|
44
|
+
ENV["HOME"] = @old_home
|
45
|
+
end
|
46
|
+
|
47
|
+
it "creates manifest dir" do
|
48
|
+
s = Settings.new
|
49
|
+
|
50
|
+
expect(s.manifest_dir).to eq File.join(@home,
|
51
|
+
".local/share/inqlude/manifests")
|
52
|
+
expect(File.exist?(s.manifest_dir)).to be true
|
53
|
+
end
|
54
|
+
|
55
|
+
it "creates cache dir" do
|
56
|
+
s = Settings.new
|
57
|
+
|
58
|
+
expect(s.cache_dir).to eq File.join(@home,
|
59
|
+
".cache/inqlude")
|
60
|
+
expect(File.exist?(s.cache_dir)).to be true
|
61
|
+
end
|
13
62
|
end
|
14
63
|
|
15
64
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,48 @@
|
|
1
|
+
require 'given_filesystem/spec_helpers'
|
2
|
+
|
1
3
|
require File.expand_path('../../lib/inqlude', __FILE__)
|
2
4
|
|
3
|
-
def
|
5
|
+
def test_data_path file_name
|
6
|
+
File.expand_path(File.join('../data/', file_name), __FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_manifest name, release_date, version
|
4
10
|
m = Hash.new
|
11
|
+
m["schema_type"] = "release"
|
5
12
|
m["name"] = name
|
6
13
|
m["version"] = version
|
14
|
+
m["release_date" ] = release_date
|
15
|
+
m["description"] = "#{name} is a nice library."
|
16
|
+
m
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_generic_manifest name
|
20
|
+
m = Hash.new
|
21
|
+
m["schema_type"] = "generic"
|
22
|
+
m["name"] = name
|
7
23
|
m["description"] = "#{name} is a nice library."
|
8
24
|
m
|
9
25
|
end
|
26
|
+
|
27
|
+
shared_context "manifest_files" do
|
28
|
+
|
29
|
+
let(:settings) do
|
30
|
+
s = Settings.new
|
31
|
+
s.manifest_path = File.expand_path('spec/data/')
|
32
|
+
s.offline = true
|
33
|
+
s
|
34
|
+
end
|
35
|
+
|
36
|
+
let(:awesomelib_manifest_file) do
|
37
|
+
"awesomelib/awesomelib.2013-09-08.manifest"
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:newlib_manifest_file) do
|
41
|
+
"newlib/newlib.manifest"
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:proprietarylib_manifest_file) do
|
45
|
+
"proprietarylib/proprietarylib.2013-12-22.manifest"
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/spec/verifier_spec.rb
CHANGED
@@ -2,33 +2,28 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
2
2
|
|
3
3
|
describe Verifier do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
s.manifest_path = File.expand_path('spec/data/')
|
8
|
-
s.offline = true
|
9
|
-
s
|
10
|
-
end
|
11
|
-
|
5
|
+
include_context "manifest_files"
|
6
|
+
|
12
7
|
it "defines result class" do
|
13
8
|
r = Verifier::Result.new
|
14
|
-
r.valid
|
15
|
-
r.errors.class.
|
9
|
+
expect(r.valid?).to be false
|
10
|
+
expect(r.errors.class).to be Array
|
16
11
|
end
|
17
12
|
|
18
13
|
it "verifies read manifests" do
|
19
14
|
handler = ManifestHandler.new settings
|
20
15
|
handler.read_remote
|
21
|
-
|
16
|
+
|
22
17
|
verifier = Verifier.new settings
|
23
|
-
verifier.verify( handler.manifest("awesomelib") ).class.
|
24
|
-
verifier.verify( handler.manifest("awesomelib") ).valid
|
18
|
+
expect(verifier.verify( handler.manifest("awesomelib") ).class).to be Verifier::Result
|
19
|
+
expect(verifier.verify( handler.manifest("awesomelib") ).valid?).to be true
|
25
20
|
end
|
26
21
|
|
27
22
|
it "detects incomplete manifest" do
|
28
23
|
verifier = Verifier.new settings
|
29
24
|
|
30
25
|
manifest = Hash.new
|
31
|
-
verifier.verify( manifest ).valid
|
26
|
+
expect(verifier.verify( manifest ).valid?).to be false
|
32
27
|
end
|
33
28
|
|
34
29
|
it "detects invalid entries" do
|
@@ -37,11 +32,11 @@ describe Verifier do
|
|
37
32
|
verifier = Verifier.new settings
|
38
33
|
|
39
34
|
manifest = handler.manifest("awesomelib")
|
40
|
-
verifier.verify(manifest).valid
|
35
|
+
expect(verifier.verify(manifest).valid?).to be true
|
41
36
|
|
42
37
|
manifest["invalidentry"] = "something"
|
43
|
-
verifier.verify(manifest).valid
|
44
|
-
verifier.verify(manifest).errors.count.
|
38
|
+
expect(verifier.verify(manifest).valid?).to be false
|
39
|
+
expect(verifier.verify(manifest).errors.count).to eq 1
|
45
40
|
end
|
46
41
|
|
47
42
|
it "detects name mismatch" do
|
@@ -50,19 +45,55 @@ describe Verifier do
|
|
50
45
|
verifier = Verifier.new settings
|
51
46
|
|
52
47
|
manifest = handler.manifest("awesomelib")
|
53
|
-
verifier.verify(manifest).valid
|
48
|
+
expect(verifier.verify(manifest).valid?).to be true
|
54
49
|
|
55
50
|
manifest["filename"] = "wrongname"
|
56
|
-
verifier.verify(manifest).valid
|
51
|
+
expect(verifier.verify(manifest).valid?).to be false
|
52
|
+
end
|
53
|
+
|
54
|
+
it "verifies release manifest file" do
|
55
|
+
filename = File.join settings.manifest_path, awesomelib_manifest_file
|
56
|
+
|
57
|
+
verifier = Verifier.new settings
|
58
|
+
|
59
|
+
expect( verifier.verify_file( filename ).valid? ).to be true
|
60
|
+
end
|
61
|
+
|
62
|
+
it "verifies generic manifest file" do
|
63
|
+
filename = File.join settings.manifest_path, newlib_manifest_file
|
64
|
+
|
65
|
+
verifier = Verifier.new settings
|
66
|
+
|
67
|
+
verification_result = verifier.verify_file( filename )
|
68
|
+
expect( verification_result.valid? ).to be true
|
57
69
|
end
|
70
|
+
|
71
|
+
it "verifies proprietary release manifest file" do
|
72
|
+
filename = File.join settings.manifest_path, proprietarylib_manifest_file
|
73
|
+
|
74
|
+
verifier = Verifier.new settings
|
58
75
|
|
59
|
-
|
60
|
-
|
61
|
-
|
76
|
+
verification_result = verifier.verify_file( filename )
|
77
|
+
expect( verification_result.valid? ).to be true
|
78
|
+
end
|
79
|
+
|
80
|
+
it "verifies schema" do
|
81
|
+
manifest = Hash.new
|
82
|
+
manifest["name"] = "mylib"
|
83
|
+
manifest["release_date"] = "2013-02-28"
|
84
|
+
manifest["filename"] = "mylib.2013-02-28.manifest"
|
85
|
+
manifest["libraryname"] = "mylib"
|
86
|
+
manifest["$schema"] = "http://inqlude.org/schema/release-manifest-v1#"
|
87
|
+
manifest["schema_type"] = "release"
|
88
|
+
manifest["schema_version"] = 1
|
62
89
|
|
63
90
|
verifier = Verifier.new settings
|
91
|
+
|
92
|
+
errors = verifier.verify(manifest).errors
|
64
93
|
|
65
|
-
expect(
|
94
|
+
expect( errors.class ).to be Array
|
95
|
+
expect(errors[0]).to match /^Schema validation error/
|
96
|
+
expect(errors.count).to eq 8
|
66
97
|
end
|
67
98
|
|
68
99
|
end
|