Chromium Code Reviews| Index: appengine/swarming/cipd_test.py |
| diff --git a/appengine/swarming/cipd_test.py b/appengine/swarming/cipd_test.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..470eb66e6a47053afaaf3e872bbf6075347d4613 |
| --- /dev/null |
| +++ b/appengine/swarming/cipd_test.py |
| @@ -0,0 +1,90 @@ |
| +#!/usr/bin/env python |
| +# coding: utf-8 |
| +# Copyright 2016 The LUCI Authors. All rights reserved. |
| +# Use of this source code is governed under the Apache License, Version 2.0 |
| +# that can be found in the LICENSE file. |
| + |
| +import collections |
| +import logging |
| +import re |
| +import sys |
| +import unittest |
| + |
| +# Setups environment. |
| +import test_env_handlers |
| + |
| +import cipd |
| +import swarming_rpcs |
| + |
| + |
| +class TestPinChecker(unittest.TestCase): |
| + def setUp(self): |
| + super(TestPinChecker, self).setUp() |
| + self.pin_checker = cipd.PinChecker() |
| + self.cp = collections.namedtuple('CipdPackage', 'path package_name version') |
|
M-A Ruel
2016/08/30 02:18:07
I didn't know you like javascript. :P
iannucci
2016/08/30 09:13:29
:(
|
| + |
| + def test_correct_pins(self): |
| + a = self.cp('path', 'package_name/${platform}-${os_ver}', 'latest') |
| + b = self.cp('path', 'package_name/windows-amd64-something_10', 'deadbeef'*5) |
| + |
| + # will not raise |
| + self.pin_checker.check(a, b) |
| + |
| + self.assertEqual(self.pin_checker.platform, re.escape('windows-amd64')) |
| + self.assertEqual(self.pin_checker.os_ver, re.escape('something_10')) |
| + |
| + a = self.cp('path', 'other/${platform}-${os_ver}', 'latest') |
| + b = self.cp('path', 'other/windows-amd64-something_10', 'deadbeef'*5) |
| + |
| + # will not raise |
| + self.pin_checker.check(a, b) |
| + |
| + def test_mismatched_pins(self): |
| + # if a is already a pin, b must match its version exactly |
| + a = self.cp('path', 'package_name/${platform}-${os_ver}', 'deadbeef'*5) |
| + b = self.cp('path', 'package_name/windows-amd64-something_10', 'badc0ffe'*5) |
| + |
| + with self.assertRaisesRegexp(ValueError, 'Mismatched pins'): |
| + self.pin_checker.check(a, b) |
| + |
| + def test_mismatched_paths(self): |
| + a = self.cp('path', 'package_name/${platform}-${os_ver}', 'latest') |
| + b = self.cp('else', 'package_name/windows-amd64-something_10', 'deadbeef'*5) |
| + |
| + with self.assertRaisesRegexp(ValueError, 'Mismatched path'): |
| + self.pin_checker.check(a, b) |
| + |
| + def test_mismatched_names(self): |
| + a = self.cp('', 'package_name/${platform}-${os_ver}', 'latest') |
| + b = self.cp('', 'else/windows-amd64-something_10', 'deadbeef'*5) |
| + |
| + with self.assertRaisesRegexp(ValueError, 'Mismatched package_name'): |
| + self.pin_checker.check(a, b) |
| + |
| + self.assertIsNone(self.pin_checker.platform) |
| + self.assertIsNone(self.pin_checker.os_ver) |
| + |
| + a = self.cp('', 'package_name/${platform}-${os_ver}', 'latest') |
| + b = self.cp('', 'package_name/windows-amd64-something_10', 'deadbeef'*5) |
| + # will not raise |
| + self.pin_checker.check(a, b) |
| + |
| + self.assertEqual(self.pin_checker.platform, re.escape('windows-amd64')) |
| + self.assertEqual(self.pin_checker.os_ver, re.escape('something_10')) |
| + |
| + # This doesn't match the previous knowledge of platform or os_ver, so it |
| + # will not match. |
| + a = self.cp('', 'package_name/${platform}-${os_ver}', 'latest') |
| + b = self.cp('', 'package_name/linux-32-nerds', 'deadbeef'*5) |
| + |
| + with self.assertRaisesRegexp(ValueError, 'Mismatched package_name'): |
| + self.pin_checker.check(a, b) |
| + |
| + |
| +if __name__ == '__main__': |
| + if '-v' in sys.argv: |
| + unittest.TestCase.maxDiff = None |
| + logging.basicConfig( |
| + level=logging.DEBUG if '-v' in sys.argv else logging.CRITICAL, |
| + format='%(levelname)-7s %(filename)s:%(lineno)3d %(message)s') |
| + unittest.main() |