From bf4e1b8fdc3088c84cae373607bb11c5db540bfe Mon Sep 17 00:00:00 2001 From: Alexander Batischev Date: Sun, 23 Oct 2016 17:40:33 +0300 Subject: [PATCH] Test cache::do_vacuum --- src/cache.cpp | 2 +- test/cache.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/cache.cpp b/src/cache.cpp index e6fb22a1..fdb25cfb 100644 --- a/src/cache.cpp +++ b/src/cache.cpp @@ -542,7 +542,7 @@ void cache::delete_item(const std::shared_ptr item) { void cache::do_vacuum() { std::lock_guard lock(mtx); - run_sql_nothrow("VACUUM;"); + run_sql("VACUUM;"); } void cache::cleanup_cache(std::vector>& feeds) { diff --git a/test/cache.cpp b/test/cache.cpp index 129debd0..81808ae1 100644 --- a/test/cache.cpp +++ b/test/cache.cpp @@ -777,3 +777,17 @@ TEST_CASE("externalize_rssfeed resets \"unread\" field if item's content changed REQUIRE(feed->items()[0]->unread()); } } + +TEST_CASE("do_vacuum doesn't throw an exception") { + TestHelpers::TempFile dbfile; + configcontainer cfg; + std::unique_ptr rsscache( new cache(dbfile.getPath(), &cfg) ); + rss_parser parser("file://data/rss.xml", rsscache.get(), &cfg, nullptr); + std::shared_ptr feed = parser.parse(); + rsscache->externalize_rssfeed(feed, false); + + REQUIRE_NOTHROW(rsscache->do_vacuum()); + + // Checking that cache can still be opened + REQUIRE_NOTHROW(rsscache.reset( new cache(dbfile.getPath(), &cfg) )); +}