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,
},
},