yolo 1.2.0 → 1.2.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/lib/yolo/tasks/ios/release.rb +37 -15
- data/lib/yolo/tools/git.rb +2 -1
- data/spec/config/install_spec.rb +1 -0
- data/spec/config/settings_spec.rb +17 -0
- data/spec/deployment/base_deployer_spec.rb +1 -0
- data/spec/deployment/ota_spec.rb +7 -0
- data/spec/deployment/test_flight_spec.rb +1 -0
- data/spec/notify/email_spec.rb +17 -1
- data/spec/notify/ios/ota_email_spec.rb +1 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/tasks/base_task_spec.rb +1 -0
- data/spec/tasks/ios/build_spec.rb +1 -0
- data/spec/tasks/ios/calabash_spec.rb +1 -0
- data/spec/tasks/ios/coverage_spec.rb +1 -0
- data/spec/tasks/ios/ocunit_spec.rb +1 -0
- data/spec/tasks/ios/release_spec.rb +1 -0
- data/spec/tools/git_spec.rb +45 -2
- data/spec/tools/ios/calabash_spec.rb +1 -0
- data/spec/tools/ios/coverage_spec.rb +1 -0
- data/spec/tools/ios/ipa_spec.rb +1 -0
- data/spec/tools/ios/release_notes_spec.rb +1 -0
- data/spec/tools/ios/xcode_spec.rb +1 -0
- metadata +2 -2
@@ -37,9 +37,10 @@ module Yolo
|
|
37
37
|
def app_path
|
38
38
|
files = []
|
39
39
|
Find.find(@xcode.build_path) do |path|
|
40
|
-
files << path if path =~
|
40
|
+
files << path if path =~ /\/Build\/Products\/.*-iphoneos\/#{name}\.app$/
|
41
41
|
end
|
42
|
-
files.sort_by { |filename| File.mtime(filename)}.last # get the latest
|
42
|
+
path = files.sort_by { |filename| File.mtime(filename)}.last # get the latest
|
43
|
+
path
|
43
44
|
end
|
44
45
|
|
45
46
|
#
|
@@ -118,24 +119,45 @@ module Yolo
|
|
118
119
|
# @param ipa_path [String] The full path to the IPA file to deploy
|
119
120
|
#
|
120
121
|
def deploy(ipa_path)
|
122
|
+
klass = deploy_class_from_string "#{self.deployment.to_s}"
|
123
|
+
if klass
|
124
|
+
klass.deploy(ipa_path, options) do |url, password|
|
125
|
+
send_notification(url, password)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
#
|
131
|
+
# Sends a notificaiton email from a deployment
|
132
|
+
# @param url [String] The URL which the build has been deplyed too
|
133
|
+
# @param password [String] The password required to install the build
|
134
|
+
#
|
135
|
+
# @return [type] [description]
|
136
|
+
def send_notification(url, password)
|
137
|
+
if url
|
138
|
+
mail_options = {
|
139
|
+
:to => self.mail_to,
|
140
|
+
:ota_url => url,
|
141
|
+
:subject => "New #{name} build: #{version}",
|
142
|
+
:title => name
|
143
|
+
}
|
144
|
+
mail_options[:ota_password] = password if password
|
145
|
+
@emailer.send(mail_options)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
#
|
150
|
+
# Initlizes an object from a deployment string
|
151
|
+
# @param string [String] the deployment class name string
|
152
|
+
#
|
153
|
+
# @return [Object] an object of type specified in the paramater
|
154
|
+
def deploy_class_from_string(string)
|
121
155
|
klass = Object.const_get("Yolo").const_get("Deployment").const_get("#{self.deployment.to_s}").new
|
122
156
|
unless klass
|
123
157
|
@error_formatter.deployment_class_error(self.deployment.to_s)
|
124
158
|
return
|
125
159
|
end
|
126
|
-
|
127
|
-
klass.deploy(ipa_path, options) do |url, password|
|
128
|
-
if url
|
129
|
-
mail_options = {
|
130
|
-
:to => self.mail_to,
|
131
|
-
:ota_url => url,
|
132
|
-
:subject => "New #{name} build: #{version}",
|
133
|
-
:title => name
|
134
|
-
}
|
135
|
-
mail_options[:ota_password] = password if password
|
136
|
-
@emailer.send(mail_options)
|
137
|
-
end
|
138
|
-
end
|
160
|
+
klass
|
139
161
|
end
|
140
162
|
|
141
163
|
#
|
data/lib/yolo/tools/git.rb
CHANGED
data/spec/config/install_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Config::Settings do
|
4
5
|
|
@@ -47,6 +48,12 @@ describe Yolo::Config::Settings do
|
|
47
48
|
File.stub(:open)
|
48
49
|
File.stub(:exist?){true}
|
49
50
|
File.stub(:directory?){true}
|
51
|
+
@yaml = {
|
52
|
+
"deployment" => {
|
53
|
+
"api_token" => nil,
|
54
|
+
"team_token" => nil
|
55
|
+
}
|
56
|
+
}
|
50
57
|
end
|
51
58
|
|
52
59
|
it "should add an api token if missing" do
|
@@ -62,6 +69,16 @@ describe Yolo::Config::Settings do
|
|
62
69
|
Yolo::Config::Settings.instance.update_config
|
63
70
|
@yaml["deployment"]["team_token"].should eq("example")
|
64
71
|
end
|
72
|
+
|
73
|
+
it "should write the new config file to disk" do
|
74
|
+
YAML.stub(:load_file){@yaml}
|
75
|
+
file = mock(File)
|
76
|
+
file.stub(:write)
|
77
|
+
File.stub(:open).and_yield(file)
|
78
|
+
|
79
|
+
file.should_receive(:write)
|
80
|
+
Yolo::Config::Settings.instance.update_config
|
81
|
+
end
|
65
82
|
end
|
66
83
|
|
67
84
|
describe "when asked for settings" do
|
data/spec/deployment/ota_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Deployment::OTA do
|
4
5
|
|
@@ -90,6 +91,12 @@ describe Yolo::Deployment::OTA do
|
|
90
91
|
@ota.upload_complete("json")
|
91
92
|
end
|
92
93
|
|
94
|
+
it "should not continue if json parsing fails" do
|
95
|
+
JSON.stub(:parse){nil}
|
96
|
+
@error_formatter.should_receive(:deploy_failed)
|
97
|
+
@ota.upload_complete("json")
|
98
|
+
end
|
99
|
+
|
93
100
|
it "should parse the response" do
|
94
101
|
@ota.deploy("test", nil) do |url, password|
|
95
102
|
password.should eq("test_password")
|
data/spec/notify/email_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Notify::Email do
|
4
5
|
|
@@ -6,6 +7,9 @@ describe Yolo::Notify::Email do
|
|
6
7
|
Yolo::Formatters::ErrorFormatter.any_instance.stub(:puts)
|
7
8
|
Yolo::Formatters::ProgressFormatter.any_instance.stub(:puts)
|
8
9
|
|
10
|
+
@error_formatter = mock(Yolo::Formatters::ErrorFormatter)
|
11
|
+
Yolo::Formatters::ErrorFormatter.stub(:new){@error_formatter}
|
12
|
+
|
9
13
|
@settings = Yolo::Config::Settings
|
10
14
|
@settings.any_instance.stub(:mail_host){"test_host"}
|
11
15
|
@settings.any_instance.stub(:mail_from){"test_from"}
|
@@ -13,7 +17,6 @@ describe Yolo::Notify::Email do
|
|
13
17
|
@settings.any_instance.stub(:mail_account){"test_account"}
|
14
18
|
@settings.any_instance.stub(:mail_password){"test_password"}
|
15
19
|
@email = Yolo::Notify::Email.new
|
16
|
-
@email.stub(:body){"test body"}
|
17
20
|
@email.to = "test_to"
|
18
21
|
end
|
19
22
|
|
@@ -37,6 +40,10 @@ describe Yolo::Notify::Email do
|
|
37
40
|
it "should load a password" do
|
38
41
|
@email.password.should eq("test_password")
|
39
42
|
end
|
43
|
+
|
44
|
+
it "should return an empty body" do
|
45
|
+
@email.body({}).should eq("")
|
46
|
+
end
|
40
47
|
end
|
41
48
|
|
42
49
|
describe "when sending" do
|
@@ -47,6 +54,7 @@ describe Yolo::Notify::Email do
|
|
47
54
|
@smtp.stub(:send_message)
|
48
55
|
@smtp.stub(:enable_starttls)
|
49
56
|
@options = {}
|
57
|
+
@email.stub(:body){"test body"}
|
50
58
|
end
|
51
59
|
|
52
60
|
describe "with an account" do
|
@@ -65,6 +73,7 @@ describe Yolo::Notify::Email do
|
|
65
73
|
before do
|
66
74
|
@smtp.stub(:start).and_yield(@smtp)
|
67
75
|
@email.account = nil
|
76
|
+
@email.stub(:body){"test body"}
|
68
77
|
end
|
69
78
|
|
70
79
|
it "should not send with tls" do
|
@@ -76,6 +85,12 @@ describe Yolo::Notify::Email do
|
|
76
85
|
@smtp.should_receive(:send_message).with("test body", "test_from", "test_to")
|
77
86
|
@email.send(@options)
|
78
87
|
end
|
88
|
+
|
89
|
+
it "should output an error if missing details" do
|
90
|
+
@email.server = nil
|
91
|
+
@error_formatter.should_receive(:missing_email_details)
|
92
|
+
@email.send(@options)
|
93
|
+
end
|
79
94
|
end
|
80
95
|
|
81
96
|
describe "and loading options" do
|
@@ -83,6 +98,7 @@ describe Yolo::Notify::Email do
|
|
83
98
|
before do
|
84
99
|
@email.to = "test_to"
|
85
100
|
@email.send(@options)
|
101
|
+
@email.stub(:body){"test body"}
|
86
102
|
end
|
87
103
|
|
88
104
|
it "should load a server if missing" do
|
data/spec/spec_helper.rb
CHANGED
data/spec/tools/git_spec.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'yolo'
|
2
3
|
|
3
4
|
describe Yolo::Tools::Git do
|
4
5
|
|
5
6
|
before do
|
6
|
-
@git = Yolo::Tools::Git.new
|
7
|
-
@git.project_name = "test"
|
8
7
|
YAML.stub!(:load_file){{}}
|
9
8
|
Yolo::Formatters::ProgressFormatter.any_instance.stub(:puts)
|
10
9
|
end
|
11
10
|
|
11
|
+
before(:each) do
|
12
|
+
@git = Yolo::Tools::Git.new
|
13
|
+
@git.project_name = "test"
|
14
|
+
File.any_instance.stub(:write)
|
15
|
+
end
|
16
|
+
|
12
17
|
describe "when checking for new commits" do
|
13
18
|
before do
|
14
19
|
@git.stub(:update_commit)
|
@@ -25,6 +30,11 @@ describe Yolo::Tools::Git do
|
|
25
30
|
Yolo::Tools::Git.any_instance.stub(:latest_commit){"old"}
|
26
31
|
@git.has_new_commit("").should eq(false)
|
27
32
|
end
|
33
|
+
|
34
|
+
it "yaml tag should be empty if no project is set" do
|
35
|
+
@git.project_name = nil
|
36
|
+
@git.instance_eval{yaml_tag}.should eq("")
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
40
|
describe "when checking for new tags" do
|
@@ -43,6 +53,11 @@ describe Yolo::Tools::Git do
|
|
43
53
|
Yolo::Tools::Git.any_instance.stub(:latest_tag){"old"}
|
44
54
|
@git.has_new_tag("").should eq(false)
|
45
55
|
end
|
56
|
+
|
57
|
+
it "yaml commit should be empty if no project is set" do
|
58
|
+
@git.project_name = nil
|
59
|
+
@git.instance_eval{yaml_commit}.should eq("")
|
60
|
+
end
|
46
61
|
end
|
47
62
|
|
48
63
|
describe "when updating tags and commits" do
|
@@ -71,6 +86,20 @@ describe Yolo::Tools::Git do
|
|
71
86
|
@git.instance_eval{yaml_commit}.should match("new commit")
|
72
87
|
end
|
73
88
|
|
89
|
+
it "should overwrite the existing tag" do
|
90
|
+
@yaml = {"test" => {"tag" => "v1.2"}}
|
91
|
+
@git.instance_variable_set(:@yaml, @yaml)
|
92
|
+
@git.instance_eval{update_tag("new tag")}
|
93
|
+
@yaml["test"]["tag"].should eq("new tag")
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should overwrite the existing commit" do
|
97
|
+
@yaml = {"test" => {"commit" => "1234567891023"}}
|
98
|
+
@git.instance_variable_set(:@yaml, @yaml)
|
99
|
+
@git.instance_eval{update_commit("new commit")}
|
100
|
+
@yaml["test"]["commit"].should eq("new commit")
|
101
|
+
end
|
102
|
+
|
74
103
|
end
|
75
104
|
|
76
105
|
describe "when saving data" do
|
@@ -96,6 +125,20 @@ describe Yolo::Tools::Git do
|
|
96
125
|
@git.instance_eval{latest_tag}.should eq("v1.0")
|
97
126
|
end
|
98
127
|
|
128
|
+
it "should not get invalid tags" do
|
129
|
+
@log = ""
|
130
|
+
@log.stub(:scan){}
|
131
|
+
@git.stub(:log){@log}
|
132
|
+
@git.instance_eval{latest_tag}.should eq("")
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should not get invalid commits" do
|
136
|
+
@log = ""
|
137
|
+
@log.stub(:scan){[]}
|
138
|
+
@git.stub(:log){@log}
|
139
|
+
@git.instance_eval{latest_commit}.should eq("")
|
140
|
+
end
|
141
|
+
|
99
142
|
it "should ignore jenkins tags" do
|
100
143
|
@git.stub(:log){"tag: jenkins-tag, head, tag: v1.3.1, master"}
|
101
144
|
@git.instance_eval{latest_tag}.should_not eq("jenkins-tag")
|
data/spec/tools/ios/ipa_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: xcodebuild-rb
|