sassc 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9be84b195a429b61aff99dbfc6f9519d5cb0fde8
4
- data.tar.gz: 4cb83e248f3ad95eed85bf61691bf3adf11af5a7
3
+ metadata.gz: 7a212192b55be4390eb3420aefcbb2b9c0240852
4
+ data.tar.gz: 24aa593a9b043f454dd0da299cc18572eb480bee
5
5
  SHA512:
6
- metadata.gz: 4f4cd497fd81d8467d81f7b641238c2c948829b0640b1d26df25d2c33c78e0b3cec60ff3b79734f3fc1dbad6c483b0e70840e761b00c2cf58b102fb11fd2a478
7
- data.tar.gz: 48e9398643a1472b4b807d5fcfb52d5b1a060d384dda86d3b7c83e1f88444b47197bf50efc92316ff9ff4af146b14f4252f8469f08634ebdda13b99026e3ec3e
6
+ metadata.gz: e04ff420d46edf08fc4cf3a330d35f0212ddf294e6228e20768d86c9cc9ef628863477e34e3f143c2fd546a9979781701a3c991d44cb8c908f6062eceef6c1ca
7
+ data.tar.gz: 2a356fd1f4f954d4cd8a60c9e79eba076398d60afa48822fe12f51edf58738ea79bf83f4eb60dcb07395d9ebcdba7a937277f4e6d6a59bb37e0561633c4816fd
@@ -3,7 +3,8 @@ language: ruby
3
3
  bundler_args: "--binstubs --standalone --without documentation --path ../bundle"
4
4
  script: "bundle exec rake test"
5
5
  rvm:
6
- - 1.9.3
7
6
  - 2.0.0
8
7
  - 2.1.5
9
8
  - 2.2.0
9
+ notifications:
10
+ email: false
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
- # SassC [![Build Status](https://travis-ci.org/bolandrm/sassc.svg?branch=master)](https://travis-ci.org/bolandrm/sassc) [![Gem Version](https://badge.fury.io/rb/sassc.svg)](http://badge.fury.io/rb/sassc)
1
+ # SassC [![Build Status](https://travis-ci.org/bolandrm/sassc-ruby.svg?branch=master)](https://travis-ci.org/bolandrm/sassc-ruby) [![Gem Version](https://badge.fury.io/rb/sassc.svg)](http://badge.fury.io/rb/sassc)
2
2
 
3
- TODO: Write a gem description
3
+ Use `libsass` with Ruby!
4
4
 
