compass 0.11.7 → 0.12.alpha.0

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.
Files changed (207) hide show
  1. data/Rakefile +10 -0
  2. data/VERSION.yml +4 -3
  3. data/bin/compass +1 -5
  4. data/features/command_line.feature +17 -17
  5. data/features/extensions.feature +0 -6
  6. data/features/step_definitions/command_line_steps.rb +1 -2
  7. data/frameworks/compass/stylesheets/compass/css3/_font-face.scss +35 -5
  8. data/frameworks/compass/stylesheets/compass/css3/_images.scss +6 -6
  9. data/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +3 -12
  10. data/frameworks/compass/stylesheets/compass/typography/lists/_bullets.scss +1 -1
  11. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-block-list.scss +11 -14
  12. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +5 -5
  13. data/frameworks/compass/templates/pie/PIE.htc +64 -83
  14. data/lib/compass.rbc +36 -42
  15. data/lib/compass/actions.rb +1 -0
  16. data/lib/compass/actions.rbc +85 -244
  17. data/lib/compass/app_integration.rbc +20 -28
  18. data/lib/compass/app_integration/merb.rbc +4 -8
  19. data/lib/compass/app_integration/rails.rb +22 -5
  20. data/lib/compass/app_integration/rails.rbc +142 -658
  21. data/lib/compass/app_integration/rails/actionpack2x.rb +10 -0
  22. data/lib/compass/app_integration/rails/{actionpack2 → actionpack2x}/action_controller.rb +0 -0
  23. data/lib/compass/app_integration/rails/{actionpack2 → actionpack2x}/sass_plugin.rb +0 -0
  24. data/lib/compass/app_integration/rails/{actionpack2 → actionpack2x}/urls.rb +0 -0
  25. data/lib/compass/app_integration/rails/actionpack30.rb +11 -0
  26. data/lib/compass/app_integration/rails/{actionpack3 → actionpack30}/railtie.rb +0 -0
  27. data/lib/compass/app_integration/rails/actionpack31.rb +5 -0
  28. data/lib/compass/app_integration/rails/actionpack31/helpers.rb +5 -0
  29. data/lib/compass/app_integration/rails/actionpack31/railtie.rb +89 -0
  30. data/lib/compass/app_integration/rails/configuration_defaults.rb +54 -14
  31. data/lib/compass/app_integration/rails/configuration_defaults.rbc +324 -1081
  32. data/lib/compass/app_integration/rails/installer.rbc +61 -145
  33. data/lib/compass/app_integration/rails/runtime.rb +6 -16
  34. data/lib/compass/app_integration/stand_alone.rbc +15 -15
  35. data/lib/compass/app_integration/stand_alone/configuration_defaults.rbc +23 -23
  36. data/lib/compass/app_integration/stand_alone/installer.rbc +32 -52
  37. data/lib/compass/browser_support.rbc +23 -35
  38. data/lib/compass/commands/clean_project.rb +1 -1
  39. data/lib/compass/commands/project_stats.rb +7 -7
  40. data/lib/compass/commands/sprite.rb +4 -3
  41. data/lib/compass/compiler.rb +2 -2
  42. data/lib/compass/compiler.rbc +398 -591
  43. data/lib/compass/configuration.rb +2 -0
  44. data/lib/compass/configuration.rbc +78 -134
  45. data/lib/compass/configuration/adapters.rbc +40 -98
  46. data/lib/compass/configuration/comments.rb +5 -1
  47. data/lib/compass/configuration/comments.rbc +51 -132
  48. data/lib/compass/configuration/data.rb +26 -10
  49. data/lib/compass/configuration/data.rbc +536 -526
  50. data/lib/compass/configuration/defaults.rb +24 -1
  51. data/lib/compass/configuration/defaults.rbc +187 -762
  52. data/lib/compass/configuration/file_data.rb +0 -22
  53. data/lib/compass/configuration/file_data.rbc +125 -37
  54. data/lib/compass/configuration/helpers.rb +9 -8
  55. data/lib/compass/configuration/helpers.rbc +153 -433
  56. data/lib/compass/configuration/inheritance.rb +13 -0
  57. data/lib/compass/configuration/inheritance.rbc +165 -412
  58. data/lib/compass/configuration/paths.rbc +9 -9
  59. data/lib/compass/configuration/serialization.rb +1 -0
  60. data/lib/compass/configuration/serialization.rbc +84 -151
  61. data/lib/compass/dependencies.rbc +4 -16
  62. data/lib/compass/errors.rbc +5 -5
  63. data/lib/compass/frameworks.rb +4 -10
  64. data/lib/compass/frameworks.rbc +66 -118
  65. data/lib/compass/quick_cache.rbc +8 -12
  66. data/lib/compass/sass_extensions.rbc +4 -8
  67. data/lib/compass/sass_extensions/functions.rbc +57 -90
  68. data/lib/compass/sass_extensions/functions/colors.rbc +18 -22
  69. data/lib/compass/sass_extensions/functions/constants.rbc +25 -45
  70. data/lib/compass/sass_extensions/functions/cross_browser_support.rbc +36 -48
  71. data/lib/compass/sass_extensions/functions/display.rbc +107 -341
  72. data/lib/compass/sass_extensions/functions/enumerate.rbc +9 -9
  73. data/lib/compass/sass_extensions/functions/font_files.rbc +125 -542
  74. data/lib/compass/sass_extensions/functions/gradient_support.rbc +167 -379
  75. data/lib/compass/sass_extensions/functions/image_size.rb +10 -2
  76. data/lib/compass/sass_extensions/functions/image_size.rbc +400 -715
  77. data/lib/compass/sass_extensions/functions/inline_image.rbc +98 -152
  78. data/lib/compass/sass_extensions/functions/lists.rb +0 -5
  79. data/lib/compass/sass_extensions/functions/lists.rbc +39 -75
  80. data/lib/compass/sass_extensions/functions/selectors.rbc +28 -36
  81. data/lib/compass/sass_extensions/functions/sprites.rb +5 -7
  82. data/lib/compass/sass_extensions/functions/sprites.rbc +233 -255
  83. data/lib/compass/sass_extensions/functions/trig.rb +2 -1
  84. data/lib/compass/sass_extensions/functions/trig.rbc +51 -53
  85. data/lib/compass/sass_extensions/functions/urls.rb +171 -80
  86. data/lib/compass/sass_extensions/functions/urls.rbc +1051 -3158
  87. data/lib/compass/sass_extensions/monkey_patches.rbc +5 -5
  88. data/lib/compass/sass_extensions/monkey_patches/browser_support.rbc +47 -63
  89. data/lib/compass/sass_extensions/monkey_patches/traversal.rbc +16 -36
  90. data/lib/compass/sass_extensions/sprites.rb +3 -1
  91. data/lib/compass/sass_extensions/sprites.rbc +13 -93
  92. data/lib/compass/sass_extensions/sprites/engines.rbc +6 -615
  93. data/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rbc +94 -260
  94. data/lib/compass/sass_extensions/sprites/image.rb +23 -11
  95. data/lib/compass/sass_extensions/sprites/image.rbc +313 -691
  96. data/lib/compass/sass_extensions/sprites/image_row.rb +47 -0
  97. data/lib/compass/sass_extensions/sprites/layout_methods.rb +117 -0
  98. data/lib/compass/sass_extensions/sprites/row_fitter.rb +86 -0
  99. data/lib/compass/sass_extensions/sprites/sprite_map.rb +18 -4
  100. data/lib/compass/sass_extensions/sprites/sprite_map.rbc +3635 -708
  101. data/lib/compass/sass_extensions/sprites/sprite_methods.rb +5 -17
  102. data/lib/compass/sprite_importer.rb +38 -62
  103. data/lib/compass/sprite_importer.rbc +1495 -1125
  104. data/lib/compass/util.rbc +11 -19
  105. data/lib/compass/version.rbc +25 -53
  106. data/test/fixtures/sprites/public/images/image_row/large.png +0 -0
  107. data/test/fixtures/sprites/public/images/image_row/large_square.png +0 -0
  108. data/test/fixtures/sprites/public/images/image_row/medium.png +0 -0
  109. data/test/fixtures/sprites/public/images/image_row/small.png +0 -0
  110. data/test/fixtures/sprites/public/images/image_row/tall.png +0 -0
  111. data/test/fixtures/stylesheets/compass/css/lists.css +7 -7
  112. data/test/fixtures/stylesheets/compass/css/reset.css +1 -0
  113. data/test/fixtures/stylesheets/compass/css/sprites.css +248 -248
  114. data/test/fixtures/stylesheets/compass/images/flag-s8c3c755a68.png +0 -0
  115. data/test/integrations/sprites_test.rb +115 -3
  116. data/test/test_helper.rb +29 -1
  117. data/test/tmp/compass_rails/public/images/selectors-sef52c5c63a.png +0 -0
  118. data/test/units/configuration_test.rb +2 -5
  119. data/test/units/rails_configuration_test.rb +50 -0
  120. data/test/units/sass_extensions_test.rb +17 -5
  121. data/test/units/sprites/image_row_test.rb +57 -0
  122. data/test/units/sprites/image_test.rb +53 -45
  123. data/test/units/sprites/importer_test.rb +31 -12
  124. data/test/units/sprites/row_fitter_test.rb +66 -0
  125. data/test/units/sprites/sprite_command_test.rb +1 -11
  126. data/test/units/sprites/sprite_map_test.rb +122 -16
  127. metadata +38 -149
  128. data/bin/compass.compiled.rbc +0 -707
  129. data/examples/compass/compass_app_log.txt +0 -6
  130. data/frameworks/compass/stylesheets/compass/css3/_user-interface.scss +0 -19
  131. data/lib/compass/commands.rbc +0 -307
  132. data/lib/compass/commands/base.rbc +0 -1044
  133. data/lib/compass/commands/clean_project.rbc +0 -1856
  134. data/lib/compass/commands/create_project.rbc +0 -2691
  135. data/lib/compass/commands/default.rbc +0 -1677
  136. data/lib/compass/commands/generate_grid_background.rbc +0 -1939
  137. data/lib/compass/commands/help.rbc +0 -1921
  138. data/lib/compass/commands/imports.rbc +0 -969
  139. data/lib/compass/commands/installer_command.rbc +0 -807
  140. data/lib/compass/commands/interactive.rbc +0 -1341
  141. data/lib/compass/commands/list_frameworks.rbc +0 -1111
  142. data/lib/compass/commands/print_version.rbc +0 -2478
  143. data/lib/compass/commands/project_base.rbc +0 -2085
  144. data/lib/compass/commands/project_stats.rbc +0 -4202
  145. data/lib/compass/commands/registry.rbc +0 -1350
  146. data/lib/compass/commands/sprite.rbc +0 -2212
  147. data/lib/compass/commands/stamp_pattern.rbc +0 -2011
  148. data/lib/compass/commands/unpack_extension.rbc +0 -2348
  149. data/lib/compass/commands/update_project.rbc +0 -3002
  150. data/lib/compass/commands/validate_project.rbc +0 -1686
  151. data/lib/compass/commands/watch_project.rbc +0 -4155
  152. data/lib/compass/commands/write_configuration.rbc +0 -2896
  153. data/lib/compass/exec.rbc +0 -500
  154. data/lib/compass/exec/command_option_parser.rbc +0 -676
  155. data/lib/compass/exec/global_options_parser.rbc +0 -1306
  156. data/lib/compass/exec/helpers.rbc +0 -758
  157. data/lib/compass/exec/project_options_parser.rbc +0 -1515
  158. data/lib/compass/exec/sub_command_ui.rbc +0 -1191
  159. data/lib/compass/grid_builder.rbc +0 -0
  160. data/lib/compass/installers.rbc +0 -152
  161. data/lib/compass/installers/bare_installer.rbc +0 -939
  162. data/lib/compass/installers/base.rbc +0 -4427
  163. data/lib/compass/installers/manifest.rbc +0 -3335
  164. data/lib/compass/installers/manifest_installer.rbc +0 -1591
  165. data/lib/compass/installers/template_context.rbc +0 -1030
  166. data/lib/compass/logger.rbc +0 -2317
  167. data/lib/compass/sass_extensions/functions/env.rbc +0 -299
  168. data/lib/compass/sass_extensions/sprites/image_methods.rbc +0 -900
  169. data/lib/compass/sass_extensions/sprites/image_row.rbc +0 -1168
  170. data/lib/compass/sass_extensions/sprites/layout_methods.rbc +0 -3236
  171. data/lib/compass/sass_extensions/sprites/row_fitter.rbc +0 -2067
  172. data/lib/compass/sass_extensions/sprites/sprite_methods.rbc +0 -3190
  173. data/test/fixtures/extensions/only_stylesheets/compass_init.rb +0 -1
  174. data/test/fixtures/extensions/only_stylesheets/scss/only_stylesheets/foo.scss +0 -3
  175. data/test/fixtures/stylesheets/compass/css/user-interface.css +0 -5
  176. data/test/fixtures/stylesheets/compass/images/flag-s03c3b29b35.png +0 -0
  177. data/test/fixtures/stylesheets/compass/sass/user-interface.scss +0 -5
  178. data/test/fixtures/stylesheets/envtest/tmp/env.css +0 -2
  179. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/config.rb +0 -25
  180. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/ie.scss +0 -5
  181. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/print.scss +0 -3
  182. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/screen.scss +0 -6
  183. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/ie.css +0 -5
  184. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/print.css +0 -3
  185. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/screen.css +0 -68
  186. data/test/helpers/command_line.rbc +0 -2820
  187. data/test/helpers/diff.rbc +0 -1104
  188. data/test/helpers/io.rbc +0 -962
  189. data/test/helpers/rails.rbc +0 -1116
  190. data/test/helpers/test_case.rbc +0 -1255
  191. data/test/integrations/compass_test.rbc +0 -6589
  192. data/test/integrations/rails_integration_test.rbc +0 -1342
  193. data/test/integrations/sprites_test.rbc +0 -6192
  194. data/test/test_helper.rbc +0 -1694
  195. data/test/units/actions_test.rbc +0 -644
  196. data/test/units/command_line_test.rbc +0 -1532
  197. data/test/units/compass_png_test.rbc +0 -0
  198. data/test/units/configuration_test.rbc +0 -3833
  199. data/test/units/rails_configuration_test.rbc +0 -1032
  200. data/test/units/sass_extensions_test.rbc +0 -3586
  201. data/test/units/sprites/engine_test.rbc +0 -962
  202. data/test/units/sprites/image_row_test.rbc +0 -1578
  203. data/test/units/sprites/image_test.rbc +0 -2836
  204. data/test/units/sprites/importer_test.rbc +0 -2620
  205. data/test/units/sprites/row_fitter_test.rbc +0 -1479
  206. data/test/units/sprites/sprite_command_test.rbc +0 -1147
  207. data/test/units/sprites/sprite_map_test.rbc +0 -6515
