fune/servo/components/net/tests/filemanager_thread.rs
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

110 lines
4.2 KiB
Rust

/* 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/. */
use ipc_channel::ipc;
use net::filemanager_thread::{FileManager, UIProvider};
use net_traits::blob_url_store::BlobURLStoreError;
use net_traits::filemanager_thread::{FilterPattern, FileManagerThreadMsg, FileManagerThreadError, ReadFileProgress};
use std::fs::File;
use std::io::Read;
use std::path::PathBuf;
pub const TEST_PROVIDER: &'static TestProvider = &TestProvider;
pub struct TestProvider;
impl UIProvider for TestProvider {
fn open_file_dialog(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<String> {
Some("tests/test.jpeg".to_string())
}
fn open_file_dialog_multi(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
Some(vec!["tests/test.jpeg".to_string()])
}
}
#[test]
fn test_filemanager() {
let filemanager = FileManager::new();
// Try to open a dummy file "components/net/tests/test.jpeg" in tree
let mut handler = File::open("tests/test.jpeg").expect("test.jpeg is stolen");
let mut test_file_content = vec![];
handler.read_to_end(&mut test_file_content)
.expect("Read components/net/tests/test.jpeg error");
let patterns = vec![FilterPattern(".txt".to_string())];
let origin = "test.com".to_string();
{
// Try to select a dummy file "components/net/tests/test.jpeg"
let (tx, rx) = ipc::channel().unwrap();
filemanager.handle(FileManagerThreadMsg::SelectFile(patterns.clone(), tx, origin.clone(), None),
TEST_PROVIDER);
let selected = rx.recv().expect("Broken channel")
.expect("The file manager failed to find test.jpeg");
// Expecting attributes conforming the spec
assert_eq!(selected.filename, PathBuf::from("test.jpeg"));
assert_eq!(selected.type_string, "image/jpeg".to_string());
// Test by reading, expecting same content
{
let (tx2, rx2) = ipc::channel().unwrap();
filemanager.handle(FileManagerThreadMsg::ReadFile(tx2, selected.id.clone(), false, origin.clone()),
TEST_PROVIDER);
let msg = rx2.recv().expect("Broken channel");
if let ReadFileProgress::Meta(blob_buf) = msg.expect("File manager reading failure is unexpected") {
let mut bytes = blob_buf.bytes;
loop {
match rx2.recv().expect("Broken channel").expect("File manager reading failure is unexpected") {
ReadFileProgress::Meta(_) => {
panic!("Invalid FileManager reply");
}
ReadFileProgress::Partial(mut bytes_in) => {
bytes.append(&mut bytes_in);
}
ReadFileProgress::EOF => {
break;
}
}
}
assert_eq!(test_file_content, bytes, "Read content differs");
} else {
panic!("Invalid FileManager reply");
}
}
// Delete the id
{
let (tx2, rx2) = ipc::channel().unwrap();
filemanager.handle(FileManagerThreadMsg::DecRef(selected.id.clone(), origin.clone(), tx2),
TEST_PROVIDER);
let ret = rx2.recv().expect("Broken channel");
assert!(ret.is_ok(), "DecRef is not okay");
}
// Test by reading again, expecting read error because we invalidated the id
{
let (tx2, rx2) = ipc::channel().unwrap();
filemanager.handle(FileManagerThreadMsg::ReadFile(tx2, selected.id.clone(), false, origin.clone()),
TEST_PROVIDER);
let msg = rx2.recv().expect("Broken channel");
match msg {
Err(FileManagerThreadError::BlobURLStoreError(BlobURLStoreError::InvalidFileID)) => {},
other => {
assert!(false, "Get unexpected response after deleting the id: {:?}", other);
}
}
}
}
}