Merge lp:~cjohnston/ubuntu-ci-services-itself/fix-flake8-issues into lp:ubuntu-ci-services-itself

Proposed by Chris Johnston
Status: Merged
Approved by: Chris Johnston
Approved revision: 235
Merged at revision: 236
Proposed branch: lp:~cjohnston/ubuntu-ci-services-itself/fix-flake8-issues
Merge into: lp:ubuntu-ci-services-itself
Diff against target: 351 lines (+35/-49)
15 files modified
branch-source-builder/run_worker (+1/-0)
branch-source-builder/upload_package.py (+3/-4)
branch-source-builder/watch_ppa.py (+1/-1)
charms/precise/webui/hooks/hooks.py (+0/-1)
ci-utils/ci_utils/nova_client/__init__.py (+14/-22)
ci-utils/ci_utils/tests/test_jenkins.py (+0/-2)
ci-utils/ci_utils/tests/test_tmpdir.py (+1/-1)
juju-deployer/test_update.py (+2/-2)
juju-deployer/update.py (+3/-3)
lander/bin/lander_archiver.py (+0/-1)
ppa-assigner/ppa_assigner/management/commands/integration_test.py (+4/-3)
run-tests (+2/-2)
test_runner/tstrun/testbed.py (+0/-2)
test_runner/tstrun/tests/test_data_store.py (+0/-1)
tests/data_store/test.py (+4/-4)
To merge this branch: bzr merge lp:~cjohnston/ubuntu-ci-services-itself/fix-flake8-issues
Reviewer Review Type Date Requested Status
Vincent Ladeuil (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+206055@code.launchpad.net

Commit message

Fix misc flake8 issues around the project

Description of the change

We should adhere to pep8

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

FAILED: Continuous integration, rev:235
http://s-jenkins.ubuntu-ci:8080/job/uci-engine-ci/146/
Executed test runs:

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/uci-engine-ci/146/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

PASSED: Continuous integration, rev:235
http://s-jenkins.ubuntu-ci:8080/job/uci-engine-ci/147/
Executed test runs:

Click here to trigger a rebuild:
http://s-jenkins.ubuntu-ci:8080/job/uci-engine-ci/147/rebuild

review: Approve (continuous-integration)
Revision history for this message
Ursula Junque (ursinha) wrote :

The changes look good (can't disagree with flake8 cleanup :)). I see that all cupstream2distro reused code needs pep8 love, so might be too much for this branch, but I found three worth fixing in this branch:

branch-source-builder/watch_ppa.py:174:1: F821 undefined name 'UPLOAD_LIST'
ci-utils/ci_utils/nova_client/__init__.py:75:1: F841 local variable 'id' is assigned to but never used
cli/tests/test_utils.py:34:1: E302 expected 2 blank lines, found 1

Other than that that's great.

Revision history for this message
Vincent Ladeuil (vila) wrote :

> We should adhere to pep8

+1

Yet, it's not good if it's not automatic. It's on my TODO list as part of our test story but not at the top yet (ucitests provides a base class that can be used for that but does not work (yet) on precise).

...

Now that I think about it, I should just skip that on precise, I don't think there are a lot of us developing on precise ... will make a MP later.

...

In fact, I already did almost all that is needed in ucitests-0.0.8, so less work than I think.

review: Approve
Revision history for this message
Chris Johnston (cjohnston) wrote :

On Thu, Feb 13, 2014 at 11:00 AM, Ursula Junque <email address hidden> wrote:

> The changes look good (can't disagree with flake8 cleanup :)). I see that
> all cupstream2distro reused code needs pep8 love, so might be too much for
> this branch, but I found three worth fixing in this branch:
>

Since cupstream2distro was a direct copy and paste, I disagree with making
changes to it. If we want to fix them, I think they should be fixed
upstream first and then brought to us, otherwise making changes across both
will become more difficult. I also didn't even look at any of the charms
other than webui for that same reason.

>
> branch-source-builder/watch_ppa.py:174:1: F821 undefined name 'UPLOAD_LIST'
> ci-utils/ci_utils/nova_client/__init__.py:75:1: F841 local variable 'id'
> is assigned to but never used
> cli/tests/test_utils.py:34:1: E302 expected 2 blank lines, found 1
>
>
cli was fixed in a previous MP. UPLOAD_LIST and id I was going to talk to
the developers about. UPLOAD_LIST looks like there is part of a story
missing.

> Other than that that's great.

Revision history for this message
Ursula Junque (ursinha) wrote :

> On Thu, Feb 13, 2014 at 11:00 AM, Ursula Junque <email address hidden> wrote:
>
> > The changes look good (can't disagree with flake8 cleanup :)). I see that
> > all cupstream2distro reused code needs pep8 love, so might be too much for
> > this branch, but I found three worth fixing in this branch:
> >
>
> Since cupstream2distro was a direct copy and paste, I disagree with making
> changes to it. If we want to fix them, I think they should be fixed
> upstream first and then brought to us, otherwise making changes across both
> will become more difficult. I also didn't even look at any of the charms
> other than webui for that same reason.

I'm not sure they're only copy&paste, from fginther's MP it seems the code was copied and adapted, so it's unclear we're bringing upstream changes to our code. But that's a separate thing, I think, as it needs further discussion.

>
>
> >
> > branch-source-builder/watch_ppa.py:174:1: F821 undefined name 'UPLOAD_LIST'
> > ci-utils/ci_utils/nova_client/__init__.py:75:1: F841 local variable 'id'
> > is assigned to but never used
> > cli/tests/test_utils.py:34:1: E302 expected 2 blank lines, found 1
> >
> >
> cli was fixed in a previous MP. UPLOAD_LIST and id I was going to talk to
> the developers about. UPLOAD_LIST looks like there is part of a story
> missing.
>
>
> > Other than that that's great.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'branch-source-builder/run_worker'
--- branch-source-builder/run_worker 2014-02-11 20:57:36 +0000
+++ branch-source-builder/run_worker 2014-02-12 21:16:08 +0000
@@ -32,6 +32,7 @@
32from ci_utils import amqp_utils32from ci_utils import amqp_utils
33TIME_BETWEEN_CHECKS = 6033TIME_BETWEEN_CHECKS = 60
3434
35
35def on_message(msg):36def on_message(msg):
36 log.info('on_message: {}'.format(msg.body))37 log.info('on_message: {}'.format(msg.body))
37 params = json.loads(msg.body)38 params = json.loads(msg.body)
3839
=== modified file 'branch-source-builder/upload_package.py'
--- branch-source-builder/upload_package.py 2014-02-07 17:32:37 +0000
+++ branch-source-builder/upload_package.py 2014-02-12 21:16:08 +0000
@@ -17,7 +17,6 @@
17import argparse17import argparse
18import atexit18import atexit
19from dput.changes import parse_changes_file19from dput.changes import parse_changes_file
20import json
21import logging20import logging
22import os21import os
23import re22import re
@@ -43,9 +42,9 @@
4342
4443
45def cleanup(directory):44def cleanup(directory):
46 if os.path.exists(directory) and os.path.isdir(directory):45 if os.path.exists(directory) and os.path.isdir(directory):
47 logging.info('Removing temp directory: {}'.format(directory))46 logging.info('Removing temp directory: {}'.format(directory))
48 shutil.rmtree(directory)47 shutil.rmtree(directory)
4948
5049
51def create_temp_dir():50def create_temp_dir():
5251
=== modified file 'branch-source-builder/watch_ppa.py'
--- branch-source-builder/watch_ppa.py 2014-02-07 17:32:37 +0000
+++ branch-source-builder/watch_ppa.py 2014-02-12 21:16:08 +0000
@@ -80,7 +80,7 @@
80 # Get archs available and archs to ignore80 # Get archs available and archs to ignore
81 (available_archs_in_ppa,81 (available_archs_in_ppa,
82 arch_all_arch) = launchpadmanager.get_available_and_all_archs(82 arch_all_arch) = launchpadmanager.get_available_and_all_archs(
83 lp_series, monitored_ppa)83 lp_series, monitored_ppa)
84 (archs_to_eventually_ignore,84 (archs_to_eventually_ignore,
85 archs_to_unconditionally_ignore) = launchpadmanager.get_ignored_archs()85 archs_to_unconditionally_ignore) = launchpadmanager.get_ignored_archs()
86 logging.info('Arches available in ppa: {}'.format(available_archs_in_ppa))86 logging.info('Arches available in ppa: {}'.format(available_archs_in_ppa))
8787
=== modified file 'charms/precise/webui/hooks/hooks.py'
--- charms/precise/webui/hooks/hooks.py 2014-01-27 21:44:48 +0000
+++ charms/precise/webui/hooks/hooks.py 2014-02-12 21:16:08 +0000
@@ -2,7 +2,6 @@
22
3import distutils.dir_util3import distutils.dir_util
4import grp4import grp
5import json
6import os5import os
7import pwd6import pwd
8import re7import re
98
=== modified file 'ci-utils/ci_utils/nova_client/__init__.py'
--- ci-utils/ci_utils/nova_client/__init__.py 2014-01-29 23:01:46 +0000
+++ ci-utils/ci_utils/nova_client/__init__.py 2014-02-12 21:16:08 +0000
@@ -38,19 +38,18 @@
38 self.nova = novaclient.Client(**creds)38 self.nova = novaclient.Client(**creds)
39 image = self.nova.images.find(name=imagename)39 image = self.nova.images.find(name=imagename)
40 inst_flavor = self.nova.flavors.find(name=flavor)40 inst_flavor = self.nova.flavors.find(name=flavor)
41 SSH_KEYNAME=os.path.expanduser('~/.ssh/id_rsa')41 SSH_KEYNAME = os.path.expanduser('~/.ssh/id_rsa')
42 if not os.path.exists(SSH_KEYNAME):42 if not os.path.exists(SSH_KEYNAME):
43 subprocess.call(43 subprocess.call(
44 ['ssh-keygen','-t','rsa','-f',SSH_KEYNAME,'-N',''])44 ['ssh-keygen', '-t', 'rsa', '-f', SSH_KEYNAME, '-N', ''])
45 if not self.nova.keypairs.findall(name="sshkey"):45 if not self.nova.keypairs.findall(name="sshkey"):
46 with open(SSH_KEYNAME+'.pub') as sshkey:46 with open(SSH_KEYNAME+'.pub') as sshkey:
47 self.key=self.nova.keypairs.create(47 self.key = self.nova.keypairs.create(
48 name="sshkey", public_key=sshkey.read())48 name="sshkey", public_key=sshkey.read())
49 self.instance=self.nova.servers.create(49 self.instance = self.nova.servers.create(
50 name="test", image=image, flavor=inst_flavor, key_name="sshkey")50 name="test", image=image, flavor=inst_flavor, key_name="sshkey")
51 self.ip = self._get_ip()51 self.ip = self._get_ip()
5252
53
54 def _wait_for_instance(self):53 def _wait_for_instance(self):
55 status = self.instance.status54 status = self.instance.status
56 #Try for up to 5 minutes to create the instance55 #Try for up to 5 minutes to create the instance
@@ -63,19 +62,17 @@
63 if status == 'BUILD':62 if status == 'BUILD':
64 raise NovaClientException("Instance creation timed out")63 raise NovaClientException("Instance creation timed out")
6564
66
67 def _refresh_instance(self):65 def _refresh_instance(self):
68 id=self.instance.id66 id = self.instance.id
69 try:67 try:
70 #You have to re-get the instance for it to update68 #You have to re-get the instance for it to update
71 self.instance = self.nova.servers.get(id)69 self.instance = self.nova.servers.get(id)
72 except ConnectionError:70 except ConnectionError:
73 log.warn("Received connection error, retrying")71 log.warn("Received connection error, retrying")
7472
75
76 def _get_ip(self):73 def _get_ip(self):
77 timeout = time.time()+30074 timeout = time.time()+300
78 id=self.instance.id75 id = self.instance.id
79 ip = None76 ip = None
80 while not ip and time.time() < timeout:77 while not ip and time.time() < timeout:
81 try:78 try:
@@ -83,7 +80,7 @@
83 self._refresh_instance()80 self._refresh_instance()
84 #The value first instance in networks should contain the81 #The value first instance in networks should contain the
85 #value we need82 #value we need
86 ip=self.instance.networks.values()[0][0]83 ip = self.instance.networks.values()[0][0]
87 except IndexError:84 except IndexError:
88 log.info("Waiting for IP to become available")85 log.info("Waiting for IP to become available")
89 time.sleep(5)86 time.sleep(5)
@@ -92,36 +89,31 @@
92 log.info("IP is %s" % ip)89 log.info("IP is %s" % ip)
93 return ip90 return ip
9491
95
96 def runcmd(self, cmd):92 def runcmd(self, cmd):
97 sshopts = ['-o','UserKnownHostsFile=/dev/null','-o ',93 sshopts = ['-o', 'UserKnownHostsFile=/dev/null', '-o ',
98 'StrictHostKeyChecking=no']94 'StrictHostKeyChecking=no']
99 cmd = ['ssh'] + ['ubuntu@'+self.ip] + sshopts + cmd.split(' ')95 cmd = ['ssh'] + ['ubuntu@'+self.ip] + sshopts + cmd.split(' ')
100 return subprocess.check_output(cmd)96 return subprocess.check_output(cmd)
10197
102
103 def scp(self, src, dest, recurse=False):98 def scp(self, src, dest, recurse=False):
104 sshopts = ['-o','UserKnownHostsFile=/dev/null','-o ',99 sshopts = ['-o', 'UserKnownHostsFile=/dev/null', '-o ',
105 'StrictHostKeyChecking=no']100 'StrictHostKeyChecking=no']
106 if recurse:101 if recurse:
107 sshopts.append['-r']102 sshopts.append['-r']
108 cmd = ['scp'] + ['ubuntu@'+self.ip] + sshopts + [src, dest]103 ['scp'] + ['ubuntu@'+self.ip] + sshopts + [src, dest]
109
110104
111 def delete(self):105 def delete(self):
112 self.instance.delete()106 self.instance.delete()
113107
114
115 def _get_nova_creds(self, config):108 def _get_nova_creds(self, config):
116 try:109 try:
117 creds = {'auth_url': config['auth_url'],110 creds = {'auth_url': config['auth_url'],
118 'username': config['auth_user'],111 'username': config['auth_user'],
119 'api_key': config['auth_password'],112 'api_key': config['auth_password'],
120 'project_id': config['auth_tenant_name'],113 'project_id': config['auth_tenant_name'],
121 'region_name': config['auth_region']}114 'region_name': config['auth_region']}
122 except KeyError:115 except KeyError:
123 raise self.NovaClientException(116 raise self.NovaClientException(
124 "Missing or invalid authentication info."117 "Missing or invalid authentication info."
125 )118 )
126 return creds119 return creds
127
128120
=== modified file 'ci-utils/ci_utils/tests/test_jenkins.py'
--- ci-utils/ci_utils/tests/test_jenkins.py 2014-02-07 22:09:36 +0000
+++ ci-utils/ci_utils/tests/test_jenkins.py 2014-02-12 21:16:08 +0000
@@ -15,8 +15,6 @@
1515
16import json16import json
17import mock17import mock
18import os
19import sys
20import unittest18import unittest
2119
22from ci_utils import jenkins_utils20from ci_utils import jenkins_utils
2321
=== modified file 'ci-utils/ci_utils/tests/test_tmpdir.py'
--- ci-utils/ci_utils/tests/test_tmpdir.py 2014-01-10 16:47:39 +0000
+++ ci-utils/ci_utils/tests/test_tmpdir.py 2014-02-12 21:16:08 +0000
@@ -22,6 +22,6 @@
22class TestTmpDir(unittest.TestCase):22class TestTmpDir(unittest.TestCase):
23 def test_tmpdir(self):23 def test_tmpdir(self):
24 with TmpDir() as tmpdir:24 with TmpDir() as tmpdir:
25 dir_created=tmpdir25 dir_created = tmpdir
26 self.assertTrue(os.path.exists(dir_created))26 self.assertTrue(os.path.exists(dir_created))
27 self.assertFalse(os.path.exists(dir_created))27 self.assertFalse(os.path.exists(dir_created))
2828
=== modified file 'juju-deployer/test_update.py'
--- juju-deployer/test_update.py 2014-02-04 15:58:00 +0000
+++ juju-deployer/test_update.py 2014-02-12 21:16:08 +0000
@@ -132,7 +132,7 @@
132 def test_get_branches_and_revnos(self):132 def test_get_branches_and_revnos(self):
133 branch_url = self.get_branch_url()133 branch_url = self.get_branch_url()
134 current = self.branch.revno()134 current = self.branch.revno()
135 y = self.get_service_yaml(current -1)135 y = self.get_service_yaml(current - 1)
136 path = os.path.join(self.temp_dir, 'foo.yaml')136 path = os.path.join(self.temp_dir, 'foo.yaml')
137 with open(path, 'w') as fp:137 with open(path, 'w') as fp:
138 fp.write(yaml.safe_dump(y))138 fp.write(yaml.safe_dump(y))
@@ -141,7 +141,7 @@
141 actual = update.get_branches_and_revnos(141 actual = update.get_branches_and_revnos(
142 [path], True)142 [path], True)
143 msg = '{} is out of date (currently {}, latest {})'143 msg = '{} is out of date (currently {}, latest {})'
144 msg = msg.format(branch_url, current -1, current)144 msg = msg.format(branch_url, current - 1, current)
145 warn.assert_called_with(msg)145 warn.assert_called_with(msg)
146 self.assertEqual(actual, {branch_url: current})146 self.assertEqual(actual, {branch_url: current})
147147
148148
=== modified file 'juju-deployer/update.py'
--- juju-deployer/update.py 2014-02-04 15:58:00 +0000
+++ juju-deployer/update.py 2014-02-12 21:16:08 +0000
@@ -43,7 +43,6 @@
43plugin.load_plugins()43plugin.load_plugins()
4444
4545
46
47class UpdateArgParser(argparse.ArgumentParser):46class UpdateArgParser(argparse.ArgumentParser):
48 """A parser for the uci-run-tests script."""47 """A parser for the uci-run-tests script."""
4948
@@ -140,7 +139,7 @@
140139
141def set_branches_and_revnos(paths, branches):140def set_branches_and_revnos(paths, branches):
142 """Update the yaml files with the new revnos.141 """Update the yaml files with the new revnos.
143 142
144 We cannot use pyyaml for this, as it doesn't preserve order or preserve143 We cannot use pyyaml for this, as it doesn't preserve order or preserve
145 comments.144 comments.
146 """145 """
@@ -163,6 +162,7 @@
163 with open(cfg, 'w') as fp:162 with open(cfg, 'w') as fp:
164 fp.write(new_body)163 fp.write(new_body)
165164
165
166def main(args=None):166def main(args=None):
167 if args is None:167 if args is None:
168 args = sys.argv[1:]168 args = sys.argv[1:]
@@ -174,7 +174,7 @@
174 paths = list(get_deployer_configs(deployer_dir))174 paths = list(get_deployer_configs(deployer_dir))
175175
176 if ns.assert_pinned:176 if ns.assert_pinned:
177 all_pinned = ensure_all_branches_are_pinned(paths)177 all_pinned = ensure_all_branches_are_pinned(paths)
178 return not bool(all_pinned)178 return not bool(all_pinned)
179 else:179 else:
180 branches = get_branches_and_revnos(paths, ns.check)180 branches = get_branches_and_revnos(paths, ns.check)
181181
=== modified file 'lander/bin/lander_archiver.py'
--- lander/bin/lander_archiver.py 2014-02-06 18:50:05 +0000
+++ lander/bin/lander_archiver.py 2014-02-12 21:16:08 +0000
@@ -18,7 +18,6 @@
18import logging18import logging
19import os19import os
20import sys20import sys
21import urllib2
22import yaml21import yaml
2322
24sys.path.append(os.path.join(os.path.dirname(__file__), '../../ci-utils'))23sys.path.append(os.path.join(os.path.dirname(__file__), '../../ci-utils'))
2524
=== modified file 'ppa-assigner/ppa_assigner/management/commands/integration_test.py'
--- ppa-assigner/ppa_assigner/management/commands/integration_test.py 2013-12-23 19:46:06 +0000
+++ ppa-assigner/ppa_assigner/management/commands/integration_test.py 2014-02-12 21:16:08 +0000
@@ -41,9 +41,10 @@
41 default=%(default)s'''),41 default=%(default)s'''),
42 make_option('--pocket', dest='pocket', default='Release',42 make_option('--pocket', dest='pocket', default='Release',
43 help='Pocket to copy package in. default=%(default)s'),43 help='Pocket to copy package in. default=%(default)s'),
44 make_option('--archive', dest='archive',44 make_option(
45 default='https://api.launchpad.net/1.0/ubuntu/+archive/primary',45 '--archive', dest='archive',
46 help='Archive for source package. defafult=%(default)s'),46 default='https://api.launchpad.net/1.0/ubuntu/+archive/primary',
47 help='Archive for source package. defafult=%(default)s'),
47 )48 )
4849
49 def handle(self, *args, **options):50 def handle(self, *args, **options):
5051
=== modified file 'run-tests'
--- run-tests 2014-02-04 14:50:46 +0000
+++ run-tests 2014-02-12 21:16:08 +0000
@@ -87,8 +87,8 @@
87 'branch-source-builder',87 'branch-source-builder',
88 'image-builder',88 'image-builder',
89 'lander',89 'lander',
90# 'ppa-assigner',90 # 'ppa-assigner',
91# 'ticket_system',91 # 'ticket_system',
92 'test_runner',92 'test_runner',
93 ]93 ]
94 loader = loaders.Loader()94 loader = loaders.Loader()
9595
=== modified file 'test_runner/tstrun/testbed.py'
--- test_runner/tstrun/testbed.py 2014-02-06 11:23:26 +0000
+++ test_runner/tstrun/testbed.py 2014-02-12 21:16:08 +0000
@@ -294,8 +294,6 @@
294# 'auth_testbed_sshkey' can be defined there if you don't use ~/.ssh/id_rsa.294# 'auth_testbed_sshkey' can be defined there if you don't use ~/.ssh/id_rsa.
295295
296def test_print_ip():296def test_print_ip():
297 precise_image = ('ubuntu-released/ubuntu-precise-12.04'
298 '-amd64-server-20131205-disk1.img')
299 saucy_image = ('ubuntu-released/ubuntu-saucy-13.10'297 saucy_image = ('ubuntu-released/ubuntu-saucy-13.10'
300 '-amd64-server-20140129-disk1.img')298 '-amd64-server-20140129-disk1.img')
301 test_bed = TestBed('vila1', 'm1.small', saucy_image,299 test_bed = TestBed('vila1', 'm1.small', saucy_image,
302300
=== modified file 'test_runner/tstrun/tests/test_data_store.py'
--- test_runner/tstrun/tests/test_data_store.py 2014-02-06 11:23:26 +0000
+++ test_runner/tstrun/tests/test_data_store.py 2014-02-12 21:16:08 +0000
@@ -14,7 +14,6 @@
14# along with this program. If not, see <http://www.gnu.org/licenses/>.14# along with this program. If not, see <http://www.gnu.org/licenses/>.
1515
16import errno16import errno
17import os
18import unittest17import unittest
1918
2019
2120
=== modified file 'tests/data_store/test.py'
--- tests/data_store/test.py 2014-02-10 19:11:11 +0000
+++ tests/data_store/test.py 2014-02-12 21:16:08 +0000
@@ -20,7 +20,8 @@
20import sys20import sys
21import yaml21import yaml
2222
23sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'ci-utils'))23sys.path.append(os.path.join(
24 os.path.dirname(__file__), '..', '..', 'ci-utils'))
2425
25from ci_utils import data_store26from ci_utils import data_store
2627
@@ -106,15 +107,14 @@
106107
107 del self.auth_config['auth_region']108 del self.auth_config['auth_region']
108 with self.assertRaises(data_store.DataStoreException):109 with self.assertRaises(data_store.DataStoreException):
109 ds = data_store.DataStore("test2", auth_config=self.auth_config)110 data_store.DataStore("test2", auth_config=self.auth_config)
110111
111 def test_bad_region(self):112 def test_bad_region(self):
112 """ Test that passing an invalid region fails. """113 """ Test that passing an invalid region fails. """
113114
114 self.auth_config['auth_region'] = 'bad_region'115 self.auth_config['auth_region'] = 'bad_region'
115 with self.assertRaises(data_store.DataStoreException):116 with self.assertRaises(data_store.DataStoreException):
116 ds = data_store.DataStore("test2",117 data_store.DataStore("test2", auth_config=self.auth_config)
117 auth_config=self.auth_config)
118118
119119
120if __name__ == "__main__":120if __name__ == "__main__":

Subscribers

People subscribed via source and target branches