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