Merge changes I9aad3e4e,I150889a0
* changes: Convert xml package to fixtures Add preparers for xml
This commit is contained in:
@@ -13,6 +13,7 @@ bootstrap_go_package {
|
|||||||
"soong-etc",
|
"soong-etc",
|
||||||
],
|
],
|
||||||
srcs: [
|
srcs: [
|
||||||
|
"testing.go",
|
||||||
"xml.go",
|
"xml.go",
|
||||||
],
|
],
|
||||||
testSrcs: [
|
testSrcs: [
|
||||||
|
19
xml/testing.go
Normal file
19
xml/testing.go
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// Copyright 2018 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package xml
|
||||||
|
|
||||||
|
import "android/soong/android"
|
||||||
|
|
||||||
|
var PreparerForTestWithXmlBuildComponents = android.FixtureRegisterWithContext(registerXmlBuildComponents)
|
@@ -53,10 +53,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
android.RegisterModuleType("prebuilt_etc_xml", PrebuiltEtcXmlFactory)
|
registerXmlBuildComponents(android.InitRegistrationContext)
|
||||||
pctx.HostBinToolVariable("XmlLintCmd", "xmllint")
|
pctx.HostBinToolVariable("XmlLintCmd", "xmllint")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func registerXmlBuildComponents(ctx android.RegistrationContext) {
|
||||||
|
ctx.RegisterModuleType("prebuilt_etc_xml", PrebuiltEtcXmlFactory)
|
||||||
|
}
|
||||||
|
|
||||||
type prebuiltEtcXmlProperties struct {
|
type prebuiltEtcXmlProperties struct {
|
||||||
// Optional DTD that will be used to validate the xml file.
|
// Optional DTD that will be used to validate the xml file.
|
||||||
Schema *string `android:"path"`
|
Schema *string `android:"path"`
|
||||||
|
@@ -15,7 +15,6 @@
|
|||||||
package xml
|
package xml
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -23,62 +22,33 @@ import (
|
|||||||
"android/soong/etc"
|
"android/soong/etc"
|
||||||
)
|
)
|
||||||
|
|
||||||
var buildDir string
|
|
||||||
|
|
||||||
func setUp() {
|
|
||||||
var err error
|
|
||||||
buildDir, err = ioutil.TempDir("", "soong_xml_test")
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func tearDown() {
|
|
||||||
os.RemoveAll(buildDir)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
run := func() int {
|
os.Exit(m.Run())
|
||||||
setUp()
|
|
||||||
defer tearDown()
|
|
||||||
|
|
||||||
return m.Run()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Exit(run())
|
var emptyFixtureFactory = android.NewFixtureFactory(nil)
|
||||||
}
|
|
||||||
|
|
||||||
func testXml(t *testing.T, bp string) *android.TestContext {
|
func testXml(t *testing.T, bp string) *android.TestResult {
|
||||||
fs := map[string][]byte{
|
fs := android.MockFS{
|
||||||
"foo.xml": nil,
|
"foo.xml": nil,
|
||||||
"foo.dtd": nil,
|
"foo.dtd": nil,
|
||||||
"bar.xml": nil,
|
"bar.xml": nil,
|
||||||
"bar.xsd": nil,
|
"bar.xsd": nil,
|
||||||
"baz.xml": nil,
|
"baz.xml": nil,
|
||||||
}
|
}
|
||||||
config := android.TestArchConfig(buildDir, nil, bp, fs)
|
|
||||||
ctx := android.NewTestArchContext(config)
|
|
||||||
ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory)
|
|
||||||
ctx.RegisterModuleType("prebuilt_etc_xml", PrebuiltEtcXmlFactory)
|
|
||||||
ctx.Register()
|
|
||||||
_, errs := ctx.ParseFileList(".", []string{"Android.bp"})
|
|
||||||
android.FailIfErrored(t, errs)
|
|
||||||
_, errs = ctx.PrepareBuildActions(config)
|
|
||||||
android.FailIfErrored(t, errs)
|
|
||||||
|
|
||||||
return ctx
|
return emptyFixtureFactory.RunTest(t,
|
||||||
}
|
android.PrepareForTestWithArchMutator,
|
||||||
|
etc.PrepareForTestWithPrebuiltEtc,
|
||||||
func assertEqual(t *testing.T, name, expected, actual string) {
|
PreparerForTestWithXmlBuildComponents,
|
||||||
t.Helper()
|
fs.AddToFixture(),
|
||||||
if expected != actual {
|
android.FixtureWithRootAndroidBp(bp),
|
||||||
t.Errorf(name+" expected %q != got %q", expected, actual)
|
)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Minimal test
|
// Minimal test
|
||||||
func TestPrebuiltEtcXml(t *testing.T) {
|
func TestPrebuiltEtcXml(t *testing.T) {
|
||||||
ctx := testXml(t, `
|
result := testXml(t, `
|
||||||
prebuilt_etc_xml {
|
prebuilt_etc_xml {
|
||||||
name: "foo.xml",
|
name: "foo.xml",
|
||||||
src: "foo.xml",
|
src: "foo.xml",
|
||||||
@@ -103,14 +73,14 @@ func TestPrebuiltEtcXml(t *testing.T) {
|
|||||||
{rule: "xmllint-minimal", input: "baz.xml"},
|
{rule: "xmllint-minimal", input: "baz.xml"},
|
||||||
} {
|
} {
|
||||||
t.Run(tc.schemaType, func(t *testing.T) {
|
t.Run(tc.schemaType, func(t *testing.T) {
|
||||||
rule := ctx.ModuleForTests(tc.input, "android_arm64_armv8-a").Rule(tc.rule)
|
rule := result.ModuleForTests(tc.input, "android_arm64_armv8-a").Rule(tc.rule)
|
||||||
assertEqual(t, "input", tc.input, rule.Input.String())
|
android.AssertStringEquals(t, "input", tc.input, rule.Input.String())
|
||||||
if tc.schemaType != "" {
|
if tc.schemaType != "" {
|
||||||
assertEqual(t, "schema", tc.schema, rule.Args[tc.schemaType])
|
android.AssertStringEquals(t, "schema", tc.schema, rule.Args[tc.schemaType])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
m := ctx.ModuleForTests("foo.xml", "android_arm64_armv8-a").Module().(*prebuiltEtcXml)
|
m := result.ModuleForTests("foo.xml", "android_arm64_armv8-a").Module().(*prebuiltEtcXml)
|
||||||
assertEqual(t, "installDir", buildDir+"/target/product/test_device/system/etc", m.InstallDirPath().String())
|
android.AssertPathRelativeToTopEquals(t, "installDir", "out/soong/target/product/test_device/system/etc", m.InstallDirPath())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user