cdnget 0.2.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/test/cdnget_test.rb CHANGED
@@ -54,6 +54,7 @@ describe CDNGet do
54
54
  expected = <<END
55
55
  cdnjs # https://cdnjs.com/
56
56
  jsdelivr # https://www.jsdelivr.com/
57
+ unpkg # https://unpkg.com/
57
58
  google # https://developers.google.com/speed/libraries/
58
59
  #jquery # https://code.jquery.com/
59
60
  #aspnet # https://www.asp.net/ajax/cdn/
@@ -69,24 +70,31 @@ END
69
70
 
70
71
  it "(cdnjs) lists librareis." do
71
72
  actual = CDNGet::Main.new().run("cdnjs")
72
- ok {actual} =~ /^jquery # jquery, library, ajax, framework, toolkit, popular$/
73
- ok {actual} =~ /^angular\.js # framework, mvc, AngularJS, angular, angular2, angular\.js$/
74
- ok {actual} =~ /^twitter-bootstrap # css, less, mobile-first, responsive, front-end, framework, web, twitter, bootstrap$/
75
- ok {actual} =~ /^ember\.js # ember, ember.js$/
73
+ ok {actual} =~ /^jquery # JavaScript library for DOM operations$/
74
+ ok {actual} =~ /^angular\.js # AngularJS is an MVC framework for building web applications\./
75
+ ok {actual} =~ /^ember\.js # Ember is a JavaScript framework for creating ambitious web applications that eliminates boilerplate and provides a standard application architecture\./
76
76
  end
77
77
 
78
78
  it "(google) lists librareis." do
79
79
  actual = CDNGet::Main.new().run("google")
80
80
  ok {actual} =~ /^jquery /
81
- ok {actual} =~ /^angularjs /
81
+ #ok {actual} =~ /^angularjs /
82
+ ok {actual} =~ /^swfobject /
82
83
  ok {actual} =~ /^webfont /
83
84
  end
84
85
 
85
86
  it "(jsdelivr) lists librareis." do
86
- actual = CDNGet::Main.new().run("jsdelivr")
87
- ok {actual} =~ /^jquery /
88
- ok {actual} =~ /^angularjs /
89
- ok {actual} =~ /^bootstrap /
87
+ exc = assert_raises(CDNGet::CommandError) do
88
+ actual = CDNGet::Main.new().run("jsdelivr")
89
+ end
90
+ ok {exc.message} == "jsdelivr: cannot list libraries; please specify pattern such as 'jquery*'."
91
+ end
92
+
93
+ it "(unpkg) lists librareis." do
94
+ exc = assert_raises(CDNGet::CommandError) do
95
+ actual = CDNGet::Main.new().run("unpkg")
96
+ end
97
+ ok {exc.message} == "unpkg: cannot list libraries; please specify pattern such as 'jquery*'."
90
98
  end
91
99
 
92
100
  end
@@ -114,11 +122,19 @@ END
114
122
  it "(jsdelivr) lists libraries starting to pattern." do
115
123
  actual = CDNGet::Main.new().run("jsdelivr", "jquery*")
116
124
  ok {actual} =~ /^jquery #/
117
- ok {actual} =~ /^jquery\.ui #/ # match
125
+ ok {actual} =~ /^jquery-datepicker #/ # match
118
126
  ok {actual} !~ /^angularjs/
119
127
  ok {actual} !~ /^bootstrap/
120
128
  end
121
129
 
130
+ it "(unpkg) lists libraries starting to pattern." do
131
+ actual = CDNGet::Main.new().run("unpkg", "jquery*")
132
+ ok {actual} =~ /^jquery #/
133
+ ok {actual} =~ /^jquery-ui #/ # match
134
+ ok {actual} !~ /^jquery\.ui /
135
+ ok {actual} !~ /^bootstrap/
136
+ end
137
+
122
138
  end
123
139
 
124
140
 
@@ -144,7 +160,15 @@ END
144
160
  it "(jsdelivr) lists libraries ending to pattern." do
145
161
  actual = CDNGet::Main.new().run("jsdelivr", "*jquery")
146
162
  ok {actual} =~ /^jquery #/
147
- ok {actual} !~ /^jquery\.ui #/ # not match
163
+ ok {actual} !~ /^jquery-datepicker / # not match
164
+ ok {actual} !~ /^angularjs/
165
+ ok {actual} !~ /^bootstrap/
166
+ end
167
+
168
+ it "(unpkg) lists libraries ending to pattern." do
169
+ actual = CDNGet::Main.new().run("unpkg", "*jquery")
170
+ ok {actual} =~ /^jquery #/
171
+ ok {actual} !~ /^jquery-ui #/ # not match
148
172
  ok {actual} !~ /^angularjs/
149
173
  ok {actual} !~ /^bootstrap/
150
174
  end
@@ -172,11 +196,21 @@ END
172
196
  ok {actual} =~ /^swfobject /
173
197
  end
174
198
 
175
- it "(google) lists libraries including pattern." do
199
+ it "(jsdelivr) lists libraries including pattern." do
176
200
  actual = CDNGet::Main.new().run("jsdelivr", "*jquery*")
177
201
  ok {actual} =~ /^jquery /
178
- ok {actual} =~ /^jasmine\.jquery /
179
- ok {actual} =~ /^jquery\.zoom /
202
+ ok {actual} =~ /^jasmine-jquery /
203
+ ok {actual} =~ /^jquery-form /
204
+ ok {actual} !~ /^angularjs/
205
+ ok {actual} !~ /^react/
206
+ end
207
+
208
+ it "(unpkg) lists libraries including pattern." do
209
+ actual = CDNGet::Main.new().run("unpkg", "*jquery*")
210
+ ok {actual} =~ /^jquery /
211
+ ok {actual} =~ /^jquery-csv /
212
+ ok {actual} =~ /^jquery\.terminal /
213
+ ok {actual} =~ /^nd-jquery /
180
214
  ok {actual} !~ /^angularjs/
181
215
  ok {actual} !~ /^bootstrap/
182
216
  end
@@ -189,9 +223,12 @@ END
189
223
  it "(cdnjs) lists versions of library." do
190
224
  actual = CDNGet::Main.new().run("cdnjs", "jquery")
191
225
  text1 = <<END
192
- name: jquery
193
- desc: JavaScript library for DOM operations
194
- tags: jquery, library, ajax, framework, toolkit, popular
226
+ name: jquery
227
+ desc: JavaScript library for DOM operations
228
+ tags: jquery, library, ajax, framework, toolkit, popular
229
+ site: http://jquery.com/
230
+ info: https://cdnjs.com/libraries/jquery
231
+ license: MIT
195
232
  versions:
196
233
  END
197
234
  ok {actual}.start_with?(text1)
@@ -210,8 +247,9 @@ END
210
247
  it "(google) lists versions of library." do
211
248
  actual = CDNGet::Main.new().run("google", "jquery")
212
249
  text1 = <<END
213
- name: jquery
214
- site: http://jquery.com/
250
+ name: jquery
251
+ site: http://jquery.com/
252
+ info: https://developers.google.com/speed/libraries/#jquery
215
253
  versions:
