#!/usr/bin/env ruby require File.dirname(__FILE__) + '/../test_helper' require 'fileutils' require 'sass/util/test' require 'tmpdir' class ExecTest < MiniTest::Test include Sass::Util::Test def setup @dir = Dir.mktmpdir end def teardown FileUtils.rm_rf(@dir) clean_up_sassc end def test_scss_t_expanded src = get_path("src.scss") dest = get_path("dest.css") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[scss --sourcemap=none -t expanded --unix-newlines].push(src, dest))) assert_equal(".ruleset {\n margin: 0;\n}\n", read(dest)) end def test_sass_convert_T_sass src = get_path("src.scss") dest = get_path("dest.css") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[sass-convert -T sass --unix-newlines].push(src, dest))) assert_equal(".ruleset\n margin: 0\n", read(dest)) end def test_sass_convert_T_sass_in_place src = get_path("src.scss") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[sass-convert -T sass --in-place --unix-newlines].push(src))) assert_equal(".ruleset\n margin: 0\n", read(src)) end def test_scss_t_expanded_no_unix_newlines return skip "Can be run on Windows only" unless Sass::Util.windows? src = get_path("src.scss") dest = get_path("dest.css") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[scss -t expanded].push(src, dest))) assert_equal(".ruleset {\r\n margin: 0;\r\n}\r\n", read(dest)) end def test_sass_convert_T_sass_no_unix_newlines return skip "Can be run on Windows only" unless Sass::Util.windows? src = get_path("src.scss") dest = get_path("dest.sass") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[sass-convert -T sass].push(src, dest))) assert_equal(".ruleset\r\n margin: 0\r\n", read(dest)) end def test_sass_convert_T_sass_in_place_no_unix_newlines return skip "Can be run on Windows only" unless Sass::Util.windows? src = get_path("src.scss") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[sass-convert -T sass --in-place].push(src))) assert_equal(".ruleset\r\n margin: 0\r\n", read(src)) end def test_sass_convert_R Dir.chdir(@dir) do src = get_path("styles/src.css") write(src, ".ruleset { margin: 0 }") assert(exec(*%w[sass-convert -Rq --from css --to scss --trace styles])) end end private def get_path(name) File.join(@dir, name) end def read(file) open(file, 'rb') {|f| f.read} end def write(file, content) FileUtils.mkdir_p(File.dirname(file)) open(file, 'wb') {|f| f.write(content)} end def exec(script, *args) script = File.dirname(__FILE__) + '/../../bin/' + script ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']) system(ruby, script, *args) end end