From 271f8beecfff2c6b8c82cac38b0cac82da7c10d3 Mon Sep 17 00:00:00 2001 From: Hubert Tarasiuk Date: Mon, 15 Jun 2015 12:13:46 +0200 Subject: [PATCH 03/12] Test case for Metalink in XML. * testenv/Test-metalink-xml.py: New test. * testenv/Makefile.am: Add file for automake. --- testenv/Makefile.am | 9 ++++- testenv/Test-metalink-xml.py | 88 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100755 testenv/Test-metalink-xml.py diff --git a/testenv/Makefile.am b/testenv/Makefile.am index 1058421..f10a7b1 100644 --- a/testenv/Makefile.am +++ b/testenv/Makefile.am @@ -26,6 +26,12 @@ # as that of the covered work. +if METALINK_IS_ENABLED + METALINK_TESTS = Test-metalink-xml.py +else + METALINK_TESTS = +endif + AUTOMAKE_OPTIONS = parallel-tests AM_TESTS_ENVIRONMENT = export WGETRC=/dev/null; MAKE_CHECK=True; export MAKE_CHECK;\ export PYTHONPATH=$$PYTHONPATH:$(srcdir); export VALGRIND_TESTS="@VALGRIND_TESTS@"; @@ -55,7 +61,8 @@ if HAVE_PYTHON3 Test--spider-r.py \ Test-redirect-crash.py \ Test-reserved-chars.py \ - Test-condget.py + Test-condget.py \ + $(METALINK_TESTS) # added test cases expected to fail here and under TESTS XFAIL_TESTS = diff --git a/testenv/Test-metalink-xml.py b/testenv/Test-metalink-xml.py new file mode 100755 index 0000000..700418b --- /dev/null +++ b/testenv/Test-metalink-xml.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +from sys import exit +from test.http_test import HTTPTest +from misc.wget_file import WgetFile +import re +import hashlib + +""" + This is to test Metalink as XML file support in Wget. +""" +TEST_NAME = "Metalink in XML" +############# File Definitions ############################################### +File1 = "Would you like some Tea?" +File1_lowPref = "Do not take this" +File1_sha256 = hashlib.sha256 (File1.encode ('UTF-8')).hexdigest () +MetaXml = \ +""" + + + GNU Wget + + + GNU GPL + http://www.gnu.org/licenses/gpl.html + + Wget Test File 1 + 1.2.3 + Wget Test File 1 description + + + + {{FILE1_HASH}} + + + http://broken.example/File1 + http://{{SRV_HOST}}:{{SRV_PORT}}/File1_lowPref + http://{{SRV_HOST}}:{{SRV_PORT}}/File1 + + + + +""" + +A_File = WgetFile ("File1", File1) +B_File = WgetFile ("File1_lowPref", File1_lowPref) +MetaFile = WgetFile ("test.meta4", MetaXml) + +WGET_OPTIONS = "--input-metalink test.meta4" +WGET_URLS = [[]] + +Files = [[A_File, B_File]] +Existing_Files = [MetaFile] + +ExpectedReturnCode = 0 +ExpectedDownloadedFiles = [A_File, MetaFile] + +################ Pre and Post Test Hooks ##################################### +pre_test = { + "ServerFiles" : Files, + "LocalFiles" : Existing_Files +} +test_options = { + "WgetCommands" : WGET_OPTIONS, + "Urls" : WGET_URLS +} +post_test = { + "ExpectedFiles" : ExpectedDownloadedFiles, + "ExpectedRetcode" : ExpectedReturnCode +} + +http_test = HTTPTest ( + name=TEST_NAME, + pre_hook=pre_test, + test_params=test_options, + post_hook=post_test, +) + +### Get and use dynamic server sockname +srv_host, srv_port = http_test.servers[0].server_inst.socket.getsockname () + +MetaXml = re.sub (r'{{FILE1_HASH}}', File1_sha256, MetaXml) +MetaXml = re.sub (r'{{SRV_HOST}}', srv_host, MetaXml) +MetaXml = re.sub (r'{{SRV_PORT}}', str (srv_port), MetaXml) +MetaFile.content = MetaXml + +err = http_test.begin () + +exit (err) -- 2.4.3