blob: 92b3a6575aefb432ad939b51fd5b6748de801824 [file] [log] [blame]
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +00001// Copyright 2021 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package bp2build
16
17import (
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020018 "testing"
19
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000020 "android/soong/android"
21 "android/soong/sh"
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000022)
23
24func TestShBinaryLoadStatement(t *testing.T) {
25 testCases := []struct {
26 bazelTargets BazelTargets
27 expectedLoadStatements string
28 }{
29 {
30 bazelTargets: BazelTargets{
31 BazelTarget{
32 name: "sh_binary_target",
33 ruleClass: "sh_binary",
34 // Note: no bzlLoadLocation for native rules
35 // TODO(ruperts): Could open source the existing, experimental Starlark sh_ rules?
36 },
37 },
38 expectedLoadStatements: ``,
39 },
40 }
41
42 for _, testCase := range testCases {
43 actual := testCase.bazelTargets.LoadStatements()
44 expected := testCase.expectedLoadStatements
45 if actual != expected {
46 t.Fatalf("Expected load statements to be %s, got %s", expected, actual)
47 }
48 }
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000049}
50
Sam Delmerico3177a6e2022-06-21 19:28:33 +000051func runShBinaryTestCase(t *testing.T, tc Bp2buildTestCase) {
Liz Kammere4982e82021-05-25 10:39:35 -040052 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000053 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020054}
55
56func TestShBinarySimple(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000057 runShBinaryTestCase(t, Bp2buildTestCase{
58 Description: "sh_binary test",
59 ModuleTypeUnderTest: "sh_binary",
60 ModuleTypeUnderTestFactory: sh.ShBinaryFactory,
61 Blueprint: `sh_binary {
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000062 name: "foo",
63 src: "foo.sh",
Yu Liub3024552021-11-23 14:53:41 -080064 filename: "foo.exe",
65 sub_dir: "sub",
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000066 bazel_module: { bp2build_available: true },
67}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000068 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000069 MakeBazelTarget("sh_binary", "foo", AttrNameToString{
Yu Liub3024552021-11-23 14:53:41 -080070 "srcs": `["foo.sh"]`,
71 "filename": `"foo.exe"`,
72 "sub_dir": `"sub"`,
Liz Kammer78cfdaa2021-11-08 12:56:31 -050073 })},
Lukacs T. Berkic1cc3b92021-05-21 09:37:00 +020074 })
Rupert Shuttleworthfb97fde2021-02-11 03:40:05 +000075}
Liz Kammer48c6ead2021-12-21 15:36:11 -050076
77func TestShBinaryDefaults(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000078 runShBinaryTestCase(t, Bp2buildTestCase{
79 Description: "sh_binary test",
80 ModuleTypeUnderTest: "sh_binary",
81 ModuleTypeUnderTestFactory: sh.ShBinaryFactory,
82 Blueprint: `sh_binary {
Liz Kammer48c6ead2021-12-21 15:36:11 -050083 name: "foo",
84 src: "foo.sh",
85 bazel_module: { bp2build_available: true },
86}`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000087 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000088 MakeBazelTarget("sh_binary", "foo", AttrNameToString{
Liz Kammer48c6ead2021-12-21 15:36:11 -050089 "srcs": `["foo.sh"]`,
90 })},
91 })
92}