fune/servo/components/net/tests/cookie_http_state_utils.py
Anthony Ramine eea8cb0cb9 servo: Merge #19819 - Merge some test crates in their corresponding components (from servo:rm-test-crates); r=<try>
(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
2018-01-20 08:51:27 -06:00

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())