216
254
  END
217
255
  ok {actual}.start_with?(text1)
@@ -230,18 +268,46 @@ END
230
268
  it "(jsdelivr) lists versions of library." do
231
269
  actual = CDNGet::Main.new().run("jsdelivr", "jquery")
232
270
  text1 = <<END
233
- name: jquery
234
- desc: jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.
235
- site: http://jquery.com/
271
+ name: jquery
272
+ desc: JavaScript library for DOM operations
273
+ tags: jquery, javascript, browser, library
274
+ site: https://jquery.com
275
+ info: https://www.jsdelivr.com/package/npm/jquery
276
+ license: MIT
277
+ versions:
278
+ END
279
+ ok {actual}.start_with?(text1)
280
+ text2 = <<END
281
+ - 1.8.2
282
+ - 1.7.3
283
+ - 1.7.2
284
+ - 1.6.3
285
+ - 1.6.2
286
+ - 1.5.1
287
+ END
288
+ ok {actual}.end_with?(text2)
289
+ ok {actual} =~ /^ - 2\.2\.0$/
290
+ ok {actual} =~ /^ - 1\.12\.0$/
291
+ end
292
+
293
+ it "(unpkg) lists versions of library." do
294
+ actual = CDNGet::Main.new().run("unpkg", "jquery")
295
+ text1 = <<END
296
+ name: jquery
297
+ desc: JavaScript library for DOM operations
298
+ tags: jquery, javascript, browser, library
299
+ site: https://jquery.com
300
+ info: https://unpkg.com/browse/jquery/
301
+ license: MIT
236
302
  versions:
237
303
  END
238
304
  ok {actual}.start_with?(text1)
239
305
  text2 = <<END
306
+ - 1.7.3
240
307
  - 1.7.2
241
- - 1.7.1
242
- - 1.7
308
+ - 1.6.3
309
+ - 1.6.2
243
310
  - 1.5.1
244
- - 1.4.4
245
311
  END
246
312
  ok {actual}.end_with?(text2)
247
313
  ok {actual} =~ /^ - 2\.2\.0$/
@@ -262,8 +328,13 @@ END
262
328
  end
263
329
 
264
330
  it "(jsdelivr) raises error when library name is wrong." do
265
- pr = proc { CDNGet::Main.new().run("google", "jquery-ui") }
266
- ok {pr}.raise?(CDNGet::CommandError, "jquery-ui: Library not found.")
331
+ pr = proc { CDNGet::Main.new().run("jsdelivr", "jquery-foobar") }
332
+ ok {pr}.raise?(CDNGet::CommandError, "jquery-foobar: Library not found.")
333
+ end
334
+
335
+ it "(unpkg) raises error when library name is wrong." do
336
+ pr = proc { CDNGet::Main.new().run("unpkg", "jquery-foobar") }
337
+ ok {pr}.raise?(CDNGet::CommandError, "jquery-foobar: Library not found.")
267
338
  end
268
339
 
269
340
  end
@@ -275,6 +346,11 @@ END
275
346
  expected = <<END
276
347
  name: jquery
277
348
  version: 2.2.0
349
+ desc: JavaScript library for DOM operations
350
+ tags: jquery, library, ajax, framework, toolkit, popular
351
+ site: http://jquery.com/
352
+ info: https://cdnjs.com/libraries/jquery/2.2.0
353
+ license: MIT
278
354
  urls:
279
355
  - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js
280
356
  - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js
@@ -289,6 +365,7 @@ END
289
365
  name: jquery
290
366
  version: 2.2.0
291
367
  site: http://jquery.com/
368
+ info: https://developers.google.com/speed/libraries/#jquery
292
369
  urls:
293
370
  - https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js
294
371
  END
@@ -300,12 +377,162 @@ END
300
377
  expected = <<END
301
378
  name: jquery
302
379
  version: 2.2.0
380
+ desc: JavaScript library for DOM operations
381
+ tags: jquery, javascript, browser, library
382
+ site: https://jquery.com
383
+ info: https://www.jsdelivr.com/package/npm/jquery?version=2.2.0
384
+ npmpkg: https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz
385
+ default: /dist/jquery.min.js
386
+ license: MIT
303
387
  urls:
304
- - https://cdn.jsdelivr.net/jquery/2.2.0/jquery.js
305
- - https://cdn.jsdelivr.net/jquery/2.2.0/jquery.min.js
306
- - https://cdn.jsdelivr.net/jquery/2.2.0/jquery.min.map
388
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/AUTHORS.txt
389
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/bower.json
390
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/dist/jquery.js
391
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/dist/jquery.min.js
392
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/dist/jquery.min.map
393
+ - https://cdn.jsdelivr.net/npm/jquery@2.2.0/LICENSE.txt
307
394
  END
308
395
  actual = CDNGet::Main.new().run("jsdelivr", "jquery", "2.2.0")
