Merge branch 'master' into rails31

* master:
  Prepare the next release version
  Fix CSS3 background attribute
  Version Bump & Prepare for v0.11.2
  Strong tags in the docs should be bold.
  Fixes sprites file names with sprockets, modifies tests accordingly to new structure.
  removed all cacheing from importer class it causes more problems then it was worth
  gemfile
  removed another instance cache in the importer that could be problematic
  updated importer to validate that sprites are png files
  run bundle exec when running tests
  cleaned up some over zelious cacheing that was causing inconsistancy problems
  added test for sprite importer
  removed unneeded cache
  readded mtime to importer class
  typo: appliction
  Update test case for flexible box.
  Enable IE 10 support for flexible box with the -ms prefix.
This commit is contained in:
Chris Eppstein 2011-06-10 16:00:04 -07:00
commit ba5bec3e09
19 changed files with 181 additions and 85 deletions

View File

@ -4,3 +4,4 @@ rvm:
- jruby
- rbx
- ree
script: "bundle exec rake test"

View File

@ -7,7 +7,7 @@ GIT
PATH
remote: .
specs:
compass (0.11.1.d9e4054)
compass (0.11.1.f248c22)
chunky_png (~> 1.1)
fssm (>= 0.2.7)
sass (~> 3.1)
@ -50,7 +50,7 @@ GEM
autotest-fsevent (0.2.5)
sys-uname
builder (2.1.2)
chunky_png (1.1.1)
chunky_png (1.2.0)
compass-validator (3.0.0)
css_parser (1.0.1)
cucumber (0.9.4)

View File

@ -1,5 +1,7 @@
---
:major: 0
:minor: 11
:build: 1
:patch: 3
:state: rc
:build: 0
:name: Antares

View File

