feat: load the user's mpv.conf

This commit is contained in:
tri committed 2026-10-28 00:03:01 +07:00
1 parent fe2f159660
commit 6b5742b2ca
11 files changed
+298 -6

No files matched your search

+6 -1
View File
@@ -1,4 +1,9 @@
ecm_add_test(subtitleparsertest.cpp
TEST_NAME subtitleparsertest
LINK_LIBRARIES qtpotato_subtitles Qt6::Test
LINK_LIBRARIES qtpotato_core Qt6::Test
)
ecm_add_test(mpvuserconfigtest.cpp
TEST_NAME mpvuserconfigtest
LINK_LIBRARIES qtpotato_core Qt6::Test
)
+39
View File
@@ -0,0 +1,39 @@
#include "mpvuserconfig.h"
#include <QTest>
using namespace Qt::Literals::StringLiterals;
class MpvUserConfigTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void expandsConfigDirPaths()
{
const auto prepared = MpvUserConfig::prepare(u"glsl-shaders=\"~~/shaders/a.glsl\"\ninclude=~~home/extra.conf\n"_s, u"/home/me/.config/mpv"_s);
QCOMPARE(prepared.content, u"glsl-shaders=\"/home/me/.config/mpv/shaders/a.glsl\"\ninclude=/home/me/.config/mpv/extra.conf\n"_s);
QVERIFY(prepared.skippedOptions.isEmpty());
}
void skipsOptionsThatBreakEmbedding()
{
const QString conf = u"# comment\nvo=gpu-next\nhwdec=auto\n[big]\nno-fs\n--idle=no\n vo = gpu\nvolume=50\n"_s;
const auto prepared = MpvUserConfig::prepare(conf, u"/c"_s);
QCOMPARE(prepared.skippedOptions, (QStringList{u"vo"_s, u"fs"_s, u"idle"_s}));
QCOMPARE(prepared.content,
u"# comment\n# skipped by QtPotato: vo=gpu-next\nhwdec=auto\n[big]\n# skipped by QtPotato: no-fs\n"
"# skipped by QtPotato: --idle=no\n# skipped by QtPotato: vo = gpu\nvolume=50\n"_s);
}
void keepsSimilarlyNamedOptions()
{
// "vo" must not catch "volume" or "vo-..." style options.
const auto prepared = MpvUserConfig::prepare(u"volume=70\nvideo-sync=display-resample\nfs-screen=1\n"_s, u"/c"_s);
QVERIFY(prepared.skippedOptions.isEmpty());
}
};
QTEST_GUILESS_MAIN(MpvUserConfigTest)
#include "mpvuserconfigtest.moc"