Skip to content

Commit 6ea1646

Browse files
author
Rykh Oleksandr
committed
MTA-3342: Add an ability to run specified variation from a test case
1 parent f09d075 commit 6ea1646

File tree

9 files changed

+152
-37
lines changed

9 files changed

+152
-37
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Added an ability to run specified variation by name
2+
13
1.0.0-rc.44
24
===========
35
* Added DELETE HTTP Request method

Magento/Mtf/TestRunner/Rule/Rule.php

+10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ public function addFilter(FilterInterface $filter)
3131
$this->filters[] = $filter;
3232
}
3333

34+
/**
35+
* Get filters.
36+
*
37+
* @return FilterInterface[]
38+
*/
39+
public function getFilters()
40+
{
41+
return $this->filters;
42+
}
43+
3444
/**
3545
* Apply rule.
3646
*

Magento/Mtf/TestRunner/Rule/etc/rule.xml

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rule.xsd">
99
<rule scope="testsuite">
1010
<filter name="namespace" class="Magento\Mtf\Util\Filter\TestSuiteNamespace" />
11-
<filter name="type" class="Magento\Mtf\Util\Filter\TestSuiteType"/>
12-
<filter name="module" class="Magento\Mtf\Util\Filter\TestSuiteModule"/>
13-
<filter name="class" class="Magento\Mtf\Util\Filter\TestSuiteClass"/>
11+
<filter name="type" class="Magento\Mtf\Util\Filter\TestSuiteType" />
12+
<filter name="module" class="Magento\Mtf\Util\Filter\TestSuiteModule" />
13+
<filter name="class" class="Magento\Mtf\Util\Filter\TestSuiteClass" />
1414
</rule>
1515
<rule scope="testcase">
16-
<filter name="tag" class="Magento\Mtf\Util\Filter\TestCaseTag"/>
16+
<filter name="tag" class="Magento\Mtf\Util\Filter\TestCaseTag" />
1717
</rule>
1818
<rule scope="variation">
19-
<filter name="tag" class="Magento\Mtf\Util\Filter\VariationTag"/>
19+
<filter name="tag" class="Magento\Mtf\Util\Filter\VariationTag" />
20+
<filter name="name" class="Magento\Mtf\Util\Filter\VariationName" />
2021
</rule>
2122
<rule scope="constraint">
22-
<filter name="tag" class="Magento\Mtf\Util\Filter\ConstraintTag"/>
23+
<filter name="tag" class="Magento\Mtf\Util\Filter\ConstraintTag" />
2324
</rule>
2425
</config>

Magento/Mtf/TestRunner/Rule/etc/rule.xsd

+12-11
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</xs:annotation>
1515
<xs:complexType>
1616
<xs:sequence>
17-
<xs:element ref="rule" maxOccurs="unbounded" minOccurs="0"/>
17+
<xs:element ref="rule" maxOccurs="unbounded" minOccurs="0" />
1818
</xs:sequence>
1919
</xs:complexType>
2020
</xs:element>
@@ -32,10 +32,10 @@
3232
<xs:attribute name="scope" use="required">
3333
<xs:simpleType>
3434
<xs:restriction base="xs:string">
35-
<xs:enumeration value="testsuite"/>
36-
<xs:enumeration value="testcase"/>
37-
<xs:enumeration value="variation"/>
38-
<xs:enumeration value="constraint"/>
35+
<xs:enumeration value="testsuite" />
36+
<xs:enumeration value="testcase" />
37+
<xs:enumeration value="variation" />
38+
<xs:enumeration value="constraint" />
3939
</xs:restriction>
4040
</xs:simpleType>
4141
</xs:attribute>
@@ -52,12 +52,13 @@
5252
<xs:attribute name="name" use="required">
5353
<xs:simpleType>
5454
<xs:restriction base="xs:string">
55-
<xs:enumeration value="namespace"/>
56-
<xs:enumeration value="module"/>
57-
<xs:enumeration value="type"/>
58-
<xs:enumeration value="module"/>
59-
<xs:enumeration value="class"/>
60-
<xs:enumeration value="tag"/>
55+
<xs:enumeration value="namespace" />
56+
<xs:enumeration value="module" />
57+
<xs:enumeration value="type" />
58+
<xs:enumeration value="module" />
59+
<xs:enumeration value="class" />
60+
<xs:enumeration value="tag" />
61+
<xs:enumeration value="name" />
6162
</xs:restriction>
6263
</xs:simpleType>
6364
</xs:attribute>

Magento/Mtf/TestRunner/etc/testRunner.xsd

+32-16
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</xs:annotation>
1515
<xs:complexType>
1616
<xs:sequence>
17-
<xs:element ref="rule" maxOccurs="unbounded" minOccurs="0"/>
17+
<xs:element ref="rule" maxOccurs="unbounded" minOccurs="0" />
1818
</xs:sequence>
1919
</xs:complexType>
2020
</xs:element>
@@ -27,16 +27,16 @@
2727
</xs:annotation>
2828
<xs:complexType>
2929
<xs:sequence>
30-
<xs:element ref="allow" maxOccurs="1" minOccurs="0"/>
31-
<xs:element ref="deny" maxOccurs="1" minOccurs="0"/>
30+
<xs:element ref="allow" maxOccurs="1" minOccurs="0" />
31+
<xs:element ref="deny" maxOccurs="1" minOccurs="0" />
3232
</xs:sequence>
3333
<xs:attribute name="scope" use="required">
3434
<xs:simpleType>
3535
<xs:restriction base="xs:string">
36-
<xs:enumeration value="testsuite"/>
37-
<xs:enumeration value="testcase"/>
38-
<xs:enumeration value="variation"/>
39-
<xs:enumeration value="constraint"/>
36+
<xs:enumeration value="testsuite" />
37+
<xs:enumeration value="testcase" />
38+
<xs:enumeration value="variation" />
39+
<xs:enumeration value="constraint" />
4040
</xs:restriction>
4141
</xs:simpleType>
4242
</xs:attribute>
@@ -57,6 +57,7 @@
5757
<xs:element ref="module" />
5858
<xs:element ref="class" />
5959
<xs:element ref="tag" />
60+
<xs:element ref="name" />
6061
</xs:choice>
6162
</xs:sequence>
6263
</xs:complexType>
@@ -90,7 +91,7 @@
9091
<xs:complexType>
9192
<xs:simpleContent>
9293
<xs:extension base="xs:string">
93-
<xs:attribute type="xs:string" name="value"/>
94+
<xs:attribute type="xs:string" name="value" />
9495
</xs:extension>
9596
</xs:simpleContent>
9697
</xs:complexType>
@@ -106,8 +107,8 @@
106107
<xs:attribute name="value" use="required">
107108
<xs:simpleType>
108109
<xs:restriction base="xs:string">
109-
<xs:enumeration value="injectable"/>
110-
<xs:enumeration value="functional"/>
110+
<xs:enumeration value="injectable" />
111+
<xs:enumeration value="functional" />
111112
</xs:restriction>
112113
</xs:simpleType>
113114
</xs:attribute>
@@ -123,12 +124,12 @@
123124
<xs:complexType>
124125
<xs:simpleContent>
125126
<xs:extension base="xs:string">
126-
<xs:attribute type="xs:string" name="value" use="required"/>
127+
<xs:attribute type="xs:string" name="value" use="required" />
127128
<xs:attribute name="strict">
128129
<xs:simpleType>
129130
<xs:restriction base="xs:string">
130-
<xs:enumeration value="1"/>
131-
<xs:enumeration value="0"/>
131+
<xs:enumeration value="1" />
132+
<xs:enumeration value="0" />
132133
</xs:restriction>
133134
</xs:simpleType>
134135
</xs:attribute>
@@ -146,7 +147,7 @@
146147
<xs:complexType>
147148
<xs:simpleContent>
148149
<xs:extension base="xs:string">
149-
<xs:attribute type="xs:string" name="value" use="required"/>
150+
<xs:attribute type="xs:string" name="value" use="required" />
150151
</xs:extension>
151152
</xs:simpleContent>
152153
</xs:complexType>
@@ -161,8 +162,23 @@
161162
<xs:complexType>
162163
<xs:simpleContent>
163164
<xs:extension base="xs:string">
164-
<xs:attribute type="xs:string" name="group" use="required"/>
165-
<xs:attribute type="xs:string" name="value" use="required"/>
165+
<xs:attribute type="xs:string" name="group" use="required" />
166+
<xs:attribute type="xs:string" name="value" use="required" />
167+
</xs:extension>
168+
</xs:simpleContent>
169+
</xs:complexType>
170+
</xs:element>
171+
172+
<xs:element name="name">
173+
<xs:annotation>
174+
<xs:documentation>
175+
Filter subject by variation name.
176+
</xs:documentation>
177+
</xs:annotation>
178+
<xs:complexType>
179+
<xs:simpleContent>
180+
<xs:extension base="xs:string">
181+
<xs:attribute type="xs:string" name="value" use="required" />
166182
</xs:extension>
167183
</xs:simpleContent>
168184
</xs:complexType>
+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Mtf\Util\Filter;
8+
9+
/**
10+
* Class filters out variations that are affected by specified variation name.
11+
*/
12+
class VariationName extends AbstractFilter implements FilterInterface
13+
{
14+
/**
15+
* Subject for filter.
16+
*
17+
* @var string
18+
*/
19+
private $subject = 'variation_name';
20+
21+
/**
22+
* Filters out variation.
23+
*
24+
* @param string $subject
25+
* @return bool
26+
*/
27+
public function apply($subject)
28+
{
29+
if (isset($this->allow)) {
30+
foreach ($this->allow as $allow) {
31+
if ($allow['value'] == $subject) {
32+
return true;
33+
}
34+
}
35+
36+
return false;
37+
}
38+
if (isset($this->deny)) {
39+
foreach ($this->deny as $deny) {
40+
if ($deny['value'] == $subject) {
41+
return false;
42+
}
43+
}
44+
45+
return true;
46+
}
47+
48+
return true;
49+
}
50+
51+
/**
52+
* Get subject.
53+
*
54+
* @return string
55+
*/
56+
public function getSubject()
57+
{
58+
return $this->subject;
59+
}
60+
}

Magento/Mtf/Util/Filter/VariationTag.php

+17
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
*/
1212
class VariationTag extends AbstractFilterTag implements FilterInterface
1313
{
14+
/**
15+
* Subject for filter.
16+
*
17+
* @var string
18+
*/
19+
private $subject = 'tag';
20+
1421
/**
1522
* Filters out variation.
1623
*
@@ -23,6 +30,16 @@ public function apply($subject)
2330
return $this->processApply($tags);
2431
}
2532

33+
/**
34+
* Get subject.
35+
*
36+
* @return string
37+
*/
38+
public function getSubject()
39+
{
40+
return $this->subject;
41+
}
42+
2643
/**
2744
* Convert tags from string to array.
2845
*

Magento/Mtf/Util/Iterator/Variation.php

+6-4
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,13 @@ public function __construct(
7676
*/
7777
protected function isValid()
7878
{
79-
$cellTag = isset($this->current['tag']) ? $this->current['tag'] : '';
80-
81-
if (!$this->rule->apply($cellTag)) {
82-
return false;
79+
foreach ($this->rule->getFilters() as $filter) {
80+
$subject = isset($this->current[$filter->getSubject()]) ? $this->current[$filter->getSubject()] : '';
81+
if (!$filter->apply($subject)) {
82+
return false;
83+
}
8384
}
85+
8486
return true;
8587
}
8688

etc/di.xml

+6
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
<argument name="type" xsi:type="string">tag</argument>
7979
</arguments>
8080
</type>
81+
<type name="Magento\Mtf\Util\Filter\VariationName">
82+
<arguments>
83+
<argument name="scope" xsi:type="string">variation</argument>
84+
<argument name="type" xsi:type="string">name</argument>
85+
</arguments>
86+
</type>
8187
<type name="Magento\Mtf\Util\Filter\ConstraintTag">
8288
<arguments>
8389
<argument name="scope" xsi:type="string">constraint</argument>

0 commit comments

Comments
 (0)