396
+ ok {actual}.start_with?(expected)
397
+ end
398
+
399
+ it "(unpkg) lists files." do
400
+ expected = <<END
401
+ name: jquery
402
+ version: 3.6.0
403
+ desc: JavaScript library for DOM operations
404
+ tags: jquery, javascript, browser, library
405
+ site: https://jquery.com
406
+ info: https://unpkg.com/browse/jquery@3.6.0/
407
+ npmpkg: https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz
408
+ default: /dist/jquery.min.js
409
+ license: MIT
410
+ urls:
411
+ - https://unpkg.com/jquery@3.6.0/AUTHORS.txt
412
+ - https://unpkg.com/jquery@3.6.0/bower.json
413
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.js
414
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.min.js
415
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.min.map
416
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.slim.js
417
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.slim.min.js
418
+ - https://unpkg.com/jquery@3.6.0/dist/jquery.slim.min.map
419
+ - https://unpkg.com/jquery@3.6.0/external/sizzle/dist/sizzle.js
420
+ - https://unpkg.com/jquery@3.6.0/external/sizzle/dist/sizzle.min.js
421
+ - https://unpkg.com/jquery@3.6.0/external/sizzle/dist/sizzle.min.map
422
+ - https://unpkg.com/jquery@3.6.0/external/sizzle/LICENSE.txt
423
+ - https://unpkg.com/jquery@3.6.0/LICENSE.txt
424
+ - https://unpkg.com/jquery@3.6.0/package.json
425
+ - https://unpkg.com/jquery@3.6.0/README.md
426
+ - https://unpkg.com/jquery@3.6.0/src/ajax.js
427
+ - https://unpkg.com/jquery@3.6.0/src/ajax/jsonp.js
428
+ - https://unpkg.com/jquery@3.6.0/src/ajax/load.js
429
+ - https://unpkg.com/jquery@3.6.0/src/ajax/script.js
430
+ - https://unpkg.com/jquery@3.6.0/src/ajax/var/location.js
431
+ - https://unpkg.com/jquery@3.6.0/src/ajax/var/nonce.js
432
+ - https://unpkg.com/jquery@3.6.0/src/ajax/var/rquery.js
433
+ - https://unpkg.com/jquery@3.6.0/src/ajax/xhr.js
434
+ - https://unpkg.com/jquery@3.6.0/src/attributes.js
435
+ - https://unpkg.com/jquery@3.6.0/src/attributes/attr.js
436
+ - https://unpkg.com/jquery@3.6.0/src/attributes/classes.js
437
+ - https://unpkg.com/jquery@3.6.0/src/attributes/prop.js
438
+ - https://unpkg.com/jquery@3.6.0/src/attributes/support.js
439
+ - https://unpkg.com/jquery@3.6.0/src/attributes/val.js
440
+ - https://unpkg.com/jquery@3.6.0/src/callbacks.js
441
+ - https://unpkg.com/jquery@3.6.0/src/core.js
442
+ - https://unpkg.com/jquery@3.6.0/src/core/access.js
443
+ - https://unpkg.com/jquery@3.6.0/src/core/camelCase.js
444
+ - https://unpkg.com/jquery@3.6.0/src/core/DOMEval.js
445
+ - https://unpkg.com/jquery@3.6.0/src/core/init.js
446
+ - https://unpkg.com/jquery@3.6.0/src/core/isAttached.js
447
+ - https://unpkg.com/jquery@3.6.0/src/core/nodeName.js
448
+ - https://unpkg.com/jquery@3.6.0/src/core/parseHTML.js
449
+ - https://unpkg.com/jquery@3.6.0/src/core/parseXML.js
450
+ - https://unpkg.com/jquery@3.6.0/src/core/ready.js
451
+ - https://unpkg.com/jquery@3.6.0/src/core/ready-no-deferred.js
452
+ - https://unpkg.com/jquery@3.6.0/src/core/readyException.js
453
+ - https://unpkg.com/jquery@3.6.0/src/core/stripAndCollapse.js
454
+ - https://unpkg.com/jquery@3.6.0/src/core/support.js
455
+ - https://unpkg.com/jquery@3.6.0/src/core/toType.js
456
+ - https://unpkg.com/jquery@3.6.0/src/core/var/rsingleTag.js
457
+ - https://unpkg.com/jquery@3.6.0/src/css.js
458
+ - https://unpkg.com/jquery@3.6.0/src/css/addGetHookIf.js
459
+ - https://unpkg.com/jquery@3.6.0/src/css/adjustCSS.js
460
+ - https://unpkg.com/jquery@3.6.0/src/css/curCSS.js
461
+ - https://unpkg.com/jquery@3.6.0/src/css/finalPropName.js
462
+ - https://unpkg.com/jquery@3.6.0/src/css/hiddenVisibleSelectors.js
463
+ - https://unpkg.com/jquery@3.6.0/src/css/showHide.js
464
+ - https://unpkg.com/jquery@3.6.0/src/css/support.js
465
+ - https://unpkg.com/jquery@3.6.0/src/css/var/cssExpand.js
466
+ - https://unpkg.com/jquery@3.6.0/src/css/var/getStyles.js
467
+ - https://unpkg.com/jquery@3.6.0/src/css/var/isHiddenWithinTree.js
468
+ - https://unpkg.com/jquery@3.6.0/src/css/var/rboxStyle.js
469
+ - https://unpkg.com/jquery@3.6.0/src/css/var/rnumnonpx.js
470
+ - https://unpkg.com/jquery@3.6.0/src/css/var/swap.js
471
+ - https://unpkg.com/jquery@3.6.0/src/data.js
472
+ - https://unpkg.com/jquery@3.6.0/src/data/Data.js
473
+ - https://unpkg.com/jquery@3.6.0/src/data/var/acceptData.js
474
+ - https://unpkg.com/jquery@3.6.0/src/data/var/dataPriv.js
475
+ - https://unpkg.com/jquery@3.6.0/src/data/var/dataUser.js
476
+ - https://unpkg.com/jquery@3.6.0/src/deferred.js
477
+ - https://unpkg.com/jquery@3.6.0/src/deferred/exceptionHook.js
478
+ - https://unpkg.com/jquery@3.6.0/src/deprecated.js
479
+ - https://unpkg.com/jquery@3.6.0/src/deprecated/ajax-event-alias.js
480
+ - https://unpkg.com/jquery@3.6.0/src/deprecated/event.js
481
+ - https://unpkg.com/jquery@3.6.0/src/dimensions.js
482
+ - https://unpkg.com/jquery@3.6.0/src/effects.js
483
+ - https://unpkg.com/jquery@3.6.0/src/effects/animatedSelector.js
484
+ - https://unpkg.com/jquery@3.6.0/src/effects/Tween.js
485
+ - https://unpkg.com/jquery@3.6.0/src/event.js
486
+ - https://unpkg.com/jquery@3.6.0/src/event/focusin.js
487
+ - https://unpkg.com/jquery@3.6.0/src/event/support.js
488
+ - https://unpkg.com/jquery@3.6.0/src/event/trigger.js
489
+ - https://unpkg.com/jquery@3.6.0/src/exports/amd.js
490
+ - https://unpkg.com/jquery@3.6.0/src/exports/global.js
491
+ - https://unpkg.com/jquery@3.6.0/src/jquery.js
492
+ - https://unpkg.com/jquery@3.6.0/src/manipulation.js
493
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/_evalUrl.js
494
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/buildFragment.js
495
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/getAll.js
496
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/setGlobalEval.js
497
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/support.js
498
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/var/rscriptType.js
499
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/var/rtagName.js
500
+ - https://unpkg.com/jquery@3.6.0/src/manipulation/wrapMap.js
501
+ - https://unpkg.com/jquery@3.6.0/src/offset.js
502
+ - https://unpkg.com/jquery@3.6.0/src/queue.js
503
+ - https://unpkg.com/jquery@3.6.0/src/queue/delay.js
504
+ - https://unpkg.com/jquery@3.6.0/src/selector.js
505
+ - https://unpkg.com/jquery@3.6.0/src/selector-native.js
506
+ - https://unpkg.com/jquery@3.6.0/src/selector-sizzle.js
507
+ - https://unpkg.com/jquery@3.6.0/src/serialize.js
508
+ - https://unpkg.com/jquery@3.6.0/src/traversing.js
509
+ - https://unpkg.com/jquery@3.6.0/src/traversing/findFilter.js
510
+ - https://unpkg.com/jquery@3.6.0/src/traversing/var/dir.js
511
+ - https://unpkg.com/jquery@3.6.0/src/traversing/var/rneedsContext.js
512
+ - https://unpkg.com/jquery@3.6.0/src/traversing/var/siblings.js
513
+ - https://unpkg.com/jquery@3.6.0/src/var/arr.js
514
+ - https://unpkg.com/jquery@3.6.0/src/var/class2type.js
515
+ - https://unpkg.com/jquery@3.6.0/src/var/document.js
516
+ - https://unpkg.com/jquery@3.6.0/src/var/documentElement.js
517
+ - https://unpkg.com/jquery@3.6.0/src/var/flat.js
518
+ - https://unpkg.com/jquery@3.6.0/src/var/fnToString.js
519
+ - https://unpkg.com/jquery@3.6.0/src/var/getProto.js
520
+ - https://unpkg.com/jquery@3.6.0/src/var/hasOwn.js
521
+ - https://unpkg.com/jquery@3.6.0/src/var/indexOf.js
522
+ - https://unpkg.com/jquery@3.6.0/src/var/isFunction.js
523
+ - https://unpkg.com/jquery@3.6.0/src/var/isWindow.js
524
+ - https://unpkg.com/jquery@3.6.0/src/var/ObjectFunctionString.js
525
+ - https://unpkg.com/jquery@3.6.0/src/var/pnum.js
526
+ - https://unpkg.com/jquery@3.6.0/src/var/push.js
527
+ - https://unpkg.com/jquery@3.6.0/src/var/rcheckableType.js
528
+ - https://unpkg.com/jquery@3.6.0/src/var/rcssNum.js
529
+ - https://unpkg.com/jquery@3.6.0/src/var/rnothtmlwhite.js
530
+ - https://unpkg.com/jquery@3.6.0/src/var/slice.js
531
+ - https://unpkg.com/jquery@3.6.0/src/var/support.js
532
+ - https://unpkg.com/jquery@3.6.0/src/var/toString.js
533
+ - https://unpkg.com/jquery@3.6.0/src/wrap.js
534
+ END
535
+ actual = CDNGet::Main.new().run("unpkg", "jquery", "3.6.0")
309
536
  ok {actual} == expected
