forked from mirrors/gecko-dev
		
	(Do not merge) Merge some test crates in their corresponding components Source-Repo: https://github.com/servo/servo Source-Revision: a4808a3649e6cb6e579e60b82d9979755643f711 --HG-- rename : servo/tests/unit/servo_config/opts.rs => servo/components/config/tests/opts.rs rename : servo/tests/unit/servo_config/prefs.rs => servo/components/config/tests/prefs.rs rename : servo/tests/unit/gfx/text_util.rs => servo/components/gfx/tests/text_util.rs rename : servo/tests/unit/layout/size_of.rs => servo/components/layout/tests/size_of.rs rename : servo/tests/unit/msg/size_of.rs => servo/components/msg/tests/size_of.rs rename : servo/tests/unit/net/chrome_loader.rs => servo/components/net/tests/chrome_loader.rs rename : servo/tests/unit/net/cookie.rs => servo/components/net/tests/cookie.rs rename : servo/tests/unit/net/cookie_http_state.rs => servo/components/net/tests/cookie_http_state.rs rename : servo/tests/unit/net/cookie_http_state_utils.py => servo/components/net/tests/cookie_http_state_utils.py rename : servo/tests/unit/net/data_loader.rs => servo/components/net/tests/data_loader.rs rename : servo/tests/unit/net/fetch.rs => servo/components/net/tests/fetch.rs rename : servo/tests/unit/net/file_loader.rs => servo/components/net/tests/file_loader.rs rename : servo/tests/unit/net/filemanager_thread.rs => servo/components/net/tests/filemanager_thread.rs rename : servo/tests/unit/net/hsts.rs => servo/components/net/tests/hsts.rs rename : servo/tests/unit/net/http_loader.rs => servo/components/net/tests/http_loader.rs rename : servo/tests/unit/net/lib.rs => servo/components/net/tests/main.rs rename : servo/tests/unit/net/mime_classifier.rs => servo/components/net/tests/mime_classifier.rs rename : servo/tests/unit/net/parsable_mime/application/font-woff/test.wof => servo/components/net/tests/parsable_mime/application/font-woff/test.wof rename : servo/tests/unit/net/parsable_mime/application/ogg/small.ogg => servo/components/net/tests/parsable_mime/application/ogg/small.ogg rename : servo/tests/unit/net/parsable_mime/application/pdf/test.pdf => servo/components/net/tests/parsable_mime/application/pdf/test.pdf rename : servo/tests/unit/net/parsable_mime/application/postscript/test.ps => servo/components/net/tests/parsable_mime/application/postscript/test.ps rename : servo/tests/unit/net/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject => servo/components/net/tests/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject rename : servo/tests/unit/net/parsable_mime/application/x-gzip/test.gz => servo/components/net/tests/parsable_mime/application/x-gzip/test.gz rename : servo/tests/unit/net/parsable_mime/application/x-rar-compressed/test.rar => servo/components/net/tests/parsable_mime/application/x-rar-compressed/test.rar rename : servo/tests/unit/net/parsable_mime/application/zip/test.zip => servo/components/net/tests/parsable_mime/application/zip/test.zip rename : servo/tests/unit/net/parsable_mime/audio/aiff/test.aif => servo/components/net/tests/parsable_mime/audio/aiff/test.aif rename : servo/tests/unit/net/parsable_mime/audio/basic/test.au => servo/components/net/tests/parsable_mime/audio/basic/test.au rename : servo/tests/unit/net/parsable_mime/audio/midi/test.mid => servo/components/net/tests/parsable_mime/audio/midi/test.mid rename : servo/tests/unit/net/parsable_mime/audio/mpeg/test.mp3 => servo/components/net/tests/parsable_mime/audio/mpeg/test.mp3 rename : servo/tests/unit/net/parsable_mime/audio/wave/test.wav => servo/components/net/tests/parsable_mime/audio/wave/test.wav rename : servo/tests/unit/net/parsable_mime/image/bmp/test.bmp => servo/components/net/tests/parsable_mime/image/bmp/test.bmp rename : servo/tests/unit/net/parsable_mime/image/gif/test87a => servo/components/net/tests/parsable_mime/image/gif/test87a rename : servo/tests/unit/net/parsable_mime/image/gif/test89a.gif => servo/components/net/tests/parsable_mime/image/gif/test89a.gif rename : servo/tests/unit/net/parsable_mime/image/jpeg/test.jpg => servo/components/net/tests/parsable_mime/image/jpeg/test.jpg rename : servo/tests/unit/net/parsable_mime/image/png/test.png => servo/components/net/tests/parsable_mime/image/png/test.png rename : servo/tests/unit/net/parsable_mime/image/webp/test.webp => servo/components/net/tests/parsable_mime/image/webp/test.webp rename : servo/tests/unit/net/parsable_mime/image/x-icon/test.ico => servo/components/net/tests/parsable_mime/image/x-icon/test.ico rename : servo/tests/unit/net/parsable_mime/image/x-icon/test_cursor.ico => servo/components/net/tests/parsable_mime/image/x-icon/test_cursor.ico rename : servo/tests/unit/net/parsable_mime/text/html/text_html_a_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_a_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_a_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_a_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_a_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_a_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_a_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_a_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_b_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_b_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_b_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_b_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_b_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_b_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_b_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_b_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_body_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_body_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_body_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_body_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_body_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_body_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_body_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_body_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_br_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_br_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_br_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_br_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_br_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_br_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_br_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_br_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_comment_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_comment_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_comment_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_comment_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_comment_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_comment_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_comment_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_comment_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_div_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_div_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_div_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_div_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_div_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_div_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_div_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_div_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_doctype_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_doctype_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_doctype_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_doctype_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_doctype_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_doctype_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_font_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_font_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_font_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_font_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_font_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_font_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_font_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_font_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_h1_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_h1_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_h1_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_h1_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_h1_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_h1_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_h1_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_h1_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_head_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_head_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_head_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_head_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_head_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_head_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_head_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_head_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_iframe_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_iframe_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_iframe_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_iframe_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_iframe_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_iframe_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_p_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_p_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_p_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_p_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_p_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_p_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_p_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_p_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_page_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_page_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_page_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_page_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_page_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_page_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_page_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_page_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_script_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_script_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_script_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_script_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_script_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_script_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_script_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_script_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_style_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_style_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_style_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_style_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_style_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_style_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_style_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_style_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_table_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_table_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_table_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_table_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_table_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_table_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_table_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_table_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_title_20.html => servo/components/net/tests/parsable_mime/text/html/text_html_title_20.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_title_20_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_title_20_u.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_title_3e.html => servo/components/net/tests/parsable_mime/text/html/text_html_title_3e.html rename : servo/tests/unit/net/parsable_mime/text/html/text_html_title_3e_u.html => servo/components/net/tests/parsable_mime/text/html/text_html_title_3e_u.html rename : servo/tests/unit/net/parsable_mime/text/plain/utf16bebom.txt => servo/components/net/tests/parsable_mime/text/plain/utf16bebom.txt rename : servo/tests/unit/net/parsable_mime/text/plain/utf16lebom.txt => servo/components/net/tests/parsable_mime/text/plain/utf16lebom.txt rename : servo/tests/unit/net/parsable_mime/text/plain/utf8bom.txt => servo/components/net/tests/parsable_mime/text/plain/utf8bom.txt rename : servo/tests/unit/net/parsable_mime/text/xml/feed.atom => servo/components/net/tests/parsable_mime/text/xml/feed.atom rename : servo/tests/unit/net/parsable_mime/text/xml/feed.rss => servo/components/net/tests/parsable_mime/text/xml/feed.rss rename : servo/tests/unit/net/parsable_mime/text/xml/rdf_rss.xml => servo/components/net/tests/parsable_mime/text/xml/rdf_rss.xml rename : servo/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_1.xml => servo/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_1.xml rename : servo/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_2.xml => servo/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_2.xml rename : servo/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_3.xml => servo/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_3.xml rename : servo/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_4.xml => servo/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_4.xml rename : servo/tests/unit/net/parsable_mime/text/xml/test.xml => servo/components/net/tests/parsable_mime/text/xml/test.xml rename : servo/tests/unit/net/parsable_mime/unknown/binary_file => servo/components/net/tests/parsable_mime/unknown/binary_file rename : servo/tests/unit/net/parsable_mime/unknown/open_type => servo/components/net/tests/parsable_mime/unknown/open_type rename : servo/tests/unit/net/parsable_mime/unknown/true_type.ttf => servo/components/net/tests/parsable_mime/unknown/true_type.ttf rename : servo/tests/unit/net/parsable_mime/unknown/true_type_collection.ttc => servo/components/net/tests/parsable_mime/unknown/true_type_collection.ttc rename : servo/tests/unit/net/parsable_mime/video/avi/test.avi => servo/components/net/tests/parsable_mime/video/avi/test.avi rename : servo/tests/unit/net/parsable_mime/video/mp4/test.mp4 => servo/components/net/tests/parsable_mime/video/mp4/test.mp4 rename : servo/tests/unit/net/parsable_mime/video/webm/test.webm => servo/components/net/tests/parsable_mime/video/webm/test.webm rename : servo/tests/unit/net/resource_thread.rs => servo/components/net/tests/resource_thread.rs rename : servo/tests/unit/net/subresource_integrity.rs => servo/components/net/tests/subresource_integrity.rs rename : servo/tests/unit/net/test.jpeg => servo/components/net/tests/test.jpeg rename : servo/tests/unit/net_traits/image.rs => servo/components/net_traits/tests/image.rs rename : servo/tests/unit/net_traits/pub_domains.rs => servo/components/net_traits/tests/pub_domains.rs rename : servo/tests/unit/net_traits/lib.rs => servo/components/net_traits/tests/whitespace.rs rename : servo/tests/unit/servo_remutex/lib.rs => servo/components/remutex/tests/smoke.rs extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : ccaf67122c28522d622dcde39da197b3f2daf5b3
		
			
				
	
	
		
			174 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
