Skip to content

Commit ee4f9df

Browse files
authored
Fix auto target selection for FileTestGen and LineTestGen (#561)
1 parent 94d79a3 commit ee4f9df

File tree

10 files changed

+15
-29
lines changed

10 files changed

+15
-29
lines changed

.github/workflows/build-utbot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ jobs:
153153

154154
build-portable-container:
155155
needs: build-utbot-and-generate-test
156-
runs-on: ubuntu-latest
156+
runs-on: ubuntu-20.04
157157
env:
158158
DOCKER_IMAGE_TAG: docker-image
159159
PORTABLE_CONTAINER_NAME: Portable

server/src/building/TargetBuildDatabase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ TargetBuildDatabase::TargetBuildDatabase(BuildDatabase *baseBuildDatabase, const
1919
}
2020
}
2121

22-
isAutoTarget = target == GrpcUtils::UTBOT_AUTO_TARGET_PATH;
22+
LOG_S(INFO) << StringUtils::stringFormat("Chosen target: %s", target);
2323

2424
{
2525
auto objectFilesList = baseBuildDatabase->getArchiveObjectFiles(target);

server/src/building/TargetBuildDatabase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class TargetBuildDatabase : public BuildDatabase {
88
private:
99
fs::path target;
10-
bool isAutoTarget;
10+
bool isAutoTarget = false;
1111

1212
public:
1313
TargetBuildDatabase(BuildDatabase *baseBuildDatabase, const std::string &targetOrSourcePath);

server/src/testgens/FileTestGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
FileTestGen::FileTestGen(const testsgen::FileRequest &request,
66
ProgressWriter *progressWriter,
77
bool testMode)
8-
: ProjectTestGen(request.projectrequest(), progressWriter, testMode, false),
8+
: ProjectTestGen(request.projectrequest(), progressWriter, testMode, false, fs::weakly_canonical(request.filepath())),
99
filepath(fs::weakly_canonical(request.filepath())) {
1010
testingMethodsSourcePaths = {filepath};
1111
setInitializedTestsMap();

server/src/testgens/LineTestGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
LineTestGen::LineTestGen(const testsgen::LineRequest &request,
44
ProgressWriter *progressWriter,
55
bool testMode, bool forHeader)
6-
: ProjectTestGen(request.projectrequest(), progressWriter, testMode, false) {
6+
: ProjectTestGen(request.projectrequest(), progressWriter, testMode, false, fs::weakly_canonical(request.sourceinfo().filepath())) {
77
filePath = fs::weakly_canonical(request.sourceinfo().filepath());
88
line = request.sourceinfo().line();
99
std::optional<fs::path> sourcePath = Paths::headerPathToSourcePath(filePath);

server/src/testgens/ProjectTestGen.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,21 @@
88
ProjectTestGen::ProjectTestGen(const testsgen::ProjectRequest &request,
99
ProgressWriter *progressWriter,
1010
bool testMode,
11-
bool autoDetect)
11+
bool autoDetect,
12+
const std::optional<fs::path> &sourceFile)
1213
: BaseTestGen(request.projectcontext(),
1314
request.settingscontext(),
1415
progressWriter,
1516
testMode), request(&request) {
1617
fs::create_directories(projectContext.testDirPath);
1718
compileCommandsJsonPath = CompilationUtils::substituteRemotePathToCompileCommandsJsonPath(projectContext);
1819
projectBuildDatabase = std::make_shared<ProjectBuildDatabase>(compileCommandsJsonPath, serverBuildDir, projectContext);
19-
targetBuildDatabase = std::make_shared<TargetBuildDatabase>(projectBuildDatabase.get(), request.targetpath());
20+
if (sourceFile.has_value() && Paths::isSourceFile(sourceFile.value()) &&
21+
(request.targetpath() == GrpcUtils::UTBOT_AUTO_TARGET_PATH || request.targetpath().empty())) {
22+
targetBuildDatabase = std::make_shared<TargetBuildDatabase>(projectBuildDatabase.get(), sourceFile.value());
23+
} else {
24+
targetBuildDatabase = std::make_shared<TargetBuildDatabase>(projectBuildDatabase.get(), request.targetpath());
25+
}
2026
if (autoDetect) {
2127
autoDetectSourcePathsIfNotEmpty();
2228
} else {

server/src/testgens/ProjectTestGen.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class ProjectTestGen : public BaseTestGen {
1010
ProjectTestGen(const testsgen::ProjectRequest &request,
1111
ProgressWriter *progressWriter,
1212
bool testMode,
13-
bool autoDetect = true);
13+
bool autoDetect = true,
14+
const std::optional<fs::path> &sourceFile = std::nullopt);
1415

1516
~ProjectTestGen() override = default;
1617

server/test/framework/Server_Tests.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ namespace {
116116
createProjectRequest(projectName, suitePath, buildDirRelativePath, srcPaths);
117117
auto request = GrpcUtils::createFileRequest(std::move(projectRequest), filename);
118118
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
119-
testGen.setTargetForSource(filename);
120119
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
121120
return FileGenResult(testGen, status);
122121
}
@@ -980,7 +979,6 @@ namespace {
980979
createProjectRequest(projectName, suitePath, buildDirRelativePath, srcPaths);
981980
auto request = GrpcUtils::createFileRequest(std::move(projectRequest), basic_functions_c);
982981
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
983-
testGen.setTargetForSource(basic_functions_c);
984982
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
985983
ASSERT_TRUE(status.ok()) << status.error_message();
986984

@@ -1004,7 +1002,6 @@ namespace {
10041002
auto request = createLineRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
10051003
basic_functions_c, 17, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false, false, 0);
10061004
auto testGen = LineTestGen(*request, writer.get(), TESTMODE);
1007-
testGen.setTargetForSource(basic_functions_c);
10081005
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10091006
ASSERT_TRUE(status.ok()) << status.error_message();
10101007

@@ -1021,7 +1018,6 @@ namespace {
10211018
auto request = createLineRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
10221019
basic_functions_c, 17, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false, false, 0);
10231020
auto testGen = LineTestGen(*request, writer.get(), TESTMODE);
1024-
testGen.setTargetForSource(basic_functions_c);
10251021
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10261022
ASSERT_TRUE(status.ok()) << status.error_message();
10271023

@@ -1039,7 +1035,6 @@ namespace {
10391035
auto request = createClassRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
10401036
multiple_classes_h, 6);
10411037
auto testGen = ClassTestGen(*request, writer.get(), TESTMODE);
1042-
testGen.setTargetForSource(multiple_classes_cpp);
10431038
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10441039
ASSERT_TRUE(status.ok()) << status.error_message();
10451040

@@ -1054,7 +1049,6 @@ namespace {
10541049
auto request = createClassRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
10551050
multiple_classes_h, 11);
10561051
auto testGen = ClassTestGen(*request, writer.get(), TESTMODE);
1057-
testGen.setTargetForSource(multiple_classes_cpp);
10581052
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10591053
ASSERT_TRUE(status.ok()) << status.error_message();
10601054

@@ -1069,7 +1063,6 @@ namespace {
10691063
auto request = createClassRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
10701064
multiple_classes_h, 14);
10711065
auto testGen = ClassTestGen(*request, writer.get(), TESTMODE);
1072-
testGen.setTargetForSource(multiple_classes_cpp);
10731066
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10741067
ASSERT_TRUE(status.ok()) << status.error_message();
10751068

@@ -1085,7 +1078,6 @@ namespace {
10851078
basic_functions_c, 6, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false, false, 0);
10861079
auto request = GrpcUtils::createFunctionRequest(std::move(lineRequest));
10871080
auto testGen = FunctionTestGen(*request, writer.get(), TESTMODE);
1088-
testGen.setTargetForSource(basic_functions_c);
10891081

10901082
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
10911083
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -1118,7 +1110,6 @@ namespace {
11181110
auto request =
11191111
GrpcUtils::createPredicateRequest(std::move(lineRequest), std::move(predicateInfo));
11201112
auto testGen = PredicateTestGen(*request, writer.get(), TESTMODE);
1121-
testGen.setTargetForSource(basic_functions_c);
11221113

11231114
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
11241115
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -1141,7 +1132,6 @@ namespace {
11411132
auto request =
11421133
GrpcUtils::createPredicateRequest(std::move(lineRequest), std::move(predicateInfo));
11431134
auto testGen = PredicateTestGen(*request, writer.get(), TESTMODE);
1144-
testGen.setTargetForSource(basic_functions_c);
11451135

11461136
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
11471137
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -1160,7 +1150,6 @@ namespace {
11601150
symbolic_stdin_c, 8, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false, false, 0);
11611151
request->set_allocated_linerequest(lineRequest.release());
11621152
auto testGen = FunctionTestGen(*request, writer.get(), TESTMODE);
1163-
testGen.setTargetForSource(symbolic_stdin_c);
11641153

11651154
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
11661155
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -1182,7 +1171,6 @@ namespace {
11821171
symbolic_stdin_c, 19, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false, false, 0);
11831172
request->set_allocated_linerequest(lineRequest.release());
11841173
auto testGen = FunctionTestGen(*request, writer.get(), TESTMODE);
1185-
testGen.setTargetForSource(symbolic_stdin_c);
11861174

11871175
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
11881176
ASSERT_TRUE(status.ok()) << status.error_message();

server/test/framework/Stub_Tests.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ namespace {
127127
auto request = createFileRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
128128
literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
129129
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
130-
testGen.setTargetForSource(literals_foo_c);
131130

132131
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
133132
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -140,7 +139,6 @@ namespace {
140139
auto request = createFileRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
141140
literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
142141
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
143-
testGen.setTargetForSource(literals_foo_c);
144142

145143
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
146144
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -151,7 +149,6 @@ namespace {
151149
auto request = createFileRequest(projectName, suitePath, buildDirRelativePath,
152150
srcPaths, literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
153151
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
154-
testGen.setTargetForSource(literals_foo_c);
155152

156153
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
157154
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -218,7 +215,6 @@ namespace {
218215
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,
219216
srcPaths, calc_sum_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
220217
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
221-
testGen.setTargetForSource(calc_sum_c);
222218
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
223219
ASSERT_TRUE(status.ok()) << status.error_message();
224220
EXPECT_GE(testUtils::getNumberOfTests(testGen.tests), 2);
@@ -239,7 +235,6 @@ namespace {
239235
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,
240236
srcPaths, literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, false);
241237
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
242-
testGen.setTargetForSource(literals_foo_c);
243238

244239
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
245240
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -283,7 +278,6 @@ namespace {
283278
auto request = createFileRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
284279
literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
285280
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
286-
testGen.setTargetForSource(literals_foo_c);
287281

288282
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
289283
ASSERT_TRUE(status.ok()) << status.error_message();
@@ -292,7 +286,6 @@ namespace {
292286
auto request = createFileRequest(projectName, suitePath, buildDirRelativePath,
293287
srcPaths, literals_foo_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true);
294288
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
295-
testGen.setTargetForSource(literals_foo_c);
296289

297290
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
298291
ASSERT_TRUE(status.ok()) << status.error_message();

server/test/framework/Syntax_Tests.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2242,7 +2242,6 @@ namespace {
22422242
srcPaths, linked_list_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true,
22432243
false);
22442244
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
2245-
testGen.setTargetForSource(linked_list_c);
22462245
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
22472246
ASSERT_TRUE(status.ok()) << status.error_message();
22482247
EXPECT_GE(testUtils::getNumberOfTests(testGen.tests), 2);
@@ -2275,7 +2274,6 @@ namespace {
22752274
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,
22762275
srcPaths, tree_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true, false);
22772276
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
2278-
testGen.setTargetForSource(tree_c);
22792277
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
22802278
ASSERT_TRUE(status.ok()) << status.error_message();
22812279
EXPECT_GE(testUtils::getNumberOfTests(testGen.tests), 2);

0 commit comments

Comments
 (0)