1+ # -*- coding: utf-8 -*-
12from __future__ import with_statement
23
34import collections
910import tempfile
1011import unittest
1112
12- from six import StringIO , b
13+ from six import StringIO , b , text_type
1314from werkzeug .test import Client
1415from werkzeug .wrappers import Response
1516
5758 color: green; }
5859'''
5960
61+ D_EXPECTED_CSS = '''\
62+ body {
63+ background-color: green; }
64+ body a {
65+ font: '나눔고딕', sans-serif; }
66+ '''
67+
6068
6169class SassTestCase (unittest .TestCase ):
6270
@@ -141,6 +149,14 @@ def test_compile_string(self):
141149 a b {
142150 color: blue; }
143151'''
152+ actual = sass .compile (string = u'a { color: blue; } /* 유니코드 */' )
153+ self .assertEqual (
154+ u'''a {
155+ color: blue; }
156+
157+ /* 유니코드 */''' ,
158+ actual
159+ )
144160 self .assertRaises (sass .CompileError , sass .compile ,
145161 string = 'a { b { color: blue; }' )
146162 # sass.CompileError should be a subtype of ValueError
@@ -158,6 +174,11 @@ def test_compile_filename(self):
158174 assert actual == A_EXPECTED_CSS
159175 actual = sass .compile (filename = 'test/c.sass' )
160176 assert actual == C_EXPECTED_CSS
177+ actual = sass .compile (filename = 'test/d.sass' )
178+ if text_type is str :
179+ self .assertEqual (D_EXPECTED_CSS , actual )
180+ else :
181+ self .assertEqual (D_EXPECTED_CSS .decode ('utf-8' ), actual )
161182 self .assertRaises (IOError , sass .compile ,
162183 filename = 'test/not-exist.sass' )
163184 self .assertRaises (TypeError , sass .compile , filename = 1234 )
@@ -205,7 +226,7 @@ def test_builder_build_directory(self):
205226 css_path = os .path .join (temp_path , 'css' )
206227 shutil .copytree ('test' , sass_path )
207228 result_files = build_directory (sass_path , css_path )
208- assert len (result_files ) == 3
229+ assert len (result_files ) == 4
209230 assert result_files ['a.sass' ] == 'a.sass.css'
210231 with open (os .path .join (css_path , 'a.sass.css' )) as f :
211232 css = f .read ()
@@ -218,6 +239,10 @@ def test_builder_build_directory(self):
218239 with open (os .path .join (css_path , 'c.sass.css' )) as f :
219240 css = f .read ()
220241 assert css == C_EXPECTED_CSS
242+ assert result_files ['d.sass' ] == 'd.sass.css'
243+ with open (os .path .join (css_path , 'd.sass.css' )) as f :
244+ css = f .read ()
245+ self .assertEqual (D_EXPECTED_CSS , css )
221246 shutil .rmtree (temp_path )
222247
223248
@@ -345,6 +370,23 @@ def test_sassc_output(self):
345370 finally :
346371 os .remove (tmp )
347372
373+ def test_sassc_output_unicode (self ):
374+ fd , tmp = tempfile .mkstemp ('.css' )
375+ try :
376+ os .close (fd )
377+ exit_code = sassc .main (['sassc' , 'test/d.sass' , tmp ],
378+ self .out , self .err )
379+ self .assertEqual (0 , exit_code )
380+ self .assertEqual ('' , self .err .getvalue ())
381+ self .assertEqual ('' , self .out .getvalue ())
382+ with open (tmp ) as f :
383+ self .assertEqual (
384+ D_EXPECTED_CSS .strip (),
385+ f .read ().strip ()
386+ )
387+ finally :
388+ os .remove (tmp )
389+
348390 def test_sassc_source_map_without_css_filename (self ):
349391 exit_code = sassc .main (['sassc' , '-m' , 'a.scss' ], self .out , self .err )
350392 self .assertEqual (2 , exit_code )
0 commit comments