@@ -11,6 +11,7 @@ class SpritesTest < Test::Unit::TestCase
11
11
  Compass.reset_configuration!
12
12
  @images_src_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'sprites', 'public', 'images')
13
13
  @images_tmp_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'sprites', 'public', 'images-tmp')
14
+ @generated_images_tmp_path = File.join(File.dirname(__FILE__), '..', 'fixtures', 'sprites', 'public', 'generated-images-tmp')
14
15
  ::FileUtils.cp_r @images_src_path, @images_tmp_path
15
16
  file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n")
16
17
  Compass.add_configuration(file, "sprite_config")
@@ -20,6 +21,7 @@ class SpritesTest < Test::Unit::TestCase
20
21
  def teardown
21
22
  Compass.reset_configuration!
22
23
  ::FileUtils.rm_r @images_tmp_path
24
+ ::FileUtils.rm_rf @generated_images_tmp_path
23
25
  end
24
26
 
25
27
 
@@ -74,6 +76,35 @@ class SpritesTest < Test::Unit::TestCase
74
76
  assert_equal image_md5('squares-s*.png'), '7349a0f4e88ea80abddcf6ac2486abe3'
75
77
  end
76
78
 
79
+ it "should output and serve sprite files using the generated images directory" do
80
+ Compass.reset_configuration!
81
+ file = StringIO.new(<<-CONFIG)
82
+ images_path = #{@images_tmp_path.inspect}
83
+ generated_images_path = #{@generated_images_tmp_path.inspect}
84
+ http_generated_images_path = "/images/generated"
85
+ CONFIG
86
+ Compass.add_configuration(file, "sprite_config")
87
+ Compass.configure_sass_plugin!
88
+ css = render <<-SCSS
89
+ @import "squares/*.png";
90
+ @include all-squares-sprites;
91
+ SCSS
92
+ assert_not_nil Dir.glob("#{@generated_images_tmp_path}/squares-s*.png").first
93
+ assert_correct <<-CSS, css
94
+ .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
95
+ background: url('/images/generated/squares-s161c60ad78.png') no-repeat;
96
+ }
97
+
98
+ .squares-ten-by-ten {
99
+ background-position: 0 0;
100
+ }
101
+
102
+ .squares-twenty-by-twenty {
103
+ background-position: 0 -10px;
104
+ }
105
+ CSS
106
+ end
107
+
77
108
  it "should generate sprite classes with dimensions" do
