Skip to content

Commit e76ac83

Browse files
committed
Fix problem with stdin-read variable in klee and add test for launching all generated tests in file.c and input_output.c
1 parent 7d4cee9 commit e76ac83

File tree

2 files changed

+77
-1
lines changed

2 files changed

+77
-1
lines changed

server/test/framework/Syntax_Tests.cpp

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3223,6 +3223,44 @@ namespace {
32233223
);
32243224
}
32253225

3226+
TEST_F(Syntax_Test, run_tests_for_input_output_c) {
3227+
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,
3228+
srcPaths, input_output_c,
3229+
GrpcUtils::UTBOT_AUTO_TARGET_PATH, true, false);
3230+
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
3231+
testGen.setTargetForSource(input_output_c);
3232+
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
3233+
ASSERT_TRUE(status.ok()) << status.error_message();
3234+
EXPECT_EQ(testUtils::getNumberOfTests(testGen.tests), 63); // 61 regression tests and 2 error
3235+
3236+
fs::path testsDirPath = getTestFilePath("tests");
3237+
3238+
fs::path input_output_test_cpp = Paths::sourcePathToTestPath(
3239+
utbot::ProjectContext(projectName, suitePath, testsDirPath, buildDirRelativePath),
3240+
input_output_c);
3241+
auto testFilter = GrpcUtils::createTestFilterForFile(input_output_test_cpp);
3242+
auto runRequest = testUtils::createCoverageAndResultsRequest(
3243+
projectName, suitePath, testsDirPath, buildDirRelativePath, std::move(testFilter));
3244+
3245+
static auto coverageAndResultsWriter =
3246+
std::make_unique<ServerCoverageAndResultsWriter>(nullptr);
3247+
CoverageAndResultsGenerator coverageGenerator{ runRequest.get(),
3248+
coverageAndResultsWriter.get() };
3249+
utbot::SettingsContext settingsContext{
3250+
true, false, 45, 30, false, false, ErrorMode::FAILING
3251+
};
3252+
coverageGenerator.generate(false, settingsContext);
3253+
3254+
EXPECT_FALSE(coverageGenerator.hasExceptions());
3255+
ASSERT_TRUE(coverageGenerator.getCoverageMap().empty());
3256+
3257+
auto resultMap = coverageGenerator.getTestResultMap();
3258+
auto tests = coverageGenerator.getTestsToLaunch();
3259+
3260+
StatusCountMap expectedStatusCountMap{ {testsgen::TEST_PASSED, 61} };
3261+
testUtils::checkStatusesCount(resultMap, tests, expectedStatusCountMap);
3262+
}
3263+
32263264
TEST_F(Syntax_Test, file_fgetc) {
32273265
auto [testGen, status] = createTestForFunction(file_c, 5);
32283266

@@ -3377,6 +3415,44 @@ namespace {
33773415
);
33783416
}
33793417

3418+
TEST_F(Syntax_Test, run_tests_for_file_c) {
3419+
auto request =
3420+
testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath, srcPaths,
3421+
file_c, GrpcUtils::UTBOT_AUTO_TARGET_PATH, true, false);
3422+
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
3423+
testGen.setTargetForSource(file_c);
3424+
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
3425+
ASSERT_TRUE(status.ok()) << status.error_message();
3426+
EXPECT_EQ(testUtils::getNumberOfTests(testGen.tests), 33);
3427+
3428+
fs::path testsDirPath = getTestFilePath("tests");
3429+
3430+
fs::path file_test_cpp = Paths::sourcePathToTestPath(
3431+
utbot::ProjectContext(projectName, suitePath, testsDirPath, buildDirRelativePath),
3432+
file_c);
3433+
auto testFilter = GrpcUtils::createTestFilterForFile(file_test_cpp);
3434+
auto runRequest = testUtils::createCoverageAndResultsRequest(
3435+
projectName, suitePath, testsDirPath, buildDirRelativePath, std::move(testFilter));
3436+
3437+
static auto coverageAndResultsWriter =
3438+
std::make_unique<ServerCoverageAndResultsWriter>(nullptr);
3439+
CoverageAndResultsGenerator coverageGenerator{ runRequest.get(),
3440+
coverageAndResultsWriter.get() };
3441+
utbot::SettingsContext settingsContext{
3442+
true, false, 45, 0, false, false, ErrorMode::FAILING
3443+
};
3444+
coverageGenerator.generate(false, settingsContext);
3445+
3446+
EXPECT_FALSE(coverageGenerator.hasExceptions());
3447+
ASSERT_TRUE(coverageGenerator.getCoverageMap().empty());
3448+
3449+
auto resultMap = coverageGenerator.getTestResultMap();
3450+
auto tests = coverageGenerator.getTestsToLaunch();
3451+
3452+
StatusCountMap expectedStatusCountMap{ { testsgen::TEST_PASSED, 33 } };
3453+
testUtils::checkStatusesCount(resultMap, tests, expectedStatusCountMap);
3454+
}
3455+
33803456
template<typename T>
33813457
bool checkBitfieldFit(const std::shared_ptr<tests::AbstractValueView> &fieldView, size_t size) {
33823458
T val = StringUtils::stot<T>(fieldView->getEntryValue(nullptr));

submodules/klee

0 commit comments

Comments
 (0)