Chromium Code Reviews| Index: telemetry/telemetry/story/expectations_unittest.py |
| diff --git a/telemetry/telemetry/story/expectations_unittest.py b/telemetry/telemetry/story/expectations_unittest.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..25b658ea7b13df6a5c6dce692acd07138aa38bfb |
| --- /dev/null |
| +++ b/telemetry/telemetry/story/expectations_unittest.py |
| @@ -0,0 +1,160 @@ |
| +# Copyright 2017 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import unittest |
| + |
| +from telemetry.story import expectations |
| +from telemetry.testing import fakes |
| + |
| + |
| +class MockState(object): |
| + def __init__(self): |
| + self.platform = fakes.FakePlatform() |
| + |
| + |
| +class MockStory(object): |
| + def __init__(self, name): |
| + self._name = name |
| + |
| + @property |
| + def display_name(self): |
| + return self._name |
| + |
| + |
| +class TestConditionTest(unittest.TestCase): |
| + def testAll(self): |
| + p = fakes.FakePlatform() |
| + self.assertTrue(expectations.ALL.ShouldDisable(p)) |
| + |
| + def testAllWin(self): |
|
charliea (OOO until 10-5)
2017/05/15 21:15:42
nit: I think you should actually split most of the
rnephew (Reviews Here)
2017/05/15 21:36:06
Done.
|
| + p = fakes.FakePlatform() |
| + p.SetOSName('win') |
| + self.assertTrue(expectations.ALL_WIN.ShouldDisable(p)) |
|
charliea (OOO until 10-5)
2017/05/15 21:15:42
Rather than asserting true, I think you should ass
rnephew (Reviews Here)
2017/05/15 21:36:07
Thats part of the StoryExpectation, not part of th
charliea (OOO until 10-5)
2017/05/16 16:09:27
Ah, okay, sorry about that. Thanks!
|
| + p.SetOSName('not_windows') |
| + self.assertFalse(expectations.ALL_WIN.ShouldDisable(p)) |
| + |
| + def testAllLinux(self): |
| + p = fakes.FakePlatform() |
| + p.SetOSName('linux') |
| + self.assertTrue(expectations.ALL_LINUX.ShouldDisable(p)) |
| + p.SetOSName('not_linux') |
| + self.assertFalse(expectations.ALL_LINUX.ShouldDisable(p)) |
| + |
| + def testAllMac(self): |
| + p = fakes.FakePlatform() |
| + p.SetOSName('mac') |
| + self.assertTrue(expectations.ALL_MAC.ShouldDisable(p)) |
| + p.SetOSName('not_mac') |
| + self.assertFalse(expectations.ALL_MAC.ShouldDisable(p)) |
| + |
| + def testAllAndroid(self): |
| + p = fakes.FakePlatform() |
| + p.SetOSName('android') |
| + self.assertTrue(expectations.ALL_ANDROID.ShouldDisable(p)) |
| + p.SetOSName('not_android') |
| + self.assertFalse(expectations.ALL_ANDROID.ShouldDisable(p)) |
| + |
| + def testAllDesktop(self): |
| + true_platforms = ['win', 'mac', 'linux'] |
| + false_platforms = ['android'] |
| + p = fakes.FakePlatform() |
| + |
| + for plat in true_platforms: |
| + p.SetOSName(plat) |
| + self.assertTrue(expectations.ALL_DESKTOP.ShouldDisable(p)) |
| + for plat in false_platforms: |
| + p.SetOSName(plat) |
| + self.assertFalse(expectations.ALL_DESKTOP.ShouldDisable(p)) |
| + |
| + def testAllMobile(self): |
| + false_platforms = ['win', 'mac', 'linux'] |
| + true_platforms = ['android'] |
| + p = fakes.FakePlatform() |
| + |
| + for plat in true_platforms: |
| + p.SetOSName(plat) |
| + self.assertTrue(expectations.ALL_MOBILE.ShouldDisable(p)) |
| + for plat in false_platforms: |
| + p.SetOSName(plat) |
| + self.assertFalse(expectations.ALL_MOBILE.ShouldDisable(p)) |
| + |
| + def testNoBattOr(self): |
| + p = fakes.FakePlatform() |
| + p.SetBattOrDetected(False) |
| + self.assertTrue(expectations.NO_BATTOR.ShouldDisable(p)) |
| + p.SetBattOrDetected(True) |
| + self.assertFalse(expectations.ALL_WIN.ShouldDisable(p)) |
| + |
| + |
| +class StoryExpectationsTest(unittest.TestCase): |
| + def setUp(self): |
| + self.platform = fakes.FakePlatform() |
| + |
| + def testCantDisableAfterInit(self): |
| + e = expectations.StoryExpectations() |
| + with self.assertRaises(AssertionError): |
| + e.DisableBenchmark(['test'], 'test') |
| + with self.assertRaises(AssertionError): |
| + e.DisableStory('story', ['platform'], 'reason') |
| + |
| + def testDisableBenchmark(self): |
| + class FooExpectations(expectations.StoryExpectations): |
| + def SetExpectations(self): |
| + self.DisableBenchmark([expectations.ALL_WIN], 'crbug.com/123') |
| + |
| + e = FooExpectations() |
| + self.platform.SetOSName('win') |
| + |
| + reason = e.IsBenchmarkDisabled(self.platform) |
| + self.assertTrue(reason) |
| + self.assertEqual(reason, 'crbug.com/123') |
| + |
| + self.platform.SetOSName('android') |
| + reason = e.IsBenchmarkDisabled(self.platform) |
| + self.assertIsNone(reason) |
| + |
| + def testDisableStoryMultipleConditions(self): |
| + class FooExpectations(expectations.StoryExpectations): |
| + def SetExpectations(self): |
| + self.DisableStory( |
| + 'multi', [expectations.ALL_WIN], 'crbug.com/123') |
| + self.DisableStory( |
| + 'multi', [expectations.ALL_MAC], 'crbug.com/456') |
| + |
| + e = FooExpectations() |
| + |
| + self.platform.SetOSName('mac') |
| + reason = e.IsStoryDisabled( |
| + MockStory('multi'), self.platform) |
| + self.assertTrue(reason) |
| + self.assertEqual(reason, 'crbug.com/456') |
| + |
| + def testDisableStoryOneCondition(self): |
| + class FooExpectations(expectations.StoryExpectations): |
| + def SetExpectations(self): |
| + self.DisableStory( |
| + 'disable', [expectations.ALL_WIN], 'crbug.com/123') |
| + |
| + e = FooExpectations() |
| + |
| + self.platform.SetOSName('win') |
| + reason = e.IsStoryDisabled( |
| + MockStory('disable'), self.platform) |
| + self.assertTrue(reason) |
|
charliea (OOO until 10-5)
2017/05/15 21:15:42
(here and elsewhere in this file where you assert
rnephew (Reviews Here)
2017/05/15 21:36:06
Done.
|
| + self.assertEqual(reason, 'crbug.com/123') |
| + self.platform.SetOSName('mac') |
| + reason = e.IsStoryDisabled( |
| + MockStory('disbled'), self.platform) |
|
charliea (OOO until 10-5)
2017/05/15 21:15:42
nit: disabled?
rnephew (Reviews Here)
2017/05/15 21:36:06
Done.
|
| + self.assertFalse(reason) |
| + self.assertIsNone(reason) |
| + |
| + def testDisableStoryWithLongName(self): |
| + class FooExpectations(expectations.StoryExpectations): |
| + def SetExpectations(self): |
| + self.DisableStory( |
| + '123456789012345678901234567890123456789012345678901', |
| + [expectations.ALL], 'Too Long') |
| + |
| + with self.assertRaises(AssertionError): |
| + FooExpectations() |