78
109
  css = render <<-SCSS
79
110
  $squares-sprite-dimensions: true;
@@ -448,7 +479,7 @@ class SpritesTest < Test::Unit::TestCase
448
479
  CSS
449
480
  end
450
481
 
451
- it "should render corret sprite with css selectors via issue#248" do
482
+ it "should render correct sprite with css selectors via issue#248" do
452
483
  css = render <<-SCSS
453
484
  @import "selectors/*.png";
454
485
  @include all-selectors-sprites;
@@ -472,8 +503,33 @@ class SpritesTest < Test::Unit::TestCase
472
503
  }
473
504
  CSS
474
505
  end
506
+
507
+ it "should honor offsets when rendering selectors via issue#449" do
508
+ css = render <<-SCSS
509
+ @import "selectors/*.png";
510
+ @include all-selectors-sprites($offset-x: 20px, $offset-y: 20px);
511
+ SCSS
512
+ assert_correct css, <<-CSS
513
+ .selectors-sprite, .selectors-ten-by-ten {
514
+ background: url('/selectors-sedfef809e2.png') no-repeat;
515
+ }
516
+
517
+ .selectors-ten-by-ten {
518
+ background-position: 20px 20px;
519
+ }
520
+ .selectors-ten-by-ten:hover, .selectors-ten-by-ten.ten-by-ten_hover, .selectors-ten-by-ten.ten-by-ten-hover {
521
+ background-position: 20px 0;
522
+ }
523
+ .selectors-ten-by-ten:target, .selectors-ten-by-ten.ten-by-ten_target, .selectors-ten-by-ten.ten-by-ten-target {
524
+ background-position: 20px -10px;
525
+ }
526
+ .selectors-ten-by-ten:active, .selectors-ten-by-ten.ten-by-ten_active, .selectors-ten-by-ten.ten-by-ten-active {
527
+ background-position: 20px 10px;
528
+ }
529
+ CSS
530
+ end
475
531
 