310
537
  end
311
538
 
@@ -313,6 +540,11 @@ END
313
540
  expected = <<END
314
541
  name: jquery-jcrop
315
542
  version: 0.9.12
543
+ desc: Jcrop is the quick and easy way to add image cropping functionality to your web application.
544
+ tags: jquery, crop
545
+ site: http://deepliquid.com/content/Jcrop.html
546
+ info: https://cdnjs.com/libraries/jquery-jcrop/0.9.12
547
+ license: MIT
316
548
  urls:
317
549
  - https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.12/css/Jcrop.gif
318
550
  - https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.12/css/jquery.Jcrop.css
@@ -346,7 +578,12 @@ END
346
578
 
347
579
  it "(jsdelivr) raises error when library name is wrong." do
348
580
  pr = proc { CDNGet::Main.new().run("jsdelivr", "jquery-ui", "1.9.2") }
349
- ok {pr}.raise?(CDNGet::CommandError, "jquery-ui: Library not found.")
581
+ ok {pr}.raise?(CDNGet::CommandError, "jquery-ui@1.9.2: Library or version not found.")
582
+ end
583
+
584
+ it "(unpkg) raises error when library name is wrong." do
585
+ pr = proc { CDNGet::Main.new().run("unpkg", "jquery-foobar", "1.9.2") }
586
+ ok {pr}.raise?(CDNGet::CommandError, "jquery-foobar: Library not found.")
350
587
  end
351
588
 
352
589
  end
@@ -354,13 +591,56 @@ END
354
591
 
355
592
  describe "cdnget CDN jquery 2.2.0 dir" do
356
593
 
357
- def _do_download_test1(cdn_code)
358
- tmpdir = "tmpdir1"
594
+ def _do_download_test1(cdn_code, library="jquery", version="2.2.0")
595
+ @tmpdir = tmpdir = "tmpdir1"
359
596
  Dir.mkdir(tmpdir)
360
- begin
361
- sout, serr = capture_io() do
362
- actual = CDNGet::Main.new().run("cdnjs", "jquery", "2.2.0", tmpdir)
597
+ sout, serr = capture_io() do
598
+ actual = CDNGet::Main.new().run(cdn_code, library, version, tmpdir)
599
+ end
600
+ yield tmpdir, sout, serr
601
+ ensure
602
+ FileUtils.rm_r(tmpdir) if File.directory?(tmpdir)
603
+ end
604
+
605
+ def _do_download_test2(cdn_code, library="jquery-jcrop", version="0.9.12")
606
+ @tmpdir = tmpdir = "tmpdir1"
607
+ Dir.mkdir(tmpdir)
608
+ sout, serr = capture_io() do
609
+ actual = CDNGet::Main.new().run(cdn_code, library, version, tmpdir)
610
+ end
611
+ yield tmpdir, sout, serr
612
+ ensure
613
+ FileUtils.rm_r(tmpdir) if File.directory?(tmpdir)
614
+ end
615
+
616
+ def _do_download_test3(cdn_code, libname, version, expected)
617
+ @tmpdir = tmpdir = "tmpdir1"
618
+ Dir.mkdir(tmpdir)
619
+ path = "#{tmpdir}/#{libname}/#{version}"
620
+ # 1st
621
+ sout, serr = capture_io() do
622
+ actual = CDNGet::Main.new().run(cdn_code, libname, version, tmpdir)
623
+ end
624
+ ok {serr} == ""
625
+ ok {sout} == expected
626
+ # 2nd
627
+ sout, serr = capture_io() do
628
+ actual = CDNGet::Main.new().run(cdn_code, libname, version, tmpdir)
629
+ end
630
+ ok {serr} == ""
631
+ ok {sout} == expected.gsub(/(\(Created\))?\n/) {
632
+ if $1
633
+ "(Already exists)\n"
634
+ else
635
+ " (Unchanged)\n"
363
636
  end
637
+ }
638
+ ensure
639
+ FileUtils.rm_r(tmpdir)
640
+ end
641
+
642
+ it "(cdnjs) downloads files into dir." do
643
+ _do_download_test1("cdnjs", "jquery", "2.2.0") do |tmpdir, sout, serr|
364
644
  ok {"#{tmpdir}/jquery/2.2.0/jquery.js" }.file_exist?
365
645
  ok {"#{tmpdir}/jquery/2.2.0/jquery.min.js" }.file_exist?
366
646
  ok {"#{tmpdir}/jquery/2.2.0/jquery.min.map"}.file_exist?
@@ -369,28 +649,66 @@ END
369
649
  #{tmpdir}/jquery/2.2.0/jquery.min.js ... Done (85,589 byte)
370
650
  #{tmpdir}/jquery/2.2.0/jquery.min.map ... Done (129,544 byte)
371
651
  END
372
- ensure
373
- FileUtils.rm_r(tmpdir)
374
652
  end
375
653
  end
376
654
 
377
- def _do_download_test2(cdn_code)
378
- tmpdir = "tmpdir1"
379
- Dir.mkdir(tmpdir)
380
- expected = <<END
381
- #{tmpdir}/jquery-jcrop/0.9.12/css/Jcrop.gif ... Done (329 byte)
382
- #{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.css ... Done (3,280 byte)
383
- #{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.min.css ... Done (2,102 byte)
384
- #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.Jcrop.js ... Done (42,434 byte)
385
- #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.Jcrop.min.js ... Done (15,892 byte)
386
- #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.color.js ... Done (16,142 byte)
387
- #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.color.min.js ... Done (6,845 byte)
388
- #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.min.js ... Done (93,068 byte)
655
+ it "(google) downloads files into dir." do
656
+ _do_download_test1("google", "jquery", "2.2.0") do |tmpdir, sout, serr|
657
+ ok {"#{tmpdir}/jquery/2.2.0/jquery.min.js" }.file_exist?
658
+ ok {sout} == <<END
659
+ #{tmpdir}/jquery/2.2.0/jquery.min.js ... Done (85,589 byte)
389
660
  END
