buildframework/helium/sf/python/pythoncore/lib/pythoncorecpythontests/test_ats4_aste.py
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 587 85df38eb4012
child 645 b8d81fa19e7d
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     1
# -*- coding: latin-1 -*-
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     3
#============================================================================ 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     4
#Name        : test_ats4_aste.py 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     5
#Part of     : Helium 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     6
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     7
#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     8
#All rights reserved.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
     9
#This component and the accompanying materials are made available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    10
#under the terms of the License "Eclipse Public License v1.0"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    11
#which accompanies this distribution, and is available
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    12
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    13
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    14
#Initial Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    15
#Nokia Corporation - initial contribution.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    16
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    17
#Contributors:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    18
#
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    19
#Description:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    20
#===============================================================================
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    21
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    22
""" Testing ATS4 ASTE framework. """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    23
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    24
# pylint: disable=E1101, R0903, R0911, R0912, W0603, W0142, R0902, R0201
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    25
#E1101 => Mocker shows mockery
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    26
#C0302 => too many lines
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    27
#W0142 => used * or ** magic 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    28
#W0603 => used global
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    29
#R* during refactoring
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    30
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    31
from cStringIO import StringIO
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    32
from xml.etree.ElementTree import fromstring
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    33
from xml.etree import ElementTree as et
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    34
import difflib
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    35
import logging
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    36
logging.getLogger().setLevel(logging.ERROR)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    37
import re
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    38
import tempfile
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    39
import zipfile
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    40
import os
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    41
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    42
from path import path # pylint: disable=F0401
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 587
diff changeset
    43