# License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | 
						|
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import tempfile
 | 
						|
 | 
						|
REPO = "https://github.com/abarth/http-state.git"
 | 
						|
TEST_FILE = "cookie_http_state.rs"
 | 
						|
DOMAIN = "http://home.example.org:8888"
 | 
						|
RUST_FN = """
 | 
						|
#[test]{should_panic}
 | 
						|
fn test_{name}() {{
 | 
						|
    let r = run("{set_location}",
 | 
						|
                {set_cookies},
 | 
						|
                "{location}");
 | 
						|
    assert_eq!(&r, "{expect}");
 | 
						|
}}
 | 
						|
"""
 | 
						|
SET_COOKIES_INDENT = 18
 | 
						|
SHOULD_PANIC = "\n#[should_panic] // Look at cookie_http_state_utils.py if this test fails"
 | 
						|
 | 
						|
# Those tests should PASS. But until fixes land in servo, keep them failing
 | 
						|
FAILING_TESTS = [
 | 
						|
    "0003",           # Waiting for a way to clean expired cookies
 | 
						|
    "0006",           # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0001",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0002",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0003",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0005",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0007",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0009",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0010",    # Waiting for a way to clean expired cookies
 | 
						|
    "mozilla0013",    # Waiting for a way to clean expired cookies
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
def list_tests(dir):
 | 
						|
    suffix = "-test"
 | 
						|
 | 
						|
    def keep(name):
 | 
						|
        return name.endswith(suffix) and not name.startswith("disabled")
 | 
						|
 | 
						|
    tests = [name[:-len(suffix)] for name in os.listdir(dir) if keep(name)]
 | 
						|
    tests.sort()
 | 
						|
    return tests
 | 
						|
 | 
						|
 | 
						|
def escape(s):
 | 
						|
    """ Escape the string `s` so that it can be parsed by rust as a valid
 | 
						|
    UTF-8 string.
 | 
						|
    We can't use only `encode("unicode_escape")` as it produces things that
 | 
						|
    rust does not accept ("\\xbf", "\\u6265" for example). So we manually
 | 
						|
    convert all character whose code point is greater than 128 to
 | 
						|
    \\u{code_point}.
 | 
						|
    All other characters are encoded with "unicode_escape" to get escape
 | 
						|
    sequences ("\\r" for example) except for `"` that we specifically escape
 | 
						|
    because our string will be quoted by double-quotes.
 | 
						|
    Lines are also limited in size, so split the string every 70 characters
 | 
						|
    (gives room for indentation).
 | 
						|
    """
 | 
						|
    res = ""
 | 
						|
    last_split = 0
 | 
						|
    for c in s:
 | 
						|
        if len(res) - last_split > 70:
 | 
						|
            res += "\\\n"
 | 
						|
            last_split = len(res)
 | 
						|
        o = ord(c)
 | 
						|
        if o == 34:
 | 
						|
            res += "\\\""
 | 
						|
            continue
 | 
						|
        if o >= 128:
 | 
						|
            res += "\\u{" + hex(o)[2:] + "}"
 | 
						|
        else:
 | 
						|
            res += c.encode("unicode_escape")
 | 
						|
    return res
 | 
						|
 | 
						|
 | 
						|
def format_slice_cookies(cookies):
 | 
						|
    esc_cookies = ['"%s"' % escape(c) for c in cookies]
 | 
						|
    if sum(len(s) for s in esc_cookies) < 80:
 | 
						|
        sep = ", "
 | 
						|
    else:
 | 
						|
        sep = ",\n" + " " * SET_COOKIES_INDENT
 | 
						|
    return "&[" + sep.join(esc_cookies) + "]"
 | 
						|
 | 
						|
 | 
						|
def generate_code_for_test(test_dir, name):
 | 
						|
    if name in FAILING_TESTS:
 | 
						|
        should_panic = SHOULD_PANIC
 | 
						|
    else:
 | 
						|
        should_panic = ""
 | 
						|
 | 
						|
    test_file = os.path.join(test_dir, name + "-test")
 | 
						|
    expect_file = os.path.join(test_dir, name + "-expected")
 | 
						|
 | 
						|
    set_cookies = []
 | 
						|
    set_location = DOMAIN + "/cookie-parser?" + name
 | 
						|
    expect = ""
 | 
						|
    location = DOMAIN + "/cookie-parser-result?" + name
 | 
						|
 | 
						|
    with open(test_file) as fo:
 | 
						|
        for line in fo:
 | 
						|
            line = line.decode("utf-8").rstrip()
 | 
						|
            prefix = "Set-Cookie: "
 | 
						|
            if line.startswith(prefix):
 | 
						|
                set_cookies.append(line[len(prefix):])
 | 
						|
            prefix = "Location: "
 | 
						|
            if line.startswith(prefix):
 | 
						|
                location = line[len(prefix):]
 | 
						|
                if location.startswith("/"):
 | 
						|
                    location = DOMAIN + location
 | 
						|
 | 
						|
    with open(expect_file) as fo:
 | 
						|
        for line in fo:
 | 
						|
            line = line.decode("utf-8").rstrip()
 | 
						|
            prefix = "Cookie: "
 | 
						|
            if line.startswith(prefix):
 | 
						|
                expect = line[len(prefix):]
 | 
						|
 | 
						|
    return RUST_FN.format(name=name.replace('-', '_'),
 | 
						|
                          set_location=escape(set_location),
 | 
						|
                          set_cookies=format_slice_cookies(set_cookies),
 | 
						|
                          should_panic=should_panic,
 | 
						|
                          location=escape(location),
 | 
						|
                          expect=escape(expect))
 | 
						|
 | 
						|
 | 
						|
def update_test_file(cachedir):
 | 
						|
    workdir = os.path.dirname(os.path.realpath(__file__))
 | 
						|
    test_file = os.path.join(workdir, TEST_FILE)
 | 
						|
 | 
						|
    # Create the cache dir
 | 
						|
    if not os.path.isdir(cachedir):
 | 
						|
        os.makedirs(cachedir)
 | 
						|
 | 
						|
    # Clone or update the repo
 | 
						|
    repo_dir = os.path.join(cachedir, "http-state")
 | 
						|
    if os.path.isdir(repo_dir):
 | 
						|
        args = ["git", "pull", "-f"]
 | 
						|
        process = subprocess.Popen(args, cwd=repo_dir)
 | 
						|
        if process.wait() != 0:
 | 
						|
            print("failed to update the http-state git repo")
 | 
						|
            return 1
 | 
						|
    else:
 | 
						|
        args = ["git", "clone", REPO, repo_dir]
 | 
						|
        process = subprocess.Popen(args)
 | 
						|
        if process.wait() != 0:
 | 
						|
            print("failed to clone the http-state git repo")
 | 
						|
            return 1
 | 
						|
 | 
						|
    # Truncate the unit test file to remove all existing tests
 | 
						|
    with open(test_file, "r+") as fo:
 | 
						|
        while True:
 | 
						|
            line = fo.readline()
 | 
						|
            if line.strip() == "// Test listing":
 | 
						|
                fo.truncate()
 | 
						|
                fo.flush()
 | 
						|
                break
 | 
						|
            if line == "":
 | 
						|
                print("Failed to find listing delimiter on unit test file")
 | 
						|
                return 1
 | 
						|
 | 
						|
    # Append all tests to unit test file
 | 
						|
    tests_dir = os.path.join(repo_dir, "tests", "data", "parser")
 | 
						|
    with open(test_file, "a") as fo:
 | 
						|
        for test in list_tests(tests_dir):
 | 
						|
            fo.write(generate_code_for_test(tests_dir, test).encode("utf-8"))
 | 
						|
 | 
						|
    return 0
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    update_test_file(tempfile.gettempdir())
 |