You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.2 KiB
133 lines
3.2 KiB
// Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"path"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
const androidGoldenDir = "testdata/android_golden"
|
|
|
|
func TestAndroidConfig(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
useLlvmNext := false
|
|
useCCache := false
|
|
cfg, err := getConfig("android", useCCache, useLlvmNext, "123")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx.updateConfig(cfg)
|
|
|
|
runGoldenRecords(ctx, androidGoldenDir, []goldenFile{
|
|
createAndroidClangPathGoldenInputs(ctx),
|
|
createBisectGoldenInputs(filepath.Join(ctx.tempDir, "clang")),
|
|
createAndroidCompileWithFallbackGoldenInputs(ctx),
|
|
})
|
|
})
|
|
}
|
|
|
|
func createAndroidClangPathGoldenInputs(ctx *testContext) goldenFile {
|
|
gomaPath := path.Join(ctx.tempDir, "gomacc")
|
|
ctx.writeFile(gomaPath, "")
|
|
defaultPath := filepath.Join(ctx.tempDir, "clang")
|
|
clangTidyPath := filepath.Join(ctx.tempDir, "clang-tidy")
|
|
|
|
deepPath := "a/b/c/d/e/f/g/clang"
|
|
linkedDeepPath := "symlinked/clang_other"
|
|
ctx.writeFile(filepath.Join(ctx.tempDir, "/pathenv/clang"), "")
|
|
ctx.symlink(deepPath, linkedDeepPath)
|
|
return goldenFile{
|
|
Name: "clang_path.json",
|
|
Records: []goldenRecord{
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Cmds: errorResults,
|
|
},
|
|
{
|
|
Env: []string{"WITH_TIDY=1"},
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(filepath.Join(ctx.tempDir, "clang++"), mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(clangTidyPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
Env: []string{"WITH_TIDY=1"},
|
|
WrapperCmd: newGoldenCmd(clangTidyPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(deepPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(linkedDeepPath, mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
Env: []string{"PATH=" + filepath.Join(ctx.tempDir, "/pathenv")},
|
|
WrapperCmd: newGoldenCmd("clang", mainCc),
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc, "--gomacc-path", gomaPath),
|
|
Cmds: okResults,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func createAndroidCompileWithFallbackGoldenInputs(ctx *testContext) goldenFile {
|
|
env := []string{
|
|
"ANDROID_LLVM_PREBUILT_COMPILER_PATH=fallback_compiler",
|
|
"ANDROID_LLVM_STDERR_REDIRECT=" + filepath.Join(ctx.tempDir, "fallback_stderr"),
|
|
"ANDROID_LLVM_FALLBACK_DISABLED_WARNINGS=-a -b",
|
|
}
|
|
defaultPath := filepath.Join(ctx.tempDir, "clang")
|
|
return goldenFile{
|
|
Name: "compile_with_fallback.json",
|
|
Records: []goldenRecord{
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Env: env,
|
|
Cmds: okResults,
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Env: env,
|
|
Cmds: []commandResult{
|
|
{
|
|
ExitCode: 1,
|
|
},
|
|
okResult,
|
|
},
|
|
},
|
|
{
|
|
WrapperCmd: newGoldenCmd(defaultPath, mainCc),
|
|
Env: env,
|
|
Cmds: []commandResult{
|
|
{
|
|
ExitCode: 1,
|
|
},
|
|
{
|
|
ExitCode: 1,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|