Merge "Remove test_per_src" into main
This commit is contained in:
31
apex/apex.go
31
apex/apex.go
@@ -2095,20 +2095,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
|
|||||||
}
|
}
|
||||||
case testTag:
|
case testTag:
|
||||||
if ccTest, ok := child.(*cc.Module); ok {
|
if ccTest, ok := child.(*cc.Module); ok {
|
||||||
if ccTest.IsTestPerSrcAllTestsVariation() {
|
af := apexFileForExecutable(ctx, ccTest)
|
||||||
// Multiple-output test module (where `test_per_src: true`).
|
af.class = nativeTest
|
||||||
//
|
vctx.filesInfo = append(vctx.filesInfo, af)
|
||||||
// `ccTest` is the "" ("all tests") variation of a `test_per_src` module.
|
addAconfigFiles(vctx, ctx, child)
|
||||||
// We do not add this variation to `filesInfo`, as it has no output;
|
|
||||||
// however, we do add the other variations of this module as indirect
|
|
||||||
// dependencies (see below).
|
|
||||||
} else {
|
|
||||||
// Single-output test module (where `test_per_src: false`).
|
|
||||||
af := apexFileForExecutable(ctx, ccTest)
|
|
||||||
af.class = nativeTest
|
|
||||||
vctx.filesInfo = append(vctx.filesInfo, af)
|
|
||||||
addAconfigFiles(vctx, ctx, child)
|
|
||||||
}
|
|
||||||
return true // track transitive dependencies
|
return true // track transitive dependencies
|
||||||
} else {
|
} else {
|
||||||
ctx.PropertyErrorf("tests", "%q is not a cc module", depName)
|
ctx.PropertyErrorf("tests", "%q is not a cc module", depName)
|
||||||
@@ -2197,19 +2187,6 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext,
|
|||||||
addAconfigFiles(vctx, ctx, child)
|
addAconfigFiles(vctx, ctx, child)
|
||||||
return true // track transitive dependencies
|
return true // track transitive dependencies
|
||||||
}
|
}
|
||||||
} else if cc.IsTestPerSrcDepTag(depTag) {
|
|
||||||
if ch, ok := child.(*cc.Module); ok {
|
|
||||||
af := apexFileForExecutable(ctx, ch)
|
|
||||||
// Handle modules created as `test_per_src` variations of a single test module:
|
|
||||||
// use the name of the generated test binary (`fileToCopy`) instead of the name
|
|
||||||
// of the original test module (`depName`, shared by all `test_per_src`
|
|
||||||
// variations of that module).
|
|
||||||
af.androidMkModuleName = filepath.Base(af.builtFile.String())
|
|
||||||
// these are not considered transitive dep
|
|
||||||
af.transitiveDep = false
|
|
||||||
vctx.filesInfo = append(vctx.filesInfo, af)
|
|
||||||
return true // track transitive dependencies
|
|
||||||
}
|
|
||||||
} else if cc.IsHeaderDepTag(depTag) {
|
} else if cc.IsHeaderDepTag(depTag) {
|
||||||
// nothing
|
// nothing
|
||||||
} else if java.IsJniDepTag(depTag) {
|
} else if java.IsJniDepTag(depTag) {
|
||||||
|
@@ -5728,7 +5728,6 @@ func TestApexWithTests(t *testing.T) {
|
|||||||
updatable: false,
|
updatable: false,
|
||||||
tests: [
|
tests: [
|
||||||
"mytest",
|
"mytest",
|
||||||
"mytests",
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5771,25 +5770,6 @@ func TestApexWithTests(t *testing.T) {
|
|||||||
"testdata/baz"
|
"testdata/baz"
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_test {
|
|
||||||
name: "mytests",
|
|
||||||
gtest: false,
|
|
||||||
srcs: [
|
|
||||||
"mytest1.cpp",
|
|
||||||
"mytest2.cpp",
|
|
||||||
"mytest3.cpp",
|
|
||||||
],
|
|
||||||
test_per_src: true,
|
|
||||||
relative_install_path: "test",
|
|
||||||
system_shared_libs: [],
|
|
||||||
static_executable: true,
|
|
||||||
stl: "none",
|
|
||||||
data: [
|
|
||||||
":fg",
|
|
||||||
":fg2",
|
|
||||||
],
|
|
||||||
}
|
|
||||||
`)
|
`)
|
||||||
|
|
||||||
apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule")
|
apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule")
|
||||||
@@ -5803,11 +5783,6 @@ func TestApexWithTests(t *testing.T) {
|
|||||||
ensureContains(t, copyCmds, "image.apex/bin/test/baz")
|
ensureContains(t, copyCmds, "image.apex/bin/test/baz")
|
||||||
ensureContains(t, copyCmds, "image.apex/bin/test/bar/baz")
|
ensureContains(t, copyCmds, "image.apex/bin/test/bar/baz")
|
||||||
|
|
||||||
// Ensure that test deps built with `test_per_src` are copied into apex.
|
|
||||||
ensureContains(t, copyCmds, "image.apex/bin/test/mytest1")
|
|
||||||
ensureContains(t, copyCmds, "image.apex/bin/test/mytest2")
|
|
||||||
ensureContains(t, copyCmds, "image.apex/bin/test/mytest3")
|
|
||||||
|
|
||||||
// Ensure the module is correctly translated.
|
// Ensure the module is correctly translated.
|
||||||
bundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle)
|
bundle := ctx.ModuleForTests("myapex", "android_common_myapex").Module().(*apexBundle)
|
||||||
data := android.AndroidMkDataForTest(t, ctx, bundle)
|
data := android.AndroidMkDataForTest(t, ctx, bundle)
|
||||||
@@ -5817,9 +5792,6 @@ func TestApexWithTests(t *testing.T) {
|
|||||||
data.Custom(&builder, name, prefix, "", data)
|
data.Custom(&builder, name, prefix, "", data)
|
||||||
androidMk := builder.String()
|
androidMk := builder.String()
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := mytest.myapex\n")
|
ensureContains(t, androidMk, "LOCAL_MODULE := mytest.myapex\n")
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := mytest1.myapex\n")
|
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := mytest2.myapex\n")
|
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := mytest3.myapex\n")
|
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := myapex\n")
|
ensureContains(t, androidMk, "LOCAL_MODULE := myapex\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -351,9 +351,6 @@ func (test *testBinary) AndroidMkEntries(ctx AndroidMkContext, entries *android.
|
|||||||
ctx.subAndroidMk(entries, test.testDecorator)
|
ctx.subAndroidMk(entries, test.testDecorator)
|
||||||
|
|
||||||
entries.Class = "NATIVE_TESTS"
|
entries.Class = "NATIVE_TESTS"
|
||||||
if Bool(test.Properties.Test_per_src) {
|
|
||||||
entries.SubName = "_" + String(test.binaryDecorator.Properties.Stem)
|
|
||||||
}
|
|
||||||
entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
|
||||||
if test.testConfig != nil {
|
if test.testConfig != nil {
|
||||||
entries.SetString("LOCAL_FULL_TEST_CONFIG", test.testConfig.String())
|
entries.SetString("LOCAL_FULL_TEST_CONFIG", test.testConfig.String())
|
||||||
|
26
cc/cc.go
26
cc/cc.go
@@ -51,7 +51,6 @@ func RegisterCCBuildComponents(ctx android.RegistrationContext) {
|
|||||||
ctx.BottomUp("sdk", sdkMutator).Parallel()
|
ctx.BottomUp("sdk", sdkMutator).Parallel()
|
||||||
ctx.BottomUp("llndk", llndkMutator).Parallel()
|
ctx.BottomUp("llndk", llndkMutator).Parallel()
|
||||||
ctx.BottomUp("link", LinkageMutator).Parallel()
|
ctx.BottomUp("link", LinkageMutator).Parallel()
|
||||||
ctx.BottomUp("test_per_src", TestPerSrcMutator).Parallel()
|
|
||||||
ctx.BottomUp("version", versionMutator).Parallel()
|
ctx.BottomUp("version", versionMutator).Parallel()
|
||||||
ctx.BottomUp("begin", BeginMutator).Parallel()
|
ctx.BottomUp("begin", BeginMutator).Parallel()
|
||||||
})
|
})
|
||||||
@@ -799,7 +798,6 @@ var (
|
|||||||
dataLibDepTag = dependencyTag{name: "data lib"}
|
dataLibDepTag = dependencyTag{name: "data lib"}
|
||||||
dataBinDepTag = dependencyTag{name: "data bin"}
|
dataBinDepTag = dependencyTag{name: "data bin"}
|
||||||
runtimeDepTag = installDependencyTag{name: "runtime lib"}
|
runtimeDepTag = installDependencyTag{name: "runtime lib"}
|
||||||
testPerSrcDepTag = dependencyTag{name: "test_per_src"}
|
|
||||||
stubImplDepTag = dependencyTag{name: "stub_impl"}
|
stubImplDepTag = dependencyTag{name: "stub_impl"}
|
||||||
JniFuzzLibTag = dependencyTag{name: "jni_fuzz_lib_tag"}
|
JniFuzzLibTag = dependencyTag{name: "jni_fuzz_lib_tag"}
|
||||||
FdoProfileTag = dependencyTag{name: "fdo_profile"}
|
FdoProfileTag = dependencyTag{name: "fdo_profile"}
|
||||||
@@ -826,11 +824,6 @@ func IsRuntimeDepTag(depTag blueprint.DependencyTag) bool {
|
|||||||
return depTag == runtimeDepTag
|
return depTag == runtimeDepTag
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsTestPerSrcDepTag(depTag blueprint.DependencyTag) bool {
|
|
||||||
ccDepTag, ok := depTag.(dependencyTag)
|
|
||||||
return ok && ccDepTag == testPerSrcDepTag
|
|
||||||
}
|
|
||||||
|
|
||||||
// Module contains the properties and members used by all C/C++ module types, and implements
|
// Module contains the properties and members used by all C/C++ module types, and implements
|
||||||
// the blueprint.Module interface. It delegates to compiler, linker, and installer interfaces
|
// the blueprint.Module interface. It delegates to compiler, linker, and installer interfaces
|
||||||
// to construct the output file. Behavior can be customized with a Customizer, or "decorator",
|
// to construct the output file. Behavior can be customized with a Customizer, or "decorator",
|
||||||
@@ -1786,11 +1779,6 @@ func (c *Module) Symlinks() []string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Module) IsTestPerSrcAllTestsVariation() bool {
|
|
||||||
test, ok := c.linker.(testPerSrc)
|
|
||||||
return ok && test.isAllTestsVariation()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Module) DataPaths() []android.DataPath {
|
func (c *Module) DataPaths() []android.DataPath {
|
||||||
if p, ok := c.installer.(interface {
|
if p, ok := c.installer.(interface {
|
||||||
dataPaths() []android.DataPath
|
dataPaths() []android.DataPath
|
||||||
@@ -1943,16 +1931,6 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
|
|||||||
TopLevelTarget: c.testModule,
|
TopLevelTarget: c.testModule,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Handle the case of a test module split by `test_per_src` mutator.
|
|
||||||
//
|
|
||||||
// The `test_per_src` mutator adds an extra variation named "", depending on all the other
|
|
||||||
// `test_per_src` variations of the test module. Set `outputFile` to an empty path for this
|
|
||||||
// module and return early, as this module does not produce an output file per se.
|
|
||||||
if c.IsTestPerSrcAllTestsVariation() {
|
|
||||||
c.outputFile = android.OptionalPath{}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Properties.SubName = GetSubnameProperty(actx, c)
|
c.Properties.SubName = GetSubnameProperty(actx, c)
|
||||||
apexInfo, _ := android.ModuleProvider(actx, android.ApexInfoProvider)
|
apexInfo, _ := android.ModuleProvider(actx, android.ApexInfoProvider)
|
||||||
if !apexInfo.IsForPlatform() {
|
if !apexInfo.IsForPlatform() {
|
||||||
@@ -3758,14 +3736,12 @@ func GetMakeLinkType(actx android.ModuleContext, c LinkableInterface) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Overrides ApexModule.IsInstallabeToApex()
|
// Overrides ApexModule.IsInstallabeToApex()
|
||||||
// Only shared/runtime libraries and "test_per_src" tests are installable to APEX.
|
// Only shared/runtime libraries .
|
||||||
func (c *Module) IsInstallableToApex() bool {
|
func (c *Module) IsInstallableToApex() bool {
|
||||||
if lib := c.library; lib != nil {
|
if lib := c.library; lib != nil {
|
||||||
// Stub libs and prebuilt libs in a versioned SDK are not
|
// Stub libs and prebuilt libs in a versioned SDK are not
|
||||||
// installable to APEX even though they are shared libs.
|
// installable to APEX even though they are shared libs.
|
||||||
return lib.shared() && !lib.buildStubs()
|
return lib.shared() && !lib.buildStubs()
|
||||||
} else if _, ok := c.linker.(testPerSrc); ok {
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@@ -78,38 +78,6 @@ func TestTestOnlyProvider(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTestOnlyValueWithTestPerSrcProp(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
ctx := android.GroupFixturePreparers(
|
|
||||||
prepareForCcTest,
|
|
||||||
).RunTestWithBp(t, `
|
|
||||||
// These should be test-only
|
|
||||||
cc_test { name: "cc-test",
|
|
||||||
gtest: false,
|
|
||||||
test_per_src: true,
|
|
||||||
srcs: ["foo_test.cpp"],
|
|
||||||
test_options: { unit_test: false, },
|
|
||||||
}
|
|
||||||
`)
|
|
||||||
|
|
||||||
// Ensure all variation of test-per-src tests are marked test-only.
|
|
||||||
ctx.VisitAllModules(func(m blueprint.Module) {
|
|
||||||
testOnly := false
|
|
||||||
if provider, ok := android.OtherModuleProvider(ctx.TestContext.OtherModuleProviderAdaptor(), m, android.TestOnlyProviderKey); ok {
|
|
||||||
if provider.TestOnly {
|
|
||||||
testOnly = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if module, ok := m.(*Module); ok {
|
|
||||||
if testModule, ok := module.installer.(*testBinary); ok {
|
|
||||||
if !testOnly && *testModule.Properties.Test_per_src {
|
|
||||||
t.Errorf("%v is not test-only but should be", m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTestOnlyInTeamsProto(t *testing.T) {
|
func TestTestOnlyInTeamsProto(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
ctx := android.GroupFixturePreparers(
|
ctx := android.GroupFixturePreparers(
|
||||||
|
86
cc/test.go
86
cc/test.go
@@ -15,11 +15,9 @@
|
|||||||
package cc
|
package cc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/google/blueprint/proptools"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/google/blueprint/proptools"
|
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/tradefed"
|
"android/soong/tradefed"
|
||||||
@@ -75,13 +73,9 @@ type TestOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TestBinaryProperties struct {
|
type TestBinaryProperties struct {
|
||||||
// Create a separate binary for each source file. Useful when there is
|
|
||||||
// global state that can not be torn down and reset between each test suite.
|
|
||||||
Test_per_src *bool
|
|
||||||
|
|
||||||
// Disables the creation of a test-specific directory when used with
|
// Disables the creation of a test-specific directory when used with
|
||||||
// relative_install_path. Useful if several tests need to be in the same
|
// relative_install_path. Useful if several tests need to be in the same
|
||||||
// directory, but test_per_src doesn't work.
|
// directory.
|
||||||
No_named_install_directory *bool
|
No_named_install_directory *bool
|
||||||
|
|
||||||
// list of files or filegroup modules that provide data that should be installed alongside
|
// list of files or filegroup modules that provide data that should be installed alongside
|
||||||
@@ -174,86 +168,14 @@ func BenchmarkHostFactory() android.Module {
|
|||||||
return module.Init()
|
return module.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
type testPerSrc interface {
|
|
||||||
testPerSrc() bool
|
|
||||||
srcs() []string
|
|
||||||
isAllTestsVariation() bool
|
|
||||||
setSrc(string, string)
|
|
||||||
unsetSrc()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) testPerSrc() bool {
|
|
||||||
return Bool(test.Properties.Test_per_src)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) srcs() []string {
|
|
||||||
return test.baseCompiler.Properties.Srcs
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) dataPaths() []android.DataPath {
|
func (test *testBinary) dataPaths() []android.DataPath {
|
||||||
return test.data
|
return test.data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (test *testBinary) isAllTestsVariation() bool {
|
|
||||||
stem := test.binaryDecorator.Properties.Stem
|
|
||||||
return stem != nil && *stem == ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) setSrc(name, src string) {
|
|
||||||
test.baseCompiler.Properties.Srcs = []string{src}
|
|
||||||
test.binaryDecorator.Properties.Stem = StringPtr(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) unsetSrc() {
|
|
||||||
test.baseCompiler.Properties.Srcs = nil
|
|
||||||
test.binaryDecorator.Properties.Stem = StringPtr("")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (test *testBinary) testBinary() bool {
|
func (test *testBinary) testBinary() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ testPerSrc = (*testBinary)(nil)
|
|
||||||
|
|
||||||
func TestPerSrcMutator(mctx android.BottomUpMutatorContext) {
|
|
||||||
if m, ok := mctx.Module().(*Module); ok {
|
|
||||||
if test, ok := m.linker.(testPerSrc); ok {
|
|
||||||
numTests := len(test.srcs())
|
|
||||||
if test.testPerSrc() && numTests > 0 {
|
|
||||||
if duplicate, found := android.CheckDuplicate(test.srcs()); found {
|
|
||||||
mctx.PropertyErrorf("srcs", "found a duplicate entry %q", duplicate)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
testNames := make([]string, numTests)
|
|
||||||
for i, src := range test.srcs() {
|
|
||||||
testNames[i] = strings.TrimSuffix(filepath.Base(src), filepath.Ext(src))
|
|
||||||
}
|
|
||||||
// In addition to creating one variation per test source file,
|
|
||||||
// create an additional "all tests" variation named "", and have it
|
|
||||||
// depends on all other test_per_src variations. This is useful to
|
|
||||||
// create subsequent dependencies of a given module on all
|
|
||||||
// test_per_src variations created above: by depending on
|
|
||||||
// variation "", that module will transitively depend on all the
|
|
||||||
// other test_per_src variations without the need to know their
|
|
||||||
// name or even their number.
|
|
||||||
testNames = append(testNames, "")
|
|
||||||
tests := mctx.CreateLocalVariations(testNames...)
|
|
||||||
allTests := tests[numTests]
|
|
||||||
allTests.(*Module).linker.(testPerSrc).unsetSrc()
|
|
||||||
// Prevent the "all tests" variation from being installable nor
|
|
||||||
// exporting to Make, as it won't create any output file.
|
|
||||||
allTests.(*Module).Properties.PreventInstall = true
|
|
||||||
allTests.(*Module).Properties.HideFromMake = true
|
|
||||||
for i, src := range test.srcs() {
|
|
||||||
tests[i].(*Module).linker.(testPerSrc).setSrc(testNames[i], src)
|
|
||||||
mctx.AddInterVariantDependency(testPerSrcDepTag, allTests, tests[i])
|
|
||||||
}
|
|
||||||
mctx.AliasVariation("")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type testDecorator struct {
|
type testDecorator struct {
|
||||||
LinkerProperties TestLinkerProperties
|
LinkerProperties TestLinkerProperties
|
||||||
InstallerProperties TestInstallerProperties
|
InstallerProperties TestInstallerProperties
|
||||||
@@ -382,10 +304,6 @@ func (test *testBinary) moduleInfoJSON(ctx ModuleContext, moduleInfoJSON *androi
|
|||||||
}
|
}
|
||||||
moduleInfoJSON.TestConfig = append(moduleInfoJSON.TestConfig, test.extraTestConfigs.Strings()...)
|
moduleInfoJSON.TestConfig = append(moduleInfoJSON.TestConfig, test.extraTestConfigs.Strings()...)
|
||||||
|
|
||||||
if Bool(test.Properties.Test_per_src) {
|
|
||||||
moduleInfoJSON.SubName = "_" + String(test.binaryDecorator.Properties.Stem)
|
|
||||||
}
|
|
||||||
|
|
||||||
moduleInfoJSON.DataDependencies = append(moduleInfoJSON.DataDependencies, test.Properties.Data_bins...)
|
moduleInfoJSON.DataDependencies = append(moduleInfoJSON.DataDependencies, test.Properties.Data_bins...)
|
||||||
|
|
||||||
if len(test.InstallerProperties.Test_suites) > 0 {
|
if len(test.InstallerProperties.Test_suites) > 0 {
|
||||||
|
@@ -22,7 +22,7 @@ import (
|
|||||||
type BenchmarkProperties struct {
|
type BenchmarkProperties struct {
|
||||||
// Disables the creation of a test-specific directory when used with
|
// Disables the creation of a test-specific directory when used with
|
||||||
// relative_install_path. Useful if several tests need to be in the same
|
// relative_install_path. Useful if several tests need to be in the same
|
||||||
// directory, but test_per_src doesn't work.
|
// directory.
|
||||||
No_named_install_directory *bool
|
No_named_install_directory *bool
|
||||||
|
|
||||||
// the name of the test configuration (for example "AndroidBenchmark.xml") that should be
|
// the name of the test configuration (for example "AndroidBenchmark.xml") that should be
|
||||||
|
@@ -1107,7 +1107,6 @@ var (
|
|||||||
rlibDepTag = dependencyTag{name: "rlibTag", library: true}
|
rlibDepTag = dependencyTag{name: "rlibTag", library: true}
|
||||||
dylibDepTag = dependencyTag{name: "dylib", library: true, dynamic: true}
|
dylibDepTag = dependencyTag{name: "dylib", library: true, dynamic: true}
|
||||||
procMacroDepTag = dependencyTag{name: "procMacro", procMacro: true}
|
procMacroDepTag = dependencyTag{name: "procMacro", procMacro: true}
|
||||||
testPerSrcDepTag = dependencyTag{name: "rust_unit_tests"}
|
|
||||||
sourceDepTag = dependencyTag{name: "source"}
|
sourceDepTag = dependencyTag{name: "source"}
|
||||||
dataLibDepTag = dependencyTag{name: "data lib"}
|
dataLibDepTag = dependencyTag{name: "data lib"}
|
||||||
dataBinDepTag = dependencyTag{name: "data bin"}
|
dataBinDepTag = dependencyTag{name: "data bin"}
|
||||||
|
@@ -27,7 +27,7 @@ import (
|
|||||||
type TestProperties struct {
|
type TestProperties struct {
|
||||||
// Disables the creation of a test-specific directory when used with
|
// Disables the creation of a test-specific directory when used with
|
||||||
// relative_install_path. Useful if several tests need to be in the same
|
// relative_install_path. Useful if several tests need to be in the same
|
||||||
// directory, but test_per_src doesn't work.
|
// directory.
|
||||||
No_named_install_directory *bool
|
No_named_install_directory *bool
|
||||||
|
|
||||||
// the name of the test configuration (for example "AndroidTest.xml") that should be
|
// the name of the test configuration (for example "AndroidTest.xml") that should be
|
||||||
|
Reference in New Issue
Block a user