476
- it "should render corret sprite with css selectors via magic mixin" do
532
+ it "should render correct sprite with css selectors via magic mixin" do
477
533
  css = render <<-SCSS
478
534
  @import "selectors/*.png";
479
535
  a {
@@ -499,6 +555,7 @@ class SpritesTest < Test::Unit::TestCase
499
555
  }
500
556
  CSS
501
557
  end
558
+
502
559
 
503
560
  it "should not render corret sprite with css selectors via magic mixin" do
504
561
  css = render <<-SCSS
@@ -518,6 +575,33 @@ class SpritesTest < Test::Unit::TestCase
518
575
  }
519
576
  CSS
520
577
  end
578
+
579
+ it "should render corret sprite with css selectors via magic mixin with the correct offsets" do
580
+ css = render <<-SCSS
581
+ @import "selectors/*.png";
582
+ a {
583
+ @include selectors-sprite(ten-by-ten, false, 5, -5)
584
+ }
585
+ SCSS
586
+ assert_correct css, <<-CSS
587
+ .selectors-sprite, a {
588
+ background: url('/selectors-sedfef809e2.png') no-repeat;
589
+ }
590
+
591
+ a {
592
+ background-position: 5px -5px;
593
+ }
594
+ a:hover, a.ten-by-ten_hover, a.ten-by-ten-hover {
595
+ background-position: 5px -25px;
596
+ }
597
+ a:target, a.ten-by-ten_target, a.ten-by-ten-target {
598
+ background-position: 5px -35px;
599
+ }
600
+ a:active, a.ten-by-ten_active, a.ten-by-ten-active {
601
+ background-position: 5px -15px;
602
+ }
603
+ CSS
604
+ end
521
605
 
