Add a test for source_set with modulemap
This is to confirm current behavior for output of ninja build file when
we use source_set with modulemap.
context:
https://chromium-review.googlesource.com/c/chromium/src/+/6364375/comment/f1cd4bd4_a41713cd/
Bug: 40440396
Change-Id: Ib5d62aa2253c78b60b876cc8ef0becf04ace4fd7
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18580
Commit-Queue: Takuto Ikuta <tikuta@google.com>
Reviewed-by: Petr Hosek <phosek@google.com>
diff --git a/src/gn/ninja_c_binary_target_writer_unittest.cc b/src/gn/ninja_c_binary_target_writer_unittest.cc
index 5bfd2a4..f336ac7 100644
--- a/src/gn/ninja_c_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_c_binary_target_writer_unittest.cc
@@ -2303,6 +2303,44 @@
EXPECT_EQ(expected, out_str) << expected << "\n" << out_str;
}
+TEST_F(NinjaCBinaryTargetWriterTest, ModuleMapInSourceSet) {
+ TestWithScope setup;
+ Err err;
+
+ TestTarget target(setup, "//foo:bar", Target::SOURCE_SET);
+ target.sources().push_back(SourceFile("//foo/bar.cc"));
+ target.sources().push_back(SourceFile("//foo/bar.modulemap"));
+ target.source_types_used().Set(SourceFile::SOURCE_CPP);
+ target.source_types_used().Set(SourceFile::SOURCE_MODULEMAP);
+ ASSERT_TRUE(target.OnResolved(&err));
+
+ std::ostringstream out;
+ NinjaCBinaryTargetWriter writer(&target, out);
+ writer.Run();
+
+ const char expected[] =
+ "defines =\n"
+ "include_dirs =\n"
+ "cflags =\n"
+ "cflags_cc =\n"
+ "root_out_dir = .\n"
+ "target_gen_dir = gen/foo\n"
+ "target_out_dir = obj/foo\n"
+ "target_output_name = bar\n"
+ "\n"
+ "build obj/foo/bar.bar.o: cxx ../../foo/bar.cc | "
+ "obj/foo/bar.bar.pcm\n"
+ " source_file_part = bar.cc\n"
+ " source_name_part = bar\n"
+ "build obj/foo/bar.bar.pcm: cxx_module ../../foo/bar.modulemap\n"
+ " source_file_part = bar.modulemap\n"
+ " source_name_part = bar\n"
+ "\n"
+ "build phony/foo/bar: phony obj/foo/bar.bar.o\n";
+ std::string out_str = out.str();
+ EXPECT_EQ(expected, out_str) << expected << "\n" << out_str;
+}
+
// Test linking of targets containing Swift modules.
TEST_F(NinjaCBinaryTargetWriterTest, SwiftModule) {
Err err;