1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3# 4# Project ___| | | | _ \| | 5# / __| | | | |_) | | 6# | (__| |_| | _ <| |___ 7# \___|\___/|_| \_\_____| 8# 9# Copyright (C) 2017, Daniel Stenberg, <daniel@haxx.se>, et al. 10# 11# This software is licensed as described in the file COPYING, which 12# you should have received as part of this distribution. The terms 13# are also available at https://curl.haxx.se/docs/copyright.html. 14# 15# You may opt to use, copy, modify, merge, publish, distribute and/or sell 16# copies of the Software, and permit persons to whom the Software is 17# furnished to do so, under the terms of the COPYING file. 18# 19# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20# KIND, either express or implied. 21# 22"""Module for extracting test data from the test data folder""" 23 24from __future__ import (absolute_import, division, print_function, 25 unicode_literals) 26import os 27import re 28import logging 29 30log = logging.getLogger(__name__) 31 32 33REPLY_DATA = re.compile("<reply>\s*<data>(.*?)</data>", re.MULTILINE | re.DOTALL) 34 35 36class TestData(object): 37 def __init__(self, data_folder): 38 self.data_folder = data_folder 39 40 def get_test_data(self, test_number): 41 # Create the test file name 42 filename = os.path.join(self.data_folder, 43 "test{0}".format(test_number)) 44 45 log.debug("Parsing file %s", filename) 46 47 with open(filename, "rb") as f: 48 contents = f.read().decode("utf-8") 49 50 m = REPLY_DATA.search(contents) 51 if not m: 52 raise Exception("Couldn't find a <reply><data> section") 53 54 # Left-strip the data so we don't get a newline before our data. 55 return m.group(1).lstrip() 56 57 58if __name__ == '__main__': 59 td = TestData("./data") 60 data = td.get_test_data(1) 61 print(data) 62