5
- ## Usage
5
+ This gem combines the speed of `libsass`, the [Sass C implementation](https://github.com/sass/libsass), with the easy of use of the original [Ruby Sass](https://github.com/sass/sass) library.
6
6
 
7
- TODO: Write usage instructions here
7
+ ### libsass Version
8
+
9
+ [3.1.0](https://github.com/sass/libsass/releases/tag/3.1.0)
8
10
 
9
11
  ## Contributing
10
12
 
@@ -4,3 +4,7 @@ end
4
4
  require_relative "sassc/version"
5
5
  require_relative "sassc/native"
6
6
  require_relative "sassc/engine"
7
+ require_relative "sassc/script"
8
+ require_relative "sassc/cache_stores"
9
+ require_relative "sassc/dependency"
10
+ require_relative "sassc/error"
@@ -0,0 +1,6 @@
1
+ module SassC
2
+ module CacheStores
3
+ end
4
+ end
5
+
6
+ require_relative "cache_stores/base"
@@ -0,0 +1,6 @@
1
+ module SassC
2
+ module CacheStores
3
+ class Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,13 @@
1
+ module SassC
2
+ class Dependency
3
+ attr_reader :options
4
+
5
+ def initialize(filename)
6
+ @options = { filename: filename }
7
+ end
8
+
9
+ def self.from_filenames(filenames)
10
+ filenames.map { |f| new(f) }
11
+ end
12
+ end
13
+ end
@@ -1,13 +1,61 @@
1
1
  module SassC
2
2
  class Engine
3
+ class NotRenderedError < StandardError; end
4
+
3
5
  def initialize(template, options = {})
4
- #@options = self.class.normalize_options(options)
5
6
  @template = template
7
+ @options = options
6
8
  end
7
9
 
8
10
  def render
9
- return _to_tree.render unless @options[:quiet]
10
- Sass::Util.silence_sass_warnings {_to_tree.render}
11
+ data_context = Native.make_data_context(@template)
12
+ context = Native.data_context_get_context(data_context)
13
+ options = Native.context_get_options(context)
14
+
15
+ Native.option_set_is_indented_syntax_src(options, true) if sass?
16
+ Native.option_set_input_path(options, filename) if filename
17
+ Native.option_set_include_path(options, load_paths)
18
+
19
+ status = Script.setup_custom_functions(options, @options) do
20
+ Native.compile_data_context(data_context)
21
+ end
22
+
23
+ css = Native.context_get_output_string(context)
24
+
25
+ if status != 0
26
+ message = SassC::Native.context_get_error_message(context)
27
+ raise SyntaxError.new(message)
28
+ end
29
+
30
+ @dependencies = Native.context_get_included_files(context)
31
+
32
+ Native.delete_data_context(data_context)
33
+
34
+ return css unless quiet?
35
+ end
36
+
37
+ def dependencies
38
+ raise NotRenderedError unless @dependencies
39
+ Dependency.from_filenames(@dependencies)
40
+ end
41
+
42
+ private
43
+
44
+ def quiet?
45
+ @options[:quiet]
46
+ end
47
+
48
+ def filename
49
+ @options[:filename]
50
+ end
51
+
52
+ def sass?
53
+ @options[:syntax] && @options[:syntax].to_sym == :sass
54
+ end
55
+
56
+ def load_paths
57
+ paths = @options[:load_paths]
58
+ paths.join(":") if paths
11
59
  end
12
60
  end
13
61
  end
@@ -0,0 +1,4 @@
1
+ module SassC
2
+ class SyntaxError < StandardError
3
+ end
4
+ end
@@ -38,7 +38,7 @@ module SassC
38
38
 
39
39
  # https://github.com/ffi/ffi/wiki/Examples#array-of-strings
40
40
  def self.return_string_array(ptr)
41
- ptr.read_pointer.null? ? [] : ptr.get_array_of_string(0).compact
41
+ ptr.null? ? [] : ptr.get_array_of_string(0).compact
42
42
  end
43
43
 
44
44
  require_relative "native/native_context_api"
@@ -23,6 +23,10 @@ module SassC
23
23
  # ADDAPI const char* ADDCALL sass_string_get_value (const union Sass_Value* v);
24
24
  attach_function :sass_string_get_value, [:sass_value_ptr], :string
25
25
 
26
+ # ADDAPI size_t ADDCALL sass_list_get_length(const union Sass_Value* v)
27
+ # ADDAPI union Sass_Value* ADDCALL sass_list_get_value (const union Sass_Value* v, size_t i);
28
+ attach_function :sass_list_get_length, [:sass_value_ptr], :size_t
29
+ attach_function :sass_list_get_value, [:sass_value_ptr, :size_t], :sass_value_ptr
26
30
 
27
31
  # Getters for custom function descriptors
28
32
  # ADDAPI const char* ADDCALL sass_function_get_signature (Sass_C_Function_Callback fn);
@@ -0,0 +1,71 @@
1
+ module SassC
2
+ module Script
3
+ def self.custom_functions
4
+ Functions.instance_methods.select do |function|
5
+ Functions.public_method_defined?(function)
6
+ end
7
+ end
8
+
9
+ def self.setup_custom_functions(options, sass_options)
10
+ callbacks = {}
11
+
12
+ list = Native.make_function_list(custom_functions.count)
13
+
14
+ functs = Class.new.extend(Functions)
15
+ def functs.options=(opts)
16
+ @sass_options = opts
17
+ end
18
+ def functs.options
19
+ @sass_options
20
+ end
21
+ functs.options = sass_options
22
+
23
+ custom_functions.each_with_index do |custom_function, i|
24
+ callbacks[custom_function] = FFI::Function.new(:pointer, [:pointer, :pointer]) do |s_args, cookie|
25
+ length = Native.list_get_length(s_args)
26
+
27
+ v = Native.list_get_value(s_args, 0)
28
+ v = Native.string_get_value(v).dup
29
+
30
+ s = String.new(String.unquote(v), String.type(v))
31
+
32
+ value = functs.send(custom_function, s)
33
+
34
+ if value
35
+ value.to_native
36
+ else
37
+ String.new("").to_native
38
+ end
39
+ end
40
+
41
+ callback = Native.make_function(
42
+ formatted_function_name(custom_function),
43
+ callbacks[custom_function],
44
+ nil
45
+ )
46
+
47
+ Native::function_set_list_entry(list, i, callback)
48
+ end
49
+
50
+ Native::option_set_c_functions(options, list)
51
+
52
+ status = yield
53
+
54
+ callbacks
55
+
56
+ status
57
+ end
58
+
59
+ def self.formatted_function_name(function_name)
60
+ params = Functions.instance_method(function_name).parameters
61
+ params = params.select { |param| param[0] == :req }
62
+ .map(&:first)
63
+ .map { |p| "$#{p}" }
64
+ .join(", ")
65
+ "#{function_name}(#{params})"
66
+ end
67
+ end
68
+ end
69
+
70
+ require_relative "script/functions"
71
+ require_relative "script/string"
@@ -0,0 +1,6 @@
1
+ module SassC
2
+ module Script
3
+ module Functions
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,103 @@
1
+ module SassC
2
+ module Script
3
+ class String
4
+ # The Ruby value of the string.
5
+ #
6
+ # @return [String]
7
+ attr_reader :value
8
+
9
+ # Whether this is a CSS string or a CSS identifier.
10
+ # The difference is that strings are written with double-quotes,
11
+ # while identifiers aren't.
12
+ #
13
+ # @return [Symbol] `:string` or `:identifier`
14
+ attr_reader :type
15
+
16
+ def self.value(contents)
17
+ contents.gsub("\\\n", "").gsub(/\\(?:([0-9a-fA-F]{1,6})\s?|(.))/) do
18
+ next $2 if $2
19
+ # Handle unicode escapes as per CSS Syntax Level 3 section 4.3.8.
20
+ code_point = $1.to_i(16)
21
+ if code_point == 0 || code_point > 0x10FFFF ||
22
+ (code_point >= 0xD800 && code_point <= 0xDFFF)
23
+ '�'
24
+ else
25
+ [code_point].pack("U")
26
+ end
27
+ end
28
+ end
29
+
30
+ def self.quote(contents, quote = nil)
31
+ # Short-circuit if there are no characters that need quoting.
32
+ unless contents =~ /[\n\\"']/
33
+ quote ||= '"'
34
+ return "#{quote}#{contents}#{quote}"
35
+ end
36
+
37
+ if quote.nil?
38
+ if contents.include?('"')
39
+ if contents.include?("'")
40
+ quote = '"'
41
+ else
42
+ quote = "'"
43
+ end
44
+ else
45
+ quote = '"'
46
+ end
47
+ end
48
+
49
+ # Replace single backslashes with multiples.
50
+ contents = contents.gsub("\\", "\\\\\\\\")
51
+
52
+ if quote == '"'
53
+ contents = contents.gsub('"', "\\\"")
54
+ else
55
+ contents = contents.gsub("'", "\\'")
56
+ end
57
+
58
+ contents = contents.gsub(/\n(?![a-fA-F0-9\s])/, "\\a").gsub("\n", "\\a ")
59
+ "#{quote}#{contents}#{quote}"
60
+ end
61
+
62
+ def self.type(contents)
63
+ unquote(contents) == contents ? :identifier : :string
64
+ end
65
+
66
+ def self.unquote(contents)
67
+ s = contents.dup
68
+
69
+ case contents[0,1]
70
+ when "'", '"', '`'
71
+ s[0] = ''
72
+ end
73
+
74
+ case contents[-1,1]
75
+ when "'", '"', '`'
76
+ s[-1] = ''
77
+ end
78
+
79
+ return s
80
+ end
81
+
82
+ # Creates a new string.
83
+ #
84
+ # @param value [String] See \{#value}
85
+ # @param type [Symbol] See \{#type}
86
+ def initialize(value, type = :identifier)
87
+ value.freeze unless value.nil? || value == true || value == false
88
+ @value = value
89
+ @type = type
90
+ end
91
+
92
+ def to_native
93
+ Native::make_string(to_s)
94
+ end
95
+
96
+ # @see Value#to_s
97
+ def to_s(opts = {})
98
+ return @value.gsub(/\n\s*/, ' ') if opts[:quote] == :none || @type == :identifier
99
+ SassC::Script::String.quote(value, opts[:quote])
100
+ end
101
+ end
102
+ end
103
+ end
@@ -1,3 +1,3 @@
1
1
  module SassC
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = SassC::VERSION
9
9
  spec.authors = ["Ryan Boland"]
10
10
  spec.email = ["bolandryanm@gmail.com"]
11
- spec.summary = "Use Libsass with Ruby!"
12
- spec.description = "Use Libsass with Ruby!"
11
+ spec.summary = "Use libsass with Ruby!"
12
+ spec.description = "Use libsass with Ruby!"
13
13
  spec.homepage = "https://github.com/bolandrm/sassc-ruby"
14
14
  spec.license = "MIT"
15
15
 
@@ -0,0 +1,122 @@
1
+ require_relative "test_helper"
2
+
3
+ class EngineTest < SassCTest
4
+ def render(data)
5
+ SassC::Engine.new(data).render
6
+ end
7
+
8
+ def test_one_line_comments
9
+ assert_equal <<CSS, render(<<SCSS)
10
+ .foo {
11
+ baz: bang; }
12
+ CSS
13
+ .foo {// bar: baz;}
14
+ baz: bang; //}
15
+ }
16
+ SCSS
17
+ assert_equal <<CSS, render(<<SCSS)
18
+ .foo bar[val="//"] {
19
+ baz: bang; }
20
+ CSS
21
+ .foo bar[val="//"] {
22
+ baz: bang; //}
23
+ }
24
+ SCSS
25
+ end
26
+
27
+ def test_variables
28
+ assert_equal <<CSS, render(<<SCSS)
29
+ blat {
30
+ a: foo; }
31
+ CSS
32
+ $var: foo;
33
+
34
+ blat {a: $var}
35
+ SCSS
36
+
37
+ assert_equal <<CSS, render(<<SCSS)
38
+ foo {
39
+ a: 2;
40
+ b: 6; }
41
+ CSS
42
+ foo {
43
+ $var: 2;
44
+ $another-var: 4;
45
+ a: $var;
46
+ b: $var + $another-var;}
47
+ SCSS
48
+ end
49
+
50
+ def test_dependency_filenames_are_reported
51
+ within_construct do |construct|
52
+ construct.file("not_included.scss", "$size: 30px;")
53
+ construct.file("import_parent.scss", "$size: 30px;")
54
+ construct.file("import.scss", "@import 'import_parent'; $size: 30px;")
55
+ construct.file("styles.scss", "@import 'import.scss'; .hi { width: $size; }")
56
+
57
+ engine = SassC::Engine.new(File.read("styles.scss"))
58
+ engine.render
59
+ deps = engine.dependencies
60
+ filenames = deps.map { |dep| dep.options[:filename] }.sort
61
+
62
+ assert_equal ["import.scss", "import_parent.scss"], filenames
63
+ end
64
+ end
65
+
66
+ def test_no_dependencies
67
+ engine = SassC::Engine.new("$size: 30px;")
68
+ engine.render
69
+ deps = engine.dependencies
70
+ assert_equal [], deps
71
+ end
72
+
73
+ def test_not_rendered_error
74
+ engine = SassC::Engine.new("$size: 30px;")
75
+ assert_raises(SassC::Engine::NotRenderedError) { engine.dependencies }
76
+ end
77
+
78
+ def test_load_paths
79
+ within_construct do |c|
80
+ c.directory("included_1")
81
+ c.directory("included_2")
82
+
83
+ c.file("included_1/import_parent.scss", "$s: 30px;")
84
+ c.file("included_2/import.scss", "@import 'import_parent'; $size: $s;")
85
+ c.file("styles.scss", "@import 'import.scss'; .hi { width: $size; }")
86
+
87
+ assert_equal ".hi {\n width: 30px; }\n", SassC::Engine.new(
88
+ File.read("styles.scss"),
89
+ load_paths: [ "included_1", "included_2" ]
90
+ ).render
91
+ end
92
+ end
93
+
94
+ def test_load_paths_not_configured
95
+ within_construct do |c|
96
+ c.file("included_1/import_parent.scss", "$s: 30px;")
97
+ c.file("included_2/import.scss", "@import 'import_parent'; $size: $s;")
98
+ c.file("styles.scss", "@import 'import.scss'; .hi { width: $size; }")
99
+
100
+ assert_raises(SassC::SyntaxError) {
101
+ SassC::Engine.new(File.read("styles.scss")).render
102
+ }
103
+ end
104
+ end
105
+
106
+ def test_sass_variation
107
+ sass = <<SASS
108
+ $size: 30px
109
+ .foo
110
+ width: $size
111
+ SASS
112
+
113
+ css = <<CSS
114
+ .foo {
115
+ width: 30px; }
116
+ CSS
117
+
118
+ assert_equal css, SassC::Engine.new(sass, syntax: :sass).render
119
+ assert_equal css, SassC::Engine.new(sass, syntax: "sass").render
120
+ assert_raises(SassC::SyntaxError) { SassC::Engine.new(sass).render }
121
+ end
122
+ end
@@ -0,0 +1,10 @@
1
+ div {
2
+ url: url(asset-path("foo.svg"));
3
+ url: url(image-path("foo.png"));
4
+ url: url(video-path("foo.mov"));
5
+ url: url(audio-path("foo.mp3"));
6
+ url: url(font-path("foo.woff"));
7
+ url: url(javascript-path('foo.js'));
8
+ url: url(javascript-path("foo.js"));
9
+ url: url(stylesheet-path("foo.css"));
10
+ }
@@ -0,0 +1,57 @@
1
+ require_relative "test_helper"
2
+
3
+ class FunctionsTest < SassCTest
4
+ module ::SassC::Script::Functions
5
+ def javascript_path(path)
6
+ ::SassC::Script::String.new("/js/#{path.value}", :string)
7
+ end
8
+
9
+ def no_return_path(path)
10
+ nil
11
+ end
12
+
13
+ module Compass
14
+ def stylesheet_path(path)
15
+ ::SassC::Script::String.new("/css/#{path.value}", :identifier)
16
+ end
17
+ end
18
+ include Compass
19
+ end
20
+
21
+ def test_functions_work
22
+ filename = fixture_path('paths.scss')
23
+ assert data = File.read(filename)
24
+
25
+ engine = ::SassC::Engine.new(data, {
26
+ filename: filename,
27
+ syntax: :scss
28
+ })
29
+
30
+ # test identifier / string types
31
+ # test varying quotes
32
+
33
+ assert_equal <<-EOS, engine.render
34
+ div {
35
+ url: url(asset-path("foo.svg"));
36
+ url: url(image-path("foo.png"));
37
+ url: url(video-path("foo.mov"));
38
+ url: url(audio-path("foo.mp3"));
39
+ url: url(font-path("foo.woff"));
40
+ url: url("/js/foo.js");
41
+ url: url("/js/foo.js");
42
+ url: url(/css/foo.css); }
43
+ EOS
44
+ end
45
+
46
+ def test_function_with_no_return_value
47
+ filename = fixture_path('paths.scss')
48
+ assert data = File.read(filename)
49
+
50
+ engine = ::SassC::Engine.new("div {url: url(no-return-path('foo.svg'));}")
51
+
52
+ assert_equal <<-EOS, engine.render
53
+ div {
54
+ url: url(); }
55
+ EOS
56
+ end
57
+ end
@@ -1,18 +1,17 @@
1
1
  require_relative "test_helper"
2
- require "sassc"
3
2
 
4
- module SmokeTest
3
+ module NativeTest
5
4
  SAMPLE_SASS_STRING = "$size: 30px; .hi { width: $size; }"
6
5
  SAMPLE_CSS_OUTPUT = ".hi {\n width: 30px; }\n"
7
6
  BAD_SASS_STRING = "$size = 30px;"
8
7
 
9
- class General < MiniTest::Test
8
+ class General < SassCTest
10
9
  def test_it_reports_the_libsass_version
11
10
  assert_equal "3.1.0", SassC::Native.version
12
11
  end
13
12
  end
14
13
 
15
- class DataContext < MiniTest::Test
14
+ class DataContext < SassCTest
16
15
  def teardown
17
16
  SassC::Native.delete_data_context(@data_context)
18
17
  end
@@ -90,9 +89,7 @@ module SmokeTest
90
89
  end
91
90
  end
92
91
 
93
- class FileContext < MiniTest::Test
94
- include TestConstruct::Helpers
95
-
92
+ class FileContext < SassCTest
96
93
  def around
97
94
  within_construct do |construct|
98
95
  @construct = construct
@@ -2,3 +2,28 @@ require "minitest/autorun"
2
2
  require "minitest/pride"
3
3
  require "minitest/around/unit"
4
4
  require "test_construct"
5
+
6
+ require "sassc"
7
+
8
+ class SassCTest < MiniTest::Test
9
+ include TestConstruct::Helpers
10
+
11
+ FIXTURE_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "fixtures"))
12
+
13
+ def self.test(name, &block)
14
+ define_method("test_#{name.inspect}", &block)
15
+ end
16
+
17
+ def fixture(path)
18
+ IO.read(fixture_path(path))
19
+ end
20
+
21
+ def fixture_path(path)
22
+ if path.match(FIXTURE_ROOT)
23
+ path
24
+ else
25
+ File.join(FIXTURE_ROOT, path)
26
+ end
27
+ end
28
+ end
29
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sassc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Boland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-01 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.9.6
97
- description: Use Libsass with Ruby!
97
+ description: Use libsass with Ruby!
98
98
  email:
99
99
  - bolandryanm@gmail.com
100
100
  executables: []
@@ -239,7 +239,11 @@ files:
239
239
  - ext/libsass/win/libsass.sln
240
240
  - ext/libsass/win/libsass.vcxproj
241
241
  - lib/sassc.rb
242
+ - lib/sassc/cache_stores.rb
243
+ - lib/sassc/cache_stores/base.rb
244
+ - lib/sassc/dependency.rb
242
245
  - lib/sassc/engine.rb
246
+ - lib/sassc/error.rb
243
247
  - lib/sassc/native.rb
244
248
  - lib/sassc/native/native_context_api.rb
245
249
  - lib/sassc/native/native_functions_api.rb
@@ -247,9 +251,15 @@ files:
247
251
  - lib/sassc/native/sass_output_style.rb
248
252
  - lib/sassc/native/sass_value.rb
249
253
  - lib/sassc/native/string_list.rb
254
+ - lib/sassc/script.rb
255
+ - lib/sassc/script/functions.rb
256
+ - lib/sassc/script/string.rb
250
257
  - lib/sassc/version.rb
251
258
  - sassc.gemspec
252
- - test/smoke_test.rb
259
+ - test/engine_test.rb
260
+ - test/fixtures/paths.scss
261
+ - test/functions_test.rb
262
+ - test/native_test.rb
253
263
  - test/test_helper.rb
254
264
  homepage: https://github.com/bolandrm/sassc-ruby
255
265
  licenses:
@@ -275,7 +285,10 @@ rubyforge_project:
275
285
  rubygems_version: 2.4.5
276
286
  signing_key:
277
287
  specification_version: 4
278
- summary: Use Libsass with Ruby!
288
+ summary: Use libsass with Ruby!
279
289
  test_files:
280
- - test/smoke_test.rb
290
+ - test/engine_test.rb
291
+ - test/fixtures/paths.scss
292
+ - test/functions_test.rb
293
+ - test/native_test.rb
281
294
  - test/test_helper.rb