@ -14,16 +14,13 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/
The Documentation for the [latest preview release](http://beta.compass-style.org/)
0.11.3 (PENDING)
0.11.2 (06/10/2011)
-------------------
* Sprites will now by default remove any old versions of the sprite a new variable has been created to override this.
* Sprites will now by default remove any old versions of the sprite. A new configuration
variable has been created to override this.
* Nested sprites are now supported using globs `@import 'nested/**/*.png';`.
* Fixed a bug that was causing sprite variable options to not get passed to the image classes.
* Sass Colors will no longer cause an error if you use them as sprite names.
0.11.2 (05/01/2011)
-------------------
* Added support for -ms gradients in background-image and background properties
* Give a better error if Sass::Script::Functions.declare does not exist.

View File

@ -1,7 +1,7 @@
---
title: Application Integration
layout: tutorial
crumb: Appliction Integration
crumb: Application Integration
classnames:
- tutorial
---

View File

@ -25,7 +25,7 @@ classnames:
Example (more examples are available by following the links below):
<pre><code class="source-code scss">.in-css3 {
background: image-url("foo.png"),
background: url(foo.png),
linear-gradient(top left, #333, #0c0),
radial-gradient(#c00, #fff 100px);
}

View File

@ -3,7 +3,7 @@
// display:box; must be used for any of the other flexbox mixins to work properly
@mixin display-box {
@include experimental-value(display, box,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -16,7 +16,7 @@ $default-box-orient: horizontal !default;
) {
$orientation : unquote($orientation);
@include experimental(box-orient, $orientation,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -29,7 +29,7 @@ $default-box-align: stretch !default;
) {
$alignment : unquote($alignment);
@include experimental(box-align, $alignment,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -43,7 +43,7 @@ $default-box-flex: 0 !default;
$flex: $default-box-flex
) {
@include experimental(box-flex, $flex,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -55,7 +55,7 @@ $default-box-flex-group: 1 !default;
$group: $default-box-flex-group
) {
@include experimental(box-flex-group, $group,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -67,7 +67,7 @@ $default-box-ordinal-group: 1 !default;
$group: $default-ordinal-flex-group
) {
@include experimental(box-ordinal-group, $group,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -80,7 +80,7 @@ $default-box-direction: normal !default;
) {
$direction: unquote($direction);
@include experimental(box-direction, $direction,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -93,7 +93,7 @@ $default-box-lines: single !default;
) {
$lines: unquote($lines);
@include experimental(box-lines, $lines,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}
@ -106,6 +106,6 @@ $default-box-pack: start !default;
) {
$pack: unquote($pack);
@include experimental(box-pack, $pack,
-moz, -webkit, not -o, not -ms, not -khtml, official
-moz, -webkit, not -o, -ms, not -khtml, official
);
}

View File

@ -96,7 +96,7 @@ module Compass::SassExtensions::Functions::Sprites
def sprite_url(map)
verify_map(map, "sprite-url")
map.generate
image_url(Sass::Script::String.new("#{map.path}-#{map.uniqueness_hash}.png"),
image_url(Sass::Script::String.new("#{map.path}-s#{map.uniqueness_hash}.png"),
Sass::Script::Bool.new(false),
Sass::Script::Bool.new(false))
end

View File

@ -114,7 +114,7 @@ module Compass
# The on-the-disk filename of the sprite
def filename
File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png")
File.join(Compass.configuration.images_path, "#{path}-s#{uniqueness_hash}.png")
end
# Generate a sprite image if necessary

View File

@ -3,14 +3,13 @@ module Compass
attr_accessor :uri, :options
VAILD_FILE_NAME = /\A#{Sass::SCSS::RX::IDENT}\Z/
SPRITE_IMPORTER_REGEX = %r{((.+/)?([^\*.]+))/(.+?)\.png}
VALID_EXTENSIONS = ['.png']
def self.load(uri, options)
Compass.quick_cache "Sprite_map:#{uri}#{options.inspect}", 5 do
klass = Compass::SpriteImporter.new
klass.uri, klass.options = uri, options
klass
end
end
def initialize(options ={})
@uri, @options = '', {}
@ -43,7 +42,12 @@ module Compass
other.class == self.class
end
def mtime(uri, options)
@uri, @options = uri, options
files.sort.inject(Time.at(0)) do |max_time, file|
(t = File.mtime(file)) > max_time ? t : max_time
end
end
def key(uri, options={})
@uri, @options = uri, options
@ -51,12 +55,10 @@ module Compass
end
def self.path_and_name(uri)
Compass.quick_cache "Sprite_map_name:#{uri}", 5 do
if uri =~ SPRITE_IMPORTER_REGEX
[$1, $3]
else
[nil, nil]
end
raise Compass::Error "invalid sprite path"
end
end
@ -74,12 +76,12 @@ module Compass
# Returns the Glob of image files for this sprite
def files
@files ||= Dir[File.join(Compass.configuration.images_path, uri)].sort
Dir[File.join(Compass.configuration.images_path, uri)].sort
end
# Returns an Array of image names without the file extension
def sprite_names
@sprite_names ||= files.collect do |file|
files.collect do |file|
filename = File.basename(file, '.png')
unless VAILD_FILE_NAME =~ filename
raise Compass::Error, "Sprite file names must be legal css identifiers. Please rename #{File.basename(file)}"
@ -88,13 +90,22 @@ module Compass
end
end
def validate_sprites!
files.each do |file|
unless VALID_EXTENSIONS.include? File.extname(file)
raise Compass::Error, "Invalid sprite extension only: #{VALID_EXTENSIONS.join(',')} images are allowed"
end
end
end
# Returns the sass options for this sprite
def sass_options
@sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self)
options.merge(:filename => name, :syntax => :scss, :importer => self)
end
# Returns a Sass::Engine for this sprite object
def sass_engine
validate_sprites!
Sass::Engine.new(content_for_images, sass_options)
end

View File

@ -27,7 +27,7 @@ describe Compass::SassExtensions::Sprites::Base do
its(:generation_required?) { should be_true }
its(:uniqueness_hash) { should == 'ef52c5c63a'}
its(:outdated?) { should be_true }
its(:filename) { should == File.join(@images_tmp_path, "#{@base.path}-#{@base.uniqueness_hash}.png")}
its(:filename) { should == File.join(@images_tmp_path, "#{@base.path}-s#{@base.uniqueness_hash}.png")}
it "should return the 'ten-by-ten' image" do
subject.image_for('ten-by-ten').name.should == 'ten-by-ten'

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,84 +1,103 @@
.hbox {
display: -moz-box;
display: -webkit-box;
display: -ms-box;
display: box;
-moz-box-orient: horizontal;
-webkit-box-orient: horizontal;
-ms-box-orient: horizontal;
box-orient: horizontal;
-moz-box-align: stretch;
-webkit-box-align: stretch;
-ms-box-align: stretch;
box-align: stretch; }
.hbox > * {
-moz-box-flex: 0;
-webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; }
.vbox {
display: -moz-box;
display: -webkit-box;
display: -ms-box;
display: box;
-moz-box-orient: vertical;
-webkit-box-orient: vertical;
-ms-box-orient: vertical;
box-orient: vertical;
-moz-box-align: stretch;
-webkit-box-align: stretch;
-ms-box-align: stretch;
box-align: stretch; }
.vbox > * {
-moz-box-flex: 0;
-webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; }
.spacer {
-moz-box-flex: 1;
-webkit-box-flex: 1;
-ms-box-flex: 1;
box-flex: 1; }
.reverse {
-moz-box-direction: reverse;
-webkit-box-direction: reverse;
-ms-box-direction: reverse;
box-direction: reverse; }
.box-flex-0 {
-moz-box-flex: 0;
-webkit-box-flex: 0;
-ms-box-flex: 0;
box-flex: 0; }
.box-flex-1 {
-moz-box-flex: 1;
-webkit-box-flex: 1;
-ms-box-flex: 1;
box-flex: 1; }
.box-flex-2 {
-moz-box-flex: 2;
-webkit-box-flex: 2;
-ms-box-flex: 2;
box-flex: 2; }
.box-flex-group-0 {
-moz-box-flex-group: 0;
-webkit-box-flex-group: 0;
-ms-box-flex-group: 0;
box-flex-group: 0; }
.box-flex-group-1 {
-moz-box-flex-group: 1;
-webkit-box-flex-group: 1;
-ms-box-flex-group: 1;
box-flex-group: 1; }
.box-flex-group-2 {
-moz-box-flex-group: 2;
-webkit-box-flex-group: 2;
-ms-box-flex-group: 2;
box-flex-group: 2; }
.start {
-moz-box-pack: start;
-webkit-box-pack: start;
-ms-box-pack: start;
box-pack: start; }
.end {
-moz-box-pack: end;
-webkit-box-pack: end;
-ms-box-pack: end;
box-pack: end; }
.center {
-moz-box-pack: center;
-webkit-box-pack: center;
-ms-box-pack: center;
box-pack: center; }

View File

@ -1,5 +1,5 @@
.flag-sprite, #flags .us, #flags .au, #flags .ca, #flags .es, #flags .eg, #flags .ly, .flag-ad, .flag-ae, .flag-af, .flag-ag, .flag-ai, .flag-al, .flag-am, .flag-an, .flag-ao, .flag-ar, .flag-as, .flag-at, .flag-au, .flag-aw, .flag-ax, .flag-az, .flag-ba, .flag-bb, .flag-bd, .flag-be, .flag-bf, .flag-bg, .flag-bh, .flag-bi, .flag-bj, .flag-bm, .flag-bn, .flag-bo, .flag-br, .flag-bs, .flag-bt, .flag-bv, .flag-bw, .flag-by, .flag-bz, .flag-ca, .flag-catalonia, .flag-cc, .flag-cd, .flag-cf, .flag-cg, .flag-ch, .flag-ci, .flag-ck, .flag-cl, .flag-cm, .flag-cn, .flag-co, .flag-cr, .flag-cs, .flag-cu, .flag-cv, .flag-cx, .flag-cy, .flag-cz, .flag-de, .flag-dj, .flag-dk, .flag-dm, .flag-do, .flag-dz, .flag-ec, .flag-ee, .flag-eg, .flag-eh, .flag-england, .flag-er, .flag-es, .flag-et, .flag-europeanunion, .flag-fam, .flag-fi, .flag-fj, .flag-fk, .flag-fm, .flag-fo, .flag-fr, .flag-ga, .flag-gb, .flag-gd, .flag-ge, .flag-gf, .flag-gh, .flag-gi, .flag-gl, .flag-gm, .flag-gn, .flag-gp, .flag-gq, .flag-gr, .flag-gs, .flag-gt, .flag-gu, .flag-gw, .flag-gy, .flag-hk, .flag-hm, .flag-hn, .flag-hr, .flag-ht, .flag-hu, .flag-id-2, .flag-ie, .flag-il, .flag-in, .flag-io, .flag-iq, .flag-ir, .flag-is, .flag-it, .flag-jm, .flag-jo, .flag-jp, .flag-ke, .flag-kg, .flag-kh, .flag-ki, .flag-km, .flag-kn, .flag-kp, .flag-kr, .flag-kw, .flag-ky, .flag-kz, .flag-la, .flag-lb, .flag-lc, .flag-li, .flag-lk, .flag-lr, .flag-ls, .flag-lt, .flag-lu, .flag-lv, .flag-ly, .flag-ma, .flag-mc, .flag-md, .flag-me, .flag-mg, .flag-mh, .flag-mk, .flag-ml, .flag-mm, .flag-mn, .flag-mo, .flag-mp, .flag-mq, .flag-mr, .flag-ms, .flag-mt, .flag-mu, .flag-mv, .flag-mw, .flag-mx, .flag-my, .flag-mz, .flag-na, .flag-nc, .flag-ne, .flag-nf, .flag-ng, .flag-ni, .flag-nl, .flag-no, .flag-np, .flag-nr, .flag-nu, .flag-nz, .flag-om, .flag-pa, .flag-pe, .flag-pf, .flag-pg, .flag-ph, .flag-pk, .flag-pl, .flag-pm, .flag-pn, .flag-pr, .flag-ps, .flag-pt, .flag-pw, .flag-py, .flag-qa, .flag-re, .flag-ro, .flag-rs, .flag-ru, .flag-rw, .flag-sa, .flag-sb, .flag-sc, .flag-scotland, .flag-sd, .flag-se, .flag-sg, .flag-sh, .flag-si, .flag-sj, .flag-sk, .flag-sl, .flag-sm, .flag-sn, .flag-so, .flag-sr, .flag-st, .flag-sv, .flag-sy, .flag-sz, .flag-tc, .flag-td, .flag-tf, .flag-tg, .flag-th, .flag-tj, .flag-tk, .flag-tl, .flag-tm, .flag-tn, .flag-to, .flag-tr, .flag-tt, .flag-tv, .flag-tw, .flag-tz, .flag-ua, .flag-ug, .flag-um, .flag-us, .flag-uy, .flag-uz, .flag-va, .flag-vc, .flag-ve, .flag-vg, .flag-vi, .flag-vn, .flag-vu, .flag-wales, .flag-wf, .flag-ws, .flag-ye, .flag-yt, .flag-za, .flag-zm, .flag-zw {
background: url('/images/flag-03c3b29b35.png') no-repeat; }
background: url('/images/flag-s03c3b29b35.png') no-repeat; }
#flags .us {
background-position: 0 -2520px;

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

@ -59,7 +59,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-161c60ad78.png') no-repeat;
background: url('/squares-s161c60ad78.png') no-repeat;
}
.squares-ten-by-ten {
@ -70,8 +70,8 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -10px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_md5('squares-*.png'), 'fcc93d7b279c2ad6898fbca49cbd01e1'
assert_equal image_size('squares-s*.png'), [20, 30]
assert_equal image_md5('squares-s*.png'), 'fcc93d7b279c2ad6898fbca49cbd01e1'
end
it "should generate sprite classes with dimensions" do
@ -82,7 +82,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-161c60ad78.png') no-repeat;
background: url('/squares-s161c60ad78.png') no-repeat;
}
.squares-ten-by-ten {
@ -97,7 +97,7 @@ class SpritesTest < Test::Unit::TestCase
width: 20px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_size('squares-s*.png'), [20, 30]
end
it "should provide sprite mixin" do
@ -114,7 +114,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .cubicle, .large-cube {
background: url('/squares-161c60ad78.png') no-repeat;
background: url('/squares-s161c60ad78.png') no-repeat;
}
.cubicle {
@ -127,7 +127,7 @@ class SpritesTest < Test::Unit::TestCase
width: 20px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_size('squares-s*.png'), [20, 30]
end
# CUSTOMIZATIONS:
@ -139,10 +139,10 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.circles {
background: url('/squares-161c60ad78.png') no-repeat;
background: url('/squares-s161c60ad78.png') no-repeat;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_size('squares-s*.png'), [20, 30]
end
it "should calculate the spacing between images but not before first image" do
@ -153,7 +153,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-89450808af.png') no-repeat;
background: url('/squares-s89450808af.png') no-repeat;
}
.squares-ten-by-ten {
@ -164,7 +164,7 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -43px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 63]
assert_equal image_size('squares-s*.png'), [20, 63]
end
it "should calculate the spacing between images" do
@ -175,7 +175,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-673837183a.png') no-repeat;
background: url('/squares-s673837183a.png') no-repeat;
}
.squares-ten-by-ten {
@ -186,7 +186,7 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -43px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 63]
assert_equal image_size('squares-s*.png'), [20, 63]
end
it "should calculate the maximum spacing between images" do
@ -198,7 +198,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-1cd84c9068.png') no-repeat;
background: url('/squares-s1cd84c9068.png') no-repeat;
}
.squares-ten-by-ten {
@ -209,7 +209,7 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -54px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 74]
assert_equal image_size('squares-s*.png'), [20, 74]
end
it "should calculate the maximum spacing between images in reversed order" do
@ -221,7 +221,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-f25b7090ca.png') no-repeat;
background: url('/squares-sf25b7090ca.png') no-repeat;
}
.squares-ten-by-ten {
@ -232,7 +232,7 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -54px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 74]
assert_equal image_size('squares-s*.png'), [20, 74]
end
it "should calculate the default spacing between images" do
@ -243,7 +243,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-d66bf24bab.png') no-repeat;
background: url('/squares-sd66bf24bab.png') no-repeat;
}
.squares-ten-by-ten {
@ -254,7 +254,7 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -32px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 52]
assert_equal image_size('squares-s*.png'), [20, 52]
end
it "should use position adjustments in functions" do
@ -278,7 +278,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite {
background: url('/squares-8e490168dd.png') no-repeat;
background: url('/squares-s8e490168dd.png') no-repeat;
}
.adjusted-percentage {
@ -293,8 +293,8 @@ class SpritesTest < Test::Unit::TestCase
background-position: -3px -8px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_md5('squares-*.png'), '652b67f5e9092520d6f26caae7e18012'
assert_equal image_size('squares-s*.png'), [20, 30]
assert_equal image_md5('squares-s*.png'), '652b67f5e9092520d6f26caae7e18012'
end
it "should use position adjustments in mixins" do
@ -316,7 +316,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .adjusted-percentage, .adjusted-px-1, .adjusted-px-2 {
background: url('/squares-8e490168dd.png') no-repeat;
background: url('/squares-s8e490168dd.png') no-repeat;
}
.adjusted-percentage {
@ -331,8 +331,8 @@ class SpritesTest < Test::Unit::TestCase
background-position: -3px -8px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_md5('squares-*.png'), '652b67f5e9092520d6f26caae7e18012'
assert_equal image_size('squares-s*.png'), [20, 30]
assert_equal image_md5('squares-s*.png'), '652b67f5e9092520d6f26caae7e18012'
end
it "should repeat the image" do
@ -343,7 +343,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-a5550fd132.png') no-repeat;
background: url('/squares-sa5550fd132.png') no-repeat;
}
.squares-ten-by-ten {
@ -354,8 +354,8 @@ class SpritesTest < Test::Unit::TestCase
background-position: 0 -10px;
}
CSS
assert_equal image_size('squares-*.png'), [20, 30]
assert_equal image_md5('squares-*.png'), '94abae8440f1b58617f52920b70aaed2'
assert_equal image_size('squares-s*.png'), [20, 30]
assert_equal image_md5('squares-s*.png'), '94abae8440f1b58617f52920b70aaed2'
end
it "should allow the position of a sprite to be specified in absolute pixels" do
@ -367,7 +367,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty {
background: url('/squares-89a274044e.png') no-repeat;
background: url('/squares-s89a274044e.png') no-repeat;
}
.squares-ten-by-ten {
@ -378,8 +378,8 @@ class SpritesTest < Test::Unit::TestCase
background-position: -10px -10px;
}
CSS
assert_equal image_size('squares-*.png'), [30, 30]
assert_equal image_md5('squares-*.png'), '2fb19ef9c83018c93c6f147af3a56cb2'
assert_equal image_size('squares-s*.png'), [30, 30]
assert_equal image_md5('squares-s*.png'), '2fb19ef9c83018c93c6f147af3a56cb2'
end
it "should provide a nice errors for lemonade's old users" do
@ -416,7 +416,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.squares {
background: url('/squares-145869726f.png') 0 -10px no-repeat;
background: url('/squares-s145869726f.png') 0 -10px no-repeat;
}
CSS
end
@ -432,10 +432,10 @@ class SpritesTest < Test::Unit::TestCase
@include sprite-background-position($squares-sprites, "ten-by-ten");
}
SCSS
assert_equal image_size('squares-*.png'), [20, 40]
assert_equal image_size('squares-s*.png'), [20, 40]
assert_correct css, <<-CSS
.squares-sprite {
background: url('/squares-e3c68372d9.png') no-repeat;
background: url('/squares-se3c68372d9.png') no-repeat;
}
.foo {
@ -455,7 +455,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.selectors-sprite, .selectors-ten-by-ten {
background: url('/selectors-edfef809e2.png') no-repeat;
background: url('/selectors-sedfef809e2.png') no-repeat;
}
.selectors-ten-by-ten {
@ -482,7 +482,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.selectors-sprite, a {
background: url('/selectors-edfef809e2.png') no-repeat;
background: url('/selectors-sedfef809e2.png') no-repeat;
}
a {
@ -510,7 +510,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.selectors-sprite, a {
background: url('/selectors-edfef809e2.png') no-repeat;
background: url('/selectors-sedfef809e2.png') no-repeat;
}
a {
@ -538,7 +538,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.ko-sprite, .ko-default_background, .ko-starbg26x27 {
background: url('/ko-cc3f80660d.png') no-repeat;
background: url('/ko-scc3f80660d.png') no-repeat;
}
.ko-default_background {
@ -552,8 +552,8 @@ class SpritesTest < Test::Unit::TestCase
end
it "should generate a sprite and remove the old file" do
FileUtils.touch File.join(@images_tmp_path, "selectors-cc8834Fdd.png")
assert_equal 1, map_files('selectors-*.png').size
FileUtils.touch File.join(@images_tmp_path, "selectors-scc8834Fdd.png")
assert_equal 1, map_files('selectors-s*.png').size
css = render <<-SCSS
@import "selectors/*.png";
a {
@ -561,12 +561,12 @@ class SpritesTest < Test::Unit::TestCase
@include selectors-sprite(ten-by-ten)
}
SCSS
assert_equal 1, map_files('selectors-*.png').size, "File was not removed"
assert_equal 1, map_files('selectors-s*.png').size, "File was not removed"
end
it "should generate a sprite and NOT remove the old file" do
FileUtils.touch File.join(@images_tmp_path, "selectors-cc8834Ftest.png")
assert_equal 1, map_files('selectors-*.png').size
FileUtils.touch File.join(@images_tmp_path, "selectors-scc8834Ftest.png")
assert_equal 1, map_files('selectors-s*.png').size
css = render <<-SCSS
$selectors-clean-up: false;
@import "selectors/*.png";
@ -575,7 +575,7 @@ class SpritesTest < Test::Unit::TestCase
@include selectors-sprite(ten-by-ten)
}
SCSS
assert_equal 2, map_files('selectors-*.png').size, "File was removed"
assert_equal 2, map_files('selectors-s*.png').size, "File was removed"
end
it "should generate a sprite if the sprite is a colorname" do
@ -595,7 +595,7 @@ class SpritesTest < Test::Unit::TestCase
SCSS
assert_correct css, <<-CSS
.nested-sprite, .nested-ten-by-ten {
background: url('/nested-55a8935544.png') no-repeat;
background: url('/nested-s55a8935544.png') no-repeat;
}
.nested-ten-by-ten {

View File

@ -0,0 +1,66 @@
require 'test_helper'
require 'timecop'
class ImporterTest < Test::Unit::TestCase
URI = "selectors/*.png"
def setup
@images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images')
file = StringIO.new("images_path = #{@images_src_path.inspect}\n")
Compass.add_configuration(file, "sprite_config")
@importer = Compass::SpriteImporter.new(:uri => URI, :options => options)
end
def options
{:foo => 'bar'}
end
test "load should return an instance of SpriteImporter" do
assert Compass::SpriteImporter.load(URI, options).is_a?(Compass::SpriteImporter)
end
test "name should return the sprite name" do
assert_equal 'selectors', @importer.name
end
test "path should return the sprite path" do
assert_equal 'selectors', @importer.path
end
test "should return all the sprite names" do
assert_equal ["ten-by-ten", "ten-by-ten_active", "ten-by-ten_hover", "ten-by-ten_target"], @importer.sprite_names
end
test "should have correct mtime" do
thirtydays = Time.now.to_i + (60*60*24*30)
file = Dir[File.join(@images_src_path, URI)].sort.first
File.utime(thirtydays, thirtydays, file)
assert_equal thirtydays, File.mtime(file).to_i
assert_equal thirtydays, @importer.mtime(URI, {}).to_i
end
test "should return sass engine on find" do
assert @importer.find(URI, {}).is_a?(Sass::Engine)
end
test "sass options should contain options" do
assert_equal 'bar', @importer.sass_options[:foo]
end
test "should fail givin bad sprite extensions" do
@images_src_path = File.join(File.dirname(__FILE__), '..', '..', 'fixtures', 'sprites', 'public', 'images')
file = StringIO.new("images_path = #{@images_src_path.inspect}\n")
Compass.add_configuration(file, "sprite_config")
importer = Compass::SpriteImporter.new(:uri => 'bad_extensions/*.jpg', :options => options)
begin
importer.sass_engine
assert false, "Somthing happened an invalid sprite file made it past validation"
rescue Compass::Error => e
assert e.message.include?('.png')
end
end
def taredown
Compass.reset_configuration!
end
end

View File

@ -49,7 +49,7 @@ class SpriteMapTest < Test::Unit::TestCase
end
it 'should have correct filename' do
assert_equal File.join(@images_tmp_path, "#{@base.path}-#{@base.uniqueness_hash}.png"), @base.filename
assert_equal File.join(@images_tmp_path, "#{@base.path}-s#{@base.uniqueness_hash}.png"), @base.filename
end
it "should return the 'ten-by-ten' image" do