Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: gslib/tests/test_cat.py

Issue 698893003: Update checked in version of gsutil to version 4.6 (Closed) Base URL: http://dart.googlecode.com/svn/third_party/gsutil/
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gslib/tests/test_bucketconfig.py ('k') | gslib/tests/test_command_runner.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # -*- coding: utf-8 -*-
1 # Copyright 2013 Google Inc. All Rights Reserved. 2 # Copyright 2013 Google Inc. All Rights Reserved.
2 # 3 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License. 5 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at 6 # You may obtain a copy of the License at
6 # 7 #
7 # http://www.apache.org/licenses/LICENSE-2.0 8 # http://www.apache.org/licenses/LICENSE-2.0
8 # 9 #
9 # Unless required by applicable law or agreed to in writing, software 10 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and 13 # See the License for the specific language governing permissions and
13 # limitations under the License. 14 # limitations under the License.
15 """Tests for cat command."""
14 16
15 import boto 17 from __future__ import absolute_import
18
16 import gslib.tests.testcase as testcase 19 import gslib.tests.testcase as testcase
17 from gslib.tests.util import ObjectToURI as suri 20 from gslib.tests.util import ObjectToURI as suri
18 21
19 22
20 class TestCat(testcase.GsUtilIntegrationTestCase): 23 class TestCat(testcase.GsUtilIntegrationTestCase):
21 """Integration tests for cat command.""" 24 """Integration tests for cat command."""
22 25
23 def test_cat_range(self): 26 def test_cat_range(self):
27 """Tests cat command with various range arguments."""
24 key_uri = self.CreateObject(contents='0123456789') 28 key_uri = self.CreateObject(contents='0123456789')
25 # Test various invalid ranges. 29 # Test various invalid ranges.
26 stderr = self.RunGsUtil(['cat', '-r -', suri(key_uri)], 30 stderr = self.RunGsUtil(['cat', '-r -', suri(key_uri)],
27 return_stderr=True, expected_status=1) 31 return_stderr=True, expected_status=1)
28 self.assertIn('Invalid range', stderr) 32 self.assertIn('Invalid range', stderr)
29 stderr = self.RunGsUtil(['cat', '-r a-b', suri(key_uri)], 33 stderr = self.RunGsUtil(['cat', '-r a-b', suri(key_uri)],
30 return_stderr=True, expected_status=1) 34 return_stderr=True, expected_status=1)
31 self.assertIn('Invalid range', stderr) 35 self.assertIn('Invalid range', stderr)
32 stderr = self.RunGsUtil(['cat', '-r 1-2-3', suri(key_uri)], 36 stderr = self.RunGsUtil(['cat', '-r 1-2-3', suri(key_uri)],
33 return_stderr=True, expected_status=1) 37 return_stderr=True, expected_status=1)
34 self.assertIn('Invalid range', stderr) 38 self.assertIn('Invalid range', stderr)
35 stderr = self.RunGsUtil(['cat', '-r 1.7-3', suri(key_uri)], 39 stderr = self.RunGsUtil(['cat', '-r 1.7-3', suri(key_uri)],
36 return_stderr=True, expected_status=1) 40 return_stderr=True, expected_status=1)
37 self.assertIn('Invalid range', stderr) 41 self.assertIn('Invalid range', stderr)
38 42
39 # Test various valid ranges. 43 # Test various valid ranges.
40 stdout = self.RunGsUtil(['cat', '-r 1-3', suri(key_uri)], 44 stdout = self.RunGsUtil(['cat', '-r 1-3', suri(key_uri)],
41 return_stdout=True) 45 return_stdout=True)
42 self.assertEqual('123', stdout) 46 self.assertEqual('123', stdout)
43 stdout = self.RunGsUtil(['cat', '-r 8-', suri(key_uri)], 47 stdout = self.RunGsUtil(['cat', '-r 8-', suri(key_uri)],
44 return_stdout=True) 48 return_stdout=True)
45 self.assertEqual('89', stdout) 49 self.assertEqual('89', stdout)
46 stdout = self.RunGsUtil(['cat', '-r -3', suri(key_uri)], 50 stdout = self.RunGsUtil(['cat', '-r -3', suri(key_uri)],
47 return_stdout=True) 51 return_stdout=True)
48 self.assertEqual('789', stdout) 52 self.assertEqual('789', stdout)
49 53
50 def test_cat_version(self): 54 def test_cat_version(self):
55 """Tests cat command on versioned objects."""
51 bucket_uri = self.CreateVersionedBucket() 56 bucket_uri = self.CreateVersionedBucket()
52 # Create 2 versions of an object. 57 # Create 2 versions of an object.
53 uri1 = self.CreateObject(bucket_uri=bucket_uri, contents='data1') 58 uri1 = self.CreateObject(bucket_uri=bucket_uri, contents='data1')
54 uri2 = self.CreateObject(bucket_uri=bucket_uri, 59 uri2 = self.CreateObject(bucket_uri=bucket_uri,
55 object_name=uri1.object_name, contents='data2') 60 object_name=uri1.object_name, contents='data2')
56 stdout = self.RunGsUtil(['cat', suri(uri1)], return_stdout=True) 61 stdout = self.RunGsUtil(['cat', suri(uri1)], return_stdout=True)
57 # Last version written should be live. 62 # Last version written should be live.
58 self.assertEqual('data2', stdout) 63 self.assertEqual('data2', stdout)
59 # Using either version-specific URI should work. 64 # Using either version-specific URI should work.
60 stdout = self.RunGsUtil(['cat', uri1.version_specific_uri], 65 stdout = self.RunGsUtil(['cat', uri1.version_specific_uri],
61 return_stdout=True) 66 return_stdout=True)
62 self.assertEqual('data1', stdout) 67 self.assertEqual('data1', stdout)
63 stdout = self.RunGsUtil(['cat', uri2.version_specific_uri], 68 stdout = self.RunGsUtil(['cat', uri2.version_specific_uri],
64 return_stdout=True) 69 return_stdout=True)
65 self.assertEqual('data2', stdout) 70 self.assertEqual('data2', stdout)
66 # Attempting to cat invalid version should result in an error. 71 # Attempting to cat invalid version should result in an error.
67 stderr = self.RunGsUtil(['cat', uri2.version_specific_uri + '23'], 72 stderr = self.RunGsUtil(['cat', uri2.version_specific_uri + '23'],
68 return_stderr=True, expected_status=1) 73 return_stderr=True, expected_status=1)
69 self.assertIn('InvalidUriError', stderr) 74 self.assertIn('No URLs matched', stderr)
75
76 def test_cat_multi_arg(self):
77 """Tests cat command with multiple arguments."""
78 bucket_uri = self.CreateBucket()
79 data1 = '0123456789'
80 data2 = 'abcdefghij'
81 obj_uri1 = self.CreateObject(bucket_uri=bucket_uri, contents=data1)
82 obj_uri2 = self.CreateObject(bucket_uri=bucket_uri, contents=data2)
83 stdout, stderr = self.RunGsUtil(
84 ['cat', suri(obj_uri1), suri(bucket_uri) + 'nonexistent'],
85 return_stdout=True, return_stderr=True, expected_status=1)
86 # First object should print, second should produce an exception.
87 self.assertIn(data1, stdout)
88 self.assertIn('NotFoundException', stderr)
89
90 stdout, stderr = self.RunGsUtil(
91 ['cat', suri(bucket_uri) + 'nonexistent', suri(obj_uri1)],
92 return_stdout=True, return_stderr=True, expected_status=1)
93
94 # If first object is invalid, exception should halt output immediately.
95 self.assertNotIn(data1, stdout)
96 self.assertIn('NotFoundException', stderr)
97
98 # Two valid objects should both print successfully.
99 stdout = self.RunGsUtil(['cat', suri(obj_uri1), suri(obj_uri2)],
100 return_stdout=True)
101 self.assertIn(data1 + data2, stdout)
OLDNEW
« no previous file with comments | « gslib/tests/test_bucketconfig.py ('k') | gslib/tests/test_command_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698