Fix XML parsers to output file URLs.
This commit is contained in:
parent
7ad2c38333
commit
4836b8d420
@ -61,3 +61,11 @@ void XMLParser::IgnoreElement(QXmlStreamReader* reader) const {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString XMLParser::MakeRelativeTo(const QString& filename_or_url, const QDir& dir) const {
|
||||
QString file = ParserBase::MakeRelativeTo(filename_or_url, dir);
|
||||
if (!file.contains(QRegExp("^[a-z]+://"))) {
|
||||
return QUrl::fromLocalFile(file).toString();
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
@ -33,6 +33,8 @@ class XMLParser : public ParserBase {
|
||||
bool ParseUntilElement(QXmlStreamReader* reader, const QString& element) const;
|
||||
void IgnoreElement(QXmlStreamReader* reader) const;
|
||||
|
||||
QString MakeRelativeTo(const QString& filename, const QDir& dir) const;
|
||||
|
||||
class StreamElement : public boost::noncopyable {
|
||||
public:
|
||||
StreamElement(const QString& name, QXmlStreamWriter* stream) : stream_(stream) {
|
||||
|
@ -113,3 +113,25 @@ TEST_F(XSPFParserTest, SavesSong) {
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<title>foo</title>"));
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<creator>bar</creator>"));
|
||||
}
|
||||
|
||||
TEST_F(XSPFParserTest, SavesLocalFile) {
|
||||
QByteArray data;
|
||||
QBuffer buffer(&data);
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
XSPFParser parser;
|
||||
Song one;
|
||||
one.set_filename("/bar/foo.mp3");
|
||||
one.set_filetype(Song::Type_Mpeg);
|
||||
one.set_title("foo");
|
||||
one.set_length(123);
|
||||
one.set_artist("bar");
|
||||
SongList songs;
|
||||
songs << one;
|
||||
|
||||
parser.Save(songs, &buffer);
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<location>file:///bar/foo.mp3</location>"));
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<duration>123000</duration>"));
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<title>foo</title>"));
|
||||
EXPECT_THAT(data.constData(), HasSubstr("<creator>bar</creator>"));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user