Merge lp:~chipaca/u1db/para-nessita-que-lo-mira-por-TV___u1db-client_get-index-keys into lp:u1db

Proposed by John Lenton
Status: Merged
Approved by: dobey
Approved revision: 304
Merge reported by: dobey
Merged at revision: not available
Proposed branch: lp:~chipaca/u1db/para-nessita-que-lo-mira-por-TV___u1db-client_get-index-keys
Merge into: lp:u1db
Diff against target: 99 lines (+68/-1)
2 files modified
u1db/commandline/client.py (+28/-1)
u1db/tests/commandline/test_client.py (+40/-0)
To merge this branch: bzr merge lp:~chipaca/u1db/para-nessita-que-lo-mira-por-TV___u1db-client_get-index-keys
Reviewer Review Type Date Requested Status
John A Meinel (community) Approve
Samuele Pedroni Approve
Review via email: mp+106676@code.launchpad.net

Commit message

Adds get-index-keys to u1db-client.

Description of the change

Adds get-index-keys to u1db-client

To post a comment you must log in.
Revision history for this message
Samuele Pedroni (pedronis) wrote :

+1

review: Approve
Revision history for this message
John A Meinel (jameinel) wrote :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 5/21/2012 7:38 PM, John Lenton wrote:
> John Lenton has proposed merging
> lp:~chipaca/u1db/para-nessita-que-lo-mira-por-TV___u1db-client_get-index-keys
> into lp:u1db.
>
> Requested reviews: Ubuntu One hackers (ubuntuone-hackers) Related
> bugs: Bug #1000720 in U1DB: "u1db-client should have support for
> managing indexes" https://bugs.launchpad.net/u1db/+bug/1000720
>
> For more details, see:
> https://code.launchpad.net/~chipaca/u1db/para-nessita-que-lo-mira-por-TV___u1db-client_get-index-keys/+merge/106676
>
> Adds get-index-keys to u1db-client

 merge: approve
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+7XEkACgkQJdeBCYSNAAM/8ACfeAxKEFWYGmdM3UQtSIDjccj2
HKMAn0ynJaz/ayGrQEqJKTKclzuqK7O2
=+LEw
-----END PGP SIGNATURE-----

review: Approve
Revision history for this message
dobey (dobey) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'u1db/commandline/client.py'
2--- u1db/commandline/client.py 2012-05-21 09:02:54 +0000
3+++ u1db/commandline/client.py 2012-05-21 17:48:19 +0000
4@@ -295,9 +295,36 @@
5 return 1
6 db.delete_index(index)
7
8-
9 client_commands.register(CmdDeleteIndex)
10
11
12+class CmdGetIndexKeys(OneDbCmd):
13+ """Get the index's keys"""
14+
15+ name = "get-index-keys"
16+
17+ @classmethod
18+ def _populate_subparser(cls, parser):
19+ parser.add_argument('database', help='The local database to query',
20+ metavar='database-path')
21+ parser.add_argument('index', help='the name of the index')
22+
23+ def run(self, database, index):
24+ try:
25+ db = self._open(database, create=False)
26+ for i in db.get_index_keys(index):
27+ self.stdout.write("%s\n" % (i,))
28+ except errors.DatabaseDoesNotExist:
29+ self.stderr.write("Database does not exist.\n")
30+ except errors.IndexDoesNotExist:
31+ self.stderr.write("Index does not exist.\n")
32+ else:
33+ return
34+ return 1
35+
36+
37+client_commands.register(CmdGetIndexKeys)
38+
39+
40 def main(args):
41 return client_commands.run_argv(args, sys.stdin, sys.stdout, sys.stderr)
42
43=== modified file 'u1db/tests/commandline/test_client.py'
44--- u1db/tests/commandline/test_client.py 2012-05-21 08:50:47 +0000
45+++ u1db/tests/commandline/test_client.py 2012-05-21 17:48:19 +0000
46@@ -139,6 +139,12 @@
47 self.assertEqual('db', args.database)
48 self.assertEqual('index', args.index)
49
50+ def test_get_index_keys(self):
51+ args = self.parse_args(['get-index-keys', 'db', 'index'])
52+ self.assertEqual(client.CmdGetIndexKeys, args.subcommand)
53+ self.assertEqual('db', args.database)
54+ self.assertEqual('index', args.index)
55+
56
57 class TestCaseWithDB(tests.TestCase):
58 """These next tests are meant to have one class per Command.
59@@ -432,6 +438,40 @@
60 self.assertEqual(cmd.stderr.getvalue(), '')
61
62
63+class TestCmdGetIndexKeys(TestCaseWithDB):
64+
65+ def test_get_index_keys(self):
66+ self.db.create_index("foo", ["bar"])
67+ self.db.create_doc('{"bar": 42}')
68+ cmd = self.make_command(client.CmdGetIndexKeys)
69+ retval = cmd.run(self.db_path, "foo")
70+ self.assertEqual(retval, None)
71+ self.assertEqual(cmd.stdout.getvalue(), '42\n')
72+ self.assertEqual(cmd.stderr.getvalue(), '')
73+
74+ def test_get_index_keys_empty(self):
75+ self.db.create_index("foo", ["bar"])
76+ cmd = self.make_command(client.CmdGetIndexKeys)
77+ retval = cmd.run(self.db_path, "foo")
78+ self.assertEqual(retval, None)
79+ self.assertEqual(cmd.stdout.getvalue(), '')
80+ self.assertEqual(cmd.stderr.getvalue(), '')
81+
82+ def test_get_index_keys_no_db(self):
83+ cmd = self.make_command(client.CmdGetIndexKeys)
84+ retval = cmd.run(self.db_path + "__DOES_NOT_EXIST", "foo")
85+ self.assertEqual(retval, 1)
86+ self.assertEqual(cmd.stdout.getvalue(), '')
87+ self.assertEqual(cmd.stderr.getvalue(), 'Database does not exist.\n')
88+
89+ def test_get_index_keys_no_index(self):
90+ cmd = self.make_command(client.CmdGetIndexKeys)
91+ retval = cmd.run(self.db_path, "foo")
92+ self.assertEqual(retval, 1)
93+ self.assertEqual(cmd.stdout.getvalue(), '')
94+ self.assertEqual(cmd.stderr.getvalue(), 'Index does not exist.\n')
95+
96+
97 class RunMainHelper(object):
98
99 def run_main(self, args, stdin=None):

Subscribers

People subscribed via source and target branches