OLD | NEW |
| (Empty) |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 from infra.services.gnumbd.support import config_ref, git | |
6 from infra.services.gnumbd.test import git_test | |
7 | |
8 class TestConfigRef(git_test.TestBasis): | |
9 def writeConfig(self, config_data): | |
10 ref = 'refs/metaconfig' | |
11 def inner(): | |
12 g = self.repo.git | |
13 if g('rev-parse', ref).stdout.strip() != ref: | |
14 g('checkout', ref) | |
15 else: | |
16 g('checkout', '--orphan', 'config') | |
17 g('rm', '-rf', '.') | |
18 with open('config.json', 'w') as f: | |
19 f.write(config_data) | |
20 g('add', 'config.json') | |
21 self.repo.git_commit('a bad config file') | |
22 g('update-ref', ref, 'HEAD') | |
23 self.repo.run(inner) | |
24 | |
25 def testNonExist(self): | |
26 r = self.mkRepo() | |
27 c = config_ref.ConfigRef(git.Ref(r, 'refs/metaconfig')) | |
28 self.assertEqual(c.current, c.DEFAULTS) | |
29 self.assertEqual(c['interval'], c.DEFAULTS['interval']) | |
30 | |
31 def testExistsBad(self): | |
32 self.writeConfig("not valid config") | |
33 r = self.mkRepo() | |
34 c = config_ref.ConfigRef(git.Ref(r, 'refs/metaconfig')) | |
35 c.evaluate() | |
36 self.assertEqual(c.current, c.DEFAULTS) | |
37 | |
38 self.writeConfig("[]") | |
39 self.capture_stdio(r.run, 'fetch') | |
40 c.evaluate() | |
41 self.assertEqual(c.current, c.DEFAULTS) | |
42 | |
43 def testExistsGood(self): | |
44 self.writeConfig('{"interval": 100}') | |
45 r = self.mkRepo() | |
46 c = config_ref.ConfigRef(git.Ref(r, 'refs/metaconfig')) | |
47 self.assertAlmostEqual(c['interval'], 100.0) | |
48 | |
49 self.writeConfig('{"interval": "cat"}') | |
50 self.capture_stdio(r.run, 'fetch') | |
51 c.evaluate() | |
52 self.assertAlmostEqual(c['interval'], 100.0) | |
OLD | NEW |