390
- begin
391
- sout, serr = capture_io() do
392
- actual = CDNGet::Main.new().run("cdnjs", "jquery-jcrop", "0.9.12", tmpdir)
393
- end
661
+ end
662
+ end
663
+
664
+ it "(jsdelivr) downloads files into dir." do
665
+ _do_download_test1("jsdelivr", "chibijs", "3.0.9") do |tmpdir, sout, serr|
666
+ ok {"#{tmpdir}/chibijs@3.0.9/.jshintrc" }.file_exist?
667
+ ok {"#{tmpdir}/chibijs@3.0.9/.npmignore" }.file_exist?
668
+ ok {"#{tmpdir}/chibijs@3.0.9/chibi.js" }.file_exist?
669
+ ok {"#{tmpdir}/chibijs@3.0.9/chibi-min.js" }.file_exist?
670
+ ok {"#{tmpdir}/chibijs@3.0.9/gulpfile.js" }.file_exist?
671
+ ok {"#{tmpdir}/chibijs@3.0.9/package.json" }.file_exist?
672
+ ok {"#{tmpdir}/chibijs@3.0.9/README.md" }.file_exist?
673
+ ok {"#{tmpdir}/chibijs@3.0.9/tests/runner.html"}.file_exist?
674
+ ok {sout} == <<END
675
+ #{tmpdir}/chibijs@3.0.9/.jshintrc ... Done (5,323 byte)
676
+ #{tmpdir}/chibijs@3.0.9/.npmignore ... Done (46 byte)
677
+ #{tmpdir}/chibijs@3.0.9/chibi.js ... Done (18,429 byte)
678
+ #{tmpdir}/chibijs@3.0.9/chibi-min.js ... Done (7,321 byte)
679
+ #{tmpdir}/chibijs@3.0.9/gulpfile.js ... Done (1,395 byte)
680
+ #{tmpdir}/chibijs@3.0.9/package.json ... Done (756 byte)
681
+ #{tmpdir}/chibijs@3.0.9/README.md ... Done (21,283 byte)
682
+ #{tmpdir}/chibijs@3.0.9/tests/runner.html ... Done (14,302 byte)
683
+ END
684
+ end
685
+ end
686
+
687
+ it "(unpkg) downloads files into dir." do
688
+ _do_download_test1("unpkg", "chibijs", "3.0.9") do |tmpdir, sout, serr|
689
+ ok {"#{tmpdir}/chibijs@3.0.9/.jshintrc" }.file_exist?
690
+ ok {"#{tmpdir}/chibijs@3.0.9/.npmignore" }.file_exist?
691
+ ok {"#{tmpdir}/chibijs@3.0.9/chibi.js" }.file_exist?
692
+ ok {"#{tmpdir}/chibijs@3.0.9/chibi-min.js" }.file_exist?
693
+ ok {"#{tmpdir}/chibijs@3.0.9/gulpfile.js" }.file_exist?
694
+ ok {"#{tmpdir}/chibijs@3.0.9/package.json" }.file_exist?
695
+ ok {"#{tmpdir}/chibijs@3.0.9/README.md" }.file_exist?
696
+ ok {"#{tmpdir}/chibijs@3.0.9/tests/runner.html"}.file_exist?
697
+ ok {sout} == <<END
698
+ #{tmpdir}/chibijs@3.0.9/.jshintrc ... Done (5,323 byte)
699
+ #{tmpdir}/chibijs@3.0.9/.npmignore ... Done (46 byte)
700
+ #{tmpdir}/chibijs@3.0.9/chibi.js ... Done (18,429 byte)
701
+ #{tmpdir}/chibijs@3.0.9/chibi-min.js ... Done (7,321 byte)
702
+ #{tmpdir}/chibijs@3.0.9/gulpfile.js ... Done (1,395 byte)
703
+ #{tmpdir}/chibijs@3.0.9/package.json ... Done (756 byte)
704
+ #{tmpdir}/chibijs@3.0.9/README.md ... Done (21,283 byte)
705
+ #{tmpdir}/chibijs@3.0.9/tests/runner.html ... Done (14,302 byte)
706
+ END
707
+ end
708
+ end
709
+
710
+ it "(cdnjs) downloads files (containing subdir) into dir." do
711
+ _do_download_test2("cdnjs", "jquery-jcrop", "0.9.12") do |tmpdir, sout, serr|
394
712
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/css/Jcrop.gif" }.file_exist?
395
713
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.css" }.file_exist?
396
714
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.min.css" }.file_exist?
@@ -399,32 +717,7 @@ END
399
717
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/js/jquery.color.js" }.file_exist?
400
718
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/js/jquery.color.min.js" }.file_exist?
401
719
  ok {"#{tmpdir}/jquery-jcrop/0.9.12/js/jquery.min.js" }.file_exist?
402
- ok {sout} == expected
403
- ensure
404
- FileUtils.rm_r(tmpdir)
405
- end
406
- end
407
-
408
- def _do_download_test3(cdn_code, libname)
409
- tmpdir = "tmpdir1"
410
- Dir.mkdir(tmpdir)
411
- case libname
412
- when "jquery"
413
- version = "2.2.4"
414
- if cdn_code == "google"
415
- expected = <<END
416
- #{tmpdir}/jquery/2.2.4/jquery.min.js ... Done (85,578 byte)
417
- END
418
- else
419
- expected = <<END
420
- #{tmpdir}/jquery/2.2.4/jquery.js ... Done (257,551 byte)
421
- #{tmpdir}/jquery/2.2.4/jquery.min.js ... Done (85,578 byte)
422
- #{tmpdir}/jquery/2.2.4/jquery.min.map ... Done (129,572 byte)
423
- END
424
- end
425
- when "jquery-jcrop"
426
- version = "0.9.12"
427
- expected = <<END
720
+ ok {sout} == <<END
428
721
  #{tmpdir}/jquery-jcrop/0.9.12/css/Jcrop.gif ... Done (329 byte)
429
722
  #{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.css ... Done (3,280 byte)
430
723
  #{tmpdir}/jquery-jcrop/0.9.12/css/jquery.Jcrop.min.css ... Done (2,102 byte)
@@ -435,59 +728,318 @@ END
435
728
  #{tmpdir}/jquery-jcrop/0.9.12/js/jquery.min.js ... Done (93,068 byte)
436
729
  END
437
730
  end
438
- begin
439
- path = "#{tmpdir}/#{libname}/#{version}"
440
- # 1st
441
- sout, serr = capture_io() do
442
- actual = CDNGet::Main.new().run(cdn_code, libname, version, tmpdir)
443
- end
444
- ok {serr} == ""
731
+ end
732
+
733
+ it "(google) downloads files (containing subdir) into dir." do
734
+ skip("no libraries containing subdirectory")
735
+ end
736
+
737
+ it "(jsdelivr) downloads files (containing subdir) into dir." do
738
+ _do_download_test2("jsdelivr", "zepto", "1.2.0") do |tmpdir, sout, serr|
739
+ ok {"#{tmpdir}/zepto@1.2.0/dist/zepto.js" }.file_exist?
740
+ ok {"#{tmpdir}/zepto@1.2.0/dist/zepto.min.js"}.file_exist?
741
+ ok {"#{tmpdir}/zepto@1.2.0/MIT-LICENSE" }.file_exist?
742
+ ok {"#{tmpdir}/zepto@1.2.0/package.json" }.file_exist?
743
+ ok {"#{tmpdir}/zepto@1.2.0/README.md" }.file_exist?
744
+ ok {"#{tmpdir}/zepto@1.2.0/src/ajax.js" }.file_exist?
745
+ ok {"#{tmpdir}/zepto@1.2.0/src/assets.js" }.file_exist?
746
+ ok {"#{tmpdir}/zepto@1.2.0/src/callbacks.js" }.file_exist?
747
+ ok {"#{tmpdir}/zepto@1.2.0/src/data.js" }.file_exist?
748
+ ok {"#{tmpdir}/zepto@1.2.0/src/deferred.js" }.file_exist?
749
+ ok {"#{tmpdir}/zepto@1.2.0/src/detect.js" }.file_exist?
750
+ ok {"#{tmpdir}/zepto@1.2.0/src/event.js" }.file_exist?
751
+ ok {"#{tmpdir}/zepto@1.2.0/src/form.js" }.file_exist?
752
+ ok {"#{tmpdir}/zepto@1.2.0/src/fx.js" }.file_exist?
753
+ ok {"#{tmpdir}/zepto@1.2.0/src/fx_methods.js"}.file_exist?
754
+ ok {"#{tmpdir}/zepto@1.2.0/src/gesture.js" }.file_exist?
755
+ ok {"#{tmpdir}/zepto@1.2.0/src/ie.js" }.file_exist?
756
+ ok {"#{tmpdir}/zepto@1.2.0/src/ios3.js" }.file_exist?
757
+ ok {"#{tmpdir}/zepto@1.2.0/src/selector.js" }.file_exist?
758
+ ok {"#{tmpdir}/zepto@1.2.0/src/stack.js" }.file_exist?
759
+ ok {"#{tmpdir}/zepto@1.2.0/src/touch.js" }.file_exist?
760
+ ok {"#{tmpdir}/zepto@1.2.0/src/zepto.js" }.file_exist?
761
+ ok {sout} == <<END
762
+ #{tmpdir}/zepto@1.2.0/dist/zepto.js ... Done (58,707 byte)
763
+ #{tmpdir}/zepto@1.2.0/dist/zepto.min.js ... Done (26,386 byte)
764
+ #{tmpdir}/zepto@1.2.0/MIT-LICENSE ... Done (1,081 byte)
765
+ #{tmpdir}/zepto@1.2.0/package.json ... Done (435 byte)
766
+ #{tmpdir}/zepto@1.2.0/README.md ... Done (6,711 byte)
767
+ #{tmpdir}/zepto@1.2.0/src/ajax.js ... Done (13,843 byte)
768
+ #{tmpdir}/zepto@1.2.0/src/assets.js ... Done (581 byte)
769
+ #{tmpdir}/zepto@1.2.0/src/callbacks.js ... Done (4,208 byte)
770
+ #{tmpdir}/zepto@1.2.0/src/data.js ... Done (2,789 byte)
771
+ #{tmpdir}/zepto@1.2.0/src/deferred.js ... Done (3,846 byte)
772
+ #{tmpdir}/zepto@1.2.0/src/detect.js ... Done (3,754 byte)
773
+ #{tmpdir}/zepto@1.2.0/src/event.js ... Done (9,546 byte)
774
+ #{tmpdir}/zepto@1.2.0/src/form.js ... Done (1,253 byte)
775
+ #{tmpdir}/zepto@1.2.0/src/fx.js ... Done (4,843 byte)
776
+ #{tmpdir}/zepto@1.2.0/src/fx_methods.js ... Done (2,102 byte)
777
+ #{tmpdir}/zepto@1.2.0/src/gesture.js ... Done (1,138 byte)
778
+ #{tmpdir}/zepto@1.2.0/src/ie.js ... Done (530 byte)
779
+ #{tmpdir}/zepto@1.2.0/src/ios3.js ... Done (1,140 byte)
780
+ #{tmpdir}/zepto@1.2.0/src/selector.js ... Done (3,187 byte)
781
+ #{tmpdir}/zepto@1.2.0/src/stack.js ... Done (560 byte)
782
+ #{tmpdir}/zepto@1.2.0/src/touch.js ... Done (6,067 byte)
783
+ #{tmpdir}/zepto@1.2.0/src/zepto.js ... Done (33,889 byte)
784
+ END
785
+ end
786
+ end
787
+
788
+ it "(unpkg) downloads files (containing subdir) into dir." do
789
+ _do_download_test2("unpkg", "react", "17.0.2") do |tmpdir, sout, serr|
790
+ ok {"#{tmpdir}/react@17.0.2/build-info.json" }.file_exist?
791
+ ok {"#{tmpdir}/react@17.0.2/cjs/react.development.js" }.file_exist?
792
+ ok {"#{tmpdir}/react@17.0.2/cjs/react.production.min.js"}.file_exist?
793
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.development.js" }.file_exist?
794
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.production.min.js"}.file_exist?
795
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.profiling.min.js" }.file_exist?
796
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.development.js" }.file_exist?
797
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.production.min.js" }.file_exist?
798
+ ok {"#{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.profiling.min.js" }.file_exist?
799
+ ok {"#{tmpdir}/react@17.0.2/index.js" }.file_exist?
800
+ ok {"#{tmpdir}/react@17.0.2/jsx-dev-runtime.js" }.file_exist?
801
+ ok {"#{tmpdir}/react@17.0.2/jsx-runtime.js" }.file_exist?
802
+ ok {"#{tmpdir}/react@17.0.2/LICENSE" }.file_exist?
803
+ ok {"#{tmpdir}/react@17.0.2/package.json" }.file_exist?
804
+ ok {"#{tmpdir}/react@17.0.2/README.md" }.file_exist?
805
+ ok {"#{tmpdir}/react@17.0.2/umd/react.development.js" }.file_exist?
806
+ ok {"#{tmpdir}/react@17.0.2/umd/react.production.min.js"}.file_exist?
807
+ ok {"#{tmpdir}/react@17.0.2/umd/react.profiling.min.js" }.file_exist?
808
+ expected = <<END
809
+ #{tmpdir}/react@17.0.2/build-info.json ... Done (167 byte)
810
+ #{tmpdir}/react@17.0.2/cjs/react.development.js ... Done (72,141 byte)
811
+ #{tmpdir}/react@17.0.2/cjs/react.production.min.js ... Done (6,450 byte)
812
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.development.js ... Done (37,753 byte)
813
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.production.min.js ... Done (456 byte)
814
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-dev-runtime.profiling.min.js ... Done (455 byte)
815
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.development.js ... Done (38,352 byte)
816
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.production.min.js ... Done (962 byte)
817
+ #{tmpdir}/react@17.0.2/cjs/react-jsx-runtime.profiling.min.js ... Done (961 byte)
818
+ #{tmpdir}/react@17.0.2/index.js ... Done (190 byte)
819
+ #{tmpdir}/react@17.0.2/jsx-dev-runtime.js ... Done (222 byte)
820
+ #{tmpdir}/react@17.0.2/jsx-runtime.js ... Done (214 byte)
821
+ #{tmpdir}/react@17.0.2/LICENSE ... Done (1,086 byte)
822
+ #{tmpdir}/react@17.0.2/package.json ... Done (777 byte)
823
+ #{tmpdir}/react@17.0.2/README.md ... Done (737 byte)
824
+ #{tmpdir}/react@17.0.2/umd/react.development.js ... Done (105,096 byte)
825
+ #{tmpdir}/react@17.0.2/umd/react.production.min.js ... Done (11,440 byte)
826
+ #{tmpdir}/react@17.0.2/umd/react.profiling.min.js ... Done (13,668 byte)
827
+ END
445
828
  ok {sout} == expected
