xcoder 0.1.0 → 0.1.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.
- data/spec/TestProject/TestProject.xcodeproj/project.pbxproj +801 -433
- data/spec/build_phase_spec.rb +1 -1
- data/spec/builder_spec.rb +54 -32
- data/spec/configuration_list_spec.rb +38 -0
- data/spec/configuration_spec.rb +5 -6
- data/spec/group_spec.rb +43 -32
- data/spec/integration/builder_spec.rb +60 -0
- data/spec/integration/cedar_install_spec.rb +107 -0
- data/spec/integration/pull_to_refresh_install_spec.rb +36 -0
- data/spec/integration/reachability_install_spec.rb +43 -0
- data/spec/keychain_spec.rb +2 -2
- data/spec/project_spec.rb +55 -6
- data/spec/scheme_spec.rb +1 -2
- data/spec/spec_helper.rb +2 -1
- data/spec/target_spec.rb +93 -3
- data/spec/test_report_spec.rb +2 -2
- data/spec/workspace_spec.rb +1 -2
- metadata +25 -48
- data/.gitignore +0 -7
- data/.rvmrc +0 -4
- data/Gemfile +0 -11
- data/Guardfile +0 -13
- data/README.md +0 -125
- data/Rakefile +0 -16
- data/lib/xcode/build_file.rb +0 -22
- data/lib/xcode/build_phase.rb +0 -46
- data/lib/xcode/builder.rb +0 -182
- data/lib/xcode/buildfile.rb +0 -101
- data/lib/xcode/configuration.rb +0 -129
- data/lib/xcode/core_ext/array.rb +0 -23
- data/lib/xcode/core_ext/boolean.rb +0 -21
- data/lib/xcode/core_ext/fixnum.rb +0 -5
- data/lib/xcode/core_ext/hash.rb +0 -27
- data/lib/xcode/core_ext/string.rb +0 -11
- data/lib/xcode/file_reference.rb +0 -29
- data/lib/xcode/group.rb +0 -118
- data/lib/xcode/info_plist.rb +0 -41
- data/lib/xcode/keychain.rb +0 -77
- data/lib/xcode/parsers/plutil_project_parser.rb +0 -20
- data/lib/xcode/project.rb +0 -190
- data/lib/xcode/provisioning_profile.rb +0 -53
- data/lib/xcode/registry.rb +0 -120
- data/lib/xcode/resource.rb +0 -187
- data/lib/xcode/scheme.rb +0 -36
- data/lib/xcode/shell.rb +0 -21
- data/lib/xcode/target.rb +0 -94
- data/lib/xcode/test/report_parser.rb +0 -172
- data/lib/xcode/testflight.rb +0 -56
- data/lib/xcode/variant_group.rb +0 -8
- data/lib/xcode/version.rb +0 -3
- data/lib/xcode/workspace.rb +0 -40
- data/lib/xcoder.rb +0 -105
- data/xcoder.gemspec +0 -26
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe "EGORefreshTableHeaderView", :integration => true do
|
4
|
+
|
5
|
+
let(:project) { Xcode.project 'TestProject' }
|
6
|
+
|
7
|
+
it "should install without error" do
|
8
|
+
|
9
|
+
# Copy the files necessary for the project to the correct destination
|
10
|
+
|
11
|
+
FileUtils.cp_r "examples/EGORefreshTableHeaderView/Vendor", "spec/TestProject"
|
12
|
+
|
13
|
+
# Add the source and header file to the project
|
14
|
+
|
15
|
+
source_files = [ { 'name' => 'EGORefreshTableHeaderView.m', 'path' => 'Vendor/EGORefreshTableHeaderView/EGORefreshTableHeaderView.m' },
|
16
|
+
{ 'name' => 'EGORefreshTableHeaderView.h', 'path' => 'Vendor/EGORefreshTableHeaderView/EGORefreshTableHeaderView.h' } ]
|
17
|
+
|
18
|
+
# Create or traverse to the group to install the source files
|
19
|
+
|
20
|
+
project.group('Vendor/EGORefreshTableHeaderView') do
|
21
|
+
source_files.each {|source| create_file source }
|
22
|
+
end
|
23
|
+
|
24
|
+
ptr_source = project.file('Vendor/EGORefreshTableHeaderView/EGORefreshTableHeaderView.m')
|
25
|
+
|
26
|
+
# Select the main target of the project and add the source file to the build
|
27
|
+
# phase.
|
28
|
+
|
29
|
+
project.target('TestProject').sources_build_phase do
|
30
|
+
add_build_file ptr_source
|
31
|
+
end
|
32
|
+
|
33
|
+
project.save!
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe "Reachability", :integration => true do
|
4
|
+
|
5
|
+
let(:project) { Xcode.project 'TestProject' }
|
6
|
+
|
7
|
+
it "should update a project with a working installation of Reachability" do
|
8
|
+
|
9
|
+
# Copy the files necessary for the project to the correct destination
|
10
|
+
|
11
|
+
FileUtils.cp_r "examples/Reachability/Vendor", "spec/TestProject"
|
12
|
+
|
13
|
+
|
14
|
+
# Add the source and header file to the project
|
15
|
+
|
16
|
+
source_files = [ { 'name' => 'Reachability.m', 'path' => 'Vendor/Reachability/Reachability.m' },
|
17
|
+
{ 'name' => 'Reachability.h', 'path' => 'Vendor/Reachability/Reachability.h' } ]
|
18
|
+
|
19
|
+
|
20
|
+
# Create or traverse to the group to install the source files
|
21
|
+
project.group('Vendor/Reachability') do
|
22
|
+
source_files.each {|source| create_file source }
|
23
|
+
end
|
24
|
+
|
25
|
+
source_file = project.file('Vendor/Reachability/Reachability.m')
|
26
|
+
|
27
|
+
# Select the main target of the project and add the source file to the build phase.
|
28
|
+
|
29
|
+
project.target('TestProject').sources_build_phase do
|
30
|
+
add_build_file source_file
|
31
|
+
end
|
32
|
+
|
33
|
+
cfnetwork_framework = project.frameworks_group.create_system_framework 'CFNetwork'
|
34
|
+
|
35
|
+
project.target('TestProject').framework_build_phase do
|
36
|
+
add_build_file cfnetwork_framework
|
37
|
+
end
|
38
|
+
|
39
|
+
project.save!
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/spec/keychain_spec.rb
CHANGED
@@ -13,8 +13,8 @@ describe Xcode::Keychain do
|
|
13
13
|
it "should import a certificate" do
|
14
14
|
Xcode::Keychain.temp_keychain('Test2.keychain') do |kc|
|
15
15
|
kc.import "#{File.dirname(__FILE__)}/Provisioning/TestUser.p12", 'testpassword'
|
16
|
-
kc.
|
17
|
-
kc.
|
16
|
+
kc.identities.size.should==1
|
17
|
+
kc.identities[0].should=="Test User"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
data/spec/project_spec.rb
CHANGED
@@ -4,7 +4,6 @@ describe Xcode::Project do
|
|
4
4
|
|
5
5
|
let(:project) { Xcode.project 'TestProject' }
|
6
6
|
|
7
|
-
|
8
7
|
describe "Targets" do
|
9
8
|
|
10
9
|
let(:expected_first_target) { "TestProject" }
|
@@ -14,10 +13,6 @@ describe Xcode::Project do
|
|
14
13
|
|
15
14
|
let(:subject) { project.targets }
|
16
15
|
|
17
|
-
it "should give the correct number of targets" do
|
18
|
-
subject.size.should == 2
|
19
|
-
end
|
20
|
-
|
21
16
|
it "should return the correct targets" do
|
22
17
|
subject[0].name.should == expected_first_target
|
23
18
|
subject[1].name.should == expected_second_target
|
@@ -47,10 +42,38 @@ describe Xcode::Project do
|
|
47
42
|
end
|
48
43
|
|
49
44
|
end
|
45
|
+
|
46
|
+
describe "#create_target" do
|
47
|
+
|
48
|
+
let(:subject) { project.create_target('SuperNewTestTarget') }
|
49
|
+
|
50
|
+
it "should generate a target with the name specified" do
|
51
|
+
subject.name.should == 'SuperNewTestTarget'
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should be available in the list of project targets" do
|
55
|
+
project.target('SuperNewTestTarget').should_not be_nil
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should generate a target that knows the project" do
|
59
|
+
subject.project.should == project
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#remove_target" do
|
64
|
+
|
65
|
+
let(:subject) { project.create_target('SoonToBeRetiredTarget') }
|
66
|
+
|
67
|
+
it "should remove the target created" do
|
68
|
+
project.remove_target(subject.name)
|
69
|
+
project.targets.find {|target| target.name == subject.name }.should be_nil
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
50
74
|
|
51
75
|
end
|
52
76
|
|
53
|
-
|
54
77
|
describe "Schemes" do
|
55
78
|
|
56
79
|
let(:expected_scheme) { "TestProject" }
|
@@ -97,4 +120,30 @@ describe Xcode::Project do
|
|
97
120
|
|
98
121
|
end
|
99
122
|
|
123
|
+
describe "#group" do
|
124
|
+
it "should find or create the entire path specified" do
|
125
|
+
group = project.group('fe/fi/fo/fum')
|
126
|
+
group.name.should == "fum"
|
127
|
+
group.supergroup.name.should == "fo"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "#products_group" do
|
132
|
+
it "should find the 'Products' group" do
|
133
|
+
project.products_group.should_not be_nil
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "#frameworks_group" do
|
138
|
+
it "should find the 'Frameworks' group" do
|
139
|
+
project.products_group.should_not be_nil
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "#to_xcplist" do
|
144
|
+
it "should respond to this method" do
|
145
|
+
project.should respond_to :to_xcplist
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
100
149
|
end
|
data/spec/scheme_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require_relative '../lib/xcoder'
|
1
|
+
require_relative '../lib/xcoder'
|
2
|
+
require 'fileutils'
|
data/spec/target_spec.rb
CHANGED
@@ -17,15 +17,36 @@ describe Xcode::Target do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
describe "#
|
20
|
+
describe "#product_name" do
|
21
21
|
|
22
22
|
let(:expected_product_name) { "TestProject" }
|
23
23
|
|
24
|
-
it "should have the correct
|
25
|
-
subject.
|
24
|
+
it "should have the correct product_name" do
|
25
|
+
subject.product_name == expected_product_name
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
describe "#build_configuration_list" do
|
30
|
+
|
31
|
+
it "should return a build configurations list" do
|
32
|
+
subject.build_configuration_list.should_not be_nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should create a configration list if one does not exist" do
|
36
|
+
|
37
|
+
test_project = project.create_target "CreateBuildConfigurationTarget"
|
38
|
+
test_project.build_configuration_list.should_not be_nil
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "build configurations" do
|
42
|
+
|
43
|
+
it "should have the correct configs" do
|
44
|
+
subject.build_configuration_list.build_configurations.count.should == 2
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
29
50
|
describe "#configs" do
|
30
51
|
it "should return the correct number of configurations" do
|
31
52
|
subject.configs.length.should == 2
|
@@ -64,6 +85,16 @@ describe Xcode::Target do
|
|
64
85
|
it "should return the correct build phase" do
|
65
86
|
subject.framework_build_phase.should_not be_nil
|
66
87
|
end
|
88
|
+
|
89
|
+
it "should allow a block to be passed to it" do
|
90
|
+
|
91
|
+
test_file = project.groups.create_file 'name' => 'TestFile.m', 'path' => 'TestFile.m'
|
92
|
+
|
93
|
+
subject.framework_build_phase do
|
94
|
+
add_build_file test_file
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
67
98
|
end
|
68
99
|
|
69
100
|
describe "#sources_build_phase" do
|
@@ -78,4 +109,63 @@ describe Xcode::Target do
|
|
78
109
|
end
|
79
110
|
end
|
80
111
|
|
112
|
+
describe "#create_build_phases" do
|
113
|
+
|
114
|
+
let(:subject) do
|
115
|
+
project.create_target "CreateBuildPhasesTarget"
|
116
|
+
end
|
117
|
+
|
118
|
+
context "when one phase is created" do
|
119
|
+
|
120
|
+
it "should only create the one build phase" do
|
121
|
+
build_phase = subject.create_build_phases :sources
|
122
|
+
build_phase.count.should == 1
|
123
|
+
subject.build_phases.count.should == 1
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should create the build phase" do
|
127
|
+
build_phase = subject.create_build_phases :sources
|
128
|
+
subject.sources_build_phase.identifier.should == build_phase.first.identifier
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should allow for the build phase to be customized" do
|
132
|
+
subject.create_build_phases :sources do |phase|
|
133
|
+
# Add files to the build phases
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should create all the phases specified" do
|
140
|
+
build_phases = subject.create_build_phases :resources, :framework, :sources
|
141
|
+
subject.build_phases.count.should == 3
|
142
|
+
end
|
143
|
+
|
144
|
+
context "when the target is saved and reloaded" do
|
145
|
+
|
146
|
+
let(:subject) do
|
147
|
+
new_target = project.create_target "ReloadedBuildPhaseTarget"
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should save the build phases to the target if the target is saved" do
|
151
|
+
|
152
|
+
subject.create_build_phases :resources, :framework
|
153
|
+
subject.save!
|
154
|
+
|
155
|
+
reloaded_target = project.target('ReloadedBuildPhaseTarget')
|
156
|
+
reloaded_target.build_phases.count.should == 2
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
describe "#product_reference" do
|
164
|
+
context "when a product reference is present" do
|
165
|
+
it "should return the product reference" do
|
166
|
+
subject.product_reference.should_not be_nil
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
81
171
|
end
|
data/spec/test_report_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
require 'xcoder'
|
3
3
|
|
4
|
-
describe Xcode::Test::
|
4
|
+
describe Xcode::Test::OCUnitReportParser do
|
5
5
|
|
6
6
|
def example_report
|
7
|
-
t = Xcode::Test::
|
7
|
+
t = Xcode::Test::OCUnitReportParser.new
|
8
8
|
t << "Run test suite AnExampleTestSuite"
|
9
9
|
t << "Test Suite 'AnExampleTestSuite' started at 2012-02-10 00:37:04 +0000"
|
10
10
|
|
data/spec/workspace_spec.rb
CHANGED
metadata
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ray Hilton
|
9
|
+
- Frank Webber
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
13
|
+
date: 2012-02-12 00:00:00.000000000Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: json
|
16
|
-
requirement: &
|
17
|
+
requirement: &70236846787340 !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
19
|
requirements:
|
19
20
|
- - ! '>='
|
@@ -21,10 +22,10 @@ dependencies:
|
|
21
22
|
version: '0'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
+
version_requirements: *70236846787340
|
25
26
|
- !ruby/object:Gem::Dependency
|
26
27
|
name: plist
|
27
|
-
requirement: &
|
28
|
+
requirement: &70236846786920 !ruby/object:Gem::Requirement
|
28
29
|
none: false
|
29
30
|
requirements:
|
30
31
|
- - ! '>='
|
@@ -32,10 +33,10 @@ dependencies:
|
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
+
version_requirements: *70236846786920
|
36
37
|
- !ruby/object:Gem::Dependency
|
37
38
|
name: nokogiri
|
38
|
-
requirement: &
|
39
|
+
requirement: &70236846786500 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
41
42
|
- - ! '>='
|
@@ -43,10 +44,10 @@ dependencies:
|
|
43
44
|
version: '0'
|
44
45
|
type: :runtime
|
45
46
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
+
version_requirements: *70236846786500
|
47
48
|
- !ruby/object:Gem::Dependency
|
48
49
|
name: builder
|
49
|
-
requirement: &
|
50
|
+
requirement: &70236846809600 !ruby/object:Gem::Requirement
|
50
51
|
none: false
|
51
52
|
requirements:
|
52
53
|
- - ! '>='
|
@@ -54,10 +55,10 @@ dependencies:
|
|
54
55
|
version: '0'
|
55
56
|
type: :runtime
|
56
57
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
+
version_requirements: *70236846809600
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
60
|
name: rest-client
|
60
|
-
requirement: &
|
61
|
+
requirement: &70236846809180 !ruby/object:Gem::Requirement
|
61
62
|
none: false
|
62
63
|
requirements:
|
63
64
|
- - ! '>='
|
@@ -65,51 +66,17 @@ dependencies:
|
|
65
66
|
version: '0'
|
66
67
|
type: :runtime
|
67
68
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
+
version_requirements: *70236846809180
|
69
70
|
description: Provides a ruby based object-model for parsing project structures and
|
70
71
|
invoking builds
|
71
72
|
email:
|
72
73
|
- ray@wirestorm.net
|
74
|
+
- franklin.webber@gmail.com
|
73
75
|
executables:
|
74
76
|
- xcoder-build
|
75
77
|
extensions: []
|
76
78
|
extra_rdoc_files: []
|
77
79
|
files:
|
78
|
-
- .gitignore
|
79
|
-
- .rvmrc
|
80
|
-
- Gemfile
|
81
|
-
- Guardfile
|
82
|
-
- README.md
|
83
|
-
- Rakefile
|
84
|
-
- bin/xcoder-build
|
85
|
-
- lib/xcode/build_file.rb
|
86
|
-
- lib/xcode/build_phase.rb
|
87
|
-
- lib/xcode/builder.rb
|
88
|
-
- lib/xcode/buildfile.rb
|
89
|
-
- lib/xcode/configuration.rb
|
90
|
-
- lib/xcode/core_ext/array.rb
|
91
|
-
- lib/xcode/core_ext/boolean.rb
|
92
|
-
- lib/xcode/core_ext/fixnum.rb
|
93
|
-
- lib/xcode/core_ext/hash.rb
|
94
|
-
- lib/xcode/core_ext/string.rb
|
95
|
-
- lib/xcode/file_reference.rb
|
96
|
-
- lib/xcode/group.rb
|
97
|
-
- lib/xcode/info_plist.rb
|
98
|
-
- lib/xcode/keychain.rb
|
99
|
-
- lib/xcode/parsers/plutil_project_parser.rb
|
100
|
-
- lib/xcode/project.rb
|
101
|
-
- lib/xcode/provisioning_profile.rb
|
102
|
-
- lib/xcode/registry.rb
|
103
|
-
- lib/xcode/resource.rb
|
104
|
-
- lib/xcode/scheme.rb
|
105
|
-
- lib/xcode/shell.rb
|
106
|
-
- lib/xcode/target.rb
|
107
|
-
- lib/xcode/test/report_parser.rb
|
108
|
-
- lib/xcode/testflight.rb
|
109
|
-
- lib/xcode/variant_group.rb
|
110
|
-
- lib/xcode/version.rb
|
111
|
-
- lib/xcode/workspace.rb
|
112
|
-
- lib/xcoder.rb
|
113
80
|
- spec/Provisioning/TestUser.p12
|
114
81
|
- spec/TestProject/Buildfile
|
115
82
|
- spec/TestProject/TestProject.xcodeproj/project.pbxproj
|
@@ -130,8 +97,13 @@ files:
|
|
130
97
|
- spec/TestWorkspace.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
131
98
|
- spec/build_phase_spec.rb
|
132
99
|
- spec/builder_spec.rb
|
100
|
+
- spec/configuration_list_spec.rb
|
133
101
|
- spec/configuration_spec.rb
|
134
102
|
- spec/group_spec.rb
|
103
|
+
- spec/integration/builder_spec.rb
|
104
|
+
- spec/integration/cedar_install_spec.rb
|
105
|
+
- spec/integration/pull_to_refresh_install_spec.rb
|
106
|
+
- spec/integration/reachability_install_spec.rb
|
135
107
|
- spec/keychain_spec.rb
|
136
108
|
- spec/project_spec.rb
|
137
109
|
- spec/scheme_spec.rb
|
@@ -140,7 +112,7 @@ files:
|
|
140
112
|
- spec/test_report_spec.rb
|
141
113
|
- spec/workspace_spec.rb
|
142
114
|
- spec/xcode_spec.rb
|
143
|
-
- xcoder
|
115
|
+
- bin/xcoder-build
|
144
116
|
homepage: https://github.com/rayh/xcoder
|
145
117
|
licenses: []
|
146
118
|
post_install_message:
|
@@ -186,8 +158,13 @@ test_files:
|
|
186
158
|
- spec/TestWorkspace.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
187
159
|
- spec/build_phase_spec.rb
|
188
160
|
- spec/builder_spec.rb
|
161
|
+
- spec/configuration_list_spec.rb
|
189
162
|
- spec/configuration_spec.rb
|
190
163
|
- spec/group_spec.rb
|
164
|
+
- spec/integration/builder_spec.rb
|
165
|
+
- spec/integration/cedar_install_spec.rb
|
166
|
+
- spec/integration/pull_to_refresh_install_spec.rb
|
167
|
+
- spec/integration/reachability_install_spec.rb
|
191
168
|
- spec/keychain_spec.rb
|
192
169
|
- spec/project_spec.rb
|
193
170
|
- spec/scheme_spec.rb
|