yolo 1.1.17 → 1.1.18

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.
@@ -58,20 +58,25 @@ module Yolo
58
58
  def update_config
59
59
  if File.directory?(yolo_dir) and File.exist?(yaml_path)
60
60
  @yaml = YAML::load_file yaml_path
61
- unless @yaml["deployment"]["api_token"]
62
- @yaml["deployment"]["api_token"] = "example"
63
- File.open(yaml_path, 'w') {|f|
64
- f.write(@yaml.to_yaml)
65
- }
66
- @formatter.config_updated(yaml_path)
67
- end
68
- unless @yaml["deployment"]["team_token"]
69
- @yaml["deployment"]["team_token"] = "example"
70
- File.open(yaml_path, 'w') {|f|
71
- f.write(@yaml.to_yaml)
72
- }
73
- @formatter.config_updated(yaml_path)
74
- end
61
+ update_yaml_setting(@yaml, "deployment", "api_token", "example")
62
+ update_yaml_setting(@yaml, "deployment", "team_token", "example")
63
+ end
64
+ end
65
+
66
+ #
67
+ # Check the config file for an api_token key and add it if missing
68
+ # @param yaml [Hash] The settings yaml hash
69
+ # @param key [String] The setting key to update
70
+ # @param setting [String] The setting to update
71
+ # @param default [String] [description]
72
+ #
73
+ def update_yaml_setting(yaml, key, setting, default)
74
+ unless yaml[key][setting]
75
+ yaml[key][setting] = default
76
+ File.open(yaml_path, 'w') {|f|
77
+ f.write(yaml.to_yaml)
78
+ }
79
+ @formatter.config_updated(yaml_path)
75
80
  end
76
81
  end
77
82
 
@@ -88,7 +93,9 @@ module Yolo
88
93
  #
89
94
  # @return [String] The deployment url defined in config.yml
90
95
  def deploy_url
91
- @yaml["deployment"]["url"] if @yaml["deployment"]["url"] and @yaml["deployment"]["url"] != "http://example.com"
96
+ if @yaml["deployment"]["url"] != "http://example.com"
97
+ @yaml["deployment"]["url"]
98
+ end
92
99
  end
93
100
 
94
101
  #
@@ -96,7 +103,9 @@ module Yolo
96
103
  #
97
104
  # @return [String] The api token defined in config.yml
98
105
  def api_token
99
- @yaml["deployment"]["api_token"] if @yaml["deployment"]["api_token"] and @yaml["deployment"]["api_token"] != "example"
106
+ if @yaml["deployment"]["api_token"] != "example"
107
+ @yaml["deployment"]["api_token"]
108
+ end
100
109
  end
101
110
 
102
111
  #
@@ -104,7 +113,9 @@ module Yolo
104
113
  #
105
114
  # @return [String] The team token defined in config.yml
106
115
  def team_token
107
- @yaml["deployment"]["team_token"] if @yaml["deployment"]["team_token"] and @yaml["deployment"]["teamt_oken"] != "example"
116
+ if @yaml["deployment"]["teamt_token"] != "example"
117
+ @yaml["deployment"]["team_token"]
118
+ end
108
119
  end
109
120
 
110
121
  #
@@ -112,7 +123,9 @@ module Yolo
112
123
  #
113
124
  # @return [String] The mail account defined in config.yml
114
125
  def mail_account
115
- @yaml["mail"]["account"] if @yaml["mail"]["account"] and @yaml["mail"]["account"] != "example@example.com"
126
+ if @yaml["mail"]["account"] != "example@example.com"
127
+ @yaml["mail"]["account"]
128
+ end
116
129
  end
117
130
 
118
131
  #
@@ -120,7 +133,9 @@ module Yolo
120
133
  #
121
134
  # @return [String] The mail password defined in config.yml
122
135
  def mail_password
