# -*- coding: utf-8 -*-"
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from failedplatform
import FailedPlatform
from mozunit
import main
def test_get_possible_build_types():
"" "Test get_possible_build_types" ""
fp = FailedPlatform({})
assert fp.get_possible_build_types() == []
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert fp.get_possible_build_types() == [
"build_type1" ]
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {}},
"build_type2" : {
"test_variant1" : {}}}
)
assert fp.get_possible_build_types() == [
"build_type1" ,
"build_type2" ]
def test_get_possible_test_variants():
"" "Test get_possible_test_variants" ""
fp = FailedPlatform({})
assert fp.get_possible_test_variants(
"" ) == []
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert fp.get_possible_test_variants(
"unknown" ) == []
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert fp.get_possible_test_variants(
"build_type1" ) == [
"test_variant1" ]
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {}},
"build_type2" : {
"test_variant2" : {}}}
)
assert fp.get_possible_test_variants(
"build_type2" ) == [
"test_variant2" ]
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
assert fp.get_possible_test_variants(
"build_type1" ) == [
"test_variant1" ,
"test_variant2" ,
]
def test_is_full_test_variants_fail():
"" "Test is_full_test_variants_fail" ""
fp = FailedPlatform({})
assert fp.is_full_test_variants_fail(
"" )
fp = FailedPlatform({
"build_type1" : {}})
assert fp.is_full_test_variants_fail(
"build_type1" )
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert not fp.is_full_test_variants_fail(
"build_type1" )
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant2" }
assert not fp.is_full_test_variants_fail(
"build_type1" )
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" }
assert fp.is_full_test_variants_fail(
"build_type1" )
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" }
assert not fp.is_full_test_variants_fail(
"build_type1" )
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" ,
"test_variant2" }
assert fp.is_full_test_variants_fail(
"build_type1" )
def test_is_full_fail():
"" "Test is_full_fail" ""
fp = FailedPlatform({})
assert fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {}})
assert not fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert not fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {}})
fp.failures[
"build_type1" ] = set()
assert fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {}})
fp.failures[
"build_type2" ] = set()
assert not fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
fp.failures[
"build_type1" ] = set()
assert not fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" }
assert fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" }
assert not fp.is_full_fail()
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
fp.failures[
"build_type1" ] = {
"test_variant1" ,
"test_variant2" }
assert fp.is_full_fail()
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}},
"build_type2" : {
"test_variant1" : {},
"test_variant2" : {}},
}
)
fp.failures[
"build_type1" ] = {
"test_variant1" ,
"test_variant2" }
assert not fp.is_full_fail()
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}},
"build_type2" : {
"test_variant1" : {},
"test_variant2" : {}},
}
)
fp.failures[
"build_type1" ] = {
"test_variant1" ,
"test_variant2" }
fp.failures[
"build_type2" ] = {
"test_variant1" ,
"test_variant2" }
assert fp.is_full_fail()
def test_get_no_variant_conditions():
"" "Test get_no_variant_conditions" ""
fp = FailedPlatform({})
assert fp.get_no_variant_conditions(
" && " ,
"build_type1" ) ==
""
fp = FailedPlatform({
"build_type1" : {}})
assert fp.get_no_variant_conditions(
" && " ,
"build_type1" ) ==
""
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert fp.get_no_variant_conditions(
" && " ,
"build_type1" ) ==
" && !test_variant1"
# Handle already negated test variants
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"!fission" : {}}})
assert (
fp.get_no_variant_conditions(
" && " ,
"build_type1" )
==
" && !test_variant1 && fission"
)
def test_get_test_variant_condition():
"" "Test get_no_variant_conditions" ""
# Simply returns the given variant if no composite variant exists
fp = FailedPlatform({})
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1"
)
fp = FailedPlatform({
"build_type1" : {}})
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1"
)
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1"
)
# Returns the negation of the composite if any
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant1+test_variant2" : {}}}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1 && !test_variant2"
)
# Ignores composite variants it is not part of
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant2+test_variant3" : {}}}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1"
)
# Convert a composite test variant
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant1+test_variant2" : {}}}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1+test_variant2"
)
==
" && test_variant1 && test_variant2"
)
# Handles composite variants included in other composites
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1+test_variant2" : {},
"test_variant1+test_variant2+test_variant3" : {},
}
}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1+test_variant2"
)
==
" && test_variant1 && test_variant2 && !test_variant3"
)
# Detects if the composite or in scrambled order
fp = FailedPlatform(
{
"build_type1" : {
"test_variant2+test_variant1" : {},
"test_variant1+test_variant3+test_variant2" : {},
}
}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant2+test_variant1"
)
==
" && test_variant2 && test_variant1 && !test_variant3"
)
# Handles when variant is included in several composites
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1+test_variant2" : {},
"test_variant1+test_variant2+test_variant3" : {},
"test_variant1+test_variant4+test_variant2" : {},
}
}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant2+test_variant1"
)
==
" && test_variant2 && test_variant1 && !test_variant3 && !test_variant4"
)
# Simply returns the current composite variant if it is not fully contained in another
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1+test_variant2" : {},
"test_variant1+test_variant3" : {},
}
}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1+test_variant2"
)
==
" && test_variant1 && test_variant2"
)
# Ignore matching composite variants in other build types
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {}},
"build_type2" : {
"test_variant1+test_variant2" : {}},
}
)
assert (
fp.get_test_variant_condition(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && test_variant1"
)
def test_get_skip_string():
"" "Test get_skip_string" ""
# Full fails on single line => nothing returned
fp = FailedPlatform({
"build_type1" : {
"no_variant" : {}}})
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"no_variant" ) ==
""
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {}}})
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" ) ==
""
fp = FailedPlatform({
"build_type1" : {
"test_variant1+test_variant2" : {}}})
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1+test_variant2" ) ==
""
)
# Fail only on some build types without test variant
# => only failed build types returned
fp = FailedPlatform(
{
"build_type1" : {
"no_variant" : {}},
"build_type2" : {
"no_variant" : {}}}
)
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"no_variant" ) ==
" && build_type1"
# Fail only on one build type with test variant
# => only failed build types returned with negated test variants
fp = FailedPlatform(
{
"build_type1" : {
"no_variant" : {},
"test_variant1" : {}},
"build_type2" : {
"no_variant" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"no_variant" )
==
" && build_type1 && !test_variant1"
)
# Full test variant fail on single line => only build type returned
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {}},
"build_type2" : {
"no_variant" : {}}}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" ) ==
" && build_type1"
)
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1+test_variant2" : {}},
"build_type2" : {
"no_variant" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1+test_variant2" )
==
" && build_type1"
)
# Fail only on some test variants => build type and test variant returned
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}},
"build_type2" : {
"no_variant" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && build_type1 && test_variant1"
)
# Full fail on second call
fp = FailedPlatform(
{
"build_type1" : {
"no_variant" : {}},
"build_type2" : {
"no_variant" : {}}}
)
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"no_variant" ) ==
" && build_type1"
assert fp.get_skip_string(
" && " ,
"build_type2" ,
"no_variant" ) ==
""
# Full fail on second call with test variants
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1+test_variant2" : {}},
"build_type2" : {
"test_variant1+test_variant2" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1+test_variant2" )
==
" && build_type1"
)
assert (
fp.get_skip_string(
" && " ,
"build_type2" ,
"test_variant1+test_variant2" ) ==
""
)
fp = FailedPlatform({
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {}}})
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && build_type1 && test_variant1"
)
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant2" ) ==
""
# Fail on variant and no_variant
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"no_variant" : {}},
"build_type2" : {
"no_variant" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && build_type1 && test_variant1"
)
assert fp.get_skip_string(
" && " ,
"build_type1" ,
"no_variant" ) ==
" && build_type1"
# Complex cases
fp = FailedPlatform(
{
"build_type1" : {
"test_variant1" : {},
"test_variant2" : {},
"test_variant1+test_variant2" : {},
},
"build_type2" : {
"no_variant" : {},
"test_variant1" : {},
"test_variant2" : {}},
}
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1" )
==
" && build_type1 && test_variant1 && !test_variant2"
)
assert (
fp.get_skip_string(
" && " ,
"build_type2" ,
"no_variant" )
==
" && build_type2 && !test_variant1 && !test_variant2"
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant2" )
==
" && build_type1 && test_variant2 && !test_variant1"
)
assert (
fp.get_skip_string(
" && " ,
"build_type1" ,
"test_variant1+test_variant2" )
==
" && build_type1"
)
assert (
fp.get_skip_string(
" && " ,
"build_type2" ,
"test_variant1" )
==
" && build_type2 && test_variant1"
)
assert fp.get_skip_string(
" && " ,
"build_type2" ,
"test_variant2" ) ==
""
if __name__ ==
"__main__" :
main()
Messung V0.5 C=91 H=95 G=92
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland