Fix python_binary_host module in mixed build.
Test: USE_BAZEL_ANALYSIS=1 m genfunctosyscallnrs Test: USE_BAZEL_ANALYSIS=1 m func_to_syscall_nrs Test: USE_BAZEL_ANALYSIS=1 m libseccomp_policy Bug: 201094425, 197135289 Change-Id: Ibc8b99a92149410c8a879b7a4facf6c8961a7b9f
This commit is contained in:
@@ -1015,6 +1015,326 @@ func TestSymlinkMultipleOutputs(t *testing.T) {
|
||||
assertError(t, err, `Expect 1 input and 1 output to symlink action, got: input ["file"], output ["symlink" "other_symlink"]`)
|
||||
}
|
||||
|
||||
func TestTemplateExpandActionSubstitutions(t *testing.T) {
|
||||
const inputString = `
|
||||
{
|
||||
"artifacts": [{
|
||||
"id": 1,
|
||||
"pathFragmentId": 1
|
||||
}],
|
||||
"actions": [{
|
||||
"targetId": 1,
|
||||
"actionKey": "x",
|
||||
"mnemonic": "TemplateExpand",
|
||||
"configurationId": 1,
|
||||
"outputIds": [1],
|
||||
"primaryOutputId": 1,
|
||||
"executionPlatform": "//build/bazel/platforms:linux_x86_64",
|
||||
"templateContent": "Test template substitutions: %token1%, %python_binary%",
|
||||
"substitutions": [{
|
||||
"key": "%token1%",
|
||||
"value": "abcd"
|
||||
},{
|
||||
"key": "%python_binary%",
|
||||
"value": "python3"
|
||||
}]
|
||||
}],
|
||||
"pathFragments": [{
|
||||
"id": 1,
|
||||
"label": "template_file"
|
||||
}]
|
||||
}`
|
||||
|
||||
actual, err := AqueryBuildStatements([]byte(inputString))
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %q", err)
|
||||
}
|
||||
|
||||
expectedBuildStatements := []BuildStatement{
|
||||
BuildStatement{
|
||||
Command: "echo \"Test template substitutions: abcd, python3\" | sed \"s/\\\\\\\\n/\\\\n/g\" >> template_file && " +
|
||||
"chmod a+x template_file",
|
||||
OutputPaths: []string{"template_file"},
|
||||
Mnemonic: "TemplateExpand",
|
||||
},
|
||||
}
|
||||
assertBuildStatements(t, expectedBuildStatements, actual)
|
||||
}
|
||||
|
||||
func TestTemplateExpandActionNoOutput(t *testing.T) {
|
||||
const inputString = `
|
||||
{
|
||||
"artifacts": [{
|
||||
"id": 1,
|
||||
"pathFragmentId": 1
|
||||
}],
|
||||
"actions": [{
|
||||
"targetId": 1,
|
||||
"actionKey": "x",
|
||||
"mnemonic": "TemplateExpand",
|
||||
"configurationId": 1,
|
||||
"primaryOutputId": 1,
|
||||
"executionPlatform": "//build/bazel/platforms:linux_x86_64",
|
||||
"templateContent": "Test template substitutions: %token1%, %python_binary%",
|
||||
"substitutions": [{
|
||||
"key": "%token1%",
|
||||
"value": "abcd"
|
||||
},{
|
||||
"key": "%python_binary%",
|
||||
"value": "python3"
|
||||
}]
|
||||
}],
|
||||
"pathFragments": [{
|
||||
"id": 1,
|
||||
"label": "template_file"
|
||||
}]
|
||||
}`
|
||||
|
||||
_, err := AqueryBuildStatements([]byte(inputString))
|
||||
assertError(t, err, `Expect 1 output to template expand action, got: output []`)
|
||||
}
|
||||
|
||||
func TestPythonZipperActionSuccess(t *testing.T) {
|
||||
const inputString = `
|
||||
{
|
||||
"artifacts": [{
|
||||
"id": 1,
|
||||
"pathFragmentId": 1
|
||||
},{
|
||||
"id": 2,
|
||||
"pathFragmentId": 2
|
||||
},{
|
||||
"id": 3,
|
||||
"pathFragmentId": 3
|
||||
},{
|
||||
"id": 4,
|
||||
"pathFragmentId": 4
|
||||
},{
|
||||
"id": 5,
|
||||
"pathFragmentId": 10
|
||||
}],
|
||||
"actions": [{
|
||||
"targetId": 1,
|
||||
"actionKey": "x",
|
||||
"mnemonic": "PythonZipper",
|
||||
"configurationId": 1,
|
||||
"arguments": ["../bazel_tools/tools/zip/zipper/zipper", "cC", "python_binary.zip", "__main__.py\u003dbazel-out/k8-fastbuild/bin/python_binary.temp", "__init__.py\u003d", "runfiles/__main__/__init__.py\u003d", "runfiles/__main__/python_binary.py\u003dpython_binary.py", "runfiles/bazel_tools/tools/python/py3wrapper.sh\u003dbazel-out/bazel_tools/k8-fastbuild/bin/tools/python/py3wrapper.sh"],
|
||||
"outputIds": [2],
|
||||
"inputDepSetIds": [1],
|
||||
"primaryOutputId": 2
|
||||
}],
|
||||
"depSetOfFiles": [{
|
||||
"id": 1,
|
||||
"directArtifactIds": [4, 3, 5]
|
||||
}],
|
||||
"pathFragments": [{
|
||||
"id": 1,
|
||||
"label": "python_binary"
|
||||
},{
|
||||
"id": 2,
|
||||
"label": "python_binary.zip"
|
||||
},{
|
||||
"id": 3,
|
||||
"label": "python_binary.py"
|
||||
},{
|
||||
"id": 9,
|
||||
"label": ".."
|
||||
}, {
|
||||
"id": 8,
|
||||
"label": "bazel_tools",
|
||||
"parentId": 9
|
||||
}, {
|
||||
"id": 7,
|
||||
"label": "tools",
|
||||
"parentId": 8
|
||||
}, {
|
||||
"id": 6,
|
||||
"label": "zip",
|
||||
"parentId": 7
|
||||
}, {
|
||||
"id": 5,
|
||||
"label": "zipper",
|
||||
"parentId": 6
|
||||
}, {
|
||||
"id": 4,
|
||||
"label": "zipper",
|
||||
"parentId": 5
|
||||
},{
|
||||
"id": 16,
|
||||
"label": "bazel-out"
|
||||
},{
|
||||
"id": 15,
|
||||
"label": "bazel_tools",
|
||||
"parentId": 16
|
||||
}, {
|
||||
"id": 14,
|
||||
"label": "k8-fastbuild",
|
||||
"parentId": 15
|
||||
}, {
|
||||
"id": 13,
|
||||
"label": "bin",
|
||||
"parentId": 14
|
||||
}, {
|
||||
"id": 12,
|
||||
"label": "tools",
|
||||
"parentId": 13
|
||||
}, {
|
||||
"id": 11,
|
||||
"label": "python",
|
||||
"parentId": 12
|
||||
}, {
|
||||
"id": 10,
|
||||
"label": "py3wrapper.sh",
|
||||
"parentId": 11
|
||||
}]
|
||||
}`
|
||||
actual, err := AqueryBuildStatements([]byte(inputString))
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %q", err)
|
||||
}
|
||||
|
||||
expectedBuildStatements := []BuildStatement{
|
||||
BuildStatement{
|
||||
Command: "../bazel_tools/tools/zip/zipper/zipper cC python_binary.zip __main__.py=bazel-out/k8-fastbuild/bin/python_binary.temp " +
|
||||
"__init__.py= runfiles/__main__/__init__.py= runfiles/__main__/python_binary.py=python_binary.py && " +
|
||||
"../bazel_tools/tools/zip/zipper/zipper x python_binary.zip -d python_binary.runfiles && ln -sf runfiles/__main__ python_binary.runfiles",
|
||||
InputPaths: []string{"../bazel_tools/tools/zip/zipper/zipper", "python_binary.py"},
|
||||
OutputPaths: []string{"python_binary.zip"},
|
||||
Mnemonic: "PythonZipper",
|
||||
},
|
||||
}
|
||||
assertBuildStatements(t, expectedBuildStatements, actual)
|
||||
}
|
||||
|
||||
func TestPythonZipperActionNoInput(t *testing.T) {
|
||||
const inputString = `
|
||||
{
|
||||
"artifacts": [{
|
||||
"id": 1,
|
||||
"pathFragmentId": 1
|
||||
},{
|
||||
"id": 2,
|
||||
"pathFragmentId": 2
|
||||
}],
|
||||
"actions": [{
|
||||
"targetId": 1,
|
||||
"actionKey": "x",
|
||||
"mnemonic": "PythonZipper",
|
||||
"configurationId": 1,
|
||||
"arguments": ["../bazel_tools/tools/zip/zipper/zipper", "cC", "python_binary.zip", "__main__.py\u003dbazel-out/k8-fastbuild/bin/python_binary.temp", "__init__.py\u003d", "runfiles/__main__/__init__.py\u003d", "runfiles/__main__/python_binary.py\u003dpython_binary.py", "runfiles/bazel_tools/tools/python/py3wrapper.sh\u003dbazel-out/bazel_tools/k8-fastbuild/bin/tools/python/py3wrapper.sh"],
|
||||
"outputIds": [2],
|
||||
"primaryOutputId": 2
|
||||
}],
|
||||
"pathFragments": [{
|
||||
"id": 1,
|
||||
"label": "python_binary"
|
||||
},{
|
||||
"id": 2,
|
||||
"label": "python_binary.zip"
|
||||
}]
|
||||
}`
|
||||
_, err := AqueryBuildStatements([]byte(inputString))
|
||||
assertError(t, err, `Expect 1+ input and 1 output to python zipper action, got: input [], output ["python_binary.zip"]`)
|
||||
}
|
||||
|
||||
func TestPythonZipperActionNoOutput(t *testing.T) {
|
||||
const inputString = `
|
||||
{
|
||||
"artifacts": [{
|
||||
"id": 1,
|
||||
"pathFragmentId": 1
|
||||
},{
|
||||
"id": 2,
|
||||
"pathFragmentId": 2
|
||||
},{
|
||||
"id": 3,
|
||||
"pathFragmentId": 3
|
||||
},{
|
||||
"id": 4,
|
||||
"pathFragmentId": 4
|
||||
},{
|
||||
"id": 5,
|
||||
"pathFragmentId": 10
|
||||
}],
|
||||
"actions": [{
|
||||
"targetId": 1,
|
||||
"actionKey": "x",
|
||||
"mnemonic": "PythonZipper",
|
||||
"configurationId": 1,
|
||||
"arguments": ["../bazel_tools/tools/zip/zipper/zipper", "cC", "python_binary.zip", "__main__.py\u003dbazel-out/k8-fastbuild/bin/python_binary.temp", "__init__.py\u003d", "runfiles/__main__/__init__.py\u003d", "runfiles/__main__/python_binary.py\u003dpython_binary.py", "runfiles/bazel_tools/tools/python/py3wrapper.sh\u003dbazel-out/bazel_tools/k8-fastbuild/bin/tools/python/py3wrapper.sh"],
|
||||
"inputDepSetIds": [1]
|
||||
}],
|
||||
"depSetOfFiles": [{
|
||||
"id": 1,
|
||||
"directArtifactIds": [4, 3, 5]
|
||||
}],
|
||||
"pathFragments": [{
|
||||
"id": 1,
|
||||
"label": "python_binary"
|
||||
},{
|
||||
"id": 2,
|
||||
"label": "python_binary.zip"
|
||||
},{
|
||||
"id": 3,
|
||||
"label": "python_binary.py"
|
||||
},{
|
||||
"id": 9,
|
||||
"label": ".."
|
||||
}, {
|
||||
"id": 8,
|
||||
"label": "bazel_tools",
|
||||
"parentId": 9
|
||||
}, {
|
||||
"id": 7,
|
||||
"label": "tools",
|
||||
"parentId": 8
|
||||
}, {
|
||||
"id": 6,
|
||||
"label": "zip",
|
||||
"parentId": 7
|
||||
}, {
|
||||
"id": 5,
|
||||
"label": "zipper",
|
||||
"parentId": 6
|
||||
}, {
|
||||
"id": 4,
|
||||
"label": "zipper",
|
||||
"parentId": 5
|
||||
},{
|
||||
"id": 16,
|
||||
"label": "bazel-out"
|
||||
},{
|
||||
"id": 15,
|
||||
"label": "bazel_tools",
|
||||
"parentId": 16
|
||||
}, {
|
||||
"id": 14,
|
||||
"label": "k8-fastbuild",
|
||||
"parentId": 15
|
||||
}, {
|
||||
"id": 13,
|
||||
"label": "bin",
|
||||
"parentId": 14
|
||||
}, {
|
||||
"id": 12,
|
||||
"label": "tools",
|
||||
"parentId": 13
|
||||
}, {
|
||||
"id": 11,
|
||||
"label": "python",
|
||||
"parentId": 12
|
||||
}, {
|
||||
"id": 10,
|
||||
"label": "py3wrapper.sh",
|
||||
"parentId": 11
|
||||
}]
|
||||
}`
|
||||
_, err := AqueryBuildStatements([]byte(inputString))
|
||||
assertError(t, err, `Expect 1+ input and 1 output to python zipper action, got: input ["../bazel_tools/tools/zip/zipper/zipper" "python_binary.py"], output []`)
|
||||
}
|
||||
|
||||
func assertError(t *testing.T, err error, expected string) {
|
||||
t.Helper()
|
||||
if err == nil {
|
||||
|
Reference in New Issue
Block a user