446
- # 2nd
447
- sout, serr = capture_io() do
448
- actual = CDNGet::Main.new().run(cdn_code, libname, version, tmpdir)
449
- end
450
- ok {serr} == ""
451
- ok {sout} == expected.gsub(/\n/, " (Unchanged)\n")
452
- ensure
453
- FileUtils.rm_r(tmpdir)
454
829
  end
455
830
  end
456
831
 
457
- it "(cdnjs) downloads files into dir." do
458
- _do_download_test1("cdnjs")
832
+ it "(cdnjs) doesn't override existing files when they are identical to downloaded files." do
833
+ tmpdir = "tmpdir1"
834
+ expected = <<END
835
+ #{tmpdir}/jquery-jcrop/2.0.4/css/Jcrop.css ... Done (7,401 byte)
836
+ #{tmpdir}/jquery-jcrop/2.0.4/css/Jcrop.gif ... Done (329 byte)
837
+ #{tmpdir}/jquery-jcrop/2.0.4/css/Jcrop.min.css ... Done (5,281 byte)
838
+ #{tmpdir}/jquery-jcrop/2.0.4/js/Jcrop.js ... Done (75,652 byte)
839
+ #{tmpdir}/jquery-jcrop/2.0.4/js/Jcrop.min.js ... Done (38,379 byte)
840
+ END
841
+ _do_download_test3("cdnjs", "jquery-jcrop", "2.0.4", expected)
459
842
  end
460
843
 
461
- it "(google) downloads files into dir." do
462
- _do_download_test1("google")
844
+ it "(google) doesn't override existing files when they are identical to downloaded files." do
845
+ tmpdir = "tmpdir1"
846
+ expected = <<END
847
+ #{tmpdir}/jquery/3.6.0/jquery.min.js ... Done (89,501 byte)
848
+ END
849
+ _do_download_test3("google", "jquery", "3.6.0", expected)
463
850
  end
464
851
 
465
- it "(jsdelivr) downloads files into dir." do
466
- _do_download_test1("jsdelivr")
852
+ it "(jsdelivr) doesn't override existing files when they are identical to downloaded files." do
853
+ tmpdir = "tmpdir1"
854
+ expected = <<END
855
+ #{tmpdir}/chibijs@3.0.9/.jshintrc ... Done (5,323 byte)
856
+ #{tmpdir}/chibijs@3.0.9/.npmignore ... Done (46 byte)
857
+ #{tmpdir}/chibijs@3.0.9/chibi.js ... Done (18,429 byte)
858
+ #{tmpdir}/chibijs@3.0.9/chibi-min.js ... Done (7,321 byte)
859
+ #{tmpdir}/chibijs@3.0.9/gulpfile.js ... Done (1,395 byte)
860
+ #{tmpdir}/chibijs@3.0.9/package.json ... Done (756 byte)
861
+ #{tmpdir}/chibijs@3.0.9/README.md ... Done (21,283 byte)
862
+ #{tmpdir}/chibijs@3.0.9/tests/runner.html ... Done (14,302 byte)
863
+ END
864
+ _do_download_test3("jsdelivr", "chibijs", "3.0.9", expected)
467
865
  end
468
866
 
469
- it "(cdnjs) downloads files (containing subdir) into dir." do
470
- _do_download_test2("cdnjs")
867
+ it "(unpkg) doesn't override existing files when they are identical to downloaded files." do
868
+ tmpdir = "tmpdir1"
869
+ expected = <<END
870
+ #{tmpdir}/chibijs@3.0.9/.jshintrc ... Done (5,323 byte)
871
+ #{tmpdir}/chibijs@3.0.9/.npmignore ... Done (46 byte)
872
+ #{tmpdir}/chibijs@3.0.9/chibi.js ... Done (18,429 byte)
873
+ #{tmpdir}/chibijs@3.0.9/chibi-min.js ... Done (7,321 byte)
874
+ #{tmpdir}/chibijs@3.0.9/gulpfile.js ... Done (1,395 byte)
875
+ #{tmpdir}/chibijs@3.0.9/package.json ... Done (756 byte)
876
+ #{tmpdir}/chibijs@3.0.9/README.md ... Done (21,283 byte)
877
+ #{tmpdir}/chibijs@3.0.9/tests/runner.html ... Done (14,302 byte)
878
+ END
879
+ _do_download_test3("unpkg", "chibijs", "3.0.9", expected)
471
880
  end
472
881
 
473
- it "(google) downloads files (containing subdir) into dir." do
474
- skip("no libraries containing subdirectory")
882
+ end
883
+
884
+
885
+ describe "cdnget CDN swfobject latest" do
886
+
887
+ it "(cdnjs) shows latest version." do
888
+ actual = CDNGet::Main.new("cdnget").run("cdnjs", "swfobject", "latest")
889
+ ok {actual} == <<END
890
+ name: swfobject
891
+ version: 2.2
892
+ desc: SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file
893
+ tags: swf, flash
894
+ site: http://code.google.com/p/swfobject/
895
+ info: https://cdnjs.com/libraries/swfobject/2.2
896
+ license: MIT
897
+ urls:
898
+ - https://cdnjs.cloudflare.com/ajax/libs/swfobject/2.2/swfobject.js
899
+ - https://cdnjs.cloudflare.com/ajax/libs/swfobject/2.2/swfobject.min.js
900
+ END
475
901
  end
476
902
 
477
- it "(jsdelivr) downloads files (containing subdir) into dir." do
478
- _do_download_test2("jsdelivr")
903
+ it "(google) shows latest version." do
904
+ actual = CDNGet::Main.new("cdnget").run("google", "swfobject", "latest")
905
+ ok {actual} == <<END
906
+ name: swfobject
907
+ version: 2.2
908
+ site: https://github.com/swfobject/swfobject
909
+ info: https://developers.google.com/speed/libraries/#swfobject
910
+ urls:
911
+ - https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
912
+ END
479
913
  end