522
606
  it "should raise error on filenames that are not valid sass syntax" do
523
607
  assert_raise(Compass::Error) do
@@ -603,5 +687,33 @@ class SpritesTest < Test::Unit::TestCase
603
687
  }
604
688
  CSS
605
689
  end
690
+
691
+ it "should create horizontal sprite" do
692
+ css = render <<-SCSS
693
+ $squares-layout:horizontal;
694
+ @import "squares/*.png";
695
+ .foo {
696
+ @include sprite-background-position($squares-sprites, "twenty-by-twenty");
697
+ }
698
+ .bar {
699
+ @include sprite-background-position($squares-sprites, "ten-by-ten");
700
+ }
701
+ SCSS
702
+ assert_equal [30, 20], image_size('squares-s*.png')
703
+ other_css = <<-CSS
704
+ .squares-sprite {
705
+ background: url('/squares-s161c60ad78.png') no-repeat;
706
+ }
707
+
708
+ .foo {
709
+ background-position: -10px 0;
710
+ }
711
+
712
+ .bar {
713
+ background-position: 0 0;
714
+ }
715
+ CSS
716
+ assert_correct css.gsub("\n", '').gsub(' ', ''), other_css.gsub("\n", '').gsub(' ', '')
717
+ end
606
718
 
607
- end
719
+ end
@@ -34,4 +34,32 @@ class Test::Unit::TestCase
34
34
  include Compass::IoHelper
35
35
  extend Compass::TestCaseHelper::ClassMethods
36
36
 
37
- end
37
+ end
38
+
39
+ module SpriteHelper
40
+ URI = "selectors/*.png"
41
+
42
+ def init_sprite_helper
43
+ @images_src_path = File.join(File.dirname(__FILE__), 'fixtures', 'sprites', 'public', 'images')
44
+ @images_tmp_path = File.join(File.dirname(__FILE__), 'fixtures', 'sprites', 'public', 'images-tmp')
45
+ end
46
+
47
+ def sprite_map_test(options)
48
+ importer = Compass::SpriteImporter.new
49
+ path, name = Compass::SpriteImporter.path_and_name(URI)
50
+ sprite_names = Compass::SpriteImporter.sprite_names(URI)
51
+ sass_engine = Compass::SpriteImporter.sass_engine(URI, name, importer, options)
52
+ Compass::SassExtensions::Sprites::SpriteMap.new(sprite_names.map{|n| "selectors/#{n}.png"}, path, name, sass_engine, options)
53
+ end
54
+
55
+ def create_sprite_temp
56
+ init_sprite_helper
57
+ ::FileUtils.cp_r @images_src_path, @images_tmp_path
58
+ end
59
+
60
+ def clean_up_sprites
61
+ init_sprite_helper
62
+ ::FileUtils.rm_r @images_tmp_path
63
+ end
64
+
65
+ end
@@ -19,7 +19,6 @@ class ConfigurationTest < Test::Unit::TestCase
19
19
 
20
20
  project_type = :stand_alone
21
21
 
22
- # Set this to the root of your project when deployed:
23
22
  http_path = "/"
24
23
  css_dir = "css"
25
24
  sass_dir = "sass"
@@ -101,7 +100,7 @@ class ConfigurationTest < Test::Unit::TestCase
101
100
 
102
101
  plugin_opts = Compass.configuration.to_sass_plugin_options
103
102
 
104
- assert load_paths.include?("/home/chris/foo")
103
+ assert load_paths.include?("/home/chris/foo"), "Expected to find /home/chris/foo in #{load_paths.inspect}"
105
104
  assert load_paths.include?("/path/to/my/framework"), load_paths.inspect
