diff options
author | crvi <crvisqr@gmail.com> | 2021-03-03 17:32:55 +0530 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2021-06-25 10:24:33 +0200 |
commit | 75b18393fbd7d3a49fa6924151f34b039e47c1b1 (patch) | |
tree | 4a33c3a500ba7a7abe4532d19f3796a7d8de238d | |
parent | 52de144ae730024fda9c79ca1252c6af92f325d6 (diff) | |
download | totem-pl-parser-75b18393fbd7d3a49fa6924151f34b039e47c1b1.tar.gz |
tests: Do not check for videosite links unless requested
Note that this changes the result of the
test_parsing_needle_carriage_return() ATOM test which now returns a
single entry.
-rw-r--r-- | plparse/tests/gitlab-issues.atom | 1076 | ||||
-rw-r--r-- | plparse/tests/parser.c | 53 | ||||
-rw-r--r-- | plparse/tests/status-gnome-org.atom | 85 | ||||
-rwxr-xr-x | plparse/tests/videosite-tester.sh | 7 |
4 files changed, 1220 insertions, 1 deletions
diff --git a/plparse/tests/gitlab-issues.atom b/plparse/tests/gitlab-issues.atom new file mode 100644 index 0000000..145a244 --- /dev/null +++ b/plparse/tests/gitlab-issues.atom @@ -0,0 +1,1076 @@ +<?xml version="1.0" encoding="UTF-8"?> +<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"> +<title>totem-pl-parser issues</title> +<link href="/GNOME/totem-pl-parser/-/issues.atom?feed_token=EQWvks3t_bxCW7boi5zZ&state=opened" rel="self" type="application/atom+xml"/> +<link href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues" rel="alternate" type="text/html"/> +<id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues</id> +<updated>2021-04-23T18:18:42Z</updated> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/36</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/36"/> + <title>CI pipeline fails due to test_itms_parsing test failure</title> + <updated>2021-04-23T18:18:42Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>CI pipeline fails due to test_itms_parsing test failure</summary> + <description>`ERROR:../plparse/tests/parser.c:565:test_itms_parsing: assertion failed (parser_test_get_playlist_uri ("https://itunes.apple.com/fr/podcast/chris-moyles-show-on-radio/id1042635536?mt=2&ign-mpt=uo%3D4#") == "https://rss.hosting.thisisdax.com/ed87f36a-7b44-4e79-beea-f3220752406c"): (NULL == "https://rss.hosting.thisisdax.com/ed87f36a-7b44-4e79-beea-f3220752406c")` + +https://gitlab.gnome.org/crvi/totem-pl-parser/-/jobs/1264555</description> + <content>`ERROR:../plparse/tests/parser.c:565:test_itms_parsing: assertion failed (parser_test_get_playlist_uri ("https://itunes.apple.com/fr/podcast/chris-moyles-show-on-radio/id1042635536?mt=2&ign-mpt=uo%3D4#") == "https://rss.hosting.thisisdax.com/ed87f36a-7b44-4e79-beea-f3220752406c"): (NULL == "https://rss.hosting.thisisdax.com/ed87f36a-7b44-4e79-beea-f3220752406c")` + +https://gitlab.gnome.org/crvi/totem-pl-parser/-/jobs/1264555</content> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/29</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/29"/> + <title>xml parsing fails while parsing valid XML processing instructions ( PI )</title> + <updated>2021-04-22T23:42:39Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>xml parsing fails while parsing valid XML processing instructions ( PI )</summary> + <description>libxml2 parses fine. + +```console +$ ~/totem-pl-parser/build-dir/plparse/tests/parser --debug file:///tmp/backtracks.fm.rss +# random seed: R02S0f64ce29b2a8b2b7d647f80859d8a74c +# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’ +_get_mime_type_for_name for 'file:///tmp/backtracks.fm.rss' returned 'application/rss+xml' +URI 'file:///tmp/backtracks.fm.rss' was opened successfully in _get_mime_type_with_data +_get_mime_type_with_data for 'file:///tmp/backtracks.fm.rss' returned 'application/rss+xml' +URI 'file:///tmp/backtracks.fm.rss' is special type 'application/rss+xml' +Using application/rss+xml function for 'file:///tmp/backtracks.fm.rss' +Ignoring application/rss+xml because it's a text/plain +# MESSAGE: Ignored URI "file:///tmp/backtracks.fm.rss". +** Message: 11:40:41.511: Ignored URI "file:///tmp/backtracks.fm.rss". +``` + +[backtracks.fm.rss](/uploads/1520bd345562041515d1c89d29f372c8/backtracks.fm.rss) + +URL: https://backtracks.fm/feed/235d0e0a7a3de5e4</description> + <content>libxml2 parses fine. + +```console +$ ~/totem-pl-parser/build-dir/plparse/tests/parser --debug file:///tmp/backtracks.fm.rss +# random seed: R02S0f64ce29b2a8b2b7d647f80859d8a74c +# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation gvfs (GDaemonVfs) for ‘gio-vfs’ +_get_mime_type_for_name for 'file:///tmp/backtracks.fm.rss' returned 'application/rss+xml' +URI 'file:///tmp/backtracks.fm.rss' was opened successfully in _get_mime_type_with_data +_get_mime_type_with_data for 'file:///tmp/backtracks.fm.rss' returned 'application/rss+xml' +URI 'file:///tmp/backtracks.fm.rss' is special type 'application/rss+xml' +Using application/rss+xml function for 'file:///tmp/backtracks.fm.rss' +Ignoring application/rss+xml because it's a text/plain +# MESSAGE: Ignored URI "file:///tmp/backtracks.fm.rss". +** Message: 11:40:41.511: Ignored URI "file:///tmp/backtracks.fm.rss". +``` + +[backtracks.fm.rss](/uploads/1520bd345562041515d1c89d29f372c8/backtracks.fm.rss) + +URL: https://backtracks.fm/feed/235d0e0a7a3de5e4</content> + <labels> + <label>1. Bug</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/33</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/33"/> + <title>Parser failures should not return TOTEM_PL_PARSER_RESULT_IGNORED</title> + <updated>2021-04-22T23:42:38Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>Parser failures should not return TOTEM_PL_PARSER_RESULT_IGNORED</summary> + <description>Parser feed failures should return valid return types ( e.g. `TOTEM_PL_PARSER_RESULT_ERROR` ) and not `TOTEM_PL_PARSER_RESULT_IGNORED`, as below: + +``` +$ ninja && plparse/tests/parser file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2 --debug + +_get_mime_type_for_name for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' returned 'application/octet-stream' +URI 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' was opened successfully in _get_mime_type_with_data + +_get_mime_type_with_data for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' returned 'application/rss+xml' +URI 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' is special type 'application/rss+xml' + +Using application/rss+xml function for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' +Ignoring application/rss+xml because it's a text/plain +``` + +which is incorrect and misleading.</description> + <content>Parser feed failures should return valid return types ( e.g. `TOTEM_PL_PARSER_RESULT_ERROR` ) and not `TOTEM_PL_PARSER_RESULT_IGNORED`, as below: + +``` +$ ninja && plparse/tests/parser file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2 --debug + +_get_mime_type_for_name for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' returned 'application/octet-stream' +URI 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' was opened successfully in _get_mime_type_with_data + +_get_mime_type_with_data for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' returned 'application/rss+xml' +URI 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' is special type 'application/rss+xml' + +Using application/rss+xml function for 'file:///home/xyz/totem-pl-parser/plparse/tests/buggy_feed_2' +Ignoring application/rss+xml because it's a text/plain +``` + +which is incorrect and misleading.</content> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/25</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/25"/> + <title>totem_pl_parser_is_videosite() causes huge delay in rss parsing</title> + <updated>2021-04-20T23:49:07Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>totem_pl_parser_is_videosite() causes huge delay in rss parsing</summary> + <description>version: git + +Currently, we do `totem_pl_parser_is_videosite()` check on each rss feed item's `<link>` node data. + +For a rss feed with 400 items, it was 150 times slower ( 100ms without check, 15s with check ). + +This was an issue with Debian and its derivatives, as they added proper support for finding the helper script in `debian/rules`: + +```sh +override_dh_auto_configure: + dh_auto_configure -- \ + --libexecdir=/usr/lib/$(DEB_HOST_MULTIARCH)/$(libtotem-plparserN) \ + -Denable-gtk-doc=true \ + -Denable-libarchive=yes \ + -Denable-libgcrypt=yes \ + -Denable-quvi=yes +``` + +Don't see the issue in Fedora.</description> + <content>version: git + +Currently, we do `totem_pl_parser_is_videosite()` check on each rss feed item's `<link>` node data. + +For a rss feed with 400 items, it was 150 times slower ( 100ms without check, 15s with check ). + +This was an issue with Debian and its derivatives, as they added proper support for finding the helper script in `debian/rules`: + +```sh +override_dh_auto_configure: + dh_auto_configure -- \ + --libexecdir=/usr/lib/$(DEB_HOST_MULTIARCH)/$(libtotem-plparserN) \ + -Denable-gtk-doc=true \ + -Denable-libarchive=yes \ + -Denable-libgcrypt=yes \ + -Denable-quvi=yes +``` + +Don't see the issue in Fedora.</content> + <labels> + <label>9. High visibility</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/32</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/32"/> + <title>Update README to README.md</title> + <updated>2021-04-20T23:39:27Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>Update README to README.md</summary> + <description>Update `README` file to `README.md` markdown format.</description> + <content>Update `README` file to `README.md` markdown format.</content> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/16</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/16"/> + <title>Add support for the trackNum tag in xspf playlists.</title> + <updated>2021-04-20T21:51:28Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Add support for the trackNum tag in xspf playlists.</summary> + <description>## Submitted by Jared Smith + +**[Link to original bug (#757260)](https://bugzilla.gnome.org/show_bug.cgi?id=757260)** +## Description +Please add support for the track number from the xspf format specification (trackNum tag). + +This would enable the addition of track numbers for tracks that cannot be matched against the database (e.g. very old or obscure tracks, user-created tracks, etc.).</description> + <content>## Submitted by Jared Smith + +**[Link to original bug (#757260)](https://bugzilla.gnome.org/show_bug.cgi?id=757260)** +## Description +Please add support for the track number from the xspf format specification (trackNum tag). + +This would enable the addition of track numbers for tracks that cannot be matched against the database (e.g. very old or obscure tracks, user-created tracks, etc.).</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/35</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/35"/> + <title>Random test failure ( test_xml_is_text_plain )</title> + <updated>2021-04-19T12:17:12Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>Random test failure ( test_xml_is_text_plain )</summary> + <description>```sh +$ ninja -C build-dir/ test +ninja: Entering directory `build-dir/' + +... +... + +# Bug Reference: http://bugzilla.gnome.org/show_bug.cgi?id=655378 +# Got retval 3 for uri 'http://leoville.tv/podcasts/floss.xml' +Bail out! ERROR:../plparse/tests/parser.c:1102:test_xml_is_text_plain: assertion failed (result == TOTEM_PL_PARSER_RESULT_SUCCESS): (3 == 2) +--- stderr --- +** Message: 16:44:54.297: Is special type 'application/rss+xml' +** Message: 16:44:54.298: Is special type 'application/rss+xml' +** Message: 16:44:54.299: Is special type 'application/rss+xml' +** Message: 16:44:54.299: couldn't mmap file:///tmp/file_doesnt_exist.wmv: Failed to open file “file:///tmp/file_doesnt_exist.wmv”: open() failed: No such file or directory +** Message: 16:44:54.299: Is special type 'application/rss+xml' +** +ERROR:../plparse/tests/parser.c:1102:test_xml_is_text_plain: assertion failed (result == TOTEM_PL_PARSER_RESULT_SUCCESS): (3 == 2) +------- + +Summary of Failures: + +1/2 parser FAIL 38.50s (killed by signal 6 SIGABRT) +1/2 parser FAIL 38.50s (killed by signal 6 SIGABRT) + +Ok: 1 +Expected Fail: 0 +Fail: 1 +Unexpected Pass: 0 +Skipped: 0 +Timeout: 0 +``` + +```sh +(gdb) bt +#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 +#1 0x00007f1e10520537 in __GI_abort () at abort.c:79 +#2 0x00007f1e106dcdcc in g_assertion_message (domain=<optimized out>, file=0x56328c05300a "../plparse/tests/parser.c", line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../../../glib/gtestutils.c:2937 +#3 0x00007f1e1073a646 in g_assertion_message_cmpnum (domain=domain@entry=0x0, file=file@entry=0x56328c05300a "../plparse/tests/parser.c", line=line@entry=1102, func=func@entry=0x56328c058680 <__func__.8> "test_xml_is_text_plain", expr=expr@entry=0x56328c057300 "result == TOTEM_PL_PARSER_RESULT_SUCCESS", arg1=3, cmp=cmp@entry=0x56328c0530bc "==", arg2=2, numtype=105 'i') at ../../../glib/gtestutils.c:2996 +#4 0x000056328c051303 in test_xml_is_text_plain () at ../plparse/tests/parser.c:1102 +#5 test_xml_is_text_plain () at ../plparse/tests/parser.c:1091 +#6 0x00007f1e10739b9e in test_case_run (tc=0x7f1e0000fd60) at ../../../glib/gtestutils.c:2656 +#7 g_test_run_suite_internal (suite=suite@entry=0x56328db104c0, path=path@entry=0x0) at ../../../glib/gtestutils.c:2744 +#8 0x00007f1e1073999b in g_test_run_suite_internal (suite=suite@entry=0x56328db10040, path=path@entry=0x0) at ../../../glib/gtestutils.c:2756 +#9 0x00007f1e1073a08a in g_test_run_suite (suite=0x56328db10040) at ../../../glib/gtestutils.c:2831 +#10 0x00007f1e1073a0a1 in g_test_run () at ../../../glib/gtestutils.c:2065 +#11 0x000056328c04cdb6 in main (argc=<optimized out>, argv=<optimized out>) at ../plparse/tests/parser.c:1788 +``` + +**Subsequent run passes:** + +```sh +$ ninja -C build-dir/ test +ninja: Entering directory `build-dir/' +[0/1] Running all tests. +1/2 parser OK 20.07s +2/2 disc OK 0.05s + + +Ok: 2 +Expected Fail: 0 +Fail: 0 +Unexpected Pass: 0 +Skipped: 0 +Timeout: 0 +```</description> + <content>```sh +$ ninja -C build-dir/ test +ninja: Entering directory `build-dir/' + +... +... + +# Bug Reference: http://bugzilla.gnome.org/show_bug.cgi?id=655378 +# Got retval 3 for uri 'http://leoville.tv/podcasts/floss.xml' +Bail out! ERROR:../plparse/tests/parser.c:1102:test_xml_is_text_plain: assertion failed (result == TOTEM_PL_PARSER_RESULT_SUCCESS): (3 == 2) +--- stderr --- +** Message: 16:44:54.297: Is special type 'application/rss+xml' +** Message: 16:44:54.298: Is special type 'application/rss+xml' +** Message: 16:44:54.299: Is special type 'application/rss+xml' +** Message: 16:44:54.299: couldn't mmap file:///tmp/file_doesnt_exist.wmv: Failed to open file “file:///tmp/file_doesnt_exist.wmv”: open() failed: No such file or directory +** Message: 16:44:54.299: Is special type 'application/rss+xml' +** +ERROR:../plparse/tests/parser.c:1102:test_xml_is_text_plain: assertion failed (result == TOTEM_PL_PARSER_RESULT_SUCCESS): (3 == 2) +------- + +Summary of Failures: + +1/2 parser FAIL 38.50s (killed by signal 6 SIGABRT) +1/2 parser FAIL 38.50s (killed by signal 6 SIGABRT) + +Ok: 1 +Expected Fail: 0 +Fail: 1 +Unexpected Pass: 0 +Skipped: 0 +Timeout: 0 +``` + +```sh +(gdb) bt +#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 +#1 0x00007f1e10520537 in __GI_abort () at abort.c:79 +#2 0x00007f1e106dcdcc in g_assertion_message (domain=<optimized out>, file=0x56328c05300a "../plparse/tests/parser.c", line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../../../glib/gtestutils.c:2937 +#3 0x00007f1e1073a646 in g_assertion_message_cmpnum (domain=domain@entry=0x0, file=file@entry=0x56328c05300a "../plparse/tests/parser.c", line=line@entry=1102, func=func@entry=0x56328c058680 <__func__.8> "test_xml_is_text_plain", expr=expr@entry=0x56328c057300 "result == TOTEM_PL_PARSER_RESULT_SUCCESS", arg1=3, cmp=cmp@entry=0x56328c0530bc "==", arg2=2, numtype=105 'i') at ../../../glib/gtestutils.c:2996 +#4 0x000056328c051303 in test_xml_is_text_plain () at ../plparse/tests/parser.c:1102 +#5 test_xml_is_text_plain () at ../plparse/tests/parser.c:1091 +#6 0x00007f1e10739b9e in test_case_run (tc=0x7f1e0000fd60) at ../../../glib/gtestutils.c:2656 +#7 g_test_run_suite_internal (suite=suite@entry=0x56328db104c0, path=path@entry=0x0) at ../../../glib/gtestutils.c:2744 +#8 0x00007f1e1073999b in g_test_run_suite_internal (suite=suite@entry=0x56328db10040, path=path@entry=0x0) at ../../../glib/gtestutils.c:2756 +#9 0x00007f1e1073a08a in g_test_run_suite (suite=0x56328db10040) at ../../../glib/gtestutils.c:2831 +#10 0x00007f1e1073a0a1 in g_test_run () at ../../../glib/gtestutils.c:2065 +#11 0x000056328c04cdb6 in main (argc=<optimized out>, argv=<optimized out>) at ../plparse/tests/parser.c:1788 +``` + +**Subsequent run passes:** + +```sh +$ ninja -C build-dir/ test +ninja: Entering directory `build-dir/' +[0/1] Running all tests. +1/2 parser OK 20.07s +2/2 disc OK 0.05s + + +Ok: 2 +Expected Fail: 0 +Fail: 0 +Unexpected Pass: 0 +Skipped: 0 +Timeout: 0 +```</content> + <labels> + <label>2. Needs Diagnosis</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/13</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/13"/> + <title>Add whitelists, in place of blacklists</title> + <updated>2021-04-19T12:14:52Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Add whitelists, in place of blacklists</summary> + <description>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#673588)](https://bugzilla.gnome.org/show_bug.cgi?id=673588)** +## Description +We have ignore_mimetypes and ignore_schemes. We should also have a whitelist for use in totem-video-thumbnailer. + + +### Blocking + * [Bug 673590](https://bugzilla.gnome.org/show_bug.cgi?id=673590)</description> + <content>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#673588)](https://bugzilla.gnome.org/show_bug.cgi?id=673588)** +## Description +We have ignore_mimetypes and ignore_schemes. We should also have a whitelist for use in totem-video-thumbnailer. + + +### Blocking + * [Bug 673590](https://bugzilla.gnome.org/show_bug.cgi?id=673590)</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/26</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/26"/> + <title>Add &quot;mime-type&quot; property to plparser object</title> + <updated>2021-04-19T12:14:51Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>Add "mime-type" property to plparser object</summary> + <description>Rhythmbox currently passes the `'collectionViewUrl'` ( from itunes search json results ), as below: + +`collectionViewUrl: https://podcasts.apple.com/us/podcast/global-news-podcast/id135067274?uo=4` + +`totem_pl_parser_parse (parser, collectionViewUrl, FALSE);` + +totem-pl-parser obtaines the itms id which is `135067274` and again does a itunes lookup, as below: + +`json_uri = g_strdup_printf ("https://itunes.apple.com/lookup?id=%s&entity=podcast", itms_id);` + +and obtains the RSS feed url from the `'feedUrl'` json attribute in the lookup result. + +The second itunes lookup step is pure overhead, as Rhythmbox can obtain and pass `'feedUrl'` directly from search results to totem-pl-parser. In that case, it would be better if Rhythmbox can force the mime-type as `application/rss+xml` rather than totem-pl-parser detecting the mime-type and matching against supported types. The itms code path described above, infact uses the direct call without checking mime-type, as below: + +`ret = totem_pl_parser_add_rss (parser, feed_file, NULL, parse_data, NULL);` + +This should speedup podcast parsing in all apps which know the mime-type well in advance.</description> + <content>Rhythmbox currently passes the `'collectionViewUrl'` ( from itunes search json results ), as below: + +`collectionViewUrl: https://podcasts.apple.com/us/podcast/global-news-podcast/id135067274?uo=4` + +`totem_pl_parser_parse (parser, collectionViewUrl, FALSE);` + +totem-pl-parser obtaines the itms id which is `135067274` and again does a itunes lookup, as below: + +`json_uri = g_strdup_printf ("https://itunes.apple.com/lookup?id=%s&entity=podcast", itms_id);` + +and obtains the RSS feed url from the `'feedUrl'` json attribute in the lookup result. + +The second itunes lookup step is pure overhead, as Rhythmbox can obtain and pass `'feedUrl'` directly from search results to totem-pl-parser. In that case, it would be better if Rhythmbox can force the mime-type as `application/rss+xml` rather than totem-pl-parser detecting the mime-type and matching against supported types. The itms code path described above, infact uses the direct call without checking mime-type, as below: + +`ret = totem_pl_parser_add_rss (parser, feed_file, NULL, parse_data, NULL);` + +This should speedup podcast parsing in all apps which know the mime-type well in advance.</content> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/34</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/34"/> + <title>Support full parsing cancellation</title> + <updated>2021-04-19T12:10:41Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/29033/avatar.png"/> + <author> + <name>crvi</name> + <email></email> + </author> + <summary>Support full parsing cancellation</summary> + <description>Currently, we support cancellation before parsing, not otherwise.</description> + <content>Currently, we support cancellation before parsing, not otherwise.</content> + <labels> + <label>1. Enhancement</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/22</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/22"/> + <title>Does not work with GJS (Introspection)</title> + <updated>2021-01-28T17:59:49Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/f8b185f04383f2937ffd11f497d0d7dc?s=80&d=identicon"/> + <author> + <name>abak</name> + <email></email> + </author> + <summary>Does not work with GJS (Introspection)</summary> + <description>TotemPlParser is not usable with GJS (Javascript). +Tested version: 3.26.5 (GJS 1.64.3) + + * Async: + + ```Javascript +#!/usr/bin/gjs + +const GLib = imports.gi.GLib; +const TotemPlParser = imports.gi.TotemPlParser; + +let uri = 'file:///home/me/playlist.m3u'; + +let parser = new imports.gi.TotemPlParser.Parser(); +parser.connect('playlist-started', (parser, uri, metadata) => log("playlist started " + [parser, uri, metadata])); +parser.connect('entry-parsed', (parser, uri, metadata) => log("entry parsed " + [parser, uri, metadata])); +parser.connect('playlist-ended', (parser, uri, metadata) => log("playlist ended " + [parser, uri, metadata])); + +parser.parse_async(uri, true, null, (source, result) => { + log('parse callback ' + [source, result]); +}); + +GLib.MainLoop.new(null, true).run(); + +/* return: + +(gjs:2781): Gjs-WARNING **: 21:48:14.325: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserASync.js:17:31 + +...... + +(gjs:2781): Gjs-WARNING **: 21:48:14.325: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserASync.js:17:31 + +Gjs-Message: 21:48:14.325: JS LOG: playlist ended [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x3f0460589080 native@0x55c8213b5580],file:///home/me/playlist.m3u, +Gjs-Message: 21:48:14.330: JS LOG: parse callback [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x3f0460589080 native@0x55c8213b5580],[object instance wrapper GIName:Gio.Task jsobj@0x3f0460588d30 native@0x55c82139ad70] + +*/ + ``` + + * Sync: + + ```Javascript +#!/usr/bin/gjs + +const GLib = imports.gi.GLib; +const TotemPlParser = imports.gi.TotemPlParser; + +let uri = 'file:///home/me/playlist.m3u'; + +let parser = new imports.gi.TotemPlParser.Parser(); +parser.connect('playlist-started', (parser, uri, metadata) => log("playlist started " + [parser, uri, metadata])); +parser.connect('entry-parsed', (parser, uri, metadata) => log("entry parsed " + [parser, uri, metadata])); +parser.connect('playlist-ended', (parser, uri, metadata) => log("playlist ended " + [parser, uri, metadata])); + +parser.parse(uri, true); + +GLib.MainLoop.new(null, true).run(); + +/* return: + +(gjs:2716): Gjs-WARNING **: 21:46:23.844: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserSync.js:13:8 + +...... + +(gjs:2716): Gjs-WARNING **: 21:46:23.844: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserSync.js:13:8 + + +Gjs-Message: 21:41:36.996: JS LOG: playlist ended [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x30d971589080 native@0x55ee3361d200],file:///home/me/playlist.m3u, + +*/ + ``` + +Without 'playlist-started' and 'entry-parsed' signal connections, there is no error message.</description> + <content>TotemPlParser is not usable with GJS (Javascript). +Tested version: 3.26.5 (GJS 1.64.3) + + * Async: + + ```Javascript +#!/usr/bin/gjs + +const GLib = imports.gi.GLib; +const TotemPlParser = imports.gi.TotemPlParser; + +let uri = 'file:///home/me/playlist.m3u'; + +let parser = new imports.gi.TotemPlParser.Parser(); +parser.connect('playlist-started', (parser, uri, metadata) => log("playlist started " + [parser, uri, metadata])); +parser.connect('entry-parsed', (parser, uri, metadata) => log("entry parsed " + [parser, uri, metadata])); +parser.connect('playlist-ended', (parser, uri, metadata) => log("playlist ended " + [parser, uri, metadata])); + +parser.parse_async(uri, true, null, (source, result) => { + log('parse callback ' + [source, result]); +}); + +GLib.MainLoop.new(null, true).run(); + +/* return: + +(gjs:2781): Gjs-WARNING **: 21:48:14.325: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserASync.js:17:31 + +...... + +(gjs:2781): Gjs-WARNING **: 21:48:14.325: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserASync.js:17:31 + +Gjs-Message: 21:48:14.325: JS LOG: playlist ended [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x3f0460589080 native@0x55c8213b5580],file:///home/me/playlist.m3u, +Gjs-Message: 21:48:14.330: JS LOG: parse callback [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x3f0460589080 native@0x55c8213b5580],[object instance wrapper GIName:Gio.Task jsobj@0x3f0460588d30 native@0x55c82139ad70] + +*/ + ``` + + * Sync: + + ```Javascript +#!/usr/bin/gjs + +const GLib = imports.gi.GLib; +const TotemPlParser = imports.gi.TotemPlParser; + +let uri = 'file:///home/me/playlist.m3u'; + +let parser = new imports.gi.TotemPlParser.Parser(); +parser.connect('playlist-started', (parser, uri, metadata) => log("playlist started " + [parser, uri, metadata])); +parser.connect('entry-parsed', (parser, uri, metadata) => log("entry parsed " + [parser, uri, metadata])); +parser.connect('playlist-ended', (parser, uri, metadata) => log("playlist ended " + [parser, uri, metadata])); + +parser.parse(uri, true); + +GLib.MainLoop.new(null, true).run(); + +/* return: + +(gjs:2716): Gjs-WARNING **: 21:46:23.844: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserSync.js:13:8 + +...... + +(gjs:2716): Gjs-WARNING **: 21:46:23.844: JS ERROR: Error: No introspection information found for TotemPlParserMetadata +@./parserSync.js:13:8 + + +Gjs-Message: 21:41:36.996: JS LOG: playlist ended [object instance wrapper GIName:TotemPlParser.Parser jsobj@0x30d971589080 native@0x55ee3361d200],file:///home/me/playlist.m3u, + +*/ + ``` + +Without 'playlist-started' and 'entry-parsed' signal connections, there is no error message.</content> + <labels> + <label>1. Bug</label> + <label>4. Help Wanted</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/14</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/14"/> + <title>Directory parsing problem</title> + <updated>2019-03-20T10:38:29Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Directory parsing problem</summary> + <description>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#678814)](https://bugzilla.gnome.org/show_bug.cgi?id=678814)** +## Description +totem-pl-parser recursive parsing fails when the directory depth is too high, and the last level of recursion is a directory</description> + <content>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#678814)](https://bugzilla.gnome.org/show_bug.cgi?id=678814)** +## Description +totem-pl-parser recursive parsing fails when the directory depth is too high, and the last level of recursion is a directory</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/11</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/11"/> + <title>totem-pl-parser fails to detect max open files</title> + <updated>2019-03-20T10:38:06Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>totem-pl-parser fails to detect max open files</summary> + <description>## Submitted by Jon Masters + +**[Link to original bug (#583473)](https://bugzilla.gnome.org/show_bug.cgi?id=583473)** +## Description +Please describe the problem: +my_g_file_info_get_mime_type_with_data fails to detect that a GError object might be telling it that the maximum number of open file descriptors has been exceeded. + +Steps to reproduce: +1. +2. +3. + + +Actual results: + + +Expected results: + + +Does this happen every time? + + +Other information: + +Version: 2.24.x</description> + <content>## Submitted by Jon Masters + +**[Link to original bug (#583473)](https://bugzilla.gnome.org/show_bug.cgi?id=583473)** +## Description +Please describe the problem: +my_g_file_info_get_mime_type_with_data fails to detect that a GError object might be telling it that the maximum number of open file descriptors has been exceeded. + +Steps to reproduce: +1. +2. +3. + + +Actual results: + + +Expected results: + + +Does this happen every time? + + +Other information: + +Version: 2.24.x</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/10</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/10"/> + <title>add API for parsing in-memory playlists</title> + <updated>2019-03-20T10:37:58Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>add API for parsing in-memory playlists</summary> + <description>## Submitted by Jonathan Matthew + +**[Link to original bug (#518811)](https://bugzilla.gnome.org/show_bug.cgi?id=518811)** +## Description +For last.fm streaming ([bug 518231](https://bugzilla.gnome.org/show_bug.cgi?id=518231)), it'd be good to be able to pass an in-memory playlist to totem-pl-parser. The obvious: + + totem_pl_parser_parse_from_data (parser, data, data_len, fallback) + +(with a 'base' arg if required) would do nicely. + +Later on, a _parse variant taking a GInputStream could be handy, although I don't have any use cases for that. + +Version: 2.23.x</description> + <content>## Submitted by Jonathan Matthew + +**[Link to original bug (#518811)](https://bugzilla.gnome.org/show_bug.cgi?id=518811)** +## Description +For last.fm streaming ([bug 518231](https://bugzilla.gnome.org/show_bug.cgi?id=518231)), it'd be good to be able to pass an in-memory playlist to totem-pl-parser. The obvious: + + totem_pl_parser_parse_from_data (parser, data, data_len, fallback) + +(with a 'base' arg if required) would do nicely. + +Later on, a _parse variant taking a GInputStream could be handy, although I don't have any use cases for that. + +Version: 2.23.x</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/9</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/9"/> + <title>Doesn&#39;t inherit properties when parsing substream</title> + <updated>2019-03-20T10:37:49Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Doesn't inherit properties when parsing substream</summary> + <description>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#507825)](https://bugzilla.gnome.org/show_bug.cgi?id=507825)** +## Description +$ ./test-parser file:///home/hadess/Projects/Cvs/totem-pl-parser/plparse/test.asx + +###################### parsing ################ + +added URI 'mmsh://viptf1.yacast.net/tf1jt/jt13d08012007.asf' + + +<ASX VERSION="3.0"> +`<ENTRY>` + `<TITLE>`Inquiétude des pêcheurs de bulots du Cotentin`</TITLE>` + <STARTTIME VALUE="907.000000" /> + <DURATION VALUE="109.000000" /> + <REF HREF="http://viptf1.yacast.net/tf1jt/jt13d08012007.asf" /> +`</ENTRY>` +`</ASX>` + +The duration and starttime aren't passed down to the children when they should be. + +Version: 2.23.x</description> + <content>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#507825)](https://bugzilla.gnome.org/show_bug.cgi?id=507825)** +## Description +$ ./test-parser file:///home/hadess/Projects/Cvs/totem-pl-parser/plparse/test.asx + +###################### parsing ################ + +added URI 'mmsh://viptf1.yacast.net/tf1jt/jt13d08012007.asf' + + +<ASX VERSION="3.0"> +`<ENTRY>` + `<TITLE>`Inquiétude des pêcheurs de bulots du Cotentin`</TITLE>` + <STARTTIME VALUE="907.000000" /> + <DURATION VALUE="109.000000" /> + <REF HREF="http://viptf1.yacast.net/tf1jt/jt13d08012007.asf" /> +`</ENTRY>` +`</ASX>` + +The duration and starttime aren't passed down to the children when they should be. + +Version: 2.23.x</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/8</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/8"/> + <title>Does not parse asx playlist trees like WMP</title> + <updated>2019-03-20T10:37:30Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Does not parse asx playlist trees like WMP</summary> + <description>## Submitted by Marcus Granado + +**[Link to original bug (#426773)](https://bugzilla.gnome.org/show_bug.cgi?id=426773)** +## Description +Please describe the problem: +Totem 2.18.0 in Ubuntu Feisty Beta (using today's repository, xine-lib 1.1.4 and today's GStreamer 0.10.12) only plays the *first* video in a master-playlist containing nested asx sub-playlists (in a playlist tree with arbitrary depth). + +Microsoft media player iterates over all sub-playlists (the nodes/leaves of the tree) correctly and plays *all* the videos in the nested playlist. + +The master asx playlist (the root of the tree, listed below) contains further references to other nested asx sub-playlists as in a tree of playlists. Each sub-playlist leaf contains only one mms: video stream element each which should be played. +Each sub-playlist is successfully played by totem if started manually, but totem fails to iterate over all of them if given the master playlist to play. + +Steps to reproduce: + +totem "http://mrc.gran.googlepages.com/example-nested-playlist.asx" + +(the asx contents of this url can be seen below.) + +Actual results: +- only the first item of the master-playlist above is shown. +- each item can be played successfully if manually started using the sub-playlist urls (see list of urls below). +- *sometimes*, totem can be made to iterate over some of the master playlist items if the 'next item' button is pressed repeatedly without stopping. + +Expected results: +totem should play *all* videostreams in the leaves of the playlist tree, just like Microsoft Media Player does. + +Does this happen every time? +yes + +Other information: +- Microsoft media player fetches/plays each asx sub-playlists and mms: streams inside them synchronously (depth-first, blocking the iteration that fetches the next asx sub-playlist contents until the current videostream is over or cancelled). +- maybe totem is doing this asynchronously (breadth-first, fetching the contents of all asx sub-playlists before starting to play the first videostream)? + +The master playlist in the root of the tree (pointing to nested sub-playlists) given as example: + +<asx version = "3.0"> +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=654705|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=660298|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=660285|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=659836|banda=N|ext.asx"/> +`</entry>` +`</asx>` + +Version: 2.23.x</description> + <content>## Submitted by Marcus Granado + +**[Link to original bug (#426773)](https://bugzilla.gnome.org/show_bug.cgi?id=426773)** +## Description +Please describe the problem: +Totem 2.18.0 in Ubuntu Feisty Beta (using today's repository, xine-lib 1.1.4 and today's GStreamer 0.10.12) only plays the *first* video in a master-playlist containing nested asx sub-playlists (in a playlist tree with arbitrary depth). + +Microsoft media player iterates over all sub-playlists (the nodes/leaves of the tree) correctly and plays *all* the videos in the nested playlist. + +The master asx playlist (the root of the tree, listed below) contains further references to other nested asx sub-playlists as in a tree of playlists. Each sub-playlist leaf contains only one mms: video stream element each which should be played. +Each sub-playlist is successfully played by totem if started manually, but totem fails to iterate over all of them if given the master playlist to play. + +Steps to reproduce: + +totem "http://mrc.gran.googlepages.com/example-nested-playlist.asx" + +(the asx contents of this url can be seen below.) + +Actual results: +- only the first item of the master-playlist above is shown. +- each item can be played successfully if manually started using the sub-playlist urls (see list of urls below). +- *sometimes*, totem can be made to iterate over some of the master playlist items if the 'next item' button is pressed repeatedly without stopping. + +Expected results: +totem should play *all* videostreams in the leaves of the playlist tree, just like Microsoft Media Player does. + +Does this happen every time? +yes + +Other information: +- Microsoft media player fetches/plays each asx sub-playlists and mms: streams inside them synchronously (depth-first, blocking the iteration that fetches the next asx sub-playlist contents until the current videostream is over or cancelled). +- maybe totem is doing this asynchronously (breadth-first, fetching the contents of all asx sub-playlists before starting to play the first videostream)? + +The master playlist in the root of the tree (pointing to nested sub-playlists) given as example: + +<asx version = "3.0"> +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=654705|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=660298|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=660285|banda=N|ext.asx"/> +`</entry>` +`<entry>` +<ref href="http://playervideo.globo.com/webmedia/GMCMidiaASX?midiaId=659836|banda=N|ext.asx"/> +`</entry>` +`</asx>` + +Version: 2.23.x</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/7</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/7"/> + <title>Try to reduce remote accesses</title> + <updated>2019-03-20T10:37:12Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Try to reduce remote accesses</summary> + <description>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#395827)](https://bugzilla.gnome.org/show_bug.cgi?id=395827)** +## Description +$ ./test-parser http://localhost:12345/playlist.asx +###################### parsing ################ + +added URI 'http://localhost:12345/leopard.mov' with title 'empty' genre 'empty' +added URI 'http://localhost:12345/frontrow-music.mov' with title 'empty' genre 'empty' + +Shows in the logs: +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /playlist.asx HTTP/1.1" 200 319 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /playlist.asx HTTP/1.1" 200 319 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /leopard.mov HTTP/1.1" 200 348892 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /frontrow-music.mov HTTP/1.1" 200 473716 "-" "gnome-vfs/2.14.2 neon/0.25.4" + +It should only access playlist.asx once if possible. + +Version: 2.23.x</description> + <content>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#395827)](https://bugzilla.gnome.org/show_bug.cgi?id=395827)** +## Description +$ ./test-parser http://localhost:12345/playlist.asx +###################### parsing ################ + +added URI 'http://localhost:12345/leopard.mov' with title 'empty' genre 'empty' +added URI 'http://localhost:12345/frontrow-music.mov' with title 'empty' genre 'empty' + +Shows in the logs: +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /playlist.asx HTTP/1.1" 200 319 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /playlist.asx HTTP/1.1" 200 319 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /leopard.mov HTTP/1.1" 200 348892 "-" "gnome-vfs/2.14.2 neon/0.25.4" +127.0.0.1 - - [12/Jan/2007:16:19:26 +0000] "GET /frontrow-music.mov HTTP/1.1" 200 473716 "-" "gnome-vfs/2.14.2 neon/0.25.4" + +It should only access playlist.asx once if possible. + +Version: 2.23.x</content> + <labels> + <label>bugzilla</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/5</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/5"/> + <title>Handle shortened movie URLs</title> + <updated>2019-02-22T23:34:25Z</updated> + <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/a80efbd95010128eb78be538d237198b?s=80&d=identicon"/> + <author> + <name>bugzilla-migration</name> + <email></email> + </author> + <summary>Handle shortened movie URLs</summary> + <description>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#688893)](https://bugzilla.gnome.org/show_bug.cgi?id=688893)** +## Description +Such as http://t.co/99VcPH5M + +We might have a problem within totem-pl-parser instead.</description> + <content>## Submitted by Bastien Nocera `@hadess` + +**[Link to original bug (#688893)](https://bugzilla.gnome.org/show_bug.cgi?id=688893)** +## Description +Such as http://t.co/99VcPH5M + +We might have a problem within totem-pl-parser instead.</content> + <labels> + <label>1. Enhancement</label> + </labels> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/4</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/4"/> + <title>VCDs playback requires device node</title> + <updated>2019-02-15T16:39:35Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/525/avatar.png"/> + <author> + <name>Bastien Nocera</name> + <email></email> + </author> + <summary>VCDs playback requires device node</summary> + <description>The `vcdsrc` in GStreamer currently only supports playing back from block devices, and could fairly easily [support playing back from images](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/898). What it will not support is playing back from directories. + +```sh +$ ./disc /run/media/hadess/20121123_1310 +** Message: /run/media/hadess/20121123_1310 contains a Video CD. +** Message: MRL for directory is "vcd:///run/media/hadess/20121123_1310". +$ ./disc ~/Videos/VCD.iso +** Message: /home/hadess/Videos/VCD.iso contains a Video CD. +** Message: MRL for directory is "vcd:///home/hadess/Videos/VCD.iso". +$ mount | grep 20121123_1310 +/home/hadess/Videos/VCD.iso on /run/media/hadess/20121123_1310 type iso9660 (ro,nosuid,nodev,relatime,norock,check=r,map=n,blocksize=2048,uid=1000,gid=1000,dmode=500,fmode=400,uhelper=udisks2) +``` + +Both `./disc` runs should have the same result instead, pointing to an image or block device, never to a directory.</description> + <content>The `vcdsrc` in GStreamer currently only supports playing back from block devices, and could fairly easily [support playing back from images](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/898). What it will not support is playing back from directories. + +```sh +$ ./disc /run/media/hadess/20121123_1310 +** Message: /run/media/hadess/20121123_1310 contains a Video CD. +** Message: MRL for directory is "vcd:///run/media/hadess/20121123_1310". +$ ./disc ~/Videos/VCD.iso +** Message: /home/hadess/Videos/VCD.iso contains a Video CD. +** Message: MRL for directory is "vcd:///home/hadess/Videos/VCD.iso". +$ mount | grep 20121123_1310 +/home/hadess/Videos/VCD.iso on /run/media/hadess/20121123_1310 type iso9660 (ro,nosuid,nodev,relatime,norock,check=r,map=n,blocksize=2048,uid=1000,gid=1000,dmode=500,fmode=400,uhelper=udisks2) +``` + +Both `./disc` runs should have the same result instead, pointing to an image or block device, never to a directory.</content> +</entry> +<entry> + <id>https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/3</id> + <link rel="alternate" href="https://gitlab.gnome.org/GNOME/totem-pl-parser/-/issues/3"/> + <title>Add discs to tests</title> + <updated>2019-02-15T13:32:40Z</updated> + <media:thumbnail width="40" height="40" url="https://gitlab.gnome.org/uploads/-/system/user/avatar/525/avatar.png"/> + <author> + <name>Bastien Nocera</name> + <email></email> + </author> + <summary>Add discs to tests</summary> + <description>`plparse/tests/disc.c` just doesn't do any tests if it's not on my machine, and needs a disc in a drive that's never plugged in. We should at least have test for the disc images that are easy to mock with ISO images (VCD, DVD, BD).</description> + <content>`plparse/tests/disc.c` just doesn't do any tests if it's not on my machine, and needs a disc in a drive that's never plugged in. We should at least have test for the disc images that are easy to mock with ISO images (VCD, DVD, BD).</content> +</entry> +</feed> + diff --git a/plparse/tests/parser.c b/plparse/tests/parser.c index 00acea2..35f62f2 100644 --- a/plparse/tests/parser.c +++ b/plparse/tests/parser.c @@ -749,7 +749,7 @@ test_parsing_needle_carriage_return (void) /* atom needle test */ uri = get_relative_uri (TEST_SRCDIR "atom.xml"); - g_assert_cmpuint (parser_test_get_num_entries (uri), ==, 0); + g_assert_cmpuint (parser_test_get_num_entries (uri), ==, 1); g_free (uri); /* opml needle test */ @@ -1292,6 +1292,55 @@ test_parsing_m3u_streaming (void) } static void +video_links_slow_parsing (const char *uri, gfloat timeout) +{ + time_t start, end; + double run_time; + + g_setenv ("SLOW_PARSING", "1", TRUE); + + start = time (NULL); + option_no_recurse = TRUE; + parser_test_get_playlist_field (uri, TOTEM_PL_PARSER_FIELD_TITLE); + end = time (NULL); + + run_time = difftime (end, start); + + g_assert_cmpfloat (run_time, <, timeout); +} + +static void +test_video_links_slow_parsing () +{ + char *uri; + gfloat timeout = 2.0; /* seconds */ + + /* rss feed with 400 entries. should take 400 * 1 = 400 + * seconds with videosite check, and approx. less than 1 + * second if we bypass videosite check. + */ + uri = get_relative_uri (TEST_SRCDIR "podcast-different-item-images.rss"); + video_links_slow_parsing (uri, timeout); + g_free (uri); + + /* atom feed with 20 entries. should take 20 * 1 = 20 + * seconds with videosite check, and approx. less than 1 + * second if we bypass videosite check. + */ + uri = get_relative_uri (TEST_SRCDIR "gitlab-issues.atom"); + video_links_slow_parsing (uri, timeout); + g_free (uri); + + /* atom feed with 5 entries. should take 5 * 1 = 5 + * seconds with videosite check, and approx. less than 1 + * second if we bypass videosite check. + */ + uri = get_relative_uri (TEST_SRCDIR "status-gnome-org.atom"); + video_links_slow_parsing (uri, timeout); + g_free (uri); +} + +static void test_parsing_rss_id (void) { char *uri; @@ -1880,6 +1929,8 @@ main (int argc, char *argv[]) g_test_add_func ("/parser/saving/parsing/xspf_title", test_saving_parsing_xspf_title); g_test_add_func ("/parser/saving/sync", test_saving_sync); g_test_add_func ("/parser/saving/async", test_saving_async); + /* set an envvar, keep at the end */ + g_test_add_func ("/parser/parsing/video_links_slow_parsing", test_video_links_slow_parsing); return g_test_run (); } diff --git a/plparse/tests/status-gnome-org.atom b/plparse/tests/status-gnome-org.atom new file mode 100644 index 0000000..c6fb5ec --- /dev/null +++ b/plparse/tests/status-gnome-org.atom @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" > + <title type="text">GNOME infrastructure Status</title> + <subtitle type="html"><![CDATA[Status Feed]]></subtitle> + <link href="http://status.gnome.org/atom"></link> + <id>https://status.gnome.org/</id> + <link rel="alternate" type="text/html" href="http://status.gnome.org/atom" ></link> + <link rel="self" type="application/atom+xml" href="https://status.gnome.org/" ></link> + <updated>2021-05-12T18:00:00+00:00</updated> + <entry> + <author> + <name>GNOME infrastructure Status</name> + </author> + <media:group> + <media:content url="https://status.gnome.org/media/status-1.mp4"/> + </media:group> + <title type="text"><![CDATA[Mass reboots]]></title> + <link rel="alternate" type="text/html" href="http://status.gnome.org/incident/23424/"></link> + <id>http://status.gnome.org/incident/23424/</id> + <summary type="html"><![CDATA[<p>Mass reboots in progress</p> +]]></summary> + <content type="html"><![CDATA[]]></content> + <updated>2021-04-08T08:55:13+00:00</updated> + </entry> + <entry> + <author> + <name>GNOME infrastructure Status</name> + </author> + <media:group> + <media:content url="https://status.gnome.org/media/status-2.mp4"/> + </media:group> + <title type="text"><![CDATA[Planned maintenance in progress]]></title> + <link rel="alternate" type="text/html" href="http://status.gnome.org/incident/22711/"></link> + <id>http://status.gnome.org/incident/22711/</id> + <summary type="html"><![CDATA[<p>All GNOME services will be shut down between 12:00 - 13:30 PM UTC due to networking infrastructure maintenance.</p> +]]></summary> + <content type="html"><![CDATA[]]></content> + <updated>2021-01-28T11:47:58+00:00</updated> + </entry> + <entry> + <author> + <name>GNOME infrastructure Status</name> + </author> + <media:group> + <media:content url="https://status.gnome.org/media/status-3.mp4"/> + </media:group> + <title type="text"><![CDATA[Mass reboots]]></title> + <link rel="alternate" type="text/html" href="http://status.gnome.org/incident/22099/"></link> + <id>http://status.gnome.org/incident/22099/</id> + <summary type="html"><![CDATA[<p>https://mail.gnome.org/archives/infrastructure-announce/2020-November/msg00000.html</p> +]]></summary> + <content type="html"><![CDATA[]]></content> + <updated>2020-11-16T18:43:38+00:00</updated> + </entry> + <entry> + <author> + <name>GNOME infrastructure Status</name> + </author> + <media:group> + <media:content url="https://status.gnome.org/media/status-4.mp4"/> + </media:group> + <title type="text"><![CDATA[Mass reboots]]></title> + <link rel="alternate" type="text/html" href="http://status.gnome.org/incident/17256/"></link> + <id>http://status.gnome.org/incident/17256/</id> + <summary type="html"><![CDATA[<p>https://mail.gnome.org/archives/infrastructure-announce/2020-August/msg00001.html</p> +]]></summary> + <content type="html"><![CDATA[]]></content> + <updated>2020-08-12T13:22:19+00:00</updated> + </entry> + <entry> + <author> + <name>GNOME infrastructure Status</name> + </author> + <media:group> + <media:content url="https://status.gnome.org/media/status-5.mp4"/> + </media:group> + <title type="text"><![CDATA[Mass reboots]]></title> + <link rel="alternate" type="text/html" href="http://status.gnome.org/incident/13552/"></link> + <id>http://status.gnome.org/incident/13552/</id> + <summary type="html"><![CDATA[<p>https://mail.gnome.org/archives/infrastructure-announce/2020-June/msg00000.html</p> +]]></summary> + <content type="html"><![CDATA[]]></content> + <updated>2020-06-09T08:52:51+00:00</updated> + </entry> +</feed> diff --git a/plparse/tests/videosite-tester.sh b/plparse/tests/videosite-tester.sh index c10fac1..c8f42b0 100755 --- a/plparse/tests/videosite-tester.sh +++ b/plparse/tests/videosite-tester.sh @@ -61,3 +61,10 @@ if [ $1 = "--check" ] && [ $2 = "--url" ] && [ $3 = "http://www.guardian.co.uk/t echo -n "TRUE" exit 0 fi + +# test_video_links_slow_parsing +if [ x$SLOW_PARSING != x ] ; then + sleep 1 +fi + +echo -n "FALSE" |