480
914
 
481
- it "(cdnjs) doesn't override existing files when they are identical to downloaded files." do
482
- _do_download_test3("cdnjs", "jquery-jcrop")
915
+ it "(jsdelivr) shows latest version." do
916
+ actual = CDNGet::Main.new("cdnget").run("jsdelivr", "swfobject", "latest")
917
+ ok {actual} == <<END
918
+ name: swfobject
919
+ version: 2.2.1
920
+ desc: SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file
921
+ tags: SWFObject, swf, object, flash, embed, content
922
+ info: https://www.jsdelivr.com/package/npm/swfobject?version=2.2.1
923
+ npmpkg: https://registry.npmjs.org/swfobject/-/swfobject-2.2.1.tgz
924
+ default: /index.min.js
925
+ license: MIT
926
+ urls:
927
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/.npmignore
928
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/download.sh
929
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/expressInstall.swf
930
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/index.js
931
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/package.json
932
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/patch.js
933
+ - https://cdn.jsdelivr.net/npm/swfobject@2.2.1/README.md
934
+ END
483
935
  end
484
936
 
485
- it "(google) doesn't override existing files when they are identical to downloaded files." do
486
- _do_download_test3("google", "jquery")
937
+ it "(unpkg) shows latest version." do
938
+ actual = CDNGet::Main.new("cdnget").run("unpkg", "swfobject", "latest")
939
+ ok {actual} == <<END
940
+ name: swfobject
941
+ version: 2.2.1
942
+ desc: SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file
943
+ tags: SWFObject, swf, object, flash, embed, content
944
+ site: https://github.com/unshiftio/swfobject
945
+ info: https://unpkg.com/browse/swfobject@2.2.1/
946
+ npmpkg: https://registry.npmjs.org/swfobject/-/swfobject-2.2.1.tgz
947
+ default: /index.min.js
948
+ license: MIT
949
+ urls:
950
+ - https://unpkg.com/swfobject@2.2.1/.npmignore
951
+ - https://unpkg.com/swfobject@2.2.1/download.sh
952
+ - https://unpkg.com/swfobject@2.2.1/expressInstall.swf
953
+ - https://unpkg.com/swfobject@2.2.1/index.js
954
+ - https://unpkg.com/swfobject@2.2.1/package.json
955
+ - https://unpkg.com/swfobject@2.2.1/patch.js
956
+ - https://unpkg.com/swfobject@2.2.1/README.md
957
+ END
487
958
  end
488
959
 
489
- it "(jsdelivr) doesn't override existing files when they are identical to downloaded files." do
490
- _do_download_test3("jsdelivr", "jquery")
960
+ end
961
+
962
+
963
+ describe "cdnget CDN swfobject latest dir" do
964
+
965
+ before do
966
+ @tmpdir = "tmpdir1"
967
+ Dir.mkdir @tmpdir
968
+ end
969
+
970
+ after do
971
+ FileUtils.rm_rf @tmpdir
972
+ end
973
+
974
+ it "(cdnjs) downlaods latest version." do
975
+ sout, serr = capture_io do()
976
+ CDNGet::Main.new("cdnget").run("cdnjs", "swfobject", "latest", @tmpdir)
977
+ end
978
+ ok {sout} == <<"END"
979
+ #{@tmpdir}/swfobject/2.2/swfobject.js ... Done (10,220 byte)
980
+ #{@tmpdir}/swfobject/2.2/swfobject.min.js ... Done (9,211 byte)
981
+ END
982
+ end
983
+
984
+ it "(google) downlaods latest version." do
985
+ sout, serr = capture_io do()
986
+ CDNGet::Main.new("cdnget").run("google", "swfobject", "latest", @tmpdir)
987
+ end
988
+ ok {sout} == <<"END"
989
+ #{@tmpdir}/swfobject/2.2/swfobject.js ... Done (10,220 byte)
990
+ END
991
+ end
992
+
993
+ it "(jsdelivr) downlaods latest version." do
994
+ sout, serr = capture_io do()
995
+ CDNGet::Main.new("cdnget").run("jsdelivr", "swfobject", "latest", @tmpdir)
996
+ end
997
+ ok {sout} == <<"END"
998
+ #{@tmpdir}/swfobject@2.2.1/.npmignore ... Done (13 byte)
999
+ #{@tmpdir}/swfobject@2.2.1/download.sh ... Done (517 byte)
1000
+ #{@tmpdir}/swfobject@2.2.1/expressInstall.swf ... Done (727 byte)
1001
+ #{@tmpdir}/swfobject@2.2.1/index.js ... Done (10,331 byte)
1002
+ #{@tmpdir}/swfobject@2.2.1/package.json ... Done (524 byte)
1003
+ #{@tmpdir}/swfobject@2.2.1/patch.js ... Done (277 byte)
1004
+ #{@tmpdir}/swfobject@2.2.1/README.md ... Done (764 byte)
1005
+ END
1006
+ end
1007
+
1008
+ it "(unpkg) downlaods latest version." do
1009
+ sout, serr = capture_io do()
1010
+ CDNGet::Main.new("cdnget").run("unpkg", "swfobject", "latest", @tmpdir)
1011
+ end
1012
+ ok {sout} == <<"END"
1013
+ #{@tmpdir}/swfobject@2.2.1/.npmignore ... Done (13 byte)
1014
+ #{@tmpdir}/swfobject@2.2.1/download.sh ... Done (517 byte)
1015
+ #{@tmpdir}/swfobject@2.2.1/expressInstall.swf ... Done (727 byte)
1016
+ #{@tmpdir}/swfobject@2.2.1/index.js ... Done (10,331 byte)
1017
+ #{@tmpdir}/swfobject@2.2.1/package.json ... Done (524 byte)
1018
+ #{@tmpdir}/swfobject@2.2.1/patch.js ... Done (277 byte)
1019
+ #{@tmpdir}/swfobject@2.2.1/README.md ... Done (764 byte)
1020
+ END
1021
+ end
1022
+
1023
+ end
1024
+
1025
+
1026
+ describe "cdnget CDN bulma 0.9.3 dir" do
1027
+
1028
+ before do
1029
+ @tmpdir = "tmpdir1"
1030
+ Dir.mkdir @tmpdir
1031
+ end
1032
+
1033
+ after do
1034
+ FileUtils.rm_rf @tmpdir
1035
+ end
1036
+
1037
+ it "(unpkg) skips '.DS_Store' files." do
1038
+ sout, serr = capture_io do()
1039
+ CDNGet::Main.new("cdnget").run("unpkg", "bulma", "0.9.3", @tmpdir)
1040
+ end
1041
+ ok {sout}.include?("#{@tmpdir}/bulma@0.9.3/sass/.DS_Store ... Skipped\n")
1042
+ ok {sout}.include?("#{@tmpdir}/bulma@0.9.3/sass/base/.DS_Store ... Skipped\n")
491
1043
  end
492
1044
 
493
1045
  end