| // Copyright 2014 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include <sstream> | |
| #include "gn/ninja_toolchain_writer.h" | |
| #include "gn/test_with_scope.h" | |
| #include "util/test/test.h" | |
| TEST(NinjaToolchainWriter, WriteToolRule) { | |
| TestWithScope setup; | |
| std::ostringstream stream; | |
| NinjaToolchainWriter writer(setup.settings(), setup.toolchain(), stream); | |
| writer.WriteToolRule(setup.toolchain()->GetTool(CTool::kCToolCc), | |
| std::string("prefix_")); | |
| EXPECT_EQ( | |
| "rule prefix_cc\n" | |
| " command = cc ${in} ${cflags} ${cflags_c} ${defines} ${include_dirs} " | |
| "-o ${out}\n", | |
| stream.str()); | |
| } | |
| TEST(NinjaToolchainWriter, WriteToolRuleWithLauncher) { | |
| TestWithScope setup; | |
| std::ostringstream stream; | |
| NinjaToolchainWriter writer(setup.settings(), setup.toolchain(), stream); | |
| writer.WriteToolRule(setup.toolchain()->GetTool(CTool::kCToolCxx), | |
| std::string("prefix_")); | |
| EXPECT_EQ( | |
| "rule prefix_cxx\n" | |
| " command = launcher c++ ${in} ${cflags} ${cflags_cc} ${defines} " | |
| "${include_dirs} ${module_deps} " | |
| "-o ${out}\n", | |
| stream.str()); | |
| } | |
| TEST(NinjaToolchainWriter, WriteToolRuleWithInputsPhony) { | |
| TestWithScope setup; | |
| std::unique_ptr<Tool> tool = Tool::CreateTool(CTool::kCToolCxx); | |
| TestWithScope::SetCommandForTool( | |
| "launcher c++ {{source}} {{cflags}} {{cflags_cc}} {{defines}} " | |
| "{{include_dirs}} -o {{output}}", | |
| tool.get()); | |
| tool->set_inputs( | |
| {SourceFile("//bin/clang++"), SourceFile("//bin/plugin.so")}); | |
| std::ostringstream stream; | |
| NinjaToolchainWriter writer(setup.settings(), setup.toolchain(), stream); | |
| writer.WriteToolRule(tool.get(), std::string("prefix_")); | |
| EXPECT_EQ( | |
| "rule prefix_cxx\n" | |
| " command = launcher c++ ${in} ${cflags} ${cflags_cc} ${defines} " | |
| "${include_dirs} " | |
| "-o ${out}\n" | |
| "build phony/prefix_cxx_inputs: phony ../../bin/clang++ " | |
| "../../bin/plugin.so\n", | |
| stream.str()); | |
| } |