ios_build_kit 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -1
- data/README.md +34 -22
- data/ios_build_kit-0.0.2.gem +0 -0
- data/ios_build_kit.gemspec +2 -1
- data/lib/ios_build_kit/task_configuration.rb +3 -1
- data/lib/ios_build_kit/task_runner.rb +3 -1
- data/lib/ios_build_kit/tasks/create_ipa.rb +2 -2
- data/lib/ios_build_kit/tasks/run_tests.rb +2 -2
- data/lib/ios_build_kit/tasks/xcode_build.rb +16 -10
- data/lib/ios_build_kit/utils/assertions.rb +12 -2
- data/lib/ios_build_kit/utils/report_creator.rb +1 -1
- data/lib/ios_build_kit/version.rb +1 -1
- data/spec/create_ipa_spec.rb +26 -0
- data/spec/decorate_icon_spec.rb +34 -0
- data/spec/increment_version_spec.rb +48 -0
- data/spec/reports_spec.rb +13 -0
- data/spec/run_tests_spec.rb +42 -0
- data/spec/runner_spec.rb +17 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/support/config_mocker.rb +94 -0
- data/spec/support/temp_dir.rb +9 -0
- data/spec/xcode_build_spec.rb +58 -0
- metadata +40 -6
- data/ios_build_kit-0.0.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 291c94122b7227db6200ca3440374ef77b629c3e
|
4
|
+
data.tar.gz: cbc7e1119a5ac1ac08f3720f4222d55d79c37beb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 926c4fa488def042c03e0dc7ea3d187715a217644b38f3edd6d4397920f48db78e4b40ee61d13b2bfaf68e0acd9f96308a6b5371516bd110b2080a425bf0d563
|
7
|
+
data.tar.gz: 9fddc72696d167c577e8363cbb6d30398dfd240130e58cf22b05898be4f58bbbb427ac6823e50577b95afab687fdaab96f0d635c0925eefe1bae780e38b746cd
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ios_build_kit (0.0.
|
4
|
+
ios_build_kit (0.0.2)
|
5
5
|
commander (~> 4.1)
|
6
6
|
json (~> 1.8)
|
7
7
|
nomad-cli (~> 0.0.2)
|
8
8
|
paint (~> 0.8)
|
9
9
|
rmagick (~> 2.13)
|
10
|
+
xcpretty (~> 0.1.3)
|
10
11
|
|
11
12
|
GEM
|
12
13
|
remote: http://rubygems.org/
|
@@ -109,6 +110,7 @@ GEM
|
|
109
110
|
json
|
110
111
|
terminal-table (~> 1.4)
|
111
112
|
webrobots (0.1.1)
|
113
|
+
xcpretty (0.1.3)
|
112
114
|
|
113
115
|
PLATFORMS
|
114
116
|
ruby
|
data/README.md
CHANGED
@@ -6,22 +6,19 @@ BuildKit is a modular command line interface for automating iOS project builds.
|
|
6
6
|
Bundled build tasks include:
|
7
7
|
|
8
8
|
- Increment the build number
|
9
|
-
- Draw the
|
9
|
+
- Draw the version number on the app icon
|
10
10
|
- Build the app
|
11
11
|
- Run unit tests
|
12
12
|
- Generate an .ipa artefact
|
13
13
|
|
14
|
-
BuildKit is distributed as a Ruby gem with an executable that can be launched either in a continous integration server environment or on your development machine. The process is configured with a simple YAML file that describes the tasks to run and your project-specific options. This means that you can tailor the build process to meet your requirements.
|
14
|
+
BuildKit is distributed as a [Ruby gem](https://rubygems.org/gems/ios_build_kit) with an executable that can be launched either in a continous integration server environment or on your development machine. The process is configured with a simple YAML file that describes the tasks to run and your project-specific options. This means that you can tailor the build process to meet your requirements.
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
This repository was previosly known as Xcode-Project. It previously contained a project generator as well as a less developed build toolkit. The generator was removed due to the rapid advances in iOS technology. If you would like to continue using the previous version it's available [here](https://github.com/adamwaite/iOS-Build-Kit/releases).
|
16
|
+
*Note: This repository was previosly known as Xcode-Project. It previously contained a project generator as well as a less developed build toolkit. The generator was removed due to the rapid advances in iOS technology. If you would like to continue using the previous version it's available [here](https://github.com/adamwaite/iOS-Build-Kit/releases).*
|
19
17
|
|
20
18
|
## Requirements
|
21
19
|
|
22
|
-
- **Ruby 2.0
|
20
|
+
- **Ruby > 2.0**: BuildKit is written and run with Ruby, you'll need a version higher than 2.0 because of the modern syntax. Check your Ruby version with `ruby -v`. [RVM](http://rvm.io/) makes it easy should you need to update.
|
23
21
|
- **Xcode command line tools**: `xcode-select --install`
|
24
|
-
- xctool: BuildKit uses [Facebook's xctool](https://github.com/facebook/xctool) to translate the standard Xcode CLI output from computer garbage to human readable form. Install with: `brew install xctool`
|
25
22
|
- **ImageMagick**: Command line graphics library used to draw on the app icon. Install with: `brew install imagemagick`.
|
26
23
|
- **GhostScript**: Command line text rendering library used to draw the version number on the app icon. Install with: `brew install ghostscript`.
|
27
24
|
|
@@ -29,7 +26,7 @@ This repository was previosly known as Xcode-Project. It previously contained a
|
|
29
26
|
|
30
27
|
After the requirments have been met, BuildKit can be installed with:
|
31
28
|
|
32
|
-
`gem install
|
29
|
+
`gem install ios_build_kit`
|
33
30
|
|
34
31
|
## Usage
|
35
32
|
|
@@ -66,7 +63,8 @@ An example configuration file:
|
|
66
63
|
:xcode_build:
|
67
64
|
:run: true
|
68
65
|
:options:
|
69
|
-
|
66
|
+
:log: true
|
67
|
+
:clean: true
|
70
68
|
:run_tests:
|
71
69
|
:run: false
|
72
70
|
:options:
|
@@ -108,12 +106,12 @@ To run the task modules successfully requires some project-specific configuratio
|
|
108
106
|
|
109
107
|
- `:app_name:`: Your app's name!
|
110
108
|
- `:workspace:`: The path to your workspace (note that single Xcode project files aren't supported).
|
111
|
-
- `:info_plist:`: The path to your
|
109
|
+
- `:info_plist:`: The path to your app's main info-plist file.
|
112
110
|
- `:build_configuration:`: Your build configuration (normally "Release" or suchlike)
|
113
111
|
- `:scheme:`: Project scheme to build
|
114
112
|
- `:sdk:`: SDK to build with (example: "iphoneos")
|
115
113
|
- `:provisioning_profile:`: Path to a provisioning profile to sign the app with.
|
116
|
-
- `:code_sign:`: The code signature, this is found in Xcode next to a selected provisioning profile (example: "iPhone Distribution: Alpaca Labs"). I recommend this
|
114
|
+
- `:code_sign:`: The code signature, this is found in Xcode next to a selected provisioning profile (example: "iPhone Distribution: Alpaca Labs"). I recommend this [OSX quick look plug in](https://github.com/chockenberry/Provisioning) if you want to inspect profiles.
|
117
115
|
- `:icon_dir:`: The path to a directory containing you icon image files. More on this in the Tasks `decorate_icon` section of this README.
|
118
116
|
- `:build_dir:`: The path to drop any build and ipa files after they have been created.
|
119
117
|
|
@@ -128,7 +126,7 @@ BuildKit can be configured to suit your own preference too. This is done under t
|
|
128
126
|
BuildKit comes packaged with the following task modules:
|
129
127
|
|
130
128
|
- `increment_version`: Increment the build number
|
131
|
-
- `decorate_icon`: Overlay the
|
129
|
+
- `decorate_icon`: Overlay the version number on the app icon
|
132
130
|
- `xcode_build`: Build the app
|
133
131
|
- `run_tests`: Run unit tests
|
134
132
|
- `create_ipa`: Generate an .ipa artefact
|
@@ -149,7 +147,7 @@ Duplicates you app icon files and aints the version number on top (incremented w
|
|
149
147
|
![decorate_icon](resources/decorate_icon.png)
|
150
148
|
![decorate_icon](resources/decorate_icon2.png)
|
151
149
|
|
152
|
-
|
150
|
+
**Decorate icon requires some convention to be followed**: Your app icon files should be contained in a dedicated directory of their own. To have the icon version number appear on top of a generated ipa requires you to drop the icon directory in to Xcode as a folder reference rather than a group. Then set the icon files in your Info-plist as:
|
153
151
|
|
154
152
|
```
|
155
153
|
<key>CFBundleIcons</key>
|
@@ -178,6 +176,10 @@ Builds the project:
|
|
178
176
|
|
179
177
|
![xcode_build](resources/xcode_build.png)
|
180
178
|
|
179
|
+
Options:
|
180
|
+
- `log`: logs the output to the console
|
181
|
+
- `clean`: clean before build
|
182
|
+
|
181
183
|
Requires configuration:
|
182
184
|
- `:app_name:`
|
183
185
|
- `:workspace:`
|
@@ -192,7 +194,10 @@ Runs unit tests:
|
|
192
194
|
|
193
195
|
![run_tests](resources/run_tests.png)
|
194
196
|
|
195
|
-
*Note regarding Kiwi
|
197
|
+
*Note regarding Kiwi: As of present you need to use 'edge Kiwi' due to [Kiwi issue 390](https://github.com/allending/Kiwi/issues/390). To used the latest Kiwi put `pod 'Kiwi/XCTest', git: 'https://github.com/allending/Kiwi'` in your Podfile.*
|
198
|
+
|
199
|
+
Options:
|
200
|
+
- `log`: logs the output to the console
|
196
201
|
|
197
202
|
Requires configuration:
|
198
203
|
- `:workspace:`
|
@@ -200,26 +205,28 @@ Requires configuration:
|
|
200
205
|
|
201
206
|
### create_ipa
|
202
207
|
|
203
|
-
Creates an .ipa build artefact.
|
208
|
+
Creates an .ipa build artefact and drops it in build directory specified in the config file.
|
204
209
|
|
205
210
|
![create_ipa](resources/create_ipa.png)
|
206
211
|
|
212
|
+
Options:
|
213
|
+
- `log`: logs the output to the console
|
214
|
+
|
207
215
|
Requires previous tasks:
|
208
216
|
- `xcode_build`
|
209
217
|
|
210
218
|
Requires configuration:
|
211
|
-
-
|
212
|
-
- `:scheme:`
|
219
|
+
- Everything required for `xcode_build`
|
213
220
|
|
214
221
|
## User Preferences
|
215
222
|
|
216
|
-
BuildKit includes
|
223
|
+
BuildKit includes some user preferences that can be enabled under the `:preferences:` symbol of a config file.
|
217
224
|
|
218
225
|
### User Preferences: Create Reports
|
219
226
|
|
220
227
|
Set `:reports:` to a directory in your config file to create a JSON report containing the project configuration, build time, build outputs and test outputs after a BuildKit run has completed.
|
221
228
|
|
222
|
-
Leaving the
|
229
|
+
Leaving the `:reports:` preference blank will skip report generation.
|
223
230
|
|
224
231
|
## Examples
|
225
232
|
|
@@ -229,8 +236,8 @@ An example workspace has been included in the repo if you want to try it out. Yo
|
|
229
236
|
|
230
237
|
Lots of plans for BuildKit:
|
231
238
|
|
232
|
-
- Cover with RSpec specs (in progress)
|
233
|
-
- Create a build task module to enable artefact distribution by wrapping [Shenzhen](https://github.com/nomad/shenzhen).
|
239
|
+
- Cover with RSpec specs (in progress).
|
240
|
+
- Create a build task module to enable artefact distribution by wrapping [Shenzhen](https://github.com/nomad/shenzhen) (next up).
|
234
241
|
- Add a means to allow custom task modules to be added to the process.
|
235
242
|
- Add a task to email build reports.
|
236
243
|
- Make `decorate_icon` compatible with Xcode 5 asset catalogues.
|
@@ -242,6 +249,11 @@ Lots of plans for BuildKit:
|
|
242
249
|
|
243
250
|
All pull requests welcome! Please update the README with any new features.
|
244
251
|
|
252
|
+
### Contributors
|
253
|
+
|
254
|
+
- [@adamwaite](https://github.com/adamwaite/)
|
255
|
+
- [@garnett](https://github.com/garnett)
|
256
|
+
|
245
257
|
## Contact
|
246
258
|
|
247
259
|
[@adamwaite](https://twitter.com/AdamWaite)
|
@@ -266,4 +278,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
266
278
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
267
279
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
268
280
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
269
|
-
THE SOFTWARE.
|
281
|
+
THE SOFTWARE.
|
Binary file
|
data/ios_build_kit.gemspec
CHANGED
@@ -16,8 +16,9 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.add_dependency "commander", "~> 4.1"
|
17
17
|
s.add_dependency "json", "~> 1.8"
|
18
18
|
s.add_dependency "paint", "~> 0.8"
|
19
|
-
s.add_dependency "nomad-cli", "~> 0.0.
|
19
|
+
s.add_dependency "nomad-cli", "~> 0.0.3"
|
20
20
|
s.add_dependency "rmagick", '~> 2.13'
|
21
|
+
s.add_dependency "xcpretty", '~> 0.1.3'
|
21
22
|
|
22
23
|
s.add_development_dependency "bundler"
|
23
24
|
s.add_development_dependency "rspec"
|
@@ -54,7 +54,7 @@ module BuildKit
|
|
54
54
|
|
55
55
|
def artefact_full_path
|
56
56
|
build_artefact_filename! if @artefact_filename.nil?
|
57
|
-
@config.
|
57
|
+
File.join(@config.absolute_build_dir, @artefact_filename)
|
58
58
|
end
|
59
59
|
|
60
60
|
def existing_ipa_count
|
@@ -64,7 +64,7 @@ module BuildKit
|
|
64
64
|
def build_command
|
65
65
|
workspace_arg = "-workspace \"#{@config.workspace}\""
|
66
66
|
sdk_arg = "-sdk #{@config.sdk}"
|
67
|
-
build_file_arg = "-v \"#{@config.
|
67
|
+
build_file_arg = "-v \"#{File.join(@config.absolute_build_dir, @config.app_name)}.app\""
|
68
68
|
output_file_arg = "-o \"#{artefact_full_path}\""
|
69
69
|
code_sign_arg = "--sign #{@config.code_sign}"
|
70
70
|
provisioning_arg = "--embed \"#{@config.provisioning_profile}\""
|
@@ -28,7 +28,7 @@ module BuildKit
|
|
28
28
|
def build_command
|
29
29
|
workspace_arg = "-workspace \"#{@config.workspace}\""
|
30
30
|
scheme_arg = "-scheme \"#{@config.scheme}\""
|
31
|
-
"
|
31
|
+
"xcodebuild #{workspace_arg} #{scheme_arg} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO test | xcpretty -c; echo EXIT CODE: ${PIPESTATUS}"
|
32
32
|
end
|
33
33
|
|
34
34
|
def run_command!
|
@@ -38,7 +38,7 @@ module BuildKit
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def tests_passed?
|
41
|
-
@output.include? "
|
41
|
+
@output.include? "EXIT CODE: 0"
|
42
42
|
end
|
43
43
|
|
44
44
|
def complete_task!
|
@@ -14,7 +14,8 @@ module BuildKit
|
|
14
14
|
attr_reader :output
|
15
15
|
|
16
16
|
def run!
|
17
|
-
run_command!
|
17
|
+
run_command! "clean" if @task_options[:clean]
|
18
|
+
run_command! "build"
|
18
19
|
complete_task!
|
19
20
|
end
|
20
21
|
|
@@ -22,26 +23,31 @@ module BuildKit
|
|
22
23
|
|
23
24
|
def assert_requirements
|
24
25
|
BuildKit::Utilities::Assertions.assert_required_config [:app_name, :workspace, :sdk, :build_configuration, :build_dir, :scheme], @runner
|
25
|
-
BuildKit::Utilities::Assertions.assert_files_exist [@config.workspace, @config.
|
26
|
+
BuildKit::Utilities::Assertions.assert_files_exist [@config.workspace, @config.absolute_build_dir]
|
26
27
|
end
|
27
28
|
|
28
|
-
def build_command
|
29
|
+
def build_command cmd
|
29
30
|
workspace_arg = "-workspace \"#{@config.workspace}\""
|
30
31
|
sdk_arg = "-sdk \"#{@config.sdk}\""
|
31
32
|
scheme_arg = "-scheme \"#{@config.scheme}\""
|
32
33
|
configuration_arg = "-configuration \"#{@config.build_configuration}\""
|
33
|
-
build_dir_arg = "CONFIGURATION_BUILD_DIR=\"#{@config.
|
34
|
-
"
|
34
|
+
build_dir_arg = "CONFIGURATION_BUILD_DIR=\"#{@config.absolute_build_dir}\""
|
35
|
+
"xcodebuild #{workspace_arg} #{sdk_arg} #{scheme_arg} #{configuration_arg} #{build_dir_arg} #{cmd} | xcpretty -c; echo EXIT CODE: ${PIPESTATUS}"
|
35
36
|
end
|
36
37
|
|
37
|
-
def run_command!
|
38
|
-
command = build_command
|
39
|
-
|
40
|
-
|
38
|
+
def run_command! cmd
|
39
|
+
command = build_command cmd
|
40
|
+
cmd_output = %x[#{command}]
|
41
|
+
@output = cmd_output if is_build? cmd
|
42
|
+
puts cmd_output if @task_options[:log]
|
43
|
+
end
|
44
|
+
|
45
|
+
def is_build? cmd
|
46
|
+
cmd == "build"
|
41
47
|
end
|
42
48
|
|
43
49
|
def build_succeeded?
|
44
|
-
@output.include? "
|
50
|
+
@output.include? "EXIT CODE: 0"
|
45
51
|
end
|
46
52
|
|
47
53
|
def complete_task!
|
@@ -12,13 +12,23 @@ module BuildKit
|
|
12
12
|
|
13
13
|
def self.assert_required_config req_keys, runner
|
14
14
|
req_keys.each do |k|
|
15
|
-
|
15
|
+
BuildKit::Utilities::Console.terminate_with_err "Missing Configuration: #{k} is required to run #{runner.tasks[:running]}" if runner.config[k].nil?
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.assert_tasks_completed req_tasks, runner
|
20
20
|
req_tasks.each do |t|
|
21
|
-
|
21
|
+
BuildKit::Utilities::Console.terminate_with_err "Task Required: #{t.to_s} should be completed to run #{runner.tasks[:running]}" unless runner.has_completed_task? t
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.assert_symbol_hash_keys hash
|
26
|
+
hash.each do |key, val|
|
27
|
+
if val.is_a? Hash
|
28
|
+
BuildKit::Utilities::Assertions.assert_symbol_hash_keys val
|
29
|
+
else
|
30
|
+
BuildKit::Utilities::Console.terminate_with_err "Invalid config file: config file keys should be in Symbol form (:key:). Failed on: #{key}." unless key.is_a? Symbol
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
|
@@ -9,7 +9,7 @@ module BuildKit
|
|
9
9
|
def self.create_report runner
|
10
10
|
to_write = { time: Time.now.to_s, config: runner.config.to_h, preferences: runner.preferences.to_h, runtime_store: runner.store, outputs: {} }
|
11
11
|
runner.tasks[:run].each { |task| to_write[:outputs][task.keys.first] = runner.outputs[task.keys.first] }
|
12
|
-
file_name =
|
12
|
+
file_name = File.join(runner.preferences.reports, "report-#{Time.now.to_i}.json")
|
13
13
|
File.open(file_name, 'w') { |f| f.write to_write.to_json }
|
14
14
|
file_name
|
15
15
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "decorate_icon task" do
|
4
|
+
|
5
|
+
describe "invalid config handling" do
|
6
|
+
|
7
|
+
context "missing previous tasks" do
|
8
|
+
|
9
|
+
context "xcode_build" do
|
10
|
+
pending "raise exception"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "ipa creation" do
|
18
|
+
pending "the build dir has a new ipa file"
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "task completion" do
|
22
|
+
pending "runner.tasks[:completed].include?(:create_ipa).should be_true"
|
23
|
+
pending "runner.outputs[:create_ipa].should_not be_nil"
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "decorate_icon task" do
|
4
|
+
|
5
|
+
describe "invalid config handling" do
|
6
|
+
|
7
|
+
context "missing configuration" do
|
8
|
+
|
9
|
+
context "icon_dir" do
|
10
|
+
pending "raise exception"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
context "non-existent files" do
|
16
|
+
|
17
|
+
context "icon_dir" do
|
18
|
+
pending "raise exception"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "new icons" do
|
26
|
+
pending "the icon dir has as many new files of type png as there was beforehand"
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "task completion" do
|
30
|
+
pending "runner.tasks[:completed].include?(:decorate_icon).should be_true"
|
31
|
+
pending "runner.outputs[:decorate_icon].should_not be_nil"
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "xcode_build task" do
|
4
|
+
|
5
|
+
describe "invalid config handling" do
|
6
|
+
|
7
|
+
context "missing configuration" do
|
8
|
+
|
9
|
+
context "info_plist" do
|
10
|
+
pending "raise exception"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
context "non-existent files" do
|
16
|
+
|
17
|
+
context "info_plist" do
|
18
|
+
pending "raise exception"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "plist reading" do
|
26
|
+
pending "it reads major, minor, build version"
|
27
|
+
pending "it reads revision version"
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "existing version" do
|
31
|
+
pending "it stores the existing version"
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "new version" do
|
35
|
+
pending "it stores the existing version"
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "writing the new version to the plist" do
|
39
|
+
pending "it increments the existing version"
|
40
|
+
pending "it stores the new version"
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "task completion" do
|
44
|
+
pending "runner.tasks[:completed].include?(:increment_version).should be_true"
|
45
|
+
pending "runner.outputs[:increment_version].should_not be_nil"
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "run_tests task" do
|
4
|
+
|
5
|
+
describe "invalid config handling" do
|
6
|
+
|
7
|
+
context "missing configuration" do
|
8
|
+
|
9
|
+
context "workspace" do
|
10
|
+
pending "raise exception"
|
11
|
+
end
|
12
|
+
|
13
|
+
context "scheme" do
|
14
|
+
pending "raise exception"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
context "non-existent files" do
|
20
|
+
|
21
|
+
context "workspace" do
|
22
|
+
pending "raise exception"
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "passing tests" do
|
30
|
+
pending "runner.store[:tests_passed].should be_true"
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "failing tests" do
|
34
|
+
pending "runner.store[:tests_passed].should_not be_true <- need to create a failing test target. compare YES to NO or something"
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "task completion" do
|
38
|
+
pending "runner.tasks[:completed].include?(:run_tests).should be_true"
|
39
|
+
pending "runner.outputs[:run_tests].should_not be_nil"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
data/spec/runner_spec.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "Runner" do
|
4
|
+
|
5
|
+
describe "Runner instance" do
|
6
|
+
|
7
|
+
context "no configuration file" do
|
8
|
+
specify { expect { BuildKit::Runner::TaskRunner.new }.to raise_error }
|
9
|
+
end
|
10
|
+
|
11
|
+
context "invalid configuration file" do
|
12
|
+
specify { expect { BuildKit::Runner::TaskRunner.new({ config_file: "/does/not/exist/" }) }.to raise_error }
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
$:.push File.expand_path("../lib", __FILE__)
|
4
|
+
|
5
|
+
Dir["lib/ios_build_kit/**/*.rb"].reject { |file| file.include? "lib/ios_build_kit/version.rb" }.each { |f| load(f) }
|
6
|
+
|
7
|
+
require_relative 'support/config_mocker.rb'
|
8
|
+
require_relative 'support/temp_dir.rb'
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
config.color_enabled = true
|
13
|
+
config.tty = true
|
14
|
+
config.formatter = :documentation
|
15
|
+
config.fail_fast = true
|
16
|
+
|
17
|
+
config.before(:each) { create_spec_temp_dir }
|
18
|
+
config.after(:each) { destroy_spec_temp_dir }
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
class Hash
|
4
|
+
|
5
|
+
def enable_increment_version
|
6
|
+
self[:tasks][:increment_version][:run] = true
|
7
|
+
end
|
8
|
+
|
9
|
+
def enable_decorate_icon
|
10
|
+
self[:tasks][:decorate_icon][:run] = true
|
11
|
+
end
|
12
|
+
|
13
|
+
def enable_xcode_build
|
14
|
+
self[:tasks][:xcode_build][:run] = true
|
15
|
+
end
|
16
|
+
|
17
|
+
def enable_run_tests
|
18
|
+
self[:tasks][:run_tests][:run] = true
|
19
|
+
end
|
20
|
+
|
21
|
+
def enable_create_ipa
|
22
|
+
self[:tasks][:create_ipa][:run] = true
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def mock_runner config_file_data
|
28
|
+
mock_conf_file = create_mock_config_file config_file_data
|
29
|
+
runner = BuildKit::Runner::TaskRunner.new({ config_file: mock_conf_file })
|
30
|
+
runner
|
31
|
+
end
|
32
|
+
|
33
|
+
def vc
|
34
|
+
valid_config_file_data
|
35
|
+
end
|
36
|
+
|
37
|
+
def valid_config_file_data
|
38
|
+
|
39
|
+
{
|
40
|
+
tasks: {
|
41
|
+
|
42
|
+
increment_version: {
|
43
|
+
run: false,
|
44
|
+
options: nil
|
45
|
+
},
|
46
|
+
|
47
|
+
decorate_icon: {
|
48
|
+
run: false,
|
49
|
+
options: nil
|
50
|
+
},
|
51
|
+
|
52
|
+
xcode_build: {
|
53
|
+
run: false,
|
54
|
+
options: { log: false }
|
55
|
+
},
|
56
|
+
|
57
|
+
run_tests: {
|
58
|
+
run: false,
|
59
|
+
options: { log: false }
|
60
|
+
},
|
61
|
+
|
62
|
+
create_ipa: {
|
63
|
+
run: false,
|
64
|
+
options: { log: false }
|
65
|
+
}
|
66
|
+
|
67
|
+
},
|
68
|
+
|
69
|
+
configuration: {
|
70
|
+
app_name: "BuildKit",
|
71
|
+
workspace: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/example/BuildKit.xcworkspace",
|
72
|
+
info_plist: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/example/BuildKit/BuildKit-Info.plist",
|
73
|
+
build_configuration: "Release",
|
74
|
+
scheme: "BuildKit",
|
75
|
+
sdk: "iphoneos",
|
76
|
+
provisioning_profile: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/example/Provisioning/BuildKitTest.mobileprovision",
|
77
|
+
code_sign: "iPhone Distribution: Alpaca Labs",
|
78
|
+
icon_dir: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/example/BuildKit/Icon/",
|
79
|
+
build_dir: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/spec/temp/",
|
80
|
+
},
|
81
|
+
|
82
|
+
preferences: {
|
83
|
+
reports: "/Users/adamwaite/iOS/Lib/BuildKit/iOS-Build-Kit/spec/temp/",
|
84
|
+
}
|
85
|
+
|
86
|
+
}
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def create_mock_config_file hash
|
91
|
+
path = "spec/temp/mock_config_file.yml"
|
92
|
+
File.open("spec/temp/mock_config_file.yml", 'w') { |f| f.write hash.to_yaml }
|
93
|
+
path
|
94
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "xcode_build task" do
|
4
|
+
|
5
|
+
describe "invalid config handling" do
|
6
|
+
|
7
|
+
context "missing configuration" do
|
8
|
+
|
9
|
+
context "app_name" do
|
10
|
+
pending "raise exception"
|
11
|
+
end
|
12
|
+
|
13
|
+
context "workspace" do
|
14
|
+
pending "raise exception"
|
15
|
+
end
|
16
|
+
|
17
|
+
context "build_configuration" do
|
18
|
+
pending "raise exception"
|
19
|
+
end
|
20
|
+
|
21
|
+
context "build_dir" do
|
22
|
+
pending "raise exception"
|
23
|
+
end
|
24
|
+
|
25
|
+
context "scheme" do
|
26
|
+
pending "raise exception"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
context "non-existent files" do
|
32
|
+
|
33
|
+
context "workspace" do
|
34
|
+
pending "raise exception"
|
35
|
+
end
|
36
|
+
|
37
|
+
context "build_dir" do
|
38
|
+
pending "raise exception"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "successful build" do
|
46
|
+
pending "runner.store[:xcode_build_succeeded].should be_true"
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "failing build" do
|
50
|
+
pending "runner.store[:xcode_build_succeeded].should_not be_true <- need to create a target that fails to build, spelling mistake or something"
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "task completion" do
|
54
|
+
pending "runner.tasks[:completed].include?(:xcode_build).should be_true"
|
55
|
+
pending "runner.outputs[:xcode_build].should_not be_nil"
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ios_build_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Waite
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.
|
61
|
+
version: 0.0.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.0.
|
68
|
+
version: 0.0.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rmagick
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.13'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: xcpretty
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.1.3
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.1.3
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +146,7 @@ extra_rdoc_files: []
|
|
132
146
|
files:
|
133
147
|
- ./Gemfile
|
134
148
|
- ./Gemfile.lock
|
135
|
-
- ./ios_build_kit-0.0.
|
149
|
+
- ./ios_build_kit-0.0.2.gem
|
136
150
|
- ./ios_build_kit.gemspec
|
137
151
|
- ./lib/ios_build_kit/task.rb
|
138
152
|
- ./lib/ios_build_kit/task_configuration.rb
|
@@ -153,6 +167,16 @@ files:
|
|
153
167
|
- ./Rakefile
|
154
168
|
- ./README.md
|
155
169
|
- ./README.rdoc
|
170
|
+
- spec/create_ipa_spec.rb
|
171
|
+
- spec/decorate_icon_spec.rb
|
172
|
+
- spec/increment_version_spec.rb
|
173
|
+
- spec/reports_spec.rb
|
174
|
+
- spec/run_tests_spec.rb
|
175
|
+
- spec/runner_spec.rb
|
176
|
+
- spec/spec_helper.rb
|
177
|
+
- spec/support/config_mocker.rb
|
178
|
+
- spec/support/temp_dir.rb
|
179
|
+
- spec/xcode_build_spec.rb
|
156
180
|
- bin/buildkit
|
157
181
|
homepage: https://github.com/adamwaite/iOS-Build-Kit
|
158
182
|
licenses: []
|
@@ -177,5 +201,15 @@ rubygems_version: 2.0.8
|
|
177
201
|
signing_key:
|
178
202
|
specification_version: 4
|
179
203
|
summary: iOS Build Kit
|
180
|
-
test_files:
|
204
|
+
test_files:
|
205
|
+
- spec/create_ipa_spec.rb
|
206
|
+
- spec/decorate_icon_spec.rb
|
207
|
+
- spec/increment_version_spec.rb
|
208
|
+
- spec/reports_spec.rb
|
209
|
+
- spec/run_tests_spec.rb
|
210
|
+
- spec/runner_spec.rb
|
211
|
+
- spec/spec_helper.rb
|
212
|
+
- spec/support/config_mocker.rb
|
213
|
+
- spec/support/temp_dir.rb
|
214
|
+
- spec/xcode_build_spec.rb
|
181
215
|
has_rdoc:
|
data/ios_build_kit-0.0.1.gem
DELETED
Binary file
|