client: fix swarming.py reproduce with env_prefixes.

- Remove encoding, it's unnecessary now that subprocess42 is SUPER SMART. :)
- Add a small unit test.

R=iannucci@chromium.org

Bug: 800413
Change-Id: I4199c66146efb61bcb591714bae9350838da2f13
Reviewed-on: https://chromium-review.googlesource.com/857937
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
Commit-Queue: Marc-Antoine Ruel <maruel@chromium.org>
Cr-Mirrored-From: https://chromium.googlesource.com/infra/luci/luci-py
Cr-Mirrored-Commit: 7f12a449ca611184098f6fc4bf9b8c09fae1eb62
diff --git a/swarming.py b/swarming.py
index d53c842..8a6d2e7 100755
--- a/swarming.py
+++ b/swarming.py
@@ -1585,17 +1585,18 @@
   if properties.get('env'):
     logging.info('env: %r', properties['env'])
     for i in properties['env']:
-      key = i['key'].encode('utf-8')
+      key = i['key']
       if not i['value']:
         env.pop(key, None)
       else:
-        env[key] = i['value'].encode('utf-8')
+        env[key] = i['value']
 
   if properties.get('env_prefixes'):
-    env_prefixes = properties['env']
+    env_prefixes = properties['env_prefixes']
     logging.info('env_prefixes: %r', env_prefixes)
-    for key, paths in env_prefixes.iteritems():
-      paths = [os.path.normpath(os.path.join(workdir, p)) for p in paths]
+    for i in env_prefixes:
+      key = i['key']
+      paths = [os.path.normpath(os.path.join(workdir, p)) for p in i['value']]
       cur = env.get(key)
       if cur:
         paths.append(cur)
diff --git a/tests/swarming_test.py b/tests/swarming_test.py
index 405925a..79e7487 100755
--- a/tests/swarming_test.py
+++ b/tests/swarming_test.py
@@ -1494,6 +1494,9 @@
         self.assertEqual([os.path.join(w, 'foo'), '--bar'], cmd)
         expected = os.environ.copy()
         expected['aa'] = 'bb'
+        expected['PATH'] = os.pathsep.join(
+            (os.path.join(w, 'foo', 'bar'), os.path.join(w, 'second'),
+              expected['PATH']))
         expected['SWARMING_TASK_ID'] = 'reproduce'
         expected['SWARMING_BOT_ID'] = 'reproduce'
         self.assertEqual(expected, env)
@@ -1513,6 +1516,9 @@
                   'env': [
                     {'key': 'aa', 'value': 'bb'},
                   ],
+                  'env_prefixes': [
+                    {'key': 'PATH', 'value': ['foo/bar', 'second']},
+                  ],
                   'secret_bytes': None,
                 },
               },