Adding more assertions.
Fixing utility to actually work when presented with a file based acl instead
of a canonical one.

BUG=None
TEST=None
TBR=djmm

Review URL: http://codereview.chromium.org/2872025

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/gsd_generate_index@51237 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gsd_generate_index.py b/gsd_generate_index.py
index ff4bd89..435ca0f 100755
--- a/gsd_generate_index.py
+++ b/gsd_generate_index.py
@@ -51,6 +51,7 @@
   cmd = [options.gsutil, 'ls', '-l', path]
   p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
   p_stdout, _ = p.communicate()
+  assert p.returncode == 0
   # Extract intersting fields.
   fields = {}
   fields['size'] = FixupSize(re.search('\tObject size:\t([0-9]+)\n',
@@ -110,10 +111,10 @@
   index += '</html>'
   # Check current state.
   cmd = [options.gsutil, 'cat', posixpath.join(path, GENERATED_INDEX)]
-  p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+  p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   p_stdout, _ = p.communicate()
-  # Done if it's alrady right.
-  if p_stdout == index and not options.force:
+  # Done if it's alrady right (and the cat worked).
+  if p.returncode == 0 and p_stdout == index and not options.force:
     print '%s -- skipping, up to date' % path
     return
   # Write to a file.
@@ -123,11 +124,17 @@
   f.flush()
   # Upload index.
   cmd = [options.gsutil, 'cp']
-  if options.acl:
-    cmd += ['-a', options.acl]
   cmd += [filename, posixpath.join(path, GENERATED_INDEX)]
   p = subprocess.Popen(cmd)
   p.communicate()
+  assert p.returncode == 0
+  # Optionally update acl.
+  if options.acl:
+    cmd = [options.gsutil, 'setacl', options.acl]
+    cmd += [posixpath.join(path, GENERATED_INDEX)]
+    p = subprocess.Popen(cmd)
+    p.communicate()
+    assert p.returncode == 0
   print '%s -- updated index' % path
 
 
@@ -137,6 +144,7 @@
   cmd = [options.gsutil, 'ls', posixpath.join(path, '*')]
   p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
   p_stdout, _ = p.communicate()
+  assert p.returncode == 0
   objects = str(p_stdout).splitlines()
   objects = [o for o in objects if posixpath.basename(o) != GENERATED_INDEX]
   # Find common prefixes.