From 2be709d1013cfc1beafd90b6e1dbb06ba6339580 Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Fri, 31 May 2024 17:31:44 +0200 Subject: Use dynamic lib from sub subdir, test --- test-ymake.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/test-ymake.cpp b/test-ymake.cpp index dc50bdb..886a43b 100644 --- a/test-ymake.cpp +++ b/test-ymake.cpp @@ -871,6 +871,72 @@ extern int hello(); EXPECT_TRUE(!fs::exists("runmain")); } +TEST_F(ymakeTest, use_one_static_lib_from_subsubdir) +{ + create_file("YMakefile", R"( + + + runmain + runmain.cpp + subdir1/subdir2/hello.a + + +)"); + + create_file("runmain.cpp", R"(#include "subdir1/subdir2/hello.h" +int main(int argc, char* argv[]) +{ + hello(); + return 0; +})"); + + fs::create_directories("subdir1/subdir2"); + create_file("subdir1/subdir2/YMakefile", R"( + + + hello.a + hello.cpp + + +)"); + + create_file("subdir1/subdir2/hello.cpp", R"(#include "hello.h" +#include +int hello() +{ + std::cout << "Hello." << std::endl; + return 0; +})"); + + create_file("subdir1/subdir2/hello.h", R"(#pragma once +extern int hello(); +)"); + + std::vector output; + int result = run_command("../ymake", output); + EXPECT_EQ(result, 0); + ASSERT_EQ(output.size(), 4); // compile, link, compile, link + + EXPECT_TRUE(fs::exists("subdir1/subdir2/hello.o")); + EXPECT_TRUE(fs::exists("subdir1/subdir2/hello.a")); + EXPECT_TRUE(fs::exists("runmain.o")); + EXPECT_TRUE(fs::exists("runmain")); + + result = run_command("./runmain", output); + EXPECT_EQ(result, 0); + ASSERT_EQ(output.size(), 1); + EXPECT_EQ(output[0], "Hello."); + + result = run_command("../ymake clean", output); + EXPECT_EQ(result, 0); + ASSERT_EQ(output.size(), 6); // hello.o, hello.d, hello.a, runmain.o, runmain.d, runmain + + EXPECT_TRUE(!fs::exists("subdir1/subdir2/hello.o")); + EXPECT_TRUE(!fs::exists("subdir1/subdir2/hello.a")); + EXPECT_TRUE(!fs::exists("runmain.o")); + EXPECT_TRUE(!fs::exists("runmain")); +} + TEST_F(ymakeTest, use_one_dynamic_lib) { create_file("YMakefile", R"( @@ -1077,9 +1143,6 @@ __attribute__((visibility("default"))) int hello(); EXPECT_TRUE(!fs::exists("runmain")); } -// TODO: -// use static lib from subdir in subdir - TEST_F(yscanTest, no_cpp_file) { std::string output; -- cgit v1.2.3