diff --git a/src/core/qgsfiledownloader.cpp b/src/core/qgsfiledownloader.cpp old mode 100755 new mode 100644 index dd465117f3f..e890a9ef9ea --- a/src/core/qgsfiledownloader.cpp +++ b/src/core/qgsfiledownloader.cpp @@ -25,14 +25,14 @@ #include #endif -QgsFileDownloader::QgsFileDownloader(const QUrl &url, const QString &outputFileName, const QString &authcfg , bool delayStart) +QgsFileDownloader::QgsFileDownloader( const QUrl &url, const QString &outputFileName, const QString &authcfg, bool delayStart ) : mUrl( url ) , mDownloadCanceled( false ) { mFile.setFileName( outputFileName ); mAuthCfg = authcfg; if ( !delayStart ) - startDownload(); + startDownload(); } @@ -124,7 +124,12 @@ void QgsFileDownloader::error( const QString &errorMessage ) void QgsFileDownloader::onReadyRead() { Q_ASSERT( mReply ); - if ( ! mFile.isOpen() && ! mFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) + if ( mFile.fileName().isEmpty() ) + { + error( tr( "No output filename specified" ) ); + onFinished(); + } + else if ( ! mFile.isOpen() && ! mFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) { error( tr( "Cannot open output file: %1" ).arg( mFile.fileName() ) ); onFinished(); @@ -141,14 +146,19 @@ void QgsFileDownloader::onFinished() // when canceled if ( ! mErrors.isEmpty() || mDownloadCanceled ) { - mFile.close(); - mFile.remove(); + if ( mFile.isOpen() ) + mFile.close(); + if ( mFile.exists() ) + mFile.remove(); } else { // download finished normally - mFile.flush(); - mFile.close(); + if ( mFile.isOpen() ) + { + mFile.flush(); + mFile.close(); + } // get redirection url QVariant redirectionTarget = mReply->attribute( QNetworkRequest::RedirectionTargetAttribute ); diff --git a/tests/src/gui/testqgsfiledownloader.cpp b/tests/src/gui/testqgsfiledownloader.cpp old mode 100755 new mode 100644 index b7aa1ec6771..483aa0c870d --- a/tests/src/gui/testqgsfiledownloader.cpp +++ b/tests/src/gui/testqgsfiledownloader.cpp @@ -185,7 +185,7 @@ void TestQgsFileDownloader::testInvalidFile() QVERIFY( !mCompleted ); QVERIFY( mError ); QVERIFY( !mCanceled ); - QCOMPARE( mErrorMessage, QString( "Cannot open output file: " ) ); + QCOMPARE( mErrorMessage, QString( "No output filename specified" ) ); } void TestQgsFileDownloader::testInvalidUrl() diff --git a/tests/src/python/test_qgsfiledownloader.py b/tests/src/python/test_qgsfiledownloader.py index f10ba0aea35..4ad30830755 100755 --- a/tests/src/python/test_qgsfiledownloader.py +++ b/tests/src/python/test_qgsfiledownloader.py @@ -107,7 +107,7 @@ class TestQgsFileDownloader(unittest.TestCase): self.assertFalse(self.completed_was_called) self.assertFalse(self.canceled_was_called) self.assertTrue(self.error_was_called) - self.assertEqual(self.error_args[1], [u"Cannot open output file: "]) + self.assertEqual(self.error_args[1], [u"No output filename specified"]) def test_BlankUrl(self): destination = tempfile.mktemp()