// 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, }, }, }, }, } }