more torrent parsing unit tests and fixing some previously broken by changes to parse_url_components

This commit is contained in:
Arvid Norberg 2013-02-26 07:32:53 +00:00
parent ba6770ccd8
commit 4241e279bd
7 changed files with 19 additions and 15 deletions

View File

@ -908,7 +908,7 @@ namespace libtorrent
e.size = info.dict_find_int_value("length", -1);
if (e.size < 0)
{
ec = errors::torrent_file_parse_failed;
ec = errors::torrent_invalid_length;
return false;
}
e.mtime = info.dict_find_int_value("mtime", 0);
@ -943,11 +943,6 @@ namespace libtorrent
// bitcomet pad file
if (e.path.find("_____padding_file_") != std::string::npos)
e.pad_file = true;
if (e.size < 0)
{
ec = errors::torrent_invalid_length;
return false;
}
m_files.add_file(e, fh ? fh->string_ptr() + info_ptr_diff : 0);
m_multifile = false;
}

View File

@ -74,7 +74,11 @@ EXTRA_DIST = Jamfile \
test_torrents/url_seed.torrent \
test_torrents/url_seed_multi.torrent \
test_torrents/url_seed_multi_space.torrent \
test_torrents/url_seed_multi_space_nolist.torrent
test_torrents/url_seed_multi_space_nolist.torrent \
test_torrents/invalid_root_hash.torrent \
test_torrents/invalid_root_hash2.torrent \
test_torrents/root_hash.torrent \
test_torrents/invalid_file_size.torrent
EXTRA_PROGRAMS = $(test_programs)

View File

@ -1154,16 +1154,16 @@ int test_main()
== make_tuple("http", "foo:bar", "host.com", 80, "/path/to/file"));
TEST_CHECK(parse_url_components("http://host.com/path/to/file", ec)
== make_tuple("http", "", "host.com", 80, "/path/to/file"));
== make_tuple("http", "", "host.com", -1, "/path/to/file"));
TEST_CHECK(parse_url_components("ftp://host.com:21/path/to/file", ec)
== make_tuple("ftp", "", "host.com", 21, "/path/to/file"));
TEST_CHECK(parse_url_components("http://host.com/path?foo:bar@foo:", ec)
== make_tuple("http", "", "host.com", 80, "/path?foo:bar@foo:"));
== make_tuple("http", "", "host.com", -1, "/path?foo:bar@foo:"));
TEST_CHECK(parse_url_components("http://192.168.0.1/path/to/file", ec)
== make_tuple("http", "", "192.168.0.1", 80, "/path/to/file"));
== make_tuple("http", "", "192.168.0.1", -1, "/path/to/file"));
TEST_CHECK(parse_url_components("http://[2001:ff00::1]:42/path/to/file", ec)
== make_tuple("http", "", "[2001:ff00::1]", 42, "/path/to/file"));
@ -1253,7 +1253,7 @@ int test_main()
TEST_CHECK(need_encoding("\n", 1) == true);
// maybe_url_encode
TEST_CHECK(maybe_url_encode("http://bla.com/\n") == "http://bla.com:80/%0a");
TEST_CHECK(maybe_url_encode("http://bla.com/\n") == "http://bla.com/%0a");
std::cerr << maybe_url_encode("http://bla.com/\n") << std::endl;
TEST_CHECK(maybe_url_encode("?&") == "?&");

View File

@ -69,6 +69,7 @@ test_torrent_t test_torrents[] =
{ "url_seed_multi.torrent" },
{ "url_seed_multi_space.torrent" },
{ "url_seed_multi_space_nolist.torrent" },
{ "root_hash.torrent" },
};
struct test_failing_torrent_t
@ -87,17 +88,18 @@ test_failing_torrent_t test_error_torrents[] =
{ "invalid_name2.torrent", errors::torrent_invalid_name },
{ "invalid_info.torrent", errors::torrent_missing_info },
{ "string.torrent", errors::torrent_is_no_dict },
{ "negative_size.torrent", errors::torrent_file_parse_failed},
{ "negative_size.torrent", errors::torrent_invalid_length },
{ "negative_file_size.torrent", errors::torrent_file_parse_failed },
{ "invalid_path_list.torrent", errors::torrent_file_parse_failed },
{ "missing_path_list.torrent", errors::torrent_file_parse_failed },
{ "invalid_pieces.torrent", errors::torrent_missing_pieces },
{ "unaligned_pieces.torrent", errors::torrent_invalid_hashes },
{ "invalid_root_hash.torrent", errors::torrent_invalid_hashes },
{ "invalid_root_hash2.torrent", errors::torrent_invalid_hashes },
{ "invalid_file_size.torrent", errors::torrent_file_parse_failed },
};
// TODO: create a separate list of all torrents that should
// fail to parse, and include the expected error code in that list
// TODO: test remap_files
// TODO: merkle torrents. specifically torrent_info::add_merkle_nodes and torrent with "root hash"
// TODO: torrent with 'p' (padfile) attribute
// TODO: torrent with 'h' (hidden) attribute

View File

@ -0,0 +1 @@
d10:created by10:libtorrent13:creation datei1359599503e4:infod5:filesld4:pathl3:foo7:bar.txte6:lengthli45eeed4:pathl3:foo7:var.txte6:lengthi24124eee4:name4:temp12:piece lengthi16384e6:pieces20:‚ž¼Œ&¾ÇJW}ÜA4u,·¼‡ee

View File

@ -0,0 +1 @@
d10:created by10:libtorrent13:creation datei1359599503e4:infod6:lengthi425e4:name4:temp12:piece lengthi16384e9:root hash19:ž¼Œ&¾ÇJW}ÜA4u,·¼‡ee

View File

@ -0,0 +1 @@
d10:created by10:libtorrent13:creation datei1359599503e4:infod6:lengthi425e4:name4:temp12:piece lengthi16384e9:root hash20:‚ž¼Œ&¾ÇJW}ÜA4u,·¼‡ee