libv8 5.0.71.48.3 → 5.1.281.59.0beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/ext/libv8/location.rb +12 -9
- data/ext/libv8/patcher.rb +1 -1
- data/ext/libv8/paths.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/patches/0001-Build-standalone-static-library.patch +26 -0
- data/patches/{disable-building-tests.patch → 0002-Disable-building-tests.patch} +17 -5
- data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +25 -0
- data/spec/location_spec.rb +1 -1
- data/vendor/depot_tools/.gitignore +1 -0
- data/vendor/depot_tools/PRESUBMIT.py +3 -1
- data/vendor/depot_tools/README +1 -6
- data/vendor/depot_tools/apply_issue.py +6 -0
- data/vendor/depot_tools/bootstrap/win/README.md +2 -2
- data/vendor/depot_tools/bootstrap/win/git.template.bat +1 -1
- data/vendor/depot_tools/bootstrap/win/win_tools.bat +12 -11
- data/vendor/depot_tools/codereview.settings +1 -1
- data/vendor/depot_tools/cpplint.py +353 -592
- data/vendor/depot_tools/fetch.py +10 -3
- data/vendor/depot_tools/fetch_configs/infra.py +4 -2
- data/vendor/depot_tools/fetch_configs/ios_internal.py +49 -0
- data/vendor/depot_tools/gclient.py +33 -7
- data/vendor/depot_tools/gclient_scm.py +14 -11
- data/vendor/depot_tools/gclient_utils.py +14 -3
- data/vendor/depot_tools/git-gs +3 -3
- data/vendor/depot_tools/git_cache.py +8 -4
- data/vendor/depot_tools/git_cl.py +221 -98
- data/vendor/depot_tools/git_footers.py +76 -39
- data/vendor/depot_tools/git_map_branches.py +12 -10
- data/vendor/depot_tools/infra/config/cq.cfg +0 -11
- data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
- data/vendor/depot_tools/presubmit_canned_checks.py +31 -19
- data/vendor/depot_tools/presubmit_support.py +0 -13
- data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +19 -2
- data/vendor/depot_tools/recipe_modules/depot_tools/api.py +4 -0
- data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/basic.json +49 -0
- data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/win.json +49 -0
- data/vendor/depot_tools/recipe_modules/depot_tools/example.py +38 -0
- data/vendor/depot_tools/recipe_modules/gclient/api.py +1 -0
- data/vendor/depot_tools/recipe_modules/gclient/config.py +19 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/basic.json +1 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/revision.json +1 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.expected/tryserver.json +1 -0
- data/vendor/depot_tools/recipe_modules/gclient/example.py +3 -0
- data/vendor/depot_tools/recipe_modules/git_cl/api.py +22 -6
- data/vendor/depot_tools/recipe_modules/git_cl/example.expected/basic.json +27 -9
- data/vendor/depot_tools/recipe_modules/git_cl/example.py +9 -7
- data/vendor/depot_tools/recipe_modules/presubmit/api.py +5 -2
- data/vendor/depot_tools/recipe_modules/tryserver/__init__.py +1 -0
- data/vendor/depot_tools/recipe_modules/tryserver/api.py +31 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/basic_tags.json +59 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +26 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +26 -0
- data/vendor/depot_tools/recipe_modules/tryserver/example.py +32 -3
- data/vendor/depot_tools/roll_dep.py +6 -2
- data/vendor/depot_tools/third_party/upload.py +17 -9
- data/vendor/depot_tools/update_depot_tools +11 -0
- data/vendor/depot_tools/update_depot_tools.bat +11 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +52 -9
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +64 -57
- metadata +12 -10
- data/patches/build-standalone-static-library.patch +0 -14
- data/patches/fPIC-for-static.patch +0 -13
- data/vendor/depot_tools/git-lkgr +0 -208
- data/vendor/depot_tools/hammer +0 -28
- data/vendor/depot_tools/hammer.bat +0 -23
@@ -0,0 +1,49 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"cmd": [
|
4
|
+
"ls",
|
5
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\download_from_google_storage.py"
|
6
|
+
],
|
7
|
+
"name": "download_from_google_storage"
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"cmd": [
|
11
|
+
"ls",
|
12
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\upload_to_google_storage.py"
|
13
|
+
],
|
14
|
+
"name": "upload_to_google_storage"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"cmd": [
|
18
|
+
"ls",
|
19
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\cros"
|
20
|
+
],
|
21
|
+
"name": "cros"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"cmd": [
|
25
|
+
"ls",
|
26
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\gn.py"
|
27
|
+
],
|
28
|
+
"name": "gn_py_path"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"cmd": [
|
32
|
+
"ls",
|
33
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\gsutil.py"
|
34
|
+
],
|
35
|
+
"name": "gsutil_py_path"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"cmd": [
|
39
|
+
"ls",
|
40
|
+
"RECIPE_PACKAGE_REPO[depot_tools]\\ninja.exe"
|
41
|
+
],
|
42
|
+
"name": "ninja_path"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"name": "$result",
|
46
|
+
"recipe_result": null,
|
47
|
+
"status_code": 0
|
48
|
+
}
|
49
|
+
]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright 2016 The Chromium Authors. All rights reserved.
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
3
|
+
# found in the LICENSE file.
|
4
|
+
|
5
|
+
DEPS = [
|
6
|
+
'depot_tools',
|
7
|
+
'recipe_engine/step',
|
8
|
+
'recipe_engine/path',
|
9
|
+
'recipe_engine/platform',
|
10
|
+
]
|
11
|
+
|
12
|
+
|
13
|
+
def RunSteps(api):
|
14
|
+
api.step(
|
15
|
+
'download_from_google_storage',
|
16
|
+
['ls', api.depot_tools.download_from_google_storage_path])
|
17
|
+
|
18
|
+
api.step(
|
19
|
+
'upload_to_google_storage',
|
20
|
+
['ls', api.depot_tools.upload_to_google_storage_path])
|
21
|
+
|
22
|
+
api.step('cros', ['ls', api.depot_tools.cros_path])
|
23
|
+
|
24
|
+
api.step(
|
25
|
+
'gn_py_path', ['ls', api.depot_tools.gn_py_path])
|
26
|
+
|
27
|
+
api.step(
|
28
|
+
'gsutil_py_path', ['ls', api.depot_tools.gsutil_py_path])
|
29
|
+
|
30
|
+
api.step(
|
31
|
+
'ninja_path', ['ls', api.depot_tools.ninja_path])
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
def GenTests(api):
|
36
|
+
yield api.test('basic')
|
37
|
+
|
38
|
+
yield api.test('win') + api.platform('win', 32)
|
@@ -300,6 +300,7 @@ class GclientApi(recipe_api.RecipeApi):
|
|
300
300
|
def runhooks(self, args=None, name='runhooks', **kwargs):
|
301
301
|
args = args or []
|
302
302
|
assert isinstance(args, (list, tuple))
|
303
|
+
kwargs.setdefault('cwd', self.m.path['checkout'])
|
303
304
|
return self(
|
304
305
|
name, ['runhooks'] + list(args), infra_step=False, **kwargs)
|
305
306
|
|
@@ -169,8 +169,11 @@ def chromium_bare(c):
|
|
169
169
|
p['buildtools'] = ('src/buildtools', 'HEAD')
|
170
170
|
p['angle/angle'] = ('src/third_party/angle', None)
|
171
171
|
p['blink'] = ('src/third_party/WebKit', None)
|
172
|
+
p['catapult'] = ('src/third_party/catapult', 'HEAD')
|
172
173
|
p['pdfium'] = ('src/third_party/pdfium', 'HEAD')
|
173
174
|
p['skia'] = ('src/third_party/skia', 'HEAD')
|
175
|
+
p['flac'] = ('src/third_party/flac', 'HEAD')
|
176
|
+
p['webrtc'] = ('src/third_party/webrtc', 'HEAD')
|
174
177
|
|
175
178
|
@config_ctx(includes=['chromium_bare'])
|
176
179
|
def chromium_empty(c):
|
@@ -469,6 +472,14 @@ def perf(c):
|
|
469
472
|
del c.solutions[1].custom_deps[key]
|
470
473
|
c.solutions[1].managed = False
|
471
474
|
|
475
|
+
@config_ctx(includes=['chromium', 'chrome_internal'])
|
476
|
+
def chromium_perf(c):
|
477
|
+
pass
|
478
|
+
|
479
|
+
@config_ctx(includes=['chromium_perf', 'android'])
|
480
|
+
def chromium_perf_android(c):
|
481
|
+
pass
|
482
|
+
|
472
483
|
@config_ctx(includes=['chromium'])
|
473
484
|
def chromium_skia(c):
|
474
485
|
c.solutions[0].revision = 'HEAD'
|
@@ -606,6 +617,14 @@ def recipes_py(c):
|
|
606
617
|
del m['infra']
|
607
618
|
m['infra/recipes-py'] = 'got_revision'
|
608
619
|
|
620
|
+
@config_ctx(config_vars={'GIT_MODE': True})
|
621
|
+
def recipes_py_bare(c):
|
622
|
+
soln = c.solutions.add()
|
623
|
+
soln.name = 'recipes-py'
|
624
|
+
soln.url = ('https://chromium.googlesource.com/external/github.com/'
|
625
|
+
'luci/recipes-py')
|
626
|
+
c.got_revision_mapping['recipes-py'] = 'got_revision'
|
627
|
+
|
609
628
|
@config_ctx()
|
610
629
|
def chrome_from_buildspec(c): # pragma: no cover
|
611
630
|
soln = c.solutions.add()
|
@@ -22,6 +22,8 @@ TEST_CONFIGS = [
|
|
22
22
|
'chromium',
|
23
23
|
'chromium_lkcr',
|
24
24
|
'chromium_lkgr',
|
25
|
+
'chromium_perf',
|
26
|
+
'chromium_perf_android',
|
25
27
|
'chromium_skia',
|
26
28
|
'chromium_webrtc',
|
27
29
|
'chromium_webrtc_tot',
|
@@ -43,6 +45,7 @@ TEST_CONFIGS = [
|
|
43
45
|
'pdfium',
|
44
46
|
'perf',
|
45
47
|
'recipes_py',
|
48
|
+
'recipes_py_bare',
|
46
49
|
'show_v8_revision',
|
47
50
|
'slave_deps',
|
48
51
|
'v8_bleeding_edge_git',
|
@@ -8,18 +8,34 @@ class GitClApi(recipe_api.RecipeApi):
|
|
8
8
|
def __call__(self, subcmd, args, name=None, **kwargs):
|
9
9
|
if not name:
|
10
10
|
name = 'git_cl ' + subcmd
|
11
|
+
|
12
|
+
if kwargs.get('suffix'):
|
13
|
+
name = name + ' (%s)' % kwargs.pop('suffix')
|
14
|
+
|
11
15
|
if 'cwd' not in kwargs:
|
12
16
|
kwargs['cwd'] = (self.c and self.c.repo_location) or None
|
13
17
|
|
14
18
|
return self.m.step(
|
15
|
-
name, [self.package_repo_resource('git_cl.py')] + args,
|
19
|
+
name, [self.package_repo_resource('git_cl.py'), subcmd] + args,
|
20
|
+
**kwargs)
|
21
|
+
|
22
|
+
def get_description(self, patch=None, codereview=None, **kwargs):
|
23
|
+
args = ['-d']
|
24
|
+
if patch or codereview:
|
25
|
+
assert patch and codereview, "Both patch and codereview must be provided"
|
26
|
+
args.append('--%s' % codereview)
|
27
|
+
args.append(patch)
|
28
|
+
|
29
|
+
return self('description', args, stdout=self.m.raw_io.output(), **kwargs)
|
16
30
|
|
17
|
-
def
|
18
|
-
|
31
|
+
def set_description(self, description, patch=None, codereview=None, **kwargs):
|
32
|
+
args = ['-n', '-']
|
33
|
+
if patch or codereview:
|
34
|
+
assert patch and codereview, "Both patch and codereview must be provided"
|
35
|
+
args.append(patch)
|
36
|
+
args.append('--%s' % codereview)
|
19
37
|
|
20
|
-
def set_description(self, description, **kwargs):
|
21
38
|
return self(
|
22
|
-
'description',
|
23
|
-
stdout=self.m.raw_io.output(),
|
39
|
+
'description', args, stdout=self.m.raw_io.output(),
|
24
40
|
stdin=self.m.raw_io.input(data=description),
|
25
41
|
name='git_cl set description', **kwargs)
|
@@ -2,10 +2,25 @@
|
|
2
2
|
{
|
3
3
|
"cmd": [
|
4
4
|
"RECIPE_PACKAGE_REPO[depot_tools]/git_cl.py",
|
5
|
-
"
|
5
|
+
"description",
|
6
|
+
"-d",
|
7
|
+
"--rietveld",
|
8
|
+
"https://code.review/123"
|
6
9
|
],
|
7
|
-
"
|
8
|
-
"
|
10
|
+
"name": "git_cl description (build)",
|
11
|
+
"stdout": "/path/to/tmp/"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"cmd": [
|
15
|
+
"RECIPE_PACKAGE_REPO[depot_tools]/git_cl.py",
|
16
|
+
"description",
|
17
|
+
"-n",
|
18
|
+
"-",
|
19
|
+
"https://code.review/123",
|
20
|
+
"--rietveld"
|
21
|
+
],
|
22
|
+
"name": "git_cl set description",
|
23
|
+
"stdin": "bammmm",
|
9
24
|
"stdout": "/path/to/tmp/"
|
10
25
|
},
|
11
26
|
{
|
@@ -18,10 +33,11 @@
|
|
18
33
|
{
|
19
34
|
"cmd": [
|
20
35
|
"RECIPE_PACKAGE_REPO[depot_tools]/git_cl.py",
|
36
|
+
"description",
|
21
37
|
"-d"
|
22
38
|
],
|
23
|
-
"cwd": "[TMP_BASE]/
|
24
|
-
"name": "git_cl description
|
39
|
+
"cwd": "[TMP_BASE]/fakerepo_tmp_1",
|
40
|
+
"name": "git_cl description",
|
25
41
|
"stdout": "/path/to/tmp/"
|
26
42
|
},
|
27
43
|
{
|
@@ -34,21 +50,23 @@
|
|
34
50
|
{
|
35
51
|
"cmd": [
|
36
52
|
"RECIPE_PACKAGE_REPO[depot_tools]/git_cl.py",
|
53
|
+
"description",
|
37
54
|
"-n",
|
38
55
|
"-"
|
39
56
|
],
|
40
|
-
"cwd": "[TMP_BASE]/
|
41
|
-
"name": "git_cl set description",
|
57
|
+
"cwd": "[TMP_BASE]/fakerepo_tmp_1",
|
58
|
+
"name": "git_cl set description (2)",
|
42
59
|
"stdin": "new description woo",
|
43
60
|
"stdout": "/path/to/tmp/"
|
44
61
|
},
|
45
62
|
{
|
46
63
|
"cmd": [
|
47
64
|
"RECIPE_PACKAGE_REPO[depot_tools]/git_cl.py",
|
65
|
+
"description",
|
48
66
|
"-d"
|
49
67
|
],
|
50
|
-
"cwd": "[TMP_BASE]/
|
51
|
-
"name": "git_cl description (
|
68
|
+
"cwd": "[TMP_BASE]/fakerepo_tmp_1",
|
69
|
+
"name": "git_cl description (2)",
|
52
70
|
"stdout": "/path/to/tmp/"
|
53
71
|
},
|
54
72
|
{
|
@@ -14,16 +14,18 @@ DEPS = [
|
|
14
14
|
|
15
15
|
|
16
16
|
def RunSteps(api):
|
17
|
-
|
18
|
-
|
19
|
-
api.
|
17
|
+
result = api.git_cl.get_description(
|
18
|
+
patch='https://code.review/123', codereview='rietveld', suffix='build')
|
19
|
+
api.git_cl.set_description(
|
20
|
+
'bammmm', patch='https://code.review/123', codereview='rietveld')
|
21
|
+
api.step('echo', ['echo', result.stdout])
|
20
22
|
|
21
23
|
api.git_cl.set_config('basic')
|
22
24
|
api.git_cl.c.repo_location = api.path.mkdtemp('fakerepo')
|
23
25
|
|
24
26
|
api.step('echo', ['echo', api.git_cl.get_description().stdout])
|
25
27
|
|
26
|
-
api.git_cl.set_description(
|
28
|
+
api.git_cl.set_description('new description woo')
|
27
29
|
|
28
30
|
api.step('echo', ['echo', api.git_cl.get_description().stdout])
|
29
31
|
|
@@ -31,11 +33,11 @@ def GenTests(api):
|
|
31
33
|
yield (
|
32
34
|
api.test('basic') +
|
33
35
|
api.override_step_data(
|
34
|
-
'git_cl description', stdout=api.raw_io.output('hi')) +
|
36
|
+
'git_cl description (build)', stdout=api.raw_io.output('hi')) +
|
35
37
|
api.override_step_data(
|
36
|
-
'git_cl description
|
38
|
+
'git_cl description', stdout=api.raw_io.output('hey')) +
|
37
39
|
api.override_step_data(
|
38
|
-
'git_cl description (
|
40
|
+
'git_cl description (2)', stdout=api.raw_io.output(
|
39
41
|
'new description woo'))
|
40
42
|
)
|
41
43
|
|
@@ -5,6 +5,10 @@
|
|
5
5
|
from recipe_engine import recipe_api
|
6
6
|
|
7
7
|
class PresubmitApi(recipe_api.RecipeApi):
|
8
|
+
@property
|
9
|
+
def presubmit_support_path(self):
|
10
|
+
return self.package_repo_resource('presubmit_support.py')
|
11
|
+
|
8
12
|
def __call__(self, *args, **kwargs):
|
9
13
|
"""Return a presubmit step."""
|
10
14
|
|
@@ -16,5 +20,4 @@ class PresubmitApi(recipe_api.RecipeApi):
|
|
16
20
|
kwargs['env']['PATH'], str(self._module.PACKAGE_REPO_ROOT)])
|
17
21
|
|
18
22
|
return self.m.python(
|
19
|
-
name, self.
|
20
|
-
**kwargs)
|
23
|
+
name, self.presubmit_support_path, list(args), **kwargs)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
# Use of this source code is governed by a BSD-style license that can be
|
3
3
|
# found in the LICENSE file.
|
4
4
|
|
5
|
+
import collections
|
5
6
|
import contextlib
|
6
7
|
import hashlib
|
7
8
|
|
@@ -278,3 +279,33 @@ class TryserverApi(recipe_api.RecipeApi):
|
|
278
279
|
failure_hash.hexdigest()
|
279
280
|
|
280
281
|
raise
|
282
|
+
|
283
|
+
def get_footers(self, patch_text=None):
|
284
|
+
"""Retrieves footers from the patch description.
|
285
|
+
|
286
|
+
footers are machine readable tags embedded in commit messages. See
|
287
|
+
git-footers documentation for more information.
|
288
|
+
"""
|
289
|
+
if patch_text is None:
|
290
|
+
codereview = None
|
291
|
+
if not self.can_apply_issue: #pragma: no cover
|
292
|
+
raise recipe_api.StepFailure("Cannot get tags from gerrit yet.")
|
293
|
+
else:
|
294
|
+
codereview = 'rietveld'
|
295
|
+
patch = (
|
296
|
+
self.m.properties['rietveld'].strip('/') + '/' +
|
297
|
+
str(self.m.properties['issue']))
|
298
|
+
|
299
|
+
patch_text = self.m.git_cl.get_description(
|
300
|
+
patch=patch, codereview=codereview).stdout
|
301
|
+
|
302
|
+
result = self.m.python(
|
303
|
+
'parse description', self.package_repo_resource('git_footers.py'),
|
304
|
+
args=['--json', self.m.json.output()],
|
305
|
+
stdin=self.m.raw_io.input(data=patch_text))
|
306
|
+
return result.json.output
|
307
|
+
|
308
|
+
def get_footer(self, tag, patch_text=None):
|
309
|
+
"""Gets a specific tag from a CL description"""
|
310
|
+
return self.get_footers(patch_text).get(tag, [])
|
311
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"cmd": [
|
4
|
+
"python",
|
5
|
+
"-u",
|
6
|
+
"RECIPE_PACKAGE_REPO[depot_tools]/git_footers.py",
|
7
|
+
"--json",
|
8
|
+
"/path/to/tmp/json"
|
9
|
+
],
|
10
|
+
"name": "parse description",
|
11
|
+
"stdin": "hihihi\nfoo:bar\nbam:baz",
|
12
|
+
"~followup_annotations": [
|
13
|
+
"@@@STEP_LOG_LINE@json.output@{@@@",
|
14
|
+
"@@@STEP_LOG_LINE@json.output@ \"Foo\": [@@@",
|
15
|
+
"@@@STEP_LOG_LINE@json.output@ \"bar\"@@@",
|
16
|
+
"@@@STEP_LOG_LINE@json.output@ ]@@@",
|
17
|
+
"@@@STEP_LOG_LINE@json.output@}@@@",
|
18
|
+
"@@@STEP_LOG_END@json.output@@@"
|
19
|
+
]
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"cmd": [
|
23
|
+
"echo",
|
24
|
+
"OrderedDict([('Foo', ['bar'])])"
|
25
|
+
],
|
26
|
+
"name": "patch_text test"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"cmd": [
|
30
|
+
"python",
|
31
|
+
"-u",
|
32
|
+
"RECIPE_PACKAGE_REPO[depot_tools]/git_footers.py",
|
33
|
+
"--json",
|
34
|
+
"/path/to/tmp/json"
|
35
|
+
],
|
36
|
+
"name": "parse description (2)",
|
37
|
+
"stdin": "hihihi\nfoo:bar\nbam:baz",
|
38
|
+
"~followup_annotations": [
|
39
|
+
"@@@STEP_LOG_LINE@json.output@{@@@",
|
40
|
+
"@@@STEP_LOG_LINE@json.output@ \"Foo\": [@@@",
|
41
|
+
"@@@STEP_LOG_LINE@json.output@ \"bar\"@@@",
|
42
|
+
"@@@STEP_LOG_LINE@json.output@ ]@@@",
|
43
|
+
"@@@STEP_LOG_LINE@json.output@}@@@",
|
44
|
+
"@@@STEP_LOG_END@json.output@@@"
|
45
|
+
]
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"cmd": [
|
49
|
+
"echo",
|
50
|
+
"['bar']"
|
51
|
+
],
|
52
|
+
"name": "patch_text test (2)"
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"name": "$result",
|
56
|
+
"recipe_result": null,
|
57
|
+
"status_code": 0
|
58
|
+
}
|
59
|
+
]
|