fontcustom 1.3.0.beta3 → 1.3.0.beta4

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.
@@ -5,15 +5,17 @@ describe Fontcustom::Generator::Template do
5
5
  it "should generate templates (integration)", :integration => true do
6
6
  live_test do |testdir|
7
7
  FileUtils.cp_r fixture("generators/mixed-output"), "fontcustom"
8
- manifest = test_manifest(
8
+ test_manifest(
9
9
  :input => "vectors",
10
10
  :quiet => true,
11
11
  :templates => %w|preview css scss scss-rails|
12
12
  )
13
+ manifest = File.join testdir, ".fontcustom-manifest.json"
13
14
  Fontcustom::Generator::Font.new(manifest).generate
14
- gen = Fontcustom::Generator::Template.new manifest
15
+ Fontcustom::Generator::Template.new(manifest).generate
15
16
 
16
- gen.generate
17
+ content = File.read manifest
18
+ content.should match(/fontcustom\/fontcustom-preview.html/)
17
19
  end
18
20
  end
19
21
  end
@@ -2,14 +2,15 @@ require "spec_helper"
2
2
 
3
3
  describe Fontcustom::Manifest do
4
4
  context "#initialize" do
5
- it "should create a manifest file and set manifest[:options] (integration)", :integration => true do
5
+ it "should create a manifest file and assign :options", :integration => true do
6
6
  live_test do |testdir|
7
- capture(:stdout) do
8
- options = Fontcustom::Options.new(:input => "vectors").options
9
- Fontcustom::Manifest.new(options)
7
+ capture(:stdout) do
8
+ manifest = File.join testdir, ".fontcustom-manifest.json"
9
+ options = Fontcustom::Options.new(:manifest => manifest, :input => "vectors").options
10
+ Fontcustom::Manifest.new manifest, options
10
11
  end
11
- manifest = File.read File.join(testdir, ".fontcustom-manifest.json")
12
- manifest.should match(/"options":.+sandbox\/test\/fontcustom/m)
12
+ content = File.read File.join(testdir, ".fontcustom-manifest.json")
13
+ content.should match(/"options":.+"input":/m)
13
14
  end
14
15
  end
15
16
  end
@@ -3,6 +3,7 @@ require "spec_helper"
3
3
 
4
4
  describe Fontcustom::Options do
5
5
  def options(args = {})
6
+ args[:manifest] = fixture(".fontcustom-manifest.json") if args[:manifest].nil?
6
7
  Fontcustom::Options.new(args)
7
8
  end
8
9
 
@@ -13,11 +14,11 @@ describe Fontcustom::Options do
13
14
 
14
15
  context ".overwrite_examples" do
15
16
  it "should overwite example defaults with real defaults" do
16
- o = options(Fontcustom::EXAMPLE_OPTIONS.dup)
17
+ o = options Fontcustom::EXAMPLE_OPTIONS.dup
17
18
  o.send :overwrite_examples
18
19
  cli = o.instance_variable_get(:@cli_options)
19
20
  Fontcustom::EXAMPLE_OPTIONS.keys.each do |key|
20
- cli[key].should == Fontcustom::DEFAULT_OPTIONS[key] unless key == :project_root
21
+ cli[key].should == Fontcustom::DEFAULT_OPTIONS[key]
21
22
  end
22
23
  end
23
24
  end
@@ -25,49 +26,52 @@ describe Fontcustom::Options do
25
26
  context ".set_config_path" do
26
27
  context "when :config is set" do
27
28
  it "should use options[:config] if it's a file" do
28
- o = options(
29
- :project_root => fixture,
30
- :config => "options/any-file-name.yml"
31
- )
32
- o.send :set_config_path
33
- o.instance_variable_get(:@cli_options)[:config].should == fixture("options/any-file-name.yml")
29
+ FileUtils.cd fixture do
30
+ o = options :config => "options/any-file-name.yml"
31
+ o.send :set_config_path
32
+ o.instance_variable_get(:@cli_options)[:config].should == "options/any-file-name.yml"
33
+ end
34
34
  end
35
35
 
36
36
  it "should search for fontcustom.yml if options[:config] is a dir" do
37
- o = options(
38
- :project_root => fixture,
39
- :config => "options/config-is-in-dir"
40
- )
41
- o.send :set_config_path
42
- o.instance_variable_get(:@cli_options)[:config].should == fixture("options/config-is-in-dir/fontcustom.yml")
37
+ FileUtils.cd fixture do
38
+ o = options :config => "options/config-is-in-dir"
39
+ o.send :set_config_path
40
+ o.instance_variable_get(:@cli_options)[:config].should == "options/config-is-in-dir/fontcustom.yml"
41
+ end
43
42
  end
44
43
 
45
44
  it "should raise error if :config doesn't exist" do
46
- o = options(
47
- :project_root => fixture,
48
- :config => "does-not-exist"
49
- )
50
- expect { o.send :set_config_path }.to raise_error Fontcustom::Error, /configuration file/
45
+ FileUtils.cd fixture do
46
+ o = options :config => "does-not-exist"
47
+ expect { o.send :set_config_path }.to raise_error Fontcustom::Error, /configuration file/
48
+ end
51
49
  end
52
50
  end
53
51
 
54
52
  context "when :config is not set" do
55
- it "should find fontcustom.yml at :project_root/fontcustom.yml" do
56
- o = options :project_root => fixture("options")
57
- o.send :set_config_path
58
- o.instance_variable_get(:@cli_options)[:config].should == fixture("options/fontcustom.yml")
53
+ it "should find fontcustom.yml in the same dir as the manifest" do
54
+ FileUtils.cd fixture("options") do
55
+ o = options
56
+ o.send :set_config_path
57
+ o.instance_variable_get(:@cli_options)[:config].should == "fontcustom.yml"
58
+ end
59
59
  end
60
60
 
61
- it "should find fontcustom.yml at :project_root/config/fontcustom.yml" do
62
- o = options :project_root => fixture("options/rails-like")
63
- o.send :set_config_path
64
- o.instance_variable_get(:@cli_options)[:config].should == fixture("options/rails-like/config/fontcustom.yml")
61
+ it "should find fontcustom.yml at config/fontcustom.yml" do
62
+ FileUtils.cd fixture("options/rails-like") do
63
+ o = options
64
+ o.send :set_config_path
65
+ o.instance_variable_get(:@cli_options)[:config].should == "config/fontcustom.yml"
66
+ end
65
67
  end
66
68
 
67
69
  it "should be false if nothing is found" do
68
- o = options :project_root => fixture("options/no-config-here")
69
- o.send :set_config_path
70
- o.instance_variable_get(:@cli_options)[:config].should == false
70
+ FileUtils.cd fixture do
71
+ o = options :manifest => "options/no-config-here/.fontcustom-manifest.json"
72
+ o.send :set_config_path
73
+ o.instance_variable_get(:@cli_options)[:config].should == false
74
+ end
71
75
  end
72
76
  end
73
77
  end
@@ -75,29 +79,20 @@ describe Fontcustom::Options do
75
79
  context ".load_config" do
76
80
  it "should warn if fontcustom.yml is blank" do
77
81
  o = options
78
- o.instance_variable_set :@cli_options, {
79
- :project_root => fixture,
80
- :config => fixture("options/fontcustom-empty.yml")
81
- }
82
+ o.instance_variable_set :@cli_options, {:config => fixture("options/fontcustom-empty.yml")}
82
83
  o.should_receive(:say_message).with :warn, /was empty/
83
84
  o.send :load_config
84
85
  end
85
86
 
86
87
  it "should raise error if fontcustom.yml isn't valid" do
87
88
  o = options
88
- o.instance_variable_set :@cli_options, {
89
- :project_root => fixture,
90
- :config => fixture("options/fontcustom-malformed.yml")
91
- }
89
+ o.instance_variable_set :@cli_options, {:config => fixture("options/fontcustom-malformed.yml")}
92
90
  expect { o.send :load_config }.to raise_error Fontcustom::Error, /Error parsing/
93
91
  end
94
92
 
95
93
  it "should assign empty hash :config is false" do
96
94
  o = options
97
- o.instance_variable_set :@cli_options, {
98
- :project_root => fixture,
99
- :config => false
100
- }
95
+ o.instance_variable_set :@cli_options, {:config => false}
101
96
  o.send :load_config
102
97
  o.instance_variable_get(:@config_options).should == {}
103
98
  end
@@ -106,7 +101,6 @@ describe Fontcustom::Options do
106
101
  it "should report which configuration file it's using" do
107
102
  o = options
108
103
  o.instance_variable_set :@cli_options, {
109
- :project_root => fixture,
110
104
  :config => fixture("options/any-file-name.yml"),
111
105
  :debug => true
112
106
  }
@@ -143,125 +137,93 @@ describe Fontcustom::Options do
143
137
  end
144
138
  end
145
139
 
146
- context ".set_manifest_path" do
147
- it "should set :manifest in the config dir by default" do
148
- o = options
149
- o.options = { :config => "path/to/config/fontcustom.yml" }
150
- o.send :set_manifest_path
151
- o.options[:manifest].should == "path/to/config/.fontcustom-manifest.json"
152
- end
153
-
154
- it "should set :manifest in :project_root if :config doesn't exist" do
155
- o = options
156
- o.options = { :project_root => "project/root" }
157
- o.send :set_manifest_path
158
- o.options[:manifest].should == "project/root/.fontcustom-manifest.json"
159
- end
160
- end
161
-
162
140
  context ".set_input_paths" do
163
141
  it "should raise error if input[:vectors] doesn't contain SVGs" do
164
- o = options
165
- o.options = {
166
- :project_root => fixture,
167
- :input => "shared/vectors-empty"
168
- }
169
- expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /doesn't contain any SVGs/
142
+ FileUtils.cd fixture("shared") do
143
+ o = options
144
+ o.options = { :input => "vectors-empty" }
145
+ expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /doesn't contain any SVGs/
146
+ end
170
147
  end
171
148
 
172
149
  context "when :input is a hash" do
173
150
  it "should set :templates as :vectors if :templates isn't set" do
174
- o = options
175
- o.options = {
176
- :project_root => fixture,
177
- :input => { :vectors => "shared/vectors" }
178
- }
179
- o.send :set_input_paths
180
- o.options[:input][:templates].should == fixture("shared/vectors")
151
+ FileUtils.cd fixture("shared") do
152
+ o = options
153
+ o.options = { :input => { :vectors => "vectors" } }
154
+ o.send :set_input_paths
155
+ o.options[:input][:templates].should == "vectors"
156
+ end
181
157
  end
182
158
 
183
159
  it "should preserve :templates if it's set" do
184
- o = options
185
- o.options = {
186
- :project_root => fixture,
187
- :input => { :vectors => "shared/vectors", :templates => "shared/templates" }
188
- }
189
- o.send :set_input_paths
190
- o.options[:input][:templates].should == fixture("shared/templates")
160
+ FileUtils.cd fixture("shared") do
161
+ o = options
162
+ o.options = { :input => { :vectors => "vectors", :templates => "templates" } }
163
+ o.send :set_input_paths
164
+ o.options[:input][:templates].should == "templates"
165
+ end
191
166
  end
192
167
 
193
168
  it "should raise an error if :vectors isn't set" do
194
- o = options
195
- o.options = {
196
- :project_root => fixture,
197
- :config => "fontcustom.yml",
198
- :input => { :templates => "shared/templates" }
199
- }
200
- expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /have a :vectors key/
169
+ FileUtils.cd fixture("shared") do
170
+ o = options
171
+ o.options = { :input => { :templates => "templates" } }
172
+ expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /have a :vectors key/
173
+ end
201
174
  end
202
175
 
203
176
  it "should raise an error if :vectors doesn't point to an existing directory" do
204
- o = options
205
- o.options = {
206
- :project_root => fixture,
207
- :config => "fontcustom.yml",
208
- :input => { :vectors => "shared/not-a-dir" }
209
- }
210
- expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /isn't a directory/
177
+ FileUtils.cd fixture("shared") do
178
+ o = options
179
+ o.options = {
180
+ :config => "fontcustom.yml",
181
+ :input => { :vectors => "not-a-dir" }
182
+ }
183
+ expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /isn't a directory/
184
+ end
211
185
  end
212
186
  end
213
187
 
214
188
  context "when :input is a string" do
215
189
  it "should return a hash of locations" do
216
- o = options
217
- o.options = {
218
- :project_root => fixture,
219
- :input => "shared/vectors"
220
- }
221
- o.send :set_input_paths
222
- o.options[:input].should have_key(:vectors)
223
- o.options[:input].should have_key(:templates)
190
+ FileUtils.cd fixture("shared") do
191
+ o = options
192
+ o.options = { :input => "vectors" }
193
+ o.send :set_input_paths
194
+ o.options[:input].should have_key(:vectors)
195
+ o.options[:input].should have_key(:templates)
196
+ end
224
197
  end
225
198
 
226
199
  it "should set :templates to match :vectors" do
227
- o = options
228
- o.options = {
229
- :project_root => fixture,
230
- :input => "shared/vectors"
231
- }
232
- o.send :set_input_paths
233
- o.options[:input][:templates].should == fixture("shared/vectors")
200
+ FileUtils.cd fixture("shared") do
201
+ o = options
202
+ o.options = { :input => "vectors" }
203
+ o.send :set_input_paths
204
+ o.options[:input][:templates].should == "vectors"
205
+ end
234
206
  end
235
207
 
236
208
  it "should raise an error if :vectors doesn't point to a directory" do
237
- o = options
238
- o.options = {
239
- :project_root => fixture,
240
- :config => "fontcustom.yml",
241
- :input => "shared/not-a-dir"
242
- }
243
- expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /isn't a directory/
209
+ FileUtils.cd fixture("shared") do
210
+ o = options
211
+ o.options = {
212
+ :config => "fontcustom.yml",
213
+ :input => "not-a-dir"
214
+ }
215
+ expect { o.send :set_input_paths }.to raise_error Fontcustom::Error, /isn't a directory/
216
+ end
244
217
  end
245
218
  end
246
219
  end
247
220
 
248
221
  context ".set_output_paths" do
249
222
  context "when :output is nil" do
250
- it "should default to :project_root/:font_name" do
251
- o = options
252
- o.options = {
253
- :project_root => fixture,
254
- :font_name => "Test-Font"
255
- }
256
- o.send :set_output_paths
257
- o.options[:output][:fonts].should == fixture("Test-Font")
258
- end
259
-
260
223
  context "when :debug is true" do
261
224
  it "should print a warning" do
262
225
  o = options
263
226
  o.options = {
264
- :project_root => fixture,
265
227
  :debug => true,
266
228
  :font_name => "Test-Font"
267
229
  }
@@ -274,19 +236,15 @@ describe Fontcustom::Options do
274
236
  context "when :output is a hash" do
275
237
  it "should set :css and :preview to match :fonts if either aren't set" do
276
238
  o = options
277
- o.options = {
278
- :project_root => fixture,
279
- :output => { :fonts => "output/fonts" }
280
- }
239
+ o.options = { :output => { :fonts => "output/fonts" } }
281
240
  o.send :set_output_paths
282
- o.options[:output][:css].should == fixture("output/fonts")
283
- o.options[:output][:preview].should == fixture("output/fonts")
241
+ o.options[:output][:css].should == "output/fonts"
242
+ o.options[:output][:preview].should == "output/fonts"
284
243
  end
285
244
 
286
245
  it "should preserve :css and :preview if they do exist" do
287
246
  o = options
288
247
  o.options = {
289
- :project_root => fixture,
290
248
  :output => {
291
249
  :fonts => "output/fonts",
292
250
  :css => "output/styles",
@@ -294,27 +252,25 @@ describe Fontcustom::Options do
294
252
  }
295
253
  }
296
254
  o.send :set_output_paths
297
- o.options[:output][:css].should == fixture("output/styles")
298
- o.options[:output][:preview].should == fixture("output/preview")
255
+ o.options[:output][:css].should == "output/styles"
256
+ o.options[:output][:preview].should == "output/preview"
299
257
  end
300
258
 
301
259
  it "should create additional paths if they are given" do
302
260
  o = options
303
261
  o.options = {
304
- :project_root => fixture,
305
262
  :output => {
306
263
  :fonts => "output/fonts",
307
264
  "special.js" => "assets/javascripts"
308
265
  }
309
266
  }
310
267
  o.send :set_output_paths
311
- o.options[:output][:"special.js"].should == fixture("assets/javascripts")
268
+ o.options[:output][:"special.js"].should == "assets/javascripts"
312
269
  end
313
270
 
314
271
  it "should raise an error if :fonts isn't set" do
315
272
  o = options
316
273
  o.options = {
317
- :project_root => fixture,
318
274
  :config => "fontcustom.yml",
319
275
  :output => { :css => "output/styles" }
320
276
  }
@@ -325,10 +281,7 @@ describe Fontcustom::Options do
325
281
  context "when :output is a string" do
326
282
  it "should return a hash of output locations" do
327
283
  o = options
328
- o.options = {
329
- :project_root => fixture,
330
- :output => "output/fonts"
331
- }
284
+ o.options = { :output => "output/fonts" }
332
285
  o.send :set_output_paths
333
286
  o.options[:output].should be_a(Hash)
334
287
  o.options[:output].should have_key(:fonts)
@@ -338,67 +291,33 @@ describe Fontcustom::Options do
338
291
 
339
292
  it "should set :css and :preview to match :fonts" do
340
293
  o = options
341
- o.options = {
342
- :project_root => fixture,
343
- :output => "output/fonts"
344
- }
294
+ o.options = { :output => "output/fonts" }
345
295
  o.send :set_output_paths
346
- o.options[:output][:css].should == fixture("output/fonts")
347
- o.options[:output][:preview].should == fixture("output/fonts")
296
+ o.options[:output][:css].should == "output/fonts"
297
+ o.options[:output][:preview].should == "output/fonts"
348
298
  end
349
299
 
350
300
  it "should raise an error if :fonts exists but isn't a directory" do
351
- o = options
352
- o.options = {
353
- :project_root => fixture,
354
- :config => "fontcustom.yml",
355
- :output => "shared/not-a-dir"
356
- }
357
- expect { o.send :set_output_paths }.to raise_error Fontcustom::Error, /isn't a directory/
301
+ FileUtils.cd fixture("shared") do
302
+ o = options
303
+ o.options = {
304
+ :config => "fontcustom.yml",
305
+ :output => "not-a-dir"
306
+ }
307
+ expect { o.send :set_output_paths }.to raise_error Fontcustom::Error, /isn't a directory/
308
+ end
358
309
  end
359
310
  end
360
311
  end
361
312
 
362
- context ".set_template_paths" do
363
- it "should expand shorthand for packaged templates" do
364
- o = options
365
- o.options = {
366
- :project_root => fixture,
367
- :input => { :templates => "shared/templates" },
368
- :templates => %w|preview css scss scss-rails bootstrap bootstrap-scss bootstrap-ie7 bootstrap-ie7-scss|
369
- }
370
- o.send :set_template_paths
371
- o.options[:templates].should =~ [
372
- File.join(Fontcustom.gem_lib, "templates", "fontcustom-preview.html"),
373
- File.join(Fontcustom.gem_lib, "templates", "fontcustom.css"),
374
- File.join(Fontcustom.gem_lib, "templates", "_fontcustom.scss"),
375
- File.join(Fontcustom.gem_lib, "templates", "_fontcustom-rails.scss"),
376
- File.join(Fontcustom.gem_lib, "templates", "fontcustom-bootstrap.css"),
377
- File.join(Fontcustom.gem_lib, "templates", "_fontcustom-bootstrap.scss"),
378
- File.join(Fontcustom.gem_lib, "templates", "fontcustom-bootstrap-ie7.css"),
379
- File.join(Fontcustom.gem_lib, "templates", "_fontcustom-bootstrap-ie7.scss")
380
- ]
381
- end
382
-
383
- it "should find custom templates in :template_path" do
384
- o = options
385
- o.options = {
386
- :project_root => fixture,
387
- :input => { :templates => fixture("shared/templates") },
388
- :templates => %w|custom.css|
389
- }
390
- o.send :set_template_paths
391
- o.options[:templates].should =~ [fixture("shared/templates/custom.css")]
392
- end
393
-
313
+ context ".check_template_paths" do
394
314
  it "should raise an error if a template does not exist" do
395
315
  o = options
396
316
  o.options = {
397
- :project_root => fixture,
398
317
  :input => { :templates => fixture("shared/templates") },
399
318
  :templates => %w|fake-template.txt|
400
319
  }
401
- expect { o.send :set_template_paths }.to raise_error Fontcustom::Error, /doesn't exist/
320
+ expect { o.send :check_template_paths }.to raise_error Fontcustom::Error, /doesn't exist/
402
321
  end
403
322
  end
404
323
  end