blob: 26444b740cfda7295bd08aa813562e623487c801 [file] [log] [blame]
#!/usr/bin/env vpython
# Copyright 2020 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.
#pylint: disable=protected-access
import os
import unittest
import mock
from skia_gold_common import skia_gold_properties
from skia_gold_common import unittest_utils
createSkiaGoldArgs = unittest_utils.createSkiaGoldArgs
class SkiaGoldPropertiesInitializationTest(unittest.TestCase):
"""Tests that SkiaGoldProperties initializes (or doesn't) when expected."""
def verifySkiaGoldProperties(self, instance, expected):
self.assertEqual(instance._local_pixel_tests,
expected.get('local_pixel_tests'))
self.assertEqual(instance._no_luci_auth, expected.get('no_luci_auth'))
self.assertEqual(instance._code_review_system,
expected.get('code_review_system'))
self.assertEqual(instance._git_revision, expected.get('git_revision'))
self.assertEqual(instance._issue, expected.get('gerrit_issue'))
self.assertEqual(instance._patchset, expected.get('gerrit_patchset'))
self.assertEqual(instance._job_id, expected.get('buildbucket_id'))
self.assertEqual(instance._bypass_skia_gold_functionality,
expected.get('bypass_skia_gold_functionality'))
def test_initializeSkiaGoldAttributes_unsetLocal(self):
args = createSkiaGoldArgs()
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {})
def test_initializeSkiaGoldAttributes_explicitLocal(self):
args = createSkiaGoldArgs(local_pixel_tests=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'local_pixel_tests': True})
def test_initializeSkiaGoldAttributes_explicitNonLocal(self):
args = createSkiaGoldArgs(local_pixel_tests=False)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'local_pixel_tests': False})
def test_initializeSkiaGoldAttributes_explicitNoLuciAuth(self):
args = createSkiaGoldArgs(no_luci_auth=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'no_luci_auth': True})
def test_initializeSkiaGoldAttributes_explicitCrs(self):
args = createSkiaGoldArgs(code_review_system='foo')
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'code_review_system': 'foo'})
def test_initializeSkiaGoldAttributes_bypassExplicitTrue(self):
args = createSkiaGoldArgs(bypass_skia_gold_functionality=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'bypass_skia_gold_functionality': True})
def test_initializeSkiaGoldAttributes_explicitGitRevision(self):
args = createSkiaGoldArgs(git_revision='a')
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {'git_revision': 'a'})
def test_initializeSkiaGoldAttributes_tryjobArgsIgnoredWithoutRevision(self):
args = createSkiaGoldArgs(gerrit_issue=1,
gerrit_patchset=2,
buildbucket_id=3)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(sgp, {})
def test_initializeSkiaGoldAttributes_tryjobArgs(self):
args = createSkiaGoldArgs(git_revision='a',
gerrit_issue=1,
gerrit_patchset=2,
buildbucket_id=3)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.verifySkiaGoldProperties(
sgp, {
'git_revision': 'a',
'gerrit_issue': 1,
'gerrit_patchset': 2,
'buildbucket_id': 3
})
def test_initializeSkiaGoldAttributes_tryjobMissingPatchset(self):
args = createSkiaGoldArgs(git_revision='a',
gerrit_issue=1,
buildbucket_id=3)
with self.assertRaises(RuntimeError):
skia_gold_properties.SkiaGoldProperties(args)
def test_initializeSkiaGoldAttributes_tryjobMissingBuildbucket(self):
args = createSkiaGoldArgs(git_revision='a',
gerrit_issue=1,
gerrit_patchset=2)
with self.assertRaises(RuntimeError):
skia_gold_properties.SkiaGoldProperties(args)
class SkiaGoldPropertiesCalculationTest(unittest.TestCase):
"""Tests that SkiaGoldProperties properly calculates certain properties."""
def testLocalPixelTests_determineTrue(self):
args = createSkiaGoldArgs()
sgp = skia_gold_properties.SkiaGoldProperties(args)
with mock.patch.dict(os.environ, {}, clear=True):
self.assertTrue(sgp.local_pixel_tests)
def testLocalPixelTests_determineFalse(self):
args = createSkiaGoldArgs()
sgp = skia_gold_properties.SkiaGoldProperties(args)
with mock.patch.dict(os.environ, {'SWARMING_SERVER': ''}, clear=True):
self.assertFalse(sgp.local_pixel_tests)
def testIsTryjobRun_noIssue(self):
args = createSkiaGoldArgs()
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.assertFalse(sgp.IsTryjobRun())
def testIsTryjobRun_issue(self):
args = createSkiaGoldArgs(git_revision='a',
gerrit_issue=1,
gerrit_patchset=2,
buildbucket_id=3)
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.assertTrue(sgp.IsTryjobRun())
def testGetGitRevision_revisionSet(self):
args = createSkiaGoldArgs(git_revision='a')
sgp = skia_gold_properties.SkiaGoldProperties(args)
self.assertEqual(sgp.git_revision, 'a')
def testGetGitRevision_findValidRevision(self):
args = createSkiaGoldArgs(local_pixel_tests=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
with mock.patch.object(skia_gold_properties.SkiaGoldProperties,
'_GetGitOriginMasterHeadSha1') as patched_head:
expected = 'a' * 40
patched_head.return_value = expected
self.assertEqual(sgp.git_revision, expected)
# Should be cached.
self.assertEqual(sgp._git_revision, expected)
def testGetGitRevision_noExplicitOnBot(self):
args = createSkiaGoldArgs(local_pixel_tests=False)
sgp = skia_gold_properties.SkiaGoldProperties(args)
with self.assertRaises(RuntimeError):
_ = sgp.git_revision
def testGetGitRevision_findEmptyRevision(self):
args = createSkiaGoldArgs(local_pixel_tests=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
with mock.patch.object(skia_gold_properties.SkiaGoldProperties,
'_GetGitOriginMasterHeadSha1') as patched_head:
patched_head.return_value = ''
with self.assertRaises(RuntimeError):
_ = sgp.git_revision
def testGetGitRevision_findMalformedRevision(self):
args = createSkiaGoldArgs(local_pixel_tests=True)
sgp = skia_gold_properties.SkiaGoldProperties(args)
with mock.patch.object(skia_gold_properties.SkiaGoldProperties,
'_GetGitOriginMasterHeadSha1') as patched_head:
patched_head.return_value = 'a' * 39
with self.assertRaises(RuntimeError):
_ = sgp.git_revision
if __name__ == '__main__':
unittest.main(verbosity=2)