123
- @yaml["mail"]["password"] if @yaml["mail"]["password"] and @yaml["mail"]["password"] != "example"
136
+ if @yaml["mail"]["password"] != "example"
137
+ @yaml["mail"]["password"]
138
+ end
124
139
  end
125
140
 
126
141
  #
@@ -128,7 +143,9 @@ module Yolo
128
143
  #
129
144
  # @return [Number] The mail port defined in config.yml
130
145
  def mail_port
131
- @yaml["mail"]["port"] if @yaml["mail"]["port"] and @yaml["mail"]["port"] != 0
146
+ if @yaml["mail"]["port"] != 0
147
+ @yaml["mail"]["port"]
148
+ end
132
149
  end
133
150
 
134
151
  #
@@ -136,7 +153,9 @@ module Yolo
136
153
  #
137
154
  # @return [String] The mail host defined in config.yml
138
155
  def mail_host
139
- @yaml["mail"]["host"] if @yaml["mail"]["host"] and @yaml["mail"]["host"] != "your.server.ip"
156
+ if @yaml["mail"]["host"] != "your.server.ip"
157
+ return @yaml["mail"]["host"]
158
+ end
140
159
  end
141
160
 
142
161
  #
@@ -144,7 +163,9 @@ module Yolo
144
163
  #
145
164
  # @return [String] The from address defined in config.yml
146
165
  def mail_from
147
- @yaml["mail"]["from"] if @yaml["mail"]["from"] and @yaml["mail"]["from"] != "example@example.com"
166
+ if @yaml["mail"]["from"] != "example@example.com"
167
+ return @yaml["mail"]["from"]
168
+ end
148
169
  end
149
170
 
150
171
  #
@@ -73,6 +73,7 @@ module Yolo
73
73
  def folder_name
74
74
  folder_name = name
75
75
  folder_name = "#{name}-#{self.configuration}" if self.configuration
76
+ folder_name
76
77
  end
77
78
 
78
79
  #
@@ -28,14 +28,13 @@ module Yolo
28
28
  #
29
29
  # @return [BOOL] returns if there is a new commit to build
30
30
  def has_new_commit(name)
31
- self.project_name = name unless name.nil?
32
- commit = latest_commit
33
- if yaml_commit == commit
31
+ set_project_name(name)
32
+ if yaml_commit == latest_commit
34
33
  @formatter.no_new_commit
35
34
  false
36
35
  else
37
- @formatter.new_commit(commit)
38
- update_commit(commit)
36
+ @formatter.new_commit(latest_commit)
37
+ update_commit(latest_commit)
39
38
  true
40
39
  end
41
40
  end
@@ -46,14 +45,13 @@ module Yolo
46
45
  #
47
46
  # @return [BOOL] returns if there is a new tag to build
48
47
  def has_new_tag(name)
49
- self.project_name = name unless name.nil?
50
- tag = latest_tag
51
- if yaml_tag == tag
48
+ set_project_name(name)
49
+ if yaml_tag == latest_tag
52
50
  @formatter.no_new_tag
53
51
  false
54
52
  else
55
- @formatter.new_tag(tag)
56
- update_tag(tag)
53
+ @formatter.new_tag(latest_tag)
54
+ update_tag(latest_tag)
57
55
  true
58
56
  end
59
57
  end
@@ -76,6 +74,12 @@ module Yolo
76
74
 
77
75
  private
78
76
 
77
+ #
78
+ # Sets the current project name
79
+ #
80
+ def set_project_name(name)
81
+ self.project_name = name unless name.nil?
82
+ end
79
83
 
80
84
  #
81
85
  # Updates the tag history
@@ -1,6 +1,7 @@
1
1
  require 'yolo/tasks'
2
2
  require 'yolo/tools'
3
3
  require 'active_support/all'
4
+
4
5
  describe Yolo::Tasks::Ios::Coverage do
5
6
  before do
6
7
  @xcode = mock(Yolo::Tools::Ios::Xcode)
@@ -1,5 +1,28 @@
1
1
  require 'yolo/tasks'
2
2
 
3
3
  describe Yolo::Tasks::Ios::OCUnit do
4
+ before do
5
+ @ocunit = Yolo::Tasks::Ios::OCUnit.new
6
+ end
4
7
 
8
+ describe "when created" do
9
+ it "should set the iphonesimulator as the default sdk" do
10
+ @ocunit.sdk.should eq("iphonesimulator")
11
+ end
12
+
13
+ it "should set junit as the default test output" do
14
+ @ocunit.test_output.should eq(:junit)
15
+ end
16
+ end
17
+
18
+ describe "when building an options string" do
19
+ it "should append additional options" do
20
+ @ocunit.build_opts_string("one","two","three").should match(/one two three/)
21
+ end
22
+
23
+ it "should pipe output to ocunit2junit" do
24
+ @ocunit.test_output = :junit
25
+ @ocunit.build_opts_string.should match(/2>&1 | ocunit2junit/)
26
+ end
27
+ end
5
28
  end
@@ -1,5 +1,177 @@
1
1
  require 'yolo/tasks'
2
+ require 'yolo/tools'
3
+ require 'yolo/notify'
4
+ require "yolo/formatters"
5
+ require "yolo/config"
6
+ require "yolo/deployment"
7
+ require 'active_support/all'
2
8
 
3
9
  describe Yolo::Tasks::Ios::Release do
10
+ before do
11
+ @xcode = mock(Yolo::Tools::Ios::Xcode)
12
+ @xcode.stub(:build_path)
13
+ Yolo::Tools::Ios::Xcode.stub(:new){@xcode}
4
14
 
15
+ @email = mock(Yolo::Notify::Ios::OTAEmail)
16
+ @email.stub(:send)
17
+ Yolo::Notify::Ios::OTAEmail.stub(:new){@email}
18
+
19
+ @ota = mock(Yolo::Deployment::OTA)
20
+ Yolo::Deployment::OTA.stub(:new){@ota}
21
+
22
+ Yolo::Config::Settings.instance.stub(:bundle_directory){"test_directory"}
23
+
24
+ Yolo::Formatters::ErrorFormatter.any_instance.stub(:puts)
25
+ Yolo::Formatters::ProgressFormatter.any_instance.stub(:puts)
26
+
27
+ @release = Yolo::Tasks::Ios::Release.new
28
+
29
+ @test_path = "blah/name-test/Build/Products/Debug-iphoneos/name.app"
30
+ @false_path = "blah/name-test/Build/Products/Release-iphoneos/name.app"
31
+ end
32
+
33
+ describe "when created" do
34
+ it "should set iphoneos as the default sdk" do
35
+ @release.sdk.should eq("iphoneos")
36
+ end
37
+
38
+ it "should set OTA as the default deployment" do
39
+ @release.deployment.should eq(:OTA)
40
+ end
41
+ end
42
+
43
+ describe "when getting the app path" do
44
+ before do
45
+ @release.stub(:name){"name"}
46
+ end
47
+
48
+ it "should find the directory" do
49
+ Find.stub(:find).and_yield(@test_path)
50
+ File.stub(:mtime){Time.now}
51
+ @release.app_path.should eq(@test_path)
52
+ end
53
+
54
+ it "should find the latest directory" do
55
+ Find.stub(:find).and_yield(@test_path).and_yield(@false_path)
56
+ File.stub(:mtime).and_return(Time.now, Time.now - 1.day)
57
+ @release.app_path.should eq(@test_path)
58
+ end
59
+ end
60
+
61
+ describe "when getting the dsym path" do
62
+ before do
63
+ @release.stub(:app_path){"path/to/test.app"}
64
+ end
65
+
66
+ it "should get the path from the app path" do
67
+ @release.dsym_path.should eq("path/to/test.app.dSYM")
68
+ end
69
+ end
70
+
71
+ describe "when getting the bundle path" do
72
+ before do
73
+ @release.stub(:folder_name){"folder"}
74
+ @release.stub(:version){"1.0"}
75
+ end
76
+
77
+ it "should generate the path" do
78
+ @release.bundle_path.should eq("test_directory/folder/1.0")
79
+ end
80
+ end
81
+
82
+ describe "when getting the folder name" do
83
+ before do
84
+ @release.stub(:name){"name"}
85
+ end
86
+
87
+ it "should append the configuration if present" do
88
+ @release.configuration = "Debug"
89
+ @release.folder_name.should eq("name-Debug")
90
+ end
91
+
92
+ it "should use the app name if no configuration is set" do
93
+ @release.configuration = nil
94
+ @release.folder_name.should eq("name")
95
+ end
96
+ end
97
+
98
+ describe "when getting the info plist path" do
99
+ before do
100
+ @release.stub(:name){"name"}
101
+ @path = "/path/to/name-Info.plist"
102
+ Find.stub(:find).and_yield(@path)
103
+ end
104
+
105
+ it "should find the plist" do
106
+ @release.info_plist_path.should eq(@path)
107
+ end
108
+ end
109
+
110
+ describe "when getting the version" do
111
+ before do
112
+ @xcode.stub(:info_plist_path=)
113
+ end
114
+
115
+ it "should get the version string from xcode" do
116
+ @xcode.stub(:version_number){"1.0"}
117
+ @xcode.stub(:build_number){"1.0"}
118
+
119
+ @release.version.should eq("1.0-1.0")
120
+ end
121
+
122
+ it "should use the current time if xcode cant find the version" do
123
+ @xcode.stub(:version_number){nil}
124
+ @xcode.stub(:build_number){nil}
125
+
126
+ @time = mock(Time)
127
+ Time.stub(:now){@time}
128
+ @time.stub(:day){"Monday"}
129
+ @time.stub(:month){"Jan"}
130
+ @time.stub(:year){"2013"}
131
+ @time.stub(:hour){"1"}
132
+ @time.stub(:min){"1"}
133
+ @time.stub(:sec){"1"}
134
+
135
+ @release.version.should eq("Monday-Jan-2013-1-1-1")
136
+ end
137
+ end
138
+
139
+ describe "when deploying" do
140
+ before do
141
+ @ota.stub(:deploy)
142
+ @release.stub(:version){"1.0"}
143
+ @release.stub(:name){"testname"}
144
+ end
145
+
146
+ it "should create a class from the deployment symbol" do
147
+ @ota.should_receive(:deploy)
148
+ @release.deploy("")
149
+ end
150
+
151
+ it "should not try and deploy a nil class" do
152
+ Yolo::Deployment::OTA.stub(:new){nil}
153
+ Yolo::Formatters::ErrorFormatter.any_instance.should_receive(:deployment_class_error)
154
+ @release.deploy("")
155
+ end
156
+
157
+ it "shouldnt build mail options without a url" do
158
+ @ota.stub(:deploy).and_yield(nil, nil)
159
+ @email.should_not_receive(:send)
160
+ @release.deploy("")
161
+ end
162
+
163
+ it "should build mail options once deployed" do
164
+ @release.mail_to = "test@test.com"
165
+ @ota.stub(:deploy).and_yield("url", "password")
166
+ @email.should_receive(:send).with(
167
+ {
168
+ :to => "test@test.com",
169
+ :ota_url => "url",
170
+ :subject=>"New testname build: 1.0",
171
+ :title=>"testname",
172
+ :ota_password=>"password"
173
+ })
174
+ @release.deploy("")
175
+ end
176
+ end
5
177
  end
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.1.17
4
+ version: 1.1.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  version: '0'
157
157
  requirements: []
158
158
  rubyforge_project:
159
- rubygems_version: 1.8.23
159
+ rubygems_version: 1.8.24
160
160
  signing_key:
161
161
  specification_version: 3
162
162
  summary: YOLO!