2 * Copyright (C) 2013 Toni Gundogdu <legatvs@gmail.com>
4 * This file is part of libquvi-scripts <http://quvi.sourceforge.net>.
6 * This program is free software: you can redistribute it and/or
7 * modify it under the terms of the GNU Affero General Public
8 * License as published by the Free Software Foundation, either
9 * version 3 of the License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
16 * You should have received a copy of the GNU Affero General
17 * Public License along with this program. If not, see
18 * <http://www.gnu.org/licenses/>.
24 * Media hosted at ardmediathek.de will reportedly expire after a few
25 * weeks. This test attempts to work around this by trying to find a
26 * media URL from the website that can be used to test the media script.
28 * The front page will not contain any media URLs unless javascript is
29 * enabled. We cannot emulate js so, instead, we fetch the "Neueste
30 * Clips" which should media URLs.
41 static const gchar WWW
[] = "http://www.ardmediathek.de";
43 static gchar
*fetch_neueste_clips_page()
45 static const gchar PATTERN
[] =
46 "href=\"(.*)\" title=\".*\" data-xtclib=\"Neueste\\+Clips\"";
54 c
= capture_new(p
, PATTERN
, 0);
57 g_assert(capture_matches(c
) == TRUE
);
58 s
= capture_fetch(c
, 1);
63 u
= g_strdup_printf("%s%s", WWW
, s
);
72 static void test_media_ardmediathek()
74 static const gchar PATTERN
[] = "href=\"(.*documentId=.*)\" class";
76 struct qm_test_opts_s o
;
81 memset(&o
, 0, sizeof(o
));
83 /* Normally done in qm_test, due to fetch-parse, do it here. */
85 if (chk_skip(__func__
) == TRUE
)
88 p
= fetch_neueste_clips_page();
94 c
= capture_new(p
, PATTERN
, 0);
97 while (capture_matches(c
) == TRUE
)
99 r
= capture_fetch(c
, 1);
100 l
= g_slist_prepend(l
, g_strdup_printf("%s%s", WWW
, r
));
104 l
= g_slist_reverse(l
);
105 g_assert_cmpint(g_slist_length(l
), >, 0);
107 /* Pick a random URL from the stack. */
109 const gint32 n
= g_random_int_range(0, g_slist_length(l
));
110 u
= (gchar
*) g_slist_nth_data(l
, n
);
114 g_test_message("media URL=%s", u
);
115 qm_test(__func__
, u
, NULL
, &o
);
117 slist_free_full(l
, (GFunc
) g_free
);
122 gint
main(gint argc
, gchar
**argv
)
124 g_test_init(&argc
, &argv
, NULL
);
125 g_test_add_func("/media/ardmediathek", test_media_ardmediathek
);
126 return (g_test_run());
129 /* vim: set ts=2 sw=2 tw=72 expandtab: */