
     h@                         d Z ddlZddlZddlZddlZddlmZ ddlZddlZddl	m
Z
 ej                  d        Z G d de
j                        Zy)	z)Testcases for cssutils.css.CSSCharsetRule    N)mock   )basetestc                 j    | j                  t        dt        j                  j                                y )Nser)setattrcssutils	serializeCSSSerializer)monkeypatchs    \/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/tests/test_cssutils.py
serializerr      s#    %););)I)I)KL    c                   |    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	      d
        Zy)TestCSSutilszr@import "import/import2.css";
.import {
    /* ./import.css */
    background-image: url(images/example.gif)
    }c                 0   t        j                  | j                  dd      }t        |t         j                  j
                        sJ |j                  J | j                  j                         |j                  k(  sJ d|j                  k(  sJ d|j                  j                  k(  sJ d|j                  k(  sJ | j                  j                         |j                  k(  sJ |j                  d   }d|j                  k(  sJ |j                  }t        |t         j                  j
                        sJ t        j                   d      }t         j"                  j%                  |      }t        j                  | j                  |	      }||j                  k(  sJ |j                  d   }d|j                  k(  sJ |j                  }t        |t         j                  j
                        sJ |j                  d
k(  sJ ddd}| j'                  |       y)zcssutils.parseString()zhandheld, screenzfrom stringmediatitleNutf-8r   import/import2.css
import.css)href  @import "../import3.css";
@import "import-impossible.css" print;
.import2 {
    /* sheets/import2.css */
    background: url(http://example.com/images/example.gif);
    background: url(//example.com/images/example.gif);
    background: url(/images/example.gif);
    background: url(images2/example.gif);
    background: url(./images2/example.gif);
    background: url(../images/example.gif);
    background: url(./../images/example.gif)
    }za {
    color: red
    }z!a {
    color: rgb(1, 2, 3)
    })a {color: red}za {color: rgb(1,2,3)})r	   parseStringexp
isinstancecssCSSStyleSheetr   encodecssTextencodingr   	mediaTextr   cssRules
styleSheetr   get_sheet_filenamehelperpath2url
do_equal_p)selfsirirsr   testss         r   test_parseStringzTestCSSutils.test_parseString   s     HH.m
 !X\\77888vv~~xx AII---!**$$$!QWW%6%6666'''xx AII---ZZ]#rww...mm#x||99:::**<8''-  5qvv~~ZZ]#rww...mm#x||99:::KK 
 
	

 ;%J
 	r   c                 *   t        j                  d      }t        j                  j	                  |      }t        j
                  ||dd      }t        |t        j                  j                        sJ t        j                  j                  d      r|j                  j                  d      sJ |j                  j                  d      sJ |j                  j                  d      sJ d	|j                  k(  sJ d|j                  j                   k(  sJ d|j"                  k(  sJ | j$                  j'                         |j(                  k(  sJ |j*                  d
   }d|j                  k(  sJ |j,                  }t        |t        j                  j                        sJ |j(                  dk(  sJ |j/                  t0        j2                  j5                  t6                     t        j                  d      }t        j
                  |dd      }t        |t        j                  j                        sJ t        j                  j                  d      r|j                  j                  d      sJ |j                  j                  d      sJ |j                  j                  d      sJ d	|j                  k(  sJ d|j                  j                   k(  sJ d|j"                  k(  sJ | j$                  j'                         |j(                  k(  sJ |j*                  d
   }d|j                  k(  sJ |j,                  }t        |t        j                  j                        sJ |j(                  dk(  sJ d}t9        j:                  d      \  }}t1        j<                  |d      }	|	j?                  |j'                  d	             |	jA                          tC        jD                  tF              5  t        j
                  |d       ddd       t        j
                  |d      }t        |t        j                  j                        sJ |j*                  d   jH                  dk(  sJ t        j
                  |d	      }t        |t        j                  j                        sJ |j*                  d   jH                  dk(  sJ d}tK        jL                  |dd      }	|	j?                  |       |	jA                          tC        jD                  tF              5  t        j
                  |d       ddd       t        j
                  |d      }t        |t        j                  j                        sJ |j*                  d   jH                  dk(  sJ tC        jD                  tF              5  t        j
                  |d	       ddd       	 t1        jN                  |       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# tP        $ r Y yw xY w)zcssutils.parseFile()r   screenz	from file)r   r   r   javazfile:zfile:/z/sheets/import.cssr   r   r   r   r   u#   a:after { content: "羊蹄€†" }z_cssutilstest.csswbasciiN
iso-8859-1r#   r   za:afteru0   @charset "iso-8859-1"; a:after { content: "ä" }w))r   r'   r	   r(   r)   	parseFiler   r   r    sysplatform
startswithr   endswithr#   r   r$   r   r   r!   r"   r%   r&   chdirospathdirname__file__tempfilemkstempfdopenwriteclosepytestraisesUnicodeDecodeErrorselectorTextcodecsopenremoveOSError)
r+   r   namer   r,   r-   r.   r   fdts
             r   test_parseFilezTestCSSutils.test_parseFileK   s    **<8''-t$hkR!X\\77888<<""6*66$$W--- 66$$X...vv3444!**$$$177,,,,,agg%%%xx AII---ZZ]#rww...mm#x||99:::KK  	
  	"''//(34**<8t8;G!X\\77888<<""6*66$$W--- 66$$X...vv3444!**$$$177,,,,,agg%%%xx AII---ZZ]#rww...mm#x||99:::KK  	
 7##$78DIIb$	

7#$		]]-.tW- / tl;!X\\77888zz!}))Y666tg6!X\\77888zz!}))Y666@KKc<0			]]-.tW- / tl;!X\\77888zz!}))Y666]]-.tW- /	IIdO; /." /. /.  		s6   0W!W.+W:X !W+.W7:X	XXc                 Z   t        j                  d      }t        j                  j	                  |      }t        j
                  |dd      }t        |t        j                  j                        sJ ||j                  k(  sJ | j                  j                         |j                  k(  sJ d|j                  k(  sJ d|j                  j                  k(  sJ d|j                   k(  sJ |j"                  d   }|j$                  j'                  d      j(                  d   j*                  }|d	k(  sJ |j"                  d   }d
|j                  k(  sJ |j,                  }|j                  dk(  sJ |j"                  d   }d|j                  k(  sJ |j,                  }|j                  dk(  sJ y)zcssutils.parseUrl()r   z	tv, printzfrom urlr   r   r   zbackground-imager   zimages/example.gifr   r   z../import3.csss?  /* import3 */
.import3 {
    /* from ./import/../import3.css */
    background: url(images/example3.gif);
    background: url(./images/example3.gif);
    background: url(import/images2/example2.gif);
    background: url(./import/images2/example2.gif);
    background: url(import/images2/../../images/example3.gif)
    }N)r   r'   r	   r(   r)   parseUrlr   r   r    r   r   r!   r"   r#   r   r$   r   r%   stylegetPropertypropertyValuevaluer&   )	r+   r   r,   srimgr-   r.   ir2irs2s	            r   test_parseUrlzTestCSSutils.test_parseUrl   s   **<8''-d+ZH!X\\77888qvv~~xx AII---!**$$$agg/////QWW$$$ZZ]hh""#56DDQGMM****ZZ]#rww...mmKK  	
 ll1o388+++~~LL  
	
r   c                    t        j                  d      }d}d}|j                         |j                  k(  sJ t        j                  t         j
                  j                  d            }t        j                  |       |j                         |j                  k(  sJ t        j                  t         j
                  j                  d            }|t         _        |j                         |j                  k(  sJ y)z)cssutils.setSerializer() and cssutils.serza { left: 0 }za {
    left: 0
    }za {
 left: 0
 } )indentz    N)	r	   r   r!   r"   r   r
   PreferencessetSerializerr   )r+   r,   exp4exp1newsers        r   test_setCSSSerializerz"TestCSSutils.test_setCSSSerializer   s      1	 {{}		)))''(:(:(F(Fc(F(RSv&{{}		)))''(:(:(F(Ff(F(UV{{}		)))r   c                 b   t        j                  d      }t        |t         j                  j                        sJ |j
                  dk(  sJ t        j                  d      }t        |t         j                  j                        sJ |j
                  dk(  sJ ddg}|D ]<  \  }}t        j                  |j                  |      |      }|j
                  |k(  r<J  t        j                  t              5  t        j                  dj                         d	       d
d
d
       y
# 1 sw Y   y
xY w)zcssutils.parseStyle()z
x:0; y:redzx: 0;
y: redz@import "x"; )   content: "ä"r6   )u   content: "€"r   r7   rj   r5   N)
r	   
parseStyler   r   CSSStyleDeclarationr"   r!   rH   rI   rJ   )r+   r,   r/   ves        r   test_parseStylezTestCSSutils.test_parseStyle  s    -!X\\==>>>yyO+++/!X\\==>>>yyB02MNDAq##AHHQK!<A99>!>  ]]-.&&( /..s   7%D%%D.c                     dt         j                  j                  _        d}t	        t        j
                  t        j                  |                  }|h dk(  sJ dt         j                  j                  _        y)zcssutils.getUrls()Ta  
        @import "im1";
        @import url(im2);
        @import url( im3 );
        @import url( "im4" );
        @import url( 'im5' );
        a {
            background-image: url(a) !important;
            background-\image: url(b);
            background: url(c) no-repeat !important;
            /* issue #46 */
            src: local("xx"),
                 url("f.woff") format("woff"),
                 url("f.otf") format("opentype"),
                 url("f.svg#f") format("svg");
            }>   f.otff.wofff.svg#fabcim1im2im3im4im5FN)r	   r   prefskeepAllPropertiessetgetUrlsr   )r+   r   urlss      r   test_getUrlszTestCSSutils.test_getUrls  sh    /3,  8##H$8$8$=>? 
 
 	
 
 05,r   c                    dt         j                  j                  _        d}t        j                  |      }t        j
                  |d        d|j                  d   j                  k(  sJ d|j                  d   j                  k(  sJ d|j                  d	   j                  j                  k(  sJ d
t         j                  j                  _        t        j                  d      }t        j
                  |d        |j                  dk(  sJ y)zcssutils.replaceUrls()Tz
        @import "im1";
        @import url(im2);
        a {
            background-image: url(c) !important;
            background-\image: url(b);
            background: url(a) no-repeat !important;
            }c                     d| z   S )NNEW )olds    r   <lambda>z/TestCSSutils.test_replaceUrls.<locals>.<lambda>K  s    ECKr   z@import "NEWim1";r   NEWim2r   zpbackground-image: url(NEWc) !important;
background-\image: url(NEWb);
background: url(NEWa) no-repeat !important   Fzcolor: red;
                                        background-image:
                                            url(1.png),
                                            url('2.png')c                     d| z   S )Nzprefix/r   )urls    r   r   z/TestCSSutils.test_replaceUrls.<locals>.<lambda>^  s    	Cr   zBcolor: red;
background-image: url(prefix/1.png), url(prefix/2.png)N)r	   r   r|   r}   r   replaceUrlsr%   r"   r   rV   rk   )r+   r   r,   rV   s       r   test_replaceUrlszTestCSSutils.test_replaceUrls>  s    /3,   %Q 78"ajjm&;&;;;;1::a=-----. zz!}""**+	
+ 05, ##<
 	U$?@MM::	
:r   r   c                 J  	 t         j                  j                  j                          dj	                  d      	d}t        j                         }t        j                  d|      5  d|f|_        t        j                  	      }	|j                  k(  sJ ||j                  d   j                  j                  k(  sJ t        j                  |      }d|j                  k(  sJ d|_        d	|j                  k(  sJ 	 ddd       t        j                         }t        j                  d|      5  d
|_        t        j                  	      }	|j                  k(  sJ t        |j                  d   j                  t         j                   j"                        sJ t        j                  |      }d|j                  k(  sJ 	 ddd       d	d}t        j                         }t        j                  d|      5  d|f|_        t        j                  	      }t        j                  |      }d|j                  k(  sJ 	 ddd       d	d}t        j                         }t        j                  d|      5  d|f|_        t        j                  	      }t        j                  |      }	j	                         |j                  k(  sJ 	 ddd       d	d }t
        j                  j%                  t         j&                  d|      	fd       } |       \  }}t         j                  j                  j)                          dt         j                  j                  _        d}||j                  k(  sJ y# 1 sw Y   vxY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   xY w)zcssutils.resolveImports(sheet)u4   @charset "iso-8859-1";@import"b.css";ä{color:green}r6   s    @charset "ascii";\E4 {color:red}zcssutils.util._defaultFetcherNr   s   ä{color:red}ä{color:green}r5   s1   @charset "ascii";\E4 {color:red}\E4 {color:green})NNs   @import"b.css";ä{color:green}z<@import"b.css";@import"b.css" print, tv ;@import"b.css" all;r   s5   a{color:red}@media print,tv{a{color:red}}a{color:red}z@import"b.css"print;z @namespace "http://example.com";z
             @import"b/b.css";
             a {
                 x: url(/img/abs.gif);
                 y: url(img/img.gif);
                 z: url(b/subimg/subimg.gif);
                 }c                 Z    ddd}d|t         j                  j                  |       d      fS )Nz
                     @import"../c.css";
                     b {
                         x: url(/img/abs.gif);
                         y: url(../img/img.gif);
                         z: url(subimg/subimg.gif);
                         }z
                     c {
                         x: url(/img/abs.gif);
                         y: url(./img/img.gif);
                         z: url(./b/subimg/subimg.gif);
                         })zb.csszc.cssr   r   )r?   r@   split)r   rv   s     r   fetcherz1TestCSSutils.test_resolveImports.<locals>.fetcher  s7    A AbggmmC03444r   _defaultFetcher)newc                  `    t        j                        } t        j                  |       }| |fS )N)r	   r   resolveImports)r,   rrt   s     r   doz,TestCSSutils.test_resolveImports.<locals>.do  s,    $$Q'A''*Aa4Kr   Fs  c {
    x: url(/img/abs.gif);
    y: url(img/img.gif);
    z: url(b/subimg/subimg.gif)
    }
b {
    x: url(/img/abs.gif);
    y: url(img/img.gif);
    z: url(b/subimg/subimg.gif)
    }
a {
    x: url(/img/abs.gif);
    y: url(img/img.gif);
    z: url(b/subimg/subimg.gif)
    })r	   r   r|   useMinifiedr!   r   Mockpatchreturn_valuer   r"   r%   r&   r   r#   r   r   r    objectutiluseDefaultskeepComments)
r+   ru   mr,   rv   r   r   r   expectedrt   s
            @r   test_resolveImportsz TestCSSutils.test_resolveImportse  s    	&&(DKK
 1 IIKZZ7;"AYAN$$Q'A 		>!>

10088888''*A ?!))KKK AJHAIIUUU <" IIKZZ7;)AN$$Q'A 		>!>ajjm668R8RSSS''*A:aiiGGG < KIIKZZ7;"AYAN$$Q'A''*AKqyyXXX < #.IIKZZ7;"AYAN$$Q'A''*A88:***	 <	5$ 
		8==*;		I	 
J	
 t1&&(*/'	 199$$$[ <;$ <; <; <;s4   'BM20BM?8AN4AN2M<?N	NN"N)__name__
__module____qualname__r   r0   rS   r^   rg   ro   r   r   rH   markusefixturesr   r   r   r   r   r      sW    	C-^tl1
f*"*"5H%
N [[\*x% +x%r   r   )__doc__rL   r?   r:   rC   unittestr   rH   r	   ri   r   fixturer   BaseTestCaser   r   r   r   <module>r      sN    /  	 
      M MI%8(( I%r   