106
105
  assert_equal "/home/chris/my_compass_project/css/framework", plugin_opts[:template_location].find{|s,c| s == "/path/to/my/framework"}[1]
107
106
  assert_equal "/home/chris/my_compass_project/css/foo", plugin_opts[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1]
@@ -110,7 +109,6 @@ class ConfigurationTest < Test::Unit::TestCase
110
109
  # Require any additional compass plugins here.
111
110
  project_path = "/home/chris/my_compass_project"
112
111
 
113
- # Set this to the root of your project when deployed:
114
112
  http_path = "/"
115
113
  css_dir = "css"
116
114
 
@@ -141,7 +139,7 @@ EXPECTED
141
139
 
142
140
  load_paths = load_paths_as_strings(Compass.configuration.to_sass_engine_options[:load_paths])
143
141
 
144
- assert load_paths.include?("/home/chris/foo")
142
+ assert load_paths.include?("/home/chris/foo"), "Expected to find /home/chris/foo in #{load_paths.inspect}"
145
143
  assert load_paths.include?("/path/to/my/framework"), load_paths.inspect
146
144
  assert_equal "/home/chris/my_compass_project/css/framework", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/path/to/my/framework"}[1]
147
145
  assert_equal "/home/chris/my_compass_project/css/foo", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1]
@@ -150,7 +148,6 @@ EXPECTED
150
148
  # Require any additional compass plugins here.
151
149
  project_path = "/home/chris/my_compass_project"
152
150
 
153
- # Set this to the root of your project when deployed:
154
151
  http_path = "/"
155
152
  css_dir = "css"
156
153
 
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+ require 'compass'
3
+ require 'stringio'
4
+
5
+ class ConfigurationTest < Test::Unit::TestCase
6
+
7
+ setup do
8
+ Compass.reset_configuration!
9
+ end
10
+
11
+ after do
12
+ Compass.reset_configuration!
13
+ end
14
+
15
+ def test_defaults
16
+ contents = StringIO.new(<<-CONFIG)
17
+ project_type = :rails
18
+ CONFIG
19
+ config = Compass.configuration_for(contents, "config/compass.rb")
20
+
21
+ Compass.add_project_configuration(config, :project_type => "rails")
22
+
23
+ assert_equal 'public/images', Compass.configuration.images_dir
24
+ assert_equal 'public/stylesheets', Compass.configuration.css_dir
25
+ assert_equal 'public/fonts', Compass.configuration.fonts_dir
26
+
27
+ assert_equal '/', Compass.configuration.http_path
28
+ assert_equal '/images', Compass.configuration.http_images_path
29
+ assert_equal '/stylesheets', Compass.configuration.http_stylesheets_path
30
+ assert_equal '/fonts', Compass.configuration.http_fonts_path
31
+
32
+ # Other default values must wait until I have a better idea of how to mock Sass::Util.app_geq
33
+ end
34
+
35
+ def test_http_path_change
36
+ contents = StringIO.new(<<-CONFIG)
37
+ project_type = :rails
38
+
39
+ http_path = "/test/alternative_path"
40
+ CONFIG
41
+ config = Compass.configuration_for(contents, "config/compass.rb")
42
+
43
+ Compass.add_project_configuration(config, :project_type => "rails")
44
+
45
+ assert_equal '/test/alternative_path', Compass.configuration.http_path
46
+ assert_equal '/test/alternative_path/images', Compass.configuration.http_images_path
47
+ assert_equal '/test/alternative_path/stylesheets', Compass.configuration.http_stylesheets_path
48
+ assert_equal '/test/alternative_path/fonts', Compass.configuration.http_fonts_path
49
+ end
50
+ end
@@ -65,18 +65,21 @@ class SassExtensionsTest < Test::Unit::TestCase
65
65
  end
66
66
 
67
67
  def test_trig_functions
68
+ assert_equal "0.841", evaluate("sin(1)")
68
69
  assert_equal "0.841px", evaluate("sin(1px)")
69
70
  assert_equal "0.0", evaluate("sin(pi())")
70
71
  assert_equal "1", evaluate("sin(pi() / 2)")
71
- assert_equal "1", evaluate("sin(180deg)")
72
+ assert_equal "0.0", evaluate("sin(180deg)")
72
73
  assert_equal "-1", evaluate("sin(3* pi() / 2)")
73
74
  assert_equal "-1", evaluate("cos(pi())")
74
- assert_equal "-1", evaluate("cos(360deg)")
75
+ assert_equal "1", evaluate("cos(360deg)")
76
+ assert_equal "-0.176", evaluate("sin(270)")
75
77
  assert_equal "1", evaluate("cos(2*pi())")
76
78
  assert_equal "0.0", evaluate("cos(pi() / 2)")
77
79
  assert_equal "0.0", evaluate("cos(3* pi() / 2)")
78
80
  assert_equal "0.0", evaluate("tan(pi())")
79
81
  assert_equal "0.0", evaluate("tan(360deg)")
82
+ assert_equal "0.959", evaluate("sin(360)")
80
83
  assert evaluate("tan(pi()/2 - 0.0001)").to_f > 1000, evaluate("tan(pi()/2 - 0.0001)")
81
84
  assert evaluate("tan(pi()/2 + 0.0001)").to_f < -1000, evaluate("tan(pi()/2 - 0.0001)")
82
85
  end
@@ -95,9 +98,18 @@ class SassExtensionsTest < Test::Unit::TestCase
95
98
  assert_equal "true", evaluate("prefixed(-css2, css2-fallback(css3, css2))")
96
99
  end
97
100
 
98
- def test_reject
99
- assert_equal "b d", evaluate("reject(a b c d, a, c)")
100
- assert_equal "a b c d", evaluate("reject(a b c d, e)")
101
+ %w(stylesheet_url font_url image_url generated_image_url).each do |helper|
102
+ class_eval %Q{
103
+ def test_#{helper}_helper_defers_to_existing_helper
104
+ c = Class.new do
105
+ def #{helper}(*args)
106
+ :original
107
+ end
108
+ end
109
+ c.send(:include, Compass::SassExtensions::Functions::Urls)
110
+ assert_equal :original, c.new.#{helper}("logo.png")
111
+ end
112
+ }
101
113
  end
102
114
 
103
115
  protected
@@ -0,0 +1,57 @@
1
+ require 'test_helper'
2
+
3
+ class ImageRowTest < Test::Unit::TestCase
4
+ include SpriteHelper
5
+ def setup
6
+ create_sprite_temp
7
+ file = StringIO.new("images_path = #{@images_src_path.inspect}\n")
8
+ Compass.add_configuration(file, "sprite_config")
9
+ @filenames = %w(large.png large_square.png medium.png tall.png small.png)
10
+ @image_files = Dir["#{@images_src_path}/image_row/*.png"].sort
11
+ @images = @image_files.map do |img|
12
+ img.gsub!("#{@images_src_path}/", '')
13
+ Compass::SassExtensions::Sprites::Image.new(nil, img, {})
14
+ end
15
+ image_row(1000)
16
+ end
17
+
18
+ def teardown
19
+ clean_up_sprites
20
+ end
21
+
22
+ def image_row(max)
23
+ @image_row = Compass::SassExtensions::Sprites::ImageRow.new(max)
24
+ end
25
+
26
+ def populate_row
27
+ @images.each do |image|
28
+ assert @image_row.add(image)
29
+ end
30
+ end
31
+
32
+ it "should return false if image will not fit in row" do
33
+ image_row(100)
34
+ img = Compass::SassExtensions::Sprites::Image.new(nil, File.join('image_row', 'large.png'), {})
35
+ assert !@image_row.add(img)
36
+ end
37
+
38
+ it "should have 5 images" do
39
+ populate_row
40
+ assert_equal 5, @image_row.images.size
41
+ end
42
+
43
+ it "should return max image width" do
44
+ populate_row
45
+ assert_equal 400, @image_row.width
46
+ end
47
+
48
+ it "should return max image height" do
49
+ populate_row
50
+ assert_equal 40, @image_row.height
51
+ end
52
+
53
+ it "should have an efficiency rating" do
54
+ populate_row
55
+ assert_equal 1 - (580.0 / 1000.0), @image_row.efficiency
56
+ end
57
+ end
@@ -1,49 +1,41 @@
1
1
  require 'test_helper'
2
2
  require 'mocha'
3
3
  require 'ostruct'
4
- class SpritesImageTest < Test::Unit::TestCase
5
-
6
4
 
5
+ class SpritesImageTest < Test::Unit::TestCase
6
+ include SpriteHelper
7
7
  def setup
8
- @images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images')
9
- file = StringIO.new("images_path = #{@images_src_path.inspect}\n")
10
- Compass.add_configuration(file, "sprite_config")
11
- @repeat = 'no-repeat'
12
- @spacing = 0
13
- @position = 100
14
- @offset = 100
8
+ create_sprite_temp
15
9
  end
16
10
 
17
- let(:sprite_filename) { 'squares/ten-by-ten.png' }
18
- let(:sprite_path) { File.join(@images_src_path, sprite_filename) }
19
- let(:sprite_name) { File.basename(sprite_filename, '.png') }
11
+ SPRITE_FILENAME = 'selectors/ten-by-ten.png'
20
12
 
21
- def parent
22
- importer = Compass::SpriteImporter.new(:uri => "selectors/*.png", :options => options)
23
- @parent ||= Compass::SassExtensions::Sprites::SpriteMap.new(importer.sprite_names.map{|n| "selectors/#{n}.png"}, importer.path, importer.name, importer.sass_engine, importer.options)
13
+ def sprite_path
14
+ File.join(@images_tmp_path, SPRITE_FILENAME)
24
15
  end
25
16
 
26
- let(:options) do
27
- options = {:offset => @offset}
28
- options.stubs(:get_var).with(anything).returns(nil)
29
- ::OpenStruct.any_instance.stubs(:unitless?).returns(true)
30
- options.stubs(:get_var).with("#{sprite_name}-repeat").returns(::OpenStruct.new(:value => @repeat))
31
- options.stubs(:get_var).with("#{sprite_name}-spacing").returns(::OpenStruct.new(:value => @spacing))
32
- options.stubs(:get_var).with("#{sprite_name}-position").returns(::OpenStruct.new(:value => @position))
33
- options
17
+ def sprite_name
18
+ File.basename(SPRITE_FILENAME, '.png')
34
19
  end
35
20
 
36
-
21
+ def digest
22
+ Digest::MD5.file(sprite_path).hexdigest
23
+ end
37
24
 
38
- let(:digest) { Digest::MD5.file(sprite_path).hexdigest }
39
-
40
-
41
- let(:image) { Compass::SassExtensions::Sprites::Image.new(parent, File.join(sprite_filename), options)}
25
+ def test_map(options ={})
26
+ options = {'cleanup' => Sass::Script::Bool.new(true), 'layout' => Sass::Script::String.new('vertical')}.merge(options)
27
+ map = sprite_map_test(options)
28
+ end
29
+
30
+ def test_image(options ={})
31
+ test_map(options).images.first
32
+ end
42
33
 
43
34
  test 'initialize' do
35
+ image = test_image
44
36
  assert_equal sprite_name, image.name
45
37
  assert_equal sprite_path, image.file
46
- assert_equal sprite_filename, image.relative_file
38
+ assert_equal SPRITE_FILENAME, image.relative_file
47
39
  assert_equal 10, image.width
48
40
  assert_equal 10, image.height
49
41
  assert_equal digest, image.digest
@@ -52,46 +44,62 @@ class SpritesImageTest < Test::Unit::TestCase
52
44
  end
53
45
 
54
46
  test 'hover' do
55
- assert_equal 'ten-by-ten_hover', image.hover.name
47
+ assert_equal 'ten-by-ten_hover', test_image.hover.name
56
48
  end
57
49
 
58
50
  test 'no parent' do
59
- assert_nil image.parent
60
- end
61
-
62
- test 'image type is nil' do
63
- @repeat = nil
64
- assert_nil image.repeat
51
+ assert_nil test_image.parent
65
52
  end
66
-
67
53
 
68
54
  test 'image type is "global"' do
69
- @repeat = 'global'
70
- assert_equal @repeat, image.repeat
55
+ image = test_image "ten_by_ten_repeat" => Sass::Script::String.new('global')
56
+ assert_equal 'global', image.repeat
71
57
  end
72
58
 
73
59
  test 'image type is "no-repeat"' do
74
- assert_equal 'no-repeat', image.repeat
60
+ assert_equal 'no-repeat', test_image.repeat
75
61
  end
76
62
 
77
63
  test 'image position' do
78
- assert_equal Sass::Script::Number.new(100, ["px"]).value, image.position.value
64
+ image = test_image "ten_by_ten_position" => Sass::Script::Number.new(100, ["px"])
65
+ assert_equal 100, image.position.value
79
66
  end
80
67
 
81
68
  test 'image spacing' do
82
69
  @spacing = 10
83
- assert_equal @spacing, image.spacing
70
+ image = test_image "spacing" => Sass::Script::Number.new(100, ["px"])
71
+ assert_equal 100, image.spacing
84
72
  end
85
73
 
86
74
  test 'offset' do
87
- assert_equal @offset, image.offset
75
+ image = test_image "ten_by_ten_position" => Sass::Script::Number.new(100, ["px"])
76
+ assert_equal 100, image.offset
88
77
  end
89
78
 
90
79
  test 'neither, uses 0' do
91
- @offset = 0
92
- img = image
80
+ img = test_image
93
81
  img.position.stubs(:unitless?).returns(false)
94
82
  assert_equal 0, img.offset
95
83
  end
96
84
 
85
+
86
+ test 'gets name for sprite in search path' do
87
+ Compass.reset_configuration!
88
+ uri = 'foo/*.png'
89
+ other_folder = File.join(@images_tmp_path, '../other-temp')
90
+ FileUtils.mkdir_p other_folder
91
+ FileUtils.mkdir_p File.join(other_folder, 'foo')
92
+ %w(my bar).each do |file|
93
+ FileUtils.touch(File.join(other_folder, "foo/#{file}.png"))
94
+ end
95
+ config = Compass::Configuration::Data.new('config')
96
+ config.images_path = @images_tmp_path
97
+ config.sprite_load_path = [@images_tmp_path, other_folder]
98
+ Compass.add_configuration(config, "sprite_config")
99
+ image = Compass::SassExtensions::Sprites::Image.new(test_map, "foo/my.png", {})
100
+ assert_equal File.join(other_folder, 'foo/my.png'), image.file
101
+ assert_equal 0, image.size
102
+ FileUtils.rm_rf other_folder
103
+ end
104
+
97
105
  end