Source code
Revision control
Copy as Markdown
Other Tools
# -*- 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
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 not fp.is_full_test_variants_fail("")
fp = FailedPlatform({"build_type1": {}})
assert not 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 not 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 not 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()