blob: 6f6fc11e5a429a8e8e3710572369864283574ad0 [file] [log] [blame]
Jingwen Chen13b9b422021-03-08 07:32:28 -05001package bp2build
2
3import (
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +02004 "testing"
5
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +00006 "android/soong/android"
Jingwen Chen13b9b422021-03-08 07:32:28 -05007 "android/soong/python"
Jingwen Chen13b9b422021-03-08 07:32:28 -05008)
9
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +000010func runBp2BuildTestCaseWithLibs(t *testing.T, tc bp2buildTestCase) {
11 runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
12 ctx.RegisterModuleType("python_library", python.PythonLibraryFactory)
13 ctx.RegisterModuleType("python_library_host", python.PythonLibraryHostFactory)
14 }, tc)
15}
16
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020017func TestPythonBinaryHostSimple(t *testing.T) {
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +000018 runBp2BuildTestCaseWithLibs(t, bp2buildTestCase{
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020019 description: "simple python_binary_host converts to a native py_binary",
20 moduleTypeUnderTest: "python_binary_host",
21 moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
22 moduleTypeUnderTestBp2BuildMutator: python.PythonBinaryBp2Build,
23 filesystem: map[string]string{
24 "a.py": "",
25 "b/c.py": "",
26 "b/d.py": "",
27 "b/e.py": "",
28 "files/data.txt": "",
29 },
30 blueprint: `python_binary_host {
Jingwen Chen13b9b422021-03-08 07:32:28 -050031 name: "foo",
32 main: "a.py",
Jingwen Chenb4628eb2021-04-08 14:40:57 +000033 srcs: ["**/*.py"],
34 exclude_srcs: ["b/e.py"],
35 data: ["files/data.txt",],
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +000036 libs: ["bar"],
Jingwen Chen13b9b422021-03-08 07:32:28 -050037 bazel_module: { bp2build_available: true },
38}
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +000039 python_library_host {
40 name: "bar",
41 srcs: ["b/e.py"],
42 bazel_module: { bp2build_available: true },
43 }`,
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020044 expectedBazelTargets: []string{`py_binary(
Jingwen Chen13b9b422021-03-08 07:32:28 -050045 name = "foo",
Jingwen Chenb4628eb2021-04-08 14:40:57 +000046 data = ["files/data.txt"],
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux560cb662021-08-26 20:13:29 +000047 deps = [":bar"],
Jingwen Chen13b9b422021-03-08 07:32:28 -050048 main = "a.py",
49 srcs = [
50 "a.py",
51 "b/c.py",
52 "b/d.py",
53 ],
54)`,
Jingwen Chen13b9b422021-03-08 07:32:28 -050055 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020056 })
57}
58
59func TestPythonBinaryHostPy2(t *testing.T) {
Alex Márquez Pérez Muñíz Díaz Púras Thaureauxce0a07e2021-08-23 16:17:32 +000060 runBp2BuildTestCaseSimple(t, bp2buildTestCase{
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020061 description: "py2 python_binary_host",
62 moduleTypeUnderTest: "python_binary_host",
63 moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
64 moduleTypeUnderTestBp2BuildMutator: python.PythonBinaryBp2Build,
65 blueprint: `python_binary_host {
Jingwen Chen13b9b422021-03-08 07:32:28 -050066 name: "foo",
67 srcs: ["a.py"],
68 version: {
69 py2: {
70 enabled: true,
71 },
72 py3: {
73 enabled: false,
74 },
75 },
76
77 bazel_module: { bp2build_available: true },
78}
79`,
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020080 expectedBazelTargets: []string{`py_binary(
Jingwen Chen13b9b422021-03-08 07:32:28 -050081 name = "foo",
82 python_version = "PY2",
Jingwen Chenb4628eb2021-04-08 14:40:57 +000083 srcs = ["a.py"],
Jingwen Chen13b9b422021-03-08 07:32:28 -050084)`,
Jingwen Chen13b9b422021-03-08 07:32:28 -050085 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020086 })
87}
88
89func TestPythonBinaryHostPy3(t *testing.T) {
Alex Márquez Pérez Muñíz Díaz Púras Thaureauxce0a07e2021-08-23 16:17:32 +000090 runBp2BuildTestCaseSimple(t, bp2buildTestCase{
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020091 description: "py3 python_binary_host",
92 moduleTypeUnderTest: "python_binary_host",
93 moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
94 moduleTypeUnderTestBp2BuildMutator: python.PythonBinaryBp2Build,
95 blueprint: `python_binary_host {
Jingwen Chen13b9b422021-03-08 07:32:28 -050096 name: "foo",
97 srcs: ["a.py"],
98 version: {
99 py2: {
100 enabled: false,
101 },
102 py3: {
103 enabled: true,
104 },
105 },
106
107 bazel_module: { bp2build_available: true },
108}
109`,
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200110 expectedBazelTargets: []string{
111 // python_version is PY3 by default.
112 `py_binary(
Jingwen Chen13b9b422021-03-08 07:32:28 -0500113 name = "foo",
Jingwen Chenb4628eb2021-04-08 14:40:57 +0000114 srcs = ["a.py"],
Jingwen Chen13b9b422021-03-08 07:32:28 -0500115)`,
Jingwen Chen13b9b422021-03-08 07:32:28 -0500116 },
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +0200117 })
Jingwen Chen13b9b422021-03-08 07:32:28 -0500118}