high_five 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODliMzU0MzVmNjgzZGY4NWRlODYwM2RlYzM5MGY5NmIwOGRlM2NmYQ==
5
- data.tar.gz: !binary |-
6
- YjEzMjcwM2UwNTE5YTJkY2FmNWYzNzVkYzdmN2UwMTRmNDdkMmQzNg==
2
+ SHA1:
3
+ metadata.gz: e5fc25c5aa37ca5a2283a88b7cb2dad46e66423b
4
+ data.tar.gz: ca7b7b5583209ff0c92f0c11a94a0d0a0f471410
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZjdmMWVhYjhhOTJhODhhMWZhMTkyODNjNWEyNDRmZTE1NmMzODdiMTFjYjBm
10
- MGMwYWVjYzlmYmZiY2VhZjdkMTE0NGUzNTdiZDMxYzE4ZmFhMmEzNjQ3YTRk
11
- ZWEyN2QyNGFiNTQzMzFkMDRkMzk0ZTVjYzhlM2Y3MzUyZTljNjQ=
12
- data.tar.gz: !binary |-
13
- OGRmY2RhMWRmZTgwOTU4YjQwOGFlODU2YmE4ZjdlYWRmMWI2ZTIxYWRjODU2
14
- NGI3M2Q5ZWEyOGU3MDFhMmY1NDE1ZGIxNDYwNDE2YTdlMzcwN2I5NmM2ZDNj
15
- Yjc3YTEyNzU4MDQwYjZjNjM2YTY3ZWM4YjFhMjljNjZlZTkwZjQ=
6
+ metadata.gz: c9b5e81d53e7998e4d9c6e1ae3addf200cb39979f9b3f2bb01c93324a36629cc5d9cc22a2fa9a11e027bcc3f12f5cc00036850f105c5a77558e2f1ca52027c68
7
+ data.tar.gz: eb9756286630d751c54280713f612acfb3db3601b4a3597dbe5b060f321ca22938d5a3c1f6ed0d5e2dce1ffe7b495c55f35e0be232eff481bfa087f9b3732353
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in asdf.gemspec
3
+ # Specify your gem's dependencies in high_five.gemspec
4
4
  gemspec
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  high_five (0.2.0)
5
+ chunky_png
5
6
  coffee-script (~> 2.2.0)
6
7
  compass (~> 0.12.2)
7
8
  multi_json (~> 1.0)
data/high_five.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency "coffee-script", "~>2.2.0"
25
25
  s.add_runtime_dependency "plist", ">=3.0"
26
26
  s.add_runtime_dependency "nokogiri", ">=1.5.0"
27
+ s.add_runtime_dependency "chunky_png"
27
28
  s.add_development_dependency "rspec", "~>2.13.0"
28
29
 
29
30
 
@@ -20,5 +20,31 @@ module HighFive
20
20
  raise "Couldn't find android manifest near #{destination_dir}" if root_dir == '/'
21
21
  end
22
22
  end
23
+
24
+ def res_map
25
+ {
26
+ ldpi: 36,
27
+ mdpi: 48,
28
+ hdpi: 72,
29
+ xhdpi: 96,
30
+ drawable: 512
31
+ }
32
+ end
33
+
34
+ def parse_resolution(dir)
35
+ dir.gsub(/.*\//, '').gsub('drawable-', '').to_sym
36
+ end
37
+
38
+ # drawable_dir: The directory containing drawable/, drawable-hdpi, drawable-mdpi, etc
39
+ # Returns directories which are present & whose resolutions are supported
40
+ def valid_directories(drawable_dir)
41
+ valid_dirs = []
42
+ Dir.glob(File.join drawable_dir, "drawable*") do |dir|
43
+ res = parse_resolution(dir)
44
+ size = res_map[res]
45
+ valid_dirs << dir unless size.nil?
46
+ end
47
+ valid_dirs
48
+ end
23
49
  end
24
- end
50
+ end
@@ -1,3 +1,4 @@
1
+ require 'chunky_png'
1
2
  require 'high_five/android_helper'
2
3
  require 'nokogiri'
3
4
 
@@ -21,7 +22,7 @@ module HighFive
21
22
  Buildfile: /Users/Shared/Jenkins/Home/jobs/modern resident/workspace/modern_resident-mobile/android/build.xml')
22
23
  end
23
24
 
24
- desc "set_version", "build the debug apk via ant debug"
25
+ desc "set_version", "Change the version and build number"
25
26
  method_option :version, :aliases => "-v", :desc => "Set main version"
26
27
  method_option :build_number, :aliases => '-b', :desc => "set build number"
27
28
  def set_version
@@ -48,7 +49,23 @@ module HighFive
48
49
  f.write xml.to_xml
49
50
  end
50
51
  end
52
+
53
+ desc "set_icon", "Generate app icons from base png image"
54
+ def set_icon(path)
55
+ image = ChunkyPNG::Image.from_file(path)
56
+
57
+ manifest = File.read(android_manifest_path)
58
+ icon_name = manifest.match(/android:icon="@drawable\/(.*?)"/)[1] + '.png'
59
+
60
+ drawable_dir = File.join File.dirname(android_manifest_path), 'res'
61
+ valid_directories(drawable_dir).each do |dir|
62
+ res = parse_resolution(dir)
63
+ size = res_map[res]
64
+ image.resize(size, size).save(File.join(dir, icon_name))
65
+ puts "Writing #{size}x#{size} -> #{File.join(dir, icon_name)}"
66
+ end
67
+ end
51
68
  end
52
69
  end
53
70
  end
54
- end
71
+ end
@@ -6,6 +6,7 @@ module HighFive
6
6
  class Distribution < ::HighFive::Thor::Task
7
7
  include ::Thor::Actions
8
8
  include IosHelper
9
+ include AndroidHelper
9
10
 
10
11
  default_task :dist
11
12
 
@@ -25,20 +26,10 @@ module HighFive
25
26
  self.destination_root = @config.destination
26
27
 
27
28
  if @platform == "android" || @platform == "amazon"
28
- path = self.destination_root
29
- while path != base_config.root
30
- if File.exists? File.join(path, 'AndroidManifest.xml')
31
- android_path = path
32
- break
33
- else
34
- path = File.expand_path('..', path)
35
- end
36
- end
37
-
38
- if !android_path
39
- raise "Couldn't find the path of the android manifest."
40
- end
29
+ manifest_path = android_manifest_path
30
+ android_path = File.dirname(manifest_path)
41
31
 
32
+ system("android update project --path #{android_path} --subprojects")
42
33
  system("ant -file '#{android_path}/build.xml' release")
43
34
 
44
35
  android_name = HighFive::AndroidHelper.project_name_from_build_xml("#{android_path}/build.xml")
@@ -50,7 +41,7 @@ module HighFive
50
41
  raise "Please pass in the path to the provisioning profile to build an ios app. -p [provisioning_profile]" if @provisioning_profile.nil?
51
42
 
52
43
  ios_path = File.dirname(xcodeproj_path())
53
-
44
+
54
45
  if !ios_path
55
46
  raise "Couldn't find the path of the xcodeproj."
56
47
  end
@@ -1,3 +1,3 @@
1
1
  module HighFive
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'chunky_png'
3
+
4
+ describe HighFive::Thor::Tasks::AndroidTasks do
5
+ include HighFive::TestHelper
6
+ include HighFive::AndroidHelper
7
+
8
+ before(:all) do
9
+ create_dummy_app!
10
+ HighFive::Config.configure do |config|
11
+ config.root = @project_root
12
+ config.destination = "www"
13
+ config.platform :android do |android|
14
+ android.destination = 'android/assets/www'
15
+ end
16
+ end
17
+ end
18
+
19
+ after(:all) do
20
+ destroy_dummy_app!
21
+ end
22
+
23
+ context 'Set icon' do
24
+ let(:drawable_dir) { File.join(@project_root, 'android', 'res') }
25
+ before(:all) do
26
+ cli(HighFive::Thor::Tasks::AndroidTasks).set_icon File.join(@project_root, 'test_icon.png')
27
+ end
28
+
29
+ it 'creates icons for each drawable- folder' do
30
+ valid_directories(drawable_dir).each do |dir|
31
+ file = File.join(dir, 'icon.png')
32
+ expect(file).to exist
33
+ end
34
+ end
35
+
36
+ it 'creates default in drawable folder' do
37
+ file = File.join(drawable_dir, 'drawable', 'icon.png')
38
+ expect(file).to exist
39
+ end
40
+
41
+ it 'resizes to correct dimensions' do
42
+ valid_directories(drawable_dir).each do |dir|
43
+ res = parse_resolution(dir)
44
+ size = res_map[res]
45
+ file = File.join(dir, 'icon.png')
46
+ image = ChunkyPNG::Image.from_file(file)
47
+ expect(image.dimension.height).to eq size
48
+ expect(image.dimension.width).to eq size
49
+ end
50
+ end
51
+ end
52
+
53
+ context "Set version" do
54
+ it 'updates version number' do
55
+ cli(HighFive::Thor::Tasks::AndroidTasks, version: '2.0').set_version
56
+ manifest = File.read(File.join(@project_root, 'android', 'AndroidManifest.xml'))
57
+ expect(manifest).to match(/android:versionName="2.0"/)
58
+ end
59
+ end
60
+ end
data/spec/deploy_spec.rb CHANGED
@@ -1,37 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe HighFive::Thor::Tasks::Deploy do
4
- def create_dummy_app!
5
- @original_dir = Dir.pwd
6
- @project_root = Dir.mktmpdir("hi5")
7
- Dir.chdir @project_root
8
- FileUtils.cp_r(Dir[File.join(File.dirname(__FILE__), "dummy", "*")], @project_root)
9
- end
10
-
11
- def cli(options={environment: 'development'})
12
- cli = HighFive::Thor::Tasks::Deploy.new([], options)
13
- cli.instance_variable_set("@base_config", HighFive::Config.instance)
14
- cli
15
- end
3
+ describe HighFive::Thor::Tasks::Deploy do
4
+ include HighFive::TestHelper
16
5
 
17
- def destroy_dummy_app!
18
- puts "Cleaning up deploy directory. Contents: "
19
- system("find #{@project_root} -print | sed 's;[^/]*/;|___;g;s;___|; |;g'")
20
- Dir.chdir @original_dir
21
- FileUtils.rm_rf @project_root
22
- end
23
-
24
6
  context "Basic Deployment" do
25
- before :all do
7
+ before :all do
26
8
  create_dummy_app!
27
9
  HighFive::Config.configure do |config|
28
10
  config.root = @project_root
29
11
  config.destination = "www"
30
12
  config.platform :android do |android|
31
-
13
+
32
14
  end
33
15
  end
34
- cli.deploy("android")
16
+ cli(HighFive::Thor::Tasks::Deploy).deploy("android")
35
17
  end
36
18
 
37
19
  after(:all) { destroy_dummy_app! }
@@ -47,7 +29,7 @@ describe HighFive::Thor::Tasks::Deploy do
47
29
 
48
30
  end
49
31
 
50
- context "SASS Deployment" do
32
+ context "SASS Deployment" do
51
33
  before :all do
52
34
  create_dummy_app!
53
35
  HighFive::Config.configure do |config|
@@ -56,25 +38,25 @@ describe HighFive::Thor::Tasks::Deploy do
56
38
  config.compass_dir = "."
57
39
  config.assets "stylesheets"
58
40
  config.platform :android do |android|
59
-
41
+
60
42
  end
61
43
  end
62
- cli.deploy("android")
44
+ cli(HighFive::Thor::Tasks::Deploy).deploy("android")
63
45
  end
64
46
 
65
47
  after(:all) { destroy_dummy_app! }
66
48
 
67
- it "should invoke compass to compile stylesheets" do
49
+ it "should invoke compass to compile stylesheets" do
68
50
  expect(File.join(@project_root, "stylesheets", "sass.css")).to exist
69
51
  expect(File.join(@project_root, "www", "stylesheets", "sass.css")).to exist
70
52
  end
71
53
 
72
- it "should copy the css sheets to the deploy directory" do
54
+ it "should copy the css sheets to the deploy directory" do
73
55
  expect(File.join(@project_root, "www", "stylesheets", "screen.css")).to exist
74
56
  end
75
57
  end
76
58
 
77
- context "Development environment" do
59
+ context "Development environment" do
78
60
  before :all do
79
61
  create_dummy_app!
80
62
  HighFive::Config.configure do |config|
@@ -87,19 +69,19 @@ describe HighFive::Thor::Tasks::Deploy do
87
69
  config.dev_index "index-debug.html"
88
70
  end
89
71
  end
90
- cli.deploy("web")
72
+ cli(HighFive::Thor::Tasks::Deploy).deploy("web")
91
73
  end
92
74
 
93
75
  after(:all) { destroy_dummy_app! }
94
76
 
95
- it "should clone index.html to index-debug.html when directed" do
77
+ it "should clone index.html to index-debug.html when directed" do
96
78
  index = File.read(File.join(@project_root, "www-web", "index.html"))
97
79
  index_debug = File.read(File.join(@project_root, "index-debug.html"))
98
80
  index.should eq index_debug
99
81
  end
100
82
  end
101
83
 
102
- context "Production environment" do
84
+ context "Production environment" do
103
85
  before :all do
104
86
  create_dummy_app!
105
87
  HighFive::Config.configure do |config|
@@ -114,20 +96,20 @@ describe HighFive::Thor::Tasks::Deploy do
114
96
  config.environment :production do |prod|
115
97
  prod.minify = :yui
116
98
  end
117
-
99
+
118
100
  end
119
- cli(environment: 'production').deploy("web")
101
+ cli(HighFive::Thor::Tasks::Deploy, environment: 'production').deploy("web")
120
102
  end
121
103
 
122
104
  after(:all) { destroy_dummy_app! }
123
105
 
124
- it "should produce just one javascript file" do
106
+ it "should produce just one javascript file" do
125
107
  expect(File.join(@project_root, "www", "app.js")).to exist
126
108
  end
127
- it "should not clone index.html to index-debug.html" do
109
+ it "should not clone index.html to index-debug.html" do
128
110
  File.exist?(File.join(@project_root, "index-debug.html")).should be_false
129
111
  end
130
- it "should generate an html manifest" do
112
+ it "should generate an html manifest" do
131
113
  expect(File.join(@project_root, "www", "manifest.appcache")).to exist
132
114
  end
133
115
  end
@@ -141,9 +123,9 @@ describe HighFive::Thor::Tasks::Deploy do
141
123
  config.asset_paths = ["public/custom_path"]
142
124
  config.platform :custom_asset_paths do |custom_asset_paths|
143
125
  end
144
-
126
+
145
127
  end
146
- cli.deploy("custom_asset_paths")
128
+ cli(HighFive::Thor::Tasks::Deploy).deploy("custom_asset_paths")
147
129
  end
148
130
 
149
131
  after(:all) { destroy_dummy_app! }
@@ -157,4 +139,4 @@ describe HighFive::Thor::Tasks::Deploy do
157
139
  end
158
140
  end
159
141
 
160
- end
142
+ end
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one
4
+ or more contributor license agreements. See the NOTICE file
5
+ distributed with this work for additional information
6
+ regarding copyright ownership. The ASF licenses this file
7
+ to you under the Apache License, Version 2.0 (the
8
+ "License"); you may not use this file except in compliance
9
+ with the License. You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing,
14
+ software distributed under the License is distributed on an
15
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ KIND, either express or implied. See the License for the
17
+ specific language governing permissions and limitations
18
+ under the License.
19
+ -->
20
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tenforwardconsulting.highfive.dummy" android:versionName="1.0" android:versionCode="1" android:hardwareAccelerated="true">
21
+ <supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true" android:resizeable="true" android:anyDensity="true"/>
22
+
23
+ <uses-permission android:name="android.permission.INTERNET"/>
24
+
25
+ <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
26
+ <application android:icon="@drawable/icon">
27
+ <activity android:name="HighFiveActivity" android:label="@string/app_name">
28
+ <intent-filter>
29
+ <action android:name="android.intent.action.MAIN"/>
30
+ <category android:name="android.intent.category.LAUNCHER"/>
31
+ </intent-filter>
32
+ </activity>
33
+
34
+ </application>
35
+
36
+ </manifest>
Binary file
data/spec/spec_helper.rb CHANGED
@@ -24,4 +24,26 @@ RSpec::Matchers.define :exist do
24
24
  match do |actual|
25
25
  File.exists?(actual)
26
26
  end
27
- end
27
+ end
28
+
29
+ module HighFive::TestHelper
30
+ def create_dummy_app!
31
+ @original_dir = Dir.pwd
32
+ @project_root = Dir.mktmpdir("hi5")
33
+ Dir.chdir @project_root
34
+ FileUtils.cp_r(Dir[File.join(File.dirname(__FILE__), "dummy", "*")], @project_root)
35
+ end
36
+
37
+ def cli(task_class, options={environment: 'development'})
38
+ cli = task_class.new([], options)
39
+ cli.instance_variable_set("@base_config", HighFive::Config.instance)
40
+ cli
41
+ end
42
+
43
+ def destroy_dummy_app!
44
+ puts "Cleaning up deploy directory. Contents: "
45
+ system("find #{@project_root} -print | sed 's;[^/]*/;|___;g;s;___|; |;g'")
46
+ Dir.chdir @original_dir
47
+ FileUtils.rm_rf @project_root
48
+ end
49
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: high_five
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Samson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-10 00:00:00.000000000 Z
11
+ date: 2014-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -84,14 +84,14 @@ dependencies:
84
84
  name: sprockets
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '2.0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
97
  - !ruby/object:Gem::Dependency
@@ -112,30 +112,44 @@ dependencies:
112
112
  name: plist
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '3.0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '3.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: nokogiri
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ! '>='
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: 1.5.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ! '>='
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.5.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: chunky_png
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rspec
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -150,8 +164,8 @@ dependencies:
150
164
  - - ~>
151
165
  - !ruby/object:Gem::Version
152
166
  version: 2.13.0
153
- description: ! "Build, minify, and deal with different platforms and environments
154
- for your HTML5 app.\n This is often used with PhoneGap but designed not to require
167
+ description: "Build, minify, and deal with different platforms and environments for
168
+ your HTML5 app.\n This is often used with PhoneGap but designed not to require
155
169
  it, and high_five can be used to deploy any kind of HTML/JS/CSS-based\n application
156
170
  that requires different deployment configurations.\n "
157
171
  email:
@@ -189,8 +203,10 @@ files:
189
203
  - lib/high_five/thor/tasks/ios_tasks.rb
190
204
  - lib/high_five/version.rb
191
205
  - spec/android_helper_spec.rb
206
+ - spec/android_tasks_spec.rb
192
207
  - spec/config_spec.rb
193
208
  - spec/deploy_spec.rb
209
+ - spec/dummy/android/AndroidManifest.xml
194
210
  - spec/dummy/build.xml
195
211
  - spec/dummy/config.rb
196
212
  - spec/dummy/config/high_five.rb
@@ -207,6 +223,7 @@ files:
207
223
  - spec/dummy/public/custom_path/custom_app/controllers/custom_controller.js
208
224
  - spec/dummy/sass/sass.scss
209
225
  - spec/dummy/stylesheets/screen.css
226
+ - spec/dummy/test_icon.png
210
227
  - spec/init_spec.rb
211
228
  - spec/ios_helper_spec.rb
212
229
  - spec/spec_helper.rb
@@ -223,12 +240,12 @@ require_paths:
223
240
  - lib
224
241
  required_ruby_version: !ruby/object:Gem::Requirement
225
242
  requirements:
226
- - - ! '>='
243
+ - - '>='
227
244
  - !ruby/object:Gem::Version
228
245
  version: '0'
229
246
  required_rubygems_version: !ruby/object:Gem::Requirement
230
247
  requirements:
231
- - - ! '>='
248
+ - - '>='
232
249
  - !ruby/object:Gem::Version
233
250
  version: '0'
234
251
  requirements: []
@@ -240,8 +257,10 @@ summary: HighFive is a set of build scripts and tools for packing HTML5 apps bot
240
257
  for the web and for phonegap
241
258
  test_files:
242
259
  - spec/android_helper_spec.rb
260
+ - spec/android_tasks_spec.rb
243
261
  - spec/config_spec.rb
244
262
  - spec/deploy_spec.rb
263
+ - spec/dummy/android/AndroidManifest.xml
245
264
  - spec/dummy/build.xml
246
265
  - spec/dummy/config.rb
247
266
  - spec/dummy/config/high_five.rb
@@ -258,6 +277,7 @@ test_files:
258
277
  - spec/dummy/public/custom_path/custom_app/controllers/custom_controller.js
259
278
  - spec/dummy/sass/sass.scss
260
279
  - spec/dummy/stylesheets/screen.css
280
+ - spec/dummy/test_icon.png
261
281
  - spec/init_spec.rb
262
282
  - spec/ios_helper_spec.rb
263
283
  - spec/spec_helper.rb