Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove CHATTERINO_TEST definition #4526

Merged
merged 9 commits into from
Apr 9, 2023
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
- Dev: Add scripting capabilities with Lua (#4341, #4504)
- Dev: Conan 2.0 is now used instead of Conan 1.0. (#4417)
- Dev: Added tests and benchmarks for `LinkParser`. (#4436)
- Dev: Removed `CHATTERINO_TEST` definitions. (#4526)

## 2.4.2

Expand Down
4 changes: 0 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,6 @@ endif()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if (BUILD_TESTS OR BUILD_BENCHMARKS)
add_definitions(-DCHATTERINO_TEST)
endif ()

# Generate resource files
include(cmake/resources/generate_resources.cmake)

Expand Down
4 changes: 0 additions & 4 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)

target_link_libraries(${PROJECT_NAME} PRIVATE benchmark::benchmark)

target_compile_definitions(${PROJECT_NAME} PRIVATE
CHATTERINO_TEST
)

set_target_properties(${PROJECT_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
Expand Down
24 changes: 9 additions & 15 deletions src/messages/Image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
#include "common/QLogging.hpp"
#include "debug/AssertInGuiThread.hpp"
#include "debug/Benchmark.hpp"
#include "singletons/Emotes.hpp"
#include "singletons/helper/GifTimer.hpp"
#include "singletons/WindowManager.hpp"
#include "util/DebugCount.hpp"
#include "util/PostToThread.hpp"

#include <boost/functional/hash.hpp>
#include <QBuffer>
Expand All @@ -20,13 +25,6 @@
#include <functional>
#include <queue>
#include <thread>
#ifndef CHATTERINO_TEST
# include "singletons/Emotes.hpp"
#endif
#include "singletons/helper/GifTimer.hpp"
#include "singletons/WindowManager.hpp"
#include "util/DebugCount.hpp"
#include "util/PostToThread.hpp"

// Duration between each check of every Image instance
const auto IMAGE_POOL_CLEANUP_INTERVAL = std::chrono::minutes(1);
Expand Down Expand Up @@ -55,12 +53,10 @@ namespace detail {
{
DebugCount::increase("animated images");

#ifndef CHATTERINO_TEST
this->gifTimerConnection_ =
getApp()->emotes->gifTimer.signal.connect([this] {
this->advance();
});
#endif
}

auto totalLength =
Expand All @@ -75,11 +71,9 @@ namespace detail {
}
else
{
#ifndef CHATTERINO_TEST
this->durationOffset_ = std::min<int>(
int(getApp()->emotes->gifTimer.position() % totalLength),
60000);
#endif
}
this->processOffset();
}
Expand Down Expand Up @@ -228,9 +222,8 @@ namespace detail {
}
}

#ifndef CHATTERINO_TEST
getApp()->windows->forceLayoutChannelViews();
#endif

loadedEventQueued = false;
}

Expand Down Expand Up @@ -558,8 +551,9 @@ void Image::expireFrames()
#ifndef DISABLE_IMAGE_EXPIRATION_POOL

ImageExpirationPool::ImageExpirationPool()
: freeTimer_(new QTimer)
{
QObject::connect(&this->freeTimer_, &QTimer::timeout, [this] {
QObject::connect(this->freeTimer_, &QTimer::timeout, [this] {
if (isGuiThread())
{
this->freeOld();
Expand All @@ -572,7 +566,7 @@ ImageExpirationPool::ImageExpirationPool()
}
});

this->freeTimer_.start(
this->freeTimer_->start(
std::chrono::duration_cast<std::chrono::milliseconds>(
IMAGE_POOL_CLEANUP_INTERVAL));
}
Expand Down
10 changes: 1 addition & 9 deletions src/messages/Image.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,6 @@
#include <memory>
#include <mutex>

#ifdef CHATTERINO_TEST
// When running tests, the ImageExpirationPool destructor can be called before
// all images are deleted, leading to a use-after-free of its mutex. This
// happens despite the lifetime of the ImageExpirationPool being (apparently)
// static. Therefore, just disable it during testing.
# define DISABLE_IMAGE_EXPIRATION_POOL
#endif

namespace chatterino {
namespace detail {
template <typename Image>
Expand Down Expand Up @@ -136,7 +128,7 @@ class ImageExpirationPool

private:
// Timer to periodically run freeOld()
QTimer freeTimer_;
QTimer *freeTimer_;
std::map<Image *, std::weak_ptr<Image>> allImages_;
std::mutex mutex_;
};
Expand Down
2 changes: 0 additions & 2 deletions src/messages/ImageSet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,7 @@ const ImagePtr &ImageSet::getImage3() const

const std::shared_ptr<Image> &getImagePriv(const ImageSet &set, float scale)
{
#ifndef CHATTERINO_TEST
scale *= getSettings()->emoteScale;
#endif

int quality = 1;

Expand Down
6 changes: 0 additions & 6 deletions src/providers/emoji/Emojis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,7 @@ void Emojis::sortEmojis()

void Emojis::loadEmojiSet()
{
#ifndef CHATTERINO_TEST
getSettings()->emojiSet.connect([this](const auto &emojiSet) {
#else
const QString emojiSet = "twitter";
#endif
this->emojis.each([=](const auto &name,
std::shared_ptr<EmojiData> &emoji) {
QString emojiSetToUse = emojiSet;
Expand Down Expand Up @@ -265,9 +261,7 @@ void Emojis::loadEmojiSet()
EmoteName{emoji->value}, ImageSet{Image::fromUrl({url}, 0.35)},
Tooltip{":" + emoji->shortCodes[0] + ":<br/>Emoji"}, Url{}});
});
#ifndef CHATTERINO_TEST
});
#endif
}

std::vector<boost::variant<EmotePtr, QString>> Emojis::parse(
Expand Down
4 changes: 0 additions & 4 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)

target_link_libraries(${PROJECT_NAME} PRIVATE gtest gmock)

target_compile_definitions(${PROJECT_NAME} PRIVATE
CHATTERINO_TEST
)

set_target_properties(${PROJECT_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
Expand Down