import mocker # pylint: disable=F0401
587
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    44
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    45
import ats3.aste
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    46
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    47
TEST_PATH = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    48
TEST_FILES = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    49
TEST_ASSET_FILES = {}
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    50
TSRC = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    51
OUTPUT = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    52
TEST_ZIP_PATH = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    53
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    54
# Shortcuts
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    55
E = et.Element
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    56
SE = et.SubElement
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    57
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    58
_logger = logging.getLogger("test.ats4_aste")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    59
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    60
class Bunch(object):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    61
    """ handle all the parameters """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    62
    def __init__(self, **kwargs):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    63
        self.__dict__.update(kwargs)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    64
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    65
def equal_xml(xml1, xml2):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    66
    """Check the equality of the given XML snippets.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    67
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    68
    Tag name equality:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    69
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    70
    >>> equal_xml('<a/>', '<a/>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    71
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    72
    >>> equal_xml('<a/>', '<b/>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    73
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    74
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    75
    Attribute equality:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    76
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    77
    >>> equal_xml('<a k="v"/>', '<a k="v"/>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    78
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    79
    >>> equal_xml('<a k="v"/>', '<a k="w"/>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    80
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    81
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    82
    Text content equality:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    83
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    84
    >>> equal_xml('<a>v</a>', '<a>v</a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    85
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    86
    >>> equal_xml('<a>v</a>', '<a>w</a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    87
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    88
    >>> equal_xml('<a>v</a>', '<a></a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    89
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    90
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    91
    Text content equality when whitespace differs:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    92
    >>> equal_xml('<a>v</a>', '<a>v </a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    93
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    94
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    95
    Equality of child elements:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    96
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    97
    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="v"/></b></a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    98
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
    99
    >>> equal_xml('<a><b><c k="v"/></b></a>', '<a><b><c k="w"/></b></a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   100
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   101
    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>w</b></a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   102
    False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   103
    >>> equal_xml('<a><b><c k="v"/>v</b></a>', '<a><b><c k="v"/>v </b></a>')
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   104
    True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   105
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   106
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   107
    if isinstance(xml1, basestring):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   108
        xml1 = fromstring(xml1)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   109
    if isinstance(xml2, basestring):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   110
        xml2 = fromstring(xml2)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   111
    if xml1.tag != xml2.tag:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   112
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   113
    if xml1.attrib != xml2.attrib:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   114
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   115
    if xml1.text:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   116
        if not xml2.text:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   117
            return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   118
    if xml2.text:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   119
        if not xml1.text:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   120
            return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   121
    if xml1.text and xml2.text and xml1.text.strip() != xml2.text.strip():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   122
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   123
    if xml1.tail is not None and xml2.tail is not None:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   124
        if xml1.tail.strip() != xml2.tail.strip():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   125
            return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   126
    elif xml1.tail != xml2.tail:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   127
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   128
    children1 = list(xml1.getchildren())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   129
    children2 = list(xml2.getchildren())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   130
    if len(children1) != len(children2):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   131
        return False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   132
    for child1, child2 in zip(children1, children2):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   133
        return equal_xml(child1, child2)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   134
    return True        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   135
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   136
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   137
def setup_module():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   138
    """ setup any values needed for the tests"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   139
    global TEST_PATH, OUTPUT, TEST_ZIP_PATH
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   140
    TEST_PATH = path(tempfile.mkdtemp())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   141
    OUTPUT = TEST_PATH.joinpath("TestAsset")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   142
    TEST_ZIP_PATH = TEST_PATH.joinpath("test_zip")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   143
    asset = TEST_PATH
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   144
    component = TEST_PATH
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   145
    component.joinpath("group").makedirs()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   146
    for path_parts in (("output", "images", "file1.fpsx"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   147
                       ("output", "images", "file2.fpsx")):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   148
        filename = component.joinpath(*path_parts)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   149
        if not filename.parent.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   150
            filename.parent.makedirs()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   151
        filename.touch()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   152
        TEST_FILES.setdefault(path_parts[1], []).append(file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   153
    for path_parts in (("TestAsset", "Localisation", "S60", "localisation.txt"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   154
                       ("TestAsset", "TestCases", "TC_100_Test0", "file1.sis"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   155
                       ("TestAsset", "TestCases", "TC_100_Test0", "file2.tcf"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   156
                       ("TestAsset", "Tools", "TestCaseCreator", "test_creator.ini"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   157
                       ("TestAsset", "testdrop.xml"),):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   158
        filename = asset.joinpath(*path_parts)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   159
        if not filename.parent.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   160
            filename.parent.makedirs()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   161
        filename.touch()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   162
        TEST_ASSET_FILES.setdefault(path_parts[1], []).append(file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   163
    try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   164
        zip_component = TEST_ZIP_PATH
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   165
        filename = zip_component.joinpath("TestAsset.zip")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   166
        if not filename.parent.exists():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   167
            filename.parent.makedirs()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   168
        filename.touch()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   169
        zfile = zipfile.ZipFile(zip_component.joinpath("TestAsset.zip"), "w", zipfile.ZIP_DEFLATED)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   170
        for p_temp in TEST_ASSET_FILES:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   171
            print p_temp
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   172
            zfile.write(p_temp)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   173
        zfile.close()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   174
        TEST_ASSET_FILES.setdefault("ZIP", []).append(file)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   175
    except OSError:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   176
        print "Got except OSError. Continuing...\n"  
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   177
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   178
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   179
def teardown_module():
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   180
    """ tidy up after all the tests have run"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   181
    path(TEST_PATH).rmtree()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   182
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   183
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   184
class TestTestPlan(mocker.MockerTestCase):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   185
    """ the main test"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   186
    def __init__(self, methodName="runTest"):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   187
        mocker.MockerTestCase.__init__(self, methodName)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   188
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   189
    def setUp(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   190
        """setup the values required for this test"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   191
        opts = Bunch(testrun_name="testrun", harness="ASTE", 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   192
                     device_type="product", plan_name="ats3_test_plan", diamonds_build_url="",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   193
                     software_version="W810", software_release="SPP 51.32", device_language="English",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   194
                     testasset_location=TEST_PATH.joinpath("TestAsset"), testasset_caseids="100",repeat="1", report_email="",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   195
                     file_store=path(), test_timeout="60", device_hwid="5425", test_type="smoke")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   196
        self.tp_temp = ats3.aste.AsteTestPlan(opts)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   197
        self.image_files = TEST_FILES["images"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   198
        self.test_timeout = self.tp_temp["test_timeout"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   199
        self.device_hwid = self.tp_temp["device_hwid"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   200
        self.test_harness = self.tp_temp["harness"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   201
        self.device_language = self.tp_temp["device_language"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   202
        self.software_release = self.tp_temp["software_release"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   203
        self.software_version = self.tp_temp["software_version"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   204
        self.testasset_caseids = self.tp_temp["testasset_caseids"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   205
        self.testasset_location = self.tp_temp["testasset_location"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   206
        self.test_type = self.tp_temp["test_type"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   207
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   208
        if self.testasset_location != "":
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   209
            self.test_asset_testcases = [self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file1.sis"), self.testasset_location.joinpath("TestCases", "TC_100_Test0", "file2.tcf")]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   210
            self.test_asset_tools = [self.testasset_location.joinpath("Tools", "TestCaseCreator", "test_creator.ini")]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   211
            self.test_asset_localisation = [self.testasset_location.joinpath("Localisation", "S60", "localisation.txt")]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   212
            self.test_asset_testdrop = self.testasset_location.joinpath("testdrop.xml")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   213
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   214
            self.test_asset_testcases = TEST_ASSET_FILES["TestCases"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   215
            self.test_asset_tools = TEST_ASSET_FILES["Tools"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   216
            self.test_asset_localisation = TEST_ASSET_FILES["Localisation"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   217
            self.test_asset_testdrop = TEST_ASSET_FILES["testdrop.xml"]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   218
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   219
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   220
    def test_creation(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   221
        """test the creation"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   222
        assert self.tp_temp["testrun_name"] == "testrun"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   223
        assert self.tp_temp["harness"] == "ASTE"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   224
        assert self.tp_temp["device_type"] == "product"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   225
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   226
    def test_insert_set(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   227
        """ test insert a set"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   228
        self.tp_temp.insert_set(image_files=self.image_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   229
                           test_timeout=self.test_timeout)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   230
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   231
        assert self.tp_temp.sets[0] == dict(name="set0",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   232
                                       image_files=self.image_files,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   233
                                       test_timeout=self.test_timeout,
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   234
                                       test_harness=self.test_harness)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   235
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   236
    def test_post_actions_email(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   237
        """test the post test actions email sent"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   238
        assert not self.tp_temp.post_actions
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   239
        receiver = "joe.average@example.com"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   240
        self.tp_temp.report_email = receiver
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   241
        assert len(self.tp_temp.post_actions) == 1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   242
        action, items = self.tp_temp.post_actions[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   243
        items = dict(items)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   244
        assert action == "SendEmailAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   245
        assert items["to"] == receiver
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   246
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   247
    def test_post_actions_ats3_report_only(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   248
        """test the post test actions only a report sent"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   249
        file_store = path("path/to/files")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   250
        self.tp_temp.file_store = file_store
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   251
        self.tp_temp.harness = "EUNIT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   252
        assert len(self.tp_temp.post_actions) == 2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   253
        action, items = self.tp_temp.post_actions[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   254
        items = dict(items)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   255
        assert action == "FileStoreAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   256
        assert items["report-type"] == "ATS_REPORT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   257
        assert items["to-folder"].startswith(file_store)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   258
        assert items["to-folder"].endswith("ATS3_REPORT")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   259
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   260
    def test_post_actions_aste(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   261
        """test the post actions for ASTE"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   262
        file_store = path("path/to/files")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   263
        self.tp_temp.file_store = file_store
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   264
        assert len(self.tp_temp.post_actions) == 2
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   265
        action, items = self.tp_temp.post_actions[1]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   266
        items = dict(items)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   267
        assert action == "FileStoreAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   268
        assert items["report-type"] == "ASTE_REPORT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   269
        assert items["to-folder"].startswith(file_store)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   270
        assert items["to-folder"].endswith("ASTE_REPORT")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   271
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   272
    def test_post_actions_diamonds(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   273
        """test the post test actions that diamonds is informed"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   274
        self.tp_temp.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   275
        assert len(self.tp_temp.post_actions) == 1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   276
        action, items = self.tp_temp.post_actions[0]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   277
        assert action == "DiamondsAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   278
        assert not items
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   279
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   280
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   281
class TestXMLGeneration(mocker.MockerTestCase):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   282
    """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   283
    Unit tests for the test.xml generation.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   284
    """    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   285
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   286
    def __init__(self, methodName="runTest"):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   287
        self.image_files = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   288
        self.report_email = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   289
        self.diamonds_build_url = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   290
        self.test_harness = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   291
        self.file_store = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   292
        self.testasset_location = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   293
        self.test_plan = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   294
        self.gen = None
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   295
        mocker.MockerTestCase.__init__(self, methodName)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   296
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   297
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   298
    def generate_xml(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   299
        """ generate the XML """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   300
        def files(*paths):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   301
            """get list of tsrc files"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   302
            return [TEST_PATH.joinpath(p) for p in paths]
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   303
        self.image_files = files("output/images/file1.fpsx", "output/images/file2.fpsx")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   304
        self.report_email = "test.receiver@company.com"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   305
        self.diamonds_build_url = "http://diamonds.nmp.company.com/diamonds/builds/1234"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   306
        self.test_harness = "ASTE"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   307
        self.file_store = path(r"path/to/reports")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   308
        self.testasset_location = OUTPUT
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   309
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   310
        self.mocker.restore()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   311
        test_plan = self.mocker.mock(count=False)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   312
        mocker.expect(test_plan["testrun_name"]).result("test")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   313
        mocker.expect(test_plan["harness"]).result("ASTE")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   314
        mocker.expect(test_plan["device_type"]).result("product")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   315
        mocker.expect(test_plan["plan_name"]).result("test plan")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   316
        mocker.expect(test_plan["diamonds_build_url"]).result(self.diamonds_build_url)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   317
        mocker.expect(test_plan["test_timeout"]).result("60")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   318
        mocker.expect(test_plan["device_hwid"]).result("5425")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   319
        mocker.expect(test_plan["testasset_location"]).result(self.testasset_location)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   320
        mocker.expect(test_plan["testasset_caseids"]).result("100")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   321
        mocker.expect(test_plan["report_email"]).result(self.report_email)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   322
        mocker.expect(test_plan["software_release"]).result("SPP 51.32")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   323
        mocker.expect(test_plan["software_version"]).result("W810")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   324
        mocker.expect(test_plan["device_language"]).result("English")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   325
        mocker.expect(test_plan["test_type"]).result("smoke")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   326
        mocker.expect(test_plan["temp_directory"]).result(TEST_PATH)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   327
        mocker.expect(test_plan.sets).result([
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   328
            dict(name="set0", image_files=self.image_files, test_harness="ASTE")])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   329
        mocker.expect(test_plan.post_actions).result([
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   330
            ("EmailAction", (("subject", "Release testing"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   331
                                 ("to", self.report_email))),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   332
#            ("FileStoreAction", (("to-folder", self.file_store),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   333
#                                 ("report-type", "ATS_REPORT"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   334
#                                 ("date-format", "yyyyMMdd"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   335
#                                 ("time-format", "HHmmss"))),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   336
#            ("FileStoreAction", (("to-folder", self.file_store),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   337
#                                 ("report-type", "ASTE_REPORT"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   338
#                                 ("run-log", "true"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   339
#                                 ("date-format", "yyyyMMdd"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   340
#                                 ("time-format", "HHmmss"))),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   341
            ("DiamondsAction", ())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   342
        ])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   343
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   344
        self.mocker.replay()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   345
        self.test_plan = test_plan
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   346
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   347
        self.gen = ats3.aste.AsteTemplateTestDropGenerator()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   348
        return self.gen.generate_xml(test_plan)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   349
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   350
    def test_basic_structure(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   351
        """Check that the overall test.xml structure is valid."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   352
        _ = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   353
        # Check basics.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   354
#        assert xml.find(".").tag == "test"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   355
#        assert xml.find("./name").text == "test"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   356
#        assert xml.find("./buildid").text == self.diamonds_build_url
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   357
#        assert xml.find("./target").tag
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   358
#        assert xml.find("./target/device").tag
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   359
#        harness, hardware, device_hwid = xml.findall("./target/device/property")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   360
#        softwareVersion, softwareRelease, deviceLanguage = xml.findall("./target/device/setting")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   361
#        assert harness.get("value") == "ASTE"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   362
#        assert hardware.get("value") == "product"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   363
#        assert softwareVersion.get("value") == "W810"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   364
#        assert softwareRelease.get("value") == "SPP 51.32"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   365
#        assert deviceLanguage.get("value") == "English"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   366
#        assert device_hwid.get("value") == "5425"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   367
#        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   368
#        # Check generation of the test plan.
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   369
#        assert xml.find("./plan").get("name") == "Plan smoke product"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   370
#        assert xml.find("./plan/session").tag 
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   371
#        sets = xml.findall("./plan/session/set")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   372
#        assert len(sets) == 1
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   373
#        assert sets[0].get("name") == "set0"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   374
#        assert sets[0].find("./target/device").tag
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   375
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   376
    def test_set_structure(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   377
        """Check that a <set> element's structure is valid."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   378
        _ = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   379
#        tstset = xml.find("./plan/session/set")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   380
#        assert tstset.tag
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   381
#        case = tstset.find("./case")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   382
#        assert case.tag
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   383
#        assert case.get("name") == "set0 case"                
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   384
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   385
    def test_case_flash_elems(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   386
        """ Test case flash elems. """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   387
        xml = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   388
        found = False
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   389
        for case in xml.findall(".//task"):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   390
            if case.find('type').text == 'FlashTask':
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   391
                found = True
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   392
                flashes = case.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   393
                assert len(flashes) == len(self.image_files)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   394
                for i, flash_file in enumerate(self.image_files):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   395
                    assert flashes[i].get("name") == "image-" + str(i + 1)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   396
                    assert flashes[i].get("value") == "ATS3Drop\\images\\" + flash_file.name
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   397
        assert found
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   398
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   399
    def test_steps(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   400
        """test the steps """
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   401
        xml = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   402
        steps = iter(xml.findall(".//task"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   403
        _ = steps.next()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   404
        _ = steps.next()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   405
        self.check_executeasset_step(steps)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   406
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   407
    def check_executeasset_step(self, steps):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   408
        """ test execute as asset steps"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   409
        step = steps.next()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   410
        assert step.findtext("./type") == "SetTestAssetPackageTask"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   411
        params = step.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   412
        assert params[0].get("value") == "ATS3Drop\\TestAssets\\TestAsset.zip"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   413
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   414
    def test_post_actions(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   415
        """Post actions are inserted into XML."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   416
        xml = self.generate_xml()        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   417
        post_actions = xml.findall(".//action")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   418
        self.check_send_email_action(post_actions[0])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   419
#        self.check_ats_report_action(post_actions[1])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   420
#        self.check_aste_report_action(post_actions[2])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   421
        self.check_diamonds_action(post_actions[1])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   422
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   423
    def check_send_email_action(self, action):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   424
        """ check the email is sent"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   425
        assert action.findtext("./type") == "EmailAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   426
        params = action.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   427
        assert params[0].get("name") == "subject"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   428
        #assert params[0].get("value") == "email subject"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   429
        #assert params[1].get("name") == "type"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   430
        #assert params[1].get("value") == "ATS3_REPORT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   431
        #assert params[2].get("name") == "send-files"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   432
        #assert params[2].get("value") == "true"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   433
        assert params[1].get("name") == "to"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   434
        assert params[1].get("value") == self.report_email
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   435
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   436
    def check_ats_report_action(self, action):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   437
        """check the ATS report is created"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   438
        assert action.findtext("./type") == "FileStoreAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   439
        params = action.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   440
        assert params[0].get("name") == "to-folder"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   441
        assert params[0].get("value") == self.file_store
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   442
        assert params[1].get("name") == "report-type"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   443
        assert params[1].get("value") == "ATS_REPORT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   444
        assert params[2].get("name") == "date-format"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   445
        assert params[2].get("value") == "yyyyMMdd"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   446
        assert params[3].get("name") == "time-format"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   447
        assert params[3].get("value") == "HHmmss"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   448
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   449
    def check_aste_report_action(self, action):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   450
        """check the ASTE report is created"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   451
        assert action.findtext("./type") == "FileStoreAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   452
        params = action.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   453
        assert params[0].get("name") == "to-folder"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   454
        assert params[0].get("value") == self.file_store
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   455
        assert params[1].get("name") == "report-type"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   456
        assert params[1].get("value") == "ASTE_REPORT"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   457
        assert params[2].get("name") == "run-log"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   458
        assert params[2].get("value") == "true"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   459
        assert params[3].get("name") == "date-format"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   460
        assert params[3].get("value") == "yyyyMMdd"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   461
        assert params[4].get("name") == "time-format"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   462
        assert params[4].get("value") == "HHmmss"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   463
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   464
    def check_diamonds_action(self, action):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   465
        """ check the diamonds actions are performed"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   466
        assert action.findtext("./type") == "DiamondsAction"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   467
        assert not action.findall("./parameters/parameter")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   468
    
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   469
    def test_files(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   470
        """test the files"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   471
        _ = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   472
#        files = iter(xml.findall("./files/file"))
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   473
#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   474
#        assert files.next().text == r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   475
#        assert files.next().text == r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip"
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   476
#        self.assertRaises(StopIteration, files.next)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   477
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   478
    def test_generate_testasset_zip(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   479
        """ test the generation of test assets"""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   480
        self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   481
        if re.search(r"[.]zip", self.test_plan["testasset_location"]):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   482
            pass
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   483
        else:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   484
            strbuffer = StringIO()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   485
            assert strbuffer == self.gen.generate_testasset_zip(self.test_plan, strbuffer)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   486
            zfile = zipfile.ZipFile(strbuffer, "r")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   487
            try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   488
                contents = sorted(path(p).normpath() for p in zfile.namelist())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   489
                expected = sorted(path(p).normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   490
                               for p in [(r"Localisation" + os.sep + "S60" + os.sep + "localisation.txt"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   491
                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file1.sis"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   492
                                         (r"TestCases" + os.sep + "TC_100_Test0" + os.sep + "file2.tcf"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   493
                                         (r"Tools" + os.sep + "TestCaseCreator" + os.sep + "test_creator.ini"),
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   494
                                         (r"testdrop.xml")])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   495
                diff = difflib.context_diff(expected, contents)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   496
                assert contents == expected, "\n".join(diff)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   497
            finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   498
                zfile.close()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   499
        
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   500
    def test_generate_drop(self):
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   501
        """Manifest for ATS3Drop directory structure is generated."""
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   502
        xml = self.generate_xml()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   503
        strbuffer = StringIO()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   504
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   505
        self.gen.generate_drop(self.test_plan, xml, strbuffer)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   506
        zfile = zipfile.ZipFile(strbuffer, "r")
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   507
        try:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   508
            contents = sorted(path(p).normpath() for p in zfile.namelist())
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   509
            expected = sorted(path(p).normpath()
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   510
                           for p in [r"ATS3Drop" + os.sep + "images" + os.sep + "file1.fpsx",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   511
                                     r"ATS3Drop" + os.sep + "images" + os.sep + "file2.fpsx",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   512
                                     r"ATS3Drop" + os.sep + "TestAssets" + os.sep + "TestAsset.zip",
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   513
                                     r"test.xml"])
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   514
            diff = difflib.context_diff(expected, contents)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   515
            assert contents == expected, "\n".join(diff)
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   516
        finally:
85df38eb4012 helium_9.0-a7879c935424
wbernard
parents:
diff changeset
   517
            zfile.close()