forked from qt-creator/qt-creator
ClangPchManager: Fix transactions in precompiled header storage
Change-Id: Ia0333ef7110c97a42d73c70c33157849323fb34d Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -133,10 +133,11 @@ public:
|
||||
auto value = fetchSystemPrecompiledHeaderPathStatement.template value<FilePath>(
|
||||
projectPartId.projectPathId);
|
||||
|
||||
transaction.commit();
|
||||
|
||||
if (value)
|
||||
return *value;
|
||||
|
||||
transaction.commit();
|
||||
} catch (const Sqlite::StatementIsBusy) {
|
||||
return fetchSystemPrecompiledHeaderPath(projectPartId);
|
||||
}
|
||||
@@ -152,10 +153,11 @@ public:
|
||||
auto value = fetchPrecompiledHeaderStatement.template value<FilePath>(
|
||||
projectPartId.projectPathId);
|
||||
|
||||
transaction.commit();
|
||||
|
||||
if (value)
|
||||
return *value;
|
||||
|
||||
transaction.commit();
|
||||
} catch (const Sqlite::StatementIsBusy) {
|
||||
return fetchPrecompiledHeader(projectPartId);
|
||||
}
|
||||
@@ -171,10 +173,11 @@ public:
|
||||
auto value = fetchPrecompiledHeadersStatement.template value<PchPaths, 2>(
|
||||
projectPartId.projectPathId);
|
||||
|
||||
transaction.commit();
|
||||
|
||||
if (value)
|
||||
return *value;
|
||||
|
||||
transaction.commit();
|
||||
} catch (const Sqlite::StatementIsBusy) {
|
||||
return fetchPrecompiledHeaders(projectPartId);
|
||||
}
|
||||
|
@@ -224,6 +224,18 @@ TEST_F(PrecompiledHeaderStorage, FetchSystemPrecompiledHeaderCalls)
|
||||
storage.fetchSystemPrecompiledHeaderPath(1);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchSystemPrecompiledHeaderCallsWithReturnValue)
|
||||
{
|
||||
InSequence s;
|
||||
|
||||
EXPECT_CALL(database, deferredBegin());
|
||||
EXPECT_CALL(fetchSystemPrecompiledHeaderPathStatement, valueReturnFilePath(TypedEq<int>(1)))
|
||||
.WillOnce(Return(ClangBackEnd::FilePath{}));
|
||||
EXPECT_CALL(database, commit());
|
||||
|
||||
storage.fetchSystemPrecompiledHeaderPath(1);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchSystemPrecompiledHeader)
|
||||
{
|
||||
EXPECT_CALL(fetchSystemPrecompiledHeaderPathStatement, valueReturnFilePath(TypedEq<int>(1)))
|
||||
@@ -263,6 +275,16 @@ TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeaderCallsValueInStatement)
|
||||
storage.fetchPrecompiledHeader(25);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeaderCallsWithValue)
|
||||
{
|
||||
EXPECT_CALL(database, deferredBegin());
|
||||
EXPECT_CALL(fetchPrecompiledHeaderStatement, valueReturnFilePath(Eq(25)))
|
||||
.WillOnce(Return(ClangBackEnd::FilePath{}));
|
||||
EXPECT_CALL(database, commit());
|
||||
|
||||
storage.fetchPrecompiledHeader(25);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeaderIsBusy)
|
||||
{
|
||||
InSequence s;
|
||||
@@ -305,6 +327,16 @@ TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeaderCalls)
|
||||
storage.fetchPrecompiledHeaders(25);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeaderCallsWithReturnValue)
|
||||
{
|
||||
EXPECT_CALL(database, deferredBegin());
|
||||
EXPECT_CALL(fetchPrecompiledHeadersStatement, valueReturnPchPaths(Eq(25)))
|
||||
.WillOnce(Return(ClangBackEnd::PchPaths{}));
|
||||
EXPECT_CALL(database, commit());
|
||||
|
||||
storage.fetchPrecompiledHeaders(25);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchPrecompiledHeadersIsBusy)
|
||||
{
|
||||
InSequence s;
|
||||
@@ -373,6 +405,18 @@ TEST_F(PrecompiledHeaderStorage, FetchTimeStampsCalls)
|
||||
storage.fetchTimeStamps(23);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchTimeStampsCallsWithReturnValue)
|
||||
{
|
||||
InSequence s;
|
||||
|
||||
EXPECT_CALL(database, deferredBegin());
|
||||
EXPECT_CALL(fetchTimeStampsStatement, valuesReturnPrecompiledHeaderTimeStamps(Eq(23)))
|
||||
.WillOnce(Return(ClangBackEnd::PrecompiledHeaderTimeStamps{}));
|
||||
EXPECT_CALL(database, commit());
|
||||
|
||||
storage.fetchTimeStamps(23);
|
||||
}
|
||||
|
||||
TEST_F(PrecompiledHeaderStorage, FetchTimeStampsBusy)
|
||||
{
|
||||
InSequence s;
|
||||
|
Reference in New Issue
Block a user