References to issues.qgis.org updated

This commit is contained in:
Jorge Gustavo Rocha 2019-06-12 00:10:43 +01:00
parent a9e3950841
commit 38c8e757aa
76 changed files with 125 additions and 131 deletions

13
BUGS
View File

@ -1,14 +1,11 @@
Help I think I found a bug! Help I think I found a bug!
--------------------------- ---------------------------
If you find a bug in QGIS, you can search for it If you find a bug in QGIS, first check if it has been reported:
https://issues.qgis.org/projects/qgis/search?issues=1 https://github.com/qgis/QGIS/issues
If you can't find an existing ticket, report it using the QGIS ticket/bug database at:
https://issues.qgis.org/projects/qgis/issues/new
If you can't find an existing ticket, report a new one, using the bug report template provided.
Some hints about when you should file a bug: Some hints about when you should file a bug:
@ -22,9 +19,7 @@ Some hints about when you should file a bug:
behave doesn't match ours. Hey we are all humans it can happen... behave doesn't match ours. Hey we are all humans it can happen...
- Always check that your bug has not already been filed by someone else since - Always check that your bug has not already been filed by someone else since
dealing with duplicate tickets causes a lot of time wasting. dealing with duplicate tickets causes a lot of time wasting.
- Always provide contact details and make sure you are subscribed to the - Be prepared to provided further feedback after the initial triage.
ticket entry (either by adding yourself to CC field or by logging in before
filing the ticket).
- Don't be offended if we don't see tickets as having the same priority as you - Don't be offended if we don't see tickets as having the same priority as you
do. While we appreciate it's inconvenient if some issue prevents you doing do. While we appreciate it's inconvenient if some issue prevents you doing
your work, we need to take the big picture view of things and focus on your work, we need to take the big picture view of things and focus on

View File

@ -227,7 +227,7 @@ IF(WITH_CORE)
# https://sourceforge.net/p/mingw-w64/bugs/527/ # https://sourceforge.net/p/mingw-w64/bugs/527/
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80816 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80816
# also OpenBSD has no thread_local support, see https://issues.qgis.org/issues/17351 # also OpenBSD has no thread_local support, see https://github.com/qgis/QGIS/issues/25248
ELSE (MINGW OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") ELSE (MINGW OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
IF (WITH_THREAD_LOCAL) IF (WITH_THREAD_LOCAL)

View File

@ -1,6 +1,6 @@
--- ---
Bug-Database: https://issues.qgis.org/projects/qgis/issues Bug-Database: https://github.com/qgis/QGIS/issues
Bug-Submit: https://issues.qgis.org/projects/qgis/issues/new Bug-Submit: https://github.com/qgis/QGIS/issues
Contact: qgis-developer@lists.osgeo.org Contact: qgis-developer@lists.osgeo.org
Donation: https://qgis.org/en/site/getinvolved/donations.html Donation: https://qgis.org/en/site/getinvolved/donations.html
Name: QGIS Name: QGIS

View File

@ -59,9 +59,8 @@ users and developers.
\section index_bugs Bug Reporting \section index_bugs Bug Reporting
If you think you have found a bug, please report it using our <a If you think you have found a bug, please report it using our <a
href="https://issues.qgis.org/projects/qgis">bug tracker</a>. When reporting bugs, href="https://github.com/qgis/QGIS/issues">bug tracker</a>. When reporting bugs,
please include some contact information in case we need help with replicating please be available to follow up on your initial report.
your issue.
\section index_ircchannel IRC channel \section index_ircchannel IRC channel
Some QGIS users and developers can also often be found in the Some QGIS users and developers can also often be found in the

View File

@ -10,7 +10,7 @@
<metadata_license>MIT</metadata_license> <metadata_license>MIT</metadata_license>
<project_license>GPL-2.0+</project_license> <project_license>GPL-2.0+</project_license>
<url type="bugtracker">https://issues.qgis.org/projects/qgis/issues/</url> <url type="bugtracker">https://github.com/qgis/QGIS/issues</url>
<url type="donation">https://qgis.org/en/site/getinvolved/donations.html</url> <url type="donation">https://qgis.org/en/site/getinvolved/donations.html</url>
<url type="faq">https://qgis.org/en/site/getinvolved/faq/index.html</url> <url type="faq">https://qgis.org/en/site/getinvolved/faq/index.html</url>
<url type="help">https://qgis.org/en/docs/index.html</url> <url type="help">https://qgis.org/en/docs/index.html</url>

View File

@ -9,7 +9,7 @@ icon=images/MetaSearch.svg
author=Tom Kralidis author=Tom Kralidis
email=tomkralidis@gmail.com email=tomkralidis@gmail.com
tags=web,catalog,service,metadata,csw tags=web,catalog,service,metadata,csw
homepage=http://qgis.org/ homepage=https://qgis.org/
tracker=https://issues.qgis.org/projects/qgis/issues?category_id=107&set_filter=1&status_id=o tracker=https://issues.qgis.org/projects/qgis/issues?category_id=107&set_filter=1&status_id=o
repository=https://github.com/qgis/QGIS/tree/master/python/plugins/MetaSearch repository=https://github.com/qgis/QGIS/tree/master/python/plugins/MetaSearch
experimental=False experimental=False

View File

@ -48,8 +48,8 @@ class TestDBManagerPostgisConnector(unittest.TestCase):
connector._close_cursor(r) connector._close_cursor(r)
return val return val
# See https://issues.qgis.org/issues/16625 # See https://github.com/qgis/QGIS/issues/24525
# and https://issues.qgis.org/issues/10600 # and https://github.com/qgis/QGIS/issues/19005
def test_dbnameLessURI(self): def test_dbnameLessURI(self):
c = PostGisDBConnector(QgsDataSourceUri()) c = PostGisDBConnector(QgsDataSourceUri())
self.assertIsInstance(c, PostGisDBConnector) self.assertIsInstance(c, PostGisDBConnector)

View File

@ -66,7 +66,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
# Remove temporary service file # Remove temporary service file
os.unlink(self.tmpservicefile) os.unlink(self.tmpservicefile)
# See https://issues.qgis.org/issues/16625 # See https://github.com/qgis/QGIS/issues/24525
def test_rasterTableGdalURI(self): def test_rasterTableGdalURI(self):
@ -92,8 +92,8 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
obj = QObject() # needs to be kept alive obj = QObject() # needs to be kept alive
# Test for empty URI # Test for empty URI
# See https://issues.qgis.org/issues/16625 # See https://github.com/qgis/QGIS/issues/24525
# and https://issues.qgis.org/issues/10600 # and https://github.com/qgis/QGIS/issues/19005
expected_dbname = self.testdb expected_dbname = self.testdb
os.environ['PGDATABASE'] = expected_dbname os.environ['PGDATABASE'] = expected_dbname
@ -110,7 +110,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
check_rasterTableGdalURI(expected_dbname) check_rasterTableGdalURI(expected_dbname)
# Test for service-only URI # Test for service-only URI
# See https://issues.qgis.org/issues/16626 # See https://github.com/qgis/QGIS/issues/24526
os.environ['PGDATABASE'] = 'fake' os.environ['PGDATABASE'] = 'fake'
database = PGDatabase(obj, QgsDataSourceUri('service=dbmanager')) database = PGDatabase(obj, QgsDataSourceUri('service=dbmanager'))
@ -124,7 +124,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
check_rasterTableGdalURI(expected_dbname) check_rasterTableGdalURI(expected_dbname)
# See http://issues.qgis.org/issues/16833 # See https://github.com/qgis/QGIS/issues/24732
def test_unicodeInQuery(self): def test_unicodeInQuery(self):
os.environ['PGDATABASE'] = self.testdb os.environ['PGDATABASE'] = self.testdb
obj = QObject() # needs to be kept alive obj = QObject() # needs to be kept alive

View File

@ -11,8 +11,8 @@ email=volayaf@gmail.com
icon=:/images/themes/default/processingAlgorithm.svg icon=:/images/themes/default/processingAlgorithm.svg
homepage=http://qgis.org homepage=https://qgis.org
tracker=https://issues.qgis.org/projects/qgis/issues tracker=https://github.com/qgis/QGIS/issues
repository=https://github.com/qgis/QGIS repository=https://github.com/qgis/QGIS
hasProcessingProvider=yes hasProcessingProvider=yes

View File

@ -2765,7 +2765,7 @@ class TestGdalOgrToPostGis(unittest.TestCase):
def tearDownClass(cls): def tearDownClass(cls):
pass pass
# See https://issues.qgis.org/issues/15706 # See https://github.com/qgis/QGIS/issues/23629
def test_getConnectionString(self): def test_getConnectionString(self):
obj = OgrToPostGis() obj = OgrToPostGis()
obj.initAlgorithm({}) obj.initAlgorithm({})

View File

@ -51,7 +51,7 @@ Source5: %{name}-server-README.fedora
Source6: %{name}-mime.xml Source6: %{name}-mime.xml
# Fix builds on 64-bit machines # Fix builds on 64-bit machines
# https://issues.qgis.org/issues/15602 # https://github.com/qgis/QGIS/issues/23525
# https://github.com/qgis/QGIS/commit/718581ffb12b723f9a3c0ae01b7ec2d8aed9d4bb.patch # https://github.com/qgis/QGIS/commit/718581ffb12b723f9a3c0ae01b7ec2d8aed9d4bb.patch
Patch0: %{name}-lib64.patch Patch0: %{name}-lib64.patch
@ -163,7 +163,7 @@ Requires: %{name}%{?_isa} = %{combinedversion}-%{release}
# This questions the sense of the libs package. # This questions the sense of the libs package.
# WARNING: Rebuild QGIS whenever a new version of GRASS is shipped! Even though # WARNING: Rebuild QGIS whenever a new version of GRASS is shipped! Even though
# the soname might stay the same, it won't work anymore. # the soname might stay the same, it won't work anymore.
# http://issues.qgis.org/issues/5274 # https://github.com/qgis/QGIS/issues/14999
Requires: grass%{?_isa} = %{grass_version} Requires: grass%{?_isa} = %{grass_version}
%description grass %description grass

View File

@ -220,7 +220,7 @@ QVariantMap QgsDissolveAlgorithm::processAlgorithm( const QVariantMap &parameter
if ( QgsWkbTypes::geometryType( result.wkbType() ) == QgsWkbTypes::LineGeometry ) if ( QgsWkbTypes::geometryType( result.wkbType() ) == QgsWkbTypes::LineGeometry )
result = result.mergeLines(); result = result.mergeLines();
// Geos may fail in some cases, let's try a slower but safer approach // Geos may fail in some cases, let's try a slower but safer approach
// See: https://issues.qgis.org/issues/20591 - Dissolve tool failing to produce outputs // See: https://github.com/qgis/QGIS/issues/28411 - Dissolve tool failing to produce outputs
if ( ! result.lastError().isEmpty() && parts.count() > 2 ) if ( ! result.lastError().isEmpty() && parts.count() > 2 )
{ {
if ( feedback->isCanceled() ) if ( feedback->isCanceled() )

View File

@ -188,7 +188,7 @@ void QgsLayoutLabelWidget::mInsertExpressionButton_clicked()
QString selText = mTextEdit->textCursor().selectedText(); QString selText = mTextEdit->textCursor().selectedText();
// html editor replaces newlines with Paragraph Separator characters - see https://issues.qgis.org/issues/19743 // html editor replaces newlines with Paragraph Separator characters - see https://github.com/qgis/QGIS/issues/27568
selText = selText.replace( QChar( 0x2029 ), QChar( '\n' ) ); selText = selText.replace( QChar( 0x2029 ), QChar( '\n' ) );
// edit the selected expression if there's one // edit the selected expression if there's one

View File

@ -583,7 +583,7 @@ void QgsAttributeTableDialog::runFieldCalculation( QgsVectorLayer *layer, const
mLayer->endEditCommand(); mLayer->endEditCommand();
// refresh table with updated values // refresh table with updated values
// fixes https://issues.qgis.org/issues/17312 // fixes https://github.com/qgis/QGIS/issues/25210
QgsAttributeTableModel *masterModel = mMainView->masterModel(); QgsAttributeTableModel *masterModel = mMainView->masterModel();
int modelColumn = masterModel->fieldCol( fieldindex ); int modelColumn = masterModel->fieldCol( fieldindex );
masterModel->reload( masterModel->index( 0, modelColumn ), masterModel->index( masterModel->rowCount() - 1, modelColumn ) ); masterModel->reload( masterModel->index( 0, modelColumn ), masterModel->index( masterModel->rowCount() - 1, modelColumn ) );

View File

@ -212,7 +212,7 @@ QgsFeatureList QgsClipboard::stringToFeatureList( const QString &string, const Q
// previous QgsOgrUtils::stringToFeatureList call // previous QgsOgrUtils::stringToFeatureList call
// Get the first value of a \t separated list. WKT clipboard pasted // Get the first value of a \t separated list. WKT clipboard pasted
// feature has first element the WKT geom. // feature has first element the WKT geom.
// This split is to fix the following issue: https://issues.qgis.org/issues/16870 // This split is to fix the following issue: https://github.com/qgis/QGIS/issues/24769
// Value separators are set in generateClipboardText // Value separators are set in generateClipboardText
QStringList fieldValues = row.split( '\t' ); QStringList fieldValues = row.split( '\t' );
if ( fieldValues.isEmpty() ) if ( fieldValues.isEmpty() )

View File

@ -522,7 +522,7 @@ void QgsFieldCalculator::setPrecisionMinMax()
bool precisionIsEnabled = minPrecType < maxPrecType; bool precisionIsEnabled = minPrecType < maxPrecType;
mOutputFieldPrecisionSpinBox->setEnabled( precisionIsEnabled ); mOutputFieldPrecisionSpinBox->setEnabled( precisionIsEnabled );
// Do not set min/max if it's disabled or we'll loose the default value, // Do not set min/max if it's disabled or we'll loose the default value,
// see https://issues.qgis.org/issues/19050 - QGIS saves integer field when // see https://github.com/qgis/QGIS/issues/26880 - QGIS saves integer field when
// I create a new real field through field calculator (Update field works as intended) // I create a new real field through field calculator (Update field works as intended)
if ( precisionIsEnabled ) if ( precisionIsEnabled )
{ {

View File

@ -62,7 +62,7 @@ static void throwGEOSException( const char *fmt, ... )
#ifdef _MSC_VER #ifdef _MSC_VER
// stupid stupid MSVC, *SOMETIMES* raises it's own exception if we throw GEOSException, resulting in a crash! // stupid stupid MSVC, *SOMETIMES* raises it's own exception if we throw GEOSException, resulting in a crash!
// see https://issues.qgis.org/issues/14752 // see https://github.com/qgis/QGIS/issues/22709
// if you want to test alternative fixes for this, run the testqgsexpression.cpp test suite - that will crash // if you want to test alternative fixes for this, run the testqgsexpression.cpp test suite - that will crash
// and burn on the "line_interpolate_point point" test if a GEOSException is thrown. // and burn on the "line_interpolate_point point" test if a GEOSException is thrown.
// TODO - find a real fix for the underlying issue // TODO - find a real fix for the underlying issue

View File

@ -138,7 +138,7 @@ void QgsLayerTree::writeXml( QDomElement &parentElement, const QgsReadWriteConte
for ( QgsMapLayer *layer : qgis::as_const( mCustomLayerOrder ) ) for ( QgsMapLayer *layer : qgis::as_const( mCustomLayerOrder ) )
{ {
// Safety belt, see https://issues.qgis.org/issues/19145 // Safety belt, see https://github.com/qgis/QGIS/issues/26975
// Crash when deleting an item from the layout legend // Crash when deleting an item from the layout legend
if ( ! layer ) if ( ! layer )
continue; continue;

View File

@ -186,7 +186,7 @@ QImage QgsLayoutExporter::renderPageToImage( int page, QSize imageSize, double d
{ {
// specified image size is wrong aspect ratio for paper rect - so ignore it and just use dpi // specified image size is wrong aspect ratio for paper rect - so ignore it and just use dpi
// this can happen e.g. as a result of data defined page sizes // this can happen e.g. as a result of data defined page sizes
// see https://issues.qgis.org/issues/18534 // see https://github.com/qgis/QGIS/issues/26422
imageSize = QSize(); imageSize = QSize();
} }

View File

@ -314,7 +314,7 @@ void QgsLabelingEngine::run( QgsRenderContext &context )
// features are pre-rotated but not scaled/translated, // features are pre-rotated but not scaled/translated,
// so we only disable rotation here. Ideally, they'd be // so we only disable rotation here. Ideally, they'd be
// also pre-scaled/translated, as suggested here: // also pre-scaled/translated, as suggested here:
// https://issues.qgis.org/issues/11856 // https://github.com/qgis/QGIS/issues/20071
QgsMapToPixel xform = mMapSettings.mapToPixel(); QgsMapToPixel xform = mMapSettings.mapToPixel();
xform.setMapRotation( 0, 0, 0 ); xform.setMapRotation( 0, 0, 0 );
#else #else

View File

@ -106,7 +106,7 @@ QString QgsMapSettingsUtils::worldFileContent( const QgsMapSettings &mapSettings
double c = r[0] * s[2] + r[1] * s[5] + r[2]; double c = r[0] * s[2] + r[1] * s[5] + r[2];
double d = r[3] * s[0] + r[4] * s[3]; double d = r[3] * s[0] + r[4] * s[3];
// Pixel YDim - almost always negative // Pixel YDim - almost always negative
// See https://en.wikipedia.org/wiki/World_file#cite_ref-3, https://issues.qgis.org/issues/18491 // See https://en.wikipedia.org/wiki/World_file#cite_ref-3, https://github.com/qgis/QGIS/issues/26379
double e = r[3] * s[1] + r[4] * s[4]; double e = r[3] * s[1] + r[4] * s[4];
double f = r[3] * s[2] + r[4] * s[5] + r[5]; double f = r[3] * s[2] + r[4] * s[5] + r[5];

View File

@ -80,7 +80,7 @@ bool QgsMapToPixel::updateMatrix()
{ {
QTransform newMatrix = transform(); QTransform newMatrix = transform();
// https://issues.qgis.org/issues/12757 // https://github.com/qgis/QGIS/issues/20856
if ( !newMatrix.isInvertible() ) if ( !newMatrix.isInvertible() )
return false; return false;

View File

@ -611,7 +611,7 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex )
catch ( const QgsException &e ) catch ( const QgsException &e )
{ {
Q_UNUSED( e ) Q_UNUSED( e )
// See https://issues.qgis.org/issues/12634 // See https://github.com/qgis/QGIS/issues/20749
QgsDebugMsg( QStringLiteral( "could not transform bounding box to map, skipping the snap filter (%1)" ).arg( e.what() ) ); QgsDebugMsg( QStringLiteral( "could not transform bounding box to map, skipping the snap filter (%1)" ).arg( e.what() ) );
} }
} }
@ -662,7 +662,7 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex )
catch ( const QgsException &e ) catch ( const QgsException &e )
{ {
Q_UNUSED( e ) Q_UNUSED( e )
// See https://issues.qgis.org/issues/12634 // See https://github.com/qgis/QGIS/issues/20749
QgsDebugMsg( QStringLiteral( "could not transform geometry to map, skipping the snap for it (%1)" ).arg( e.what() ) ); QgsDebugMsg( QStringLiteral( "could not transform geometry to map, skipping the snap for it (%1)" ).arg( e.what() ) );
continue; continue;
} }
@ -775,7 +775,7 @@ void QgsPointLocator::onFeatureAdded( QgsFeatureId fid )
catch ( const QgsException &e ) catch ( const QgsException &e )
{ {
Q_UNUSED( e ) Q_UNUSED( e )
// See https://issues.qgis.org/issues/12634 // See https://github.com/qgis/QGIS/issues/20749
QgsDebugMsg( QStringLiteral( "could not transform geometry to map, skipping the snap for it (%1)" ).arg( e.what() ) ); QgsDebugMsg( QStringLiteral( "could not transform geometry to map, skipping the snap for it (%1)" ).arg( e.what() ) );
return; return;
} }

View File

@ -49,7 +49,7 @@ bool QgsTileCache::tile( const QUrl &url, QImage &image )
image = QImage::fromData( imageData ); image = QImage::fromData( imageData );
// cache it as well (mutex is already locked) // cache it as well (mutex is already locked)
// Check for null because it could be a redirect (see: https://issues.qgis.org/issues/16427 ) // Check for null because it could be a redirect (see: https://github.com/qgis/QGIS/issues/24336 )
if ( ! image.isNull( ) ) if ( ! image.isNull( ) )
{ {
sTileCache.insert( url, new QImage( image ) ); sTileCache.insert( url, new QImage( image ) );

View File

@ -102,7 +102,7 @@ void QgsVectorLayerDiagramProvider::drawLabel( QgsRenderContext &context, pal::L
// features are pre-rotated but not scaled/translated, // features are pre-rotated but not scaled/translated,
// so we only disable rotation here. Ideally, they'd be // so we only disable rotation here. Ideally, they'd be
// also pre-scaled/translated, as suggested here: // also pre-scaled/translated, as suggested here:
// https://issues.qgis.org/issues/11856 // https://github.com/qgis/QGIS/issues/20071
QgsMapToPixel xform = context.mapToPixel(); QgsMapToPixel xform = context.mapToPixel();
xform.setMapRotation( 0, 0, 0 ); xform.setMapRotation( 0, 0, 0 );
#else #else

View File

@ -333,7 +333,7 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList &commitErrors )
// no yes => changeAttributeValues // no yes => changeAttributeValues
// yes yes => changeFeatures // yes yes => changeFeatures
// to fix https://issues.qgis.org/issues/15741 // to fix https://github.com/qgis/QGIS/issues/23663
// first of all check if feature to add is compatible with provider type // first of all check if feature to add is compatible with provider type
// this check have to be done before all checks to avoid to clear internal // this check have to be done before all checks to avoid to clear internal
// buffer if some of next steps success. // buffer if some of next steps success.

View File

@ -382,7 +382,7 @@ void QgsVectorLayerLabelProvider::drawLabelPrivate( pal::LabelPosition *label, Q
// features are pre-rotated but not scaled/translated, // features are pre-rotated but not scaled/translated,
// so we only disable rotation here. Ideally, they'd be // so we only disable rotation here. Ideally, they'd be
// also pre-scaled/translated, as suggested here: // also pre-scaled/translated, as suggested here:
// https://issues.qgis.org/issues/11856 // https://github.com/qgis/QGIS/issues/20071
QgsMapToPixel xform = context.mapToPixel(); QgsMapToPixel xform = context.mapToPixel();
xform.setMapRotation( 0, 0, 0 ); xform.setMapRotation( 0, 0, 0 );

View File

@ -19,7 +19,7 @@ originally part of the larger QgsRasterLayer class
***************************************************************************/ ***************************************************************************/
// Threshold for treating values as exact match. // Threshold for treating values as exact match.
// Set to 0.0 to support displaying small values (https://issues.qgis.org/issues/12581) // Set to 0.0 to support displaying small values (https://github.com/qgis/QGIS/issues/20706)
#define DOUBLE_DIFF_THRESHOLD 0.0 // 0.0000001 #define DOUBLE_DIFF_THRESHOLD 0.0 // 0.0000001
#include "qgslogger.h" #include "qgslogger.h"
@ -437,7 +437,7 @@ bool QgsColorRampShader::shade( double value, int *returnRedValue, int *returnGr
{ {
// Assign the color of the higher class for every pixel between two class breaks. // Assign the color of the higher class for every pixel between two class breaks.
// NOTE: The implementation has always been different than the documentation, // NOTE: The implementation has always been different than the documentation,
// which said lower class before, see https://issues.qgis.org/issues/13995 // which said lower class before, see https://github.com/qgis/QGIS/issues/22009
if ( overflow ) if ( overflow )
{ {
return false; return false;

View File

@ -2082,7 +2082,7 @@ void QgsSvgMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext
if ( context.renderContext().flags() & QgsRenderContext::Antialiasing ) if ( context.renderContext().flags() & QgsRenderContext::Antialiasing )
{ {
// workaround issue with nested QPictures forgetting antialiasing flag - see https://issues.qgis.org/issues/14960 // workaround issue with nested QPictures forgetting antialiasing flag - see https://github.com/qgis/QGIS/issues/22909
p->setRenderHint( QPainter::Antialiasing ); p->setRenderHint( QPainter::Antialiasing );
} }

View File

@ -423,7 +423,7 @@ bool QgsRuleBasedRenderer::Rule::startRender( QgsRenderContext &context, const Q
sf = QStringLiteral( "TRUE" ); sf = QStringLiteral( "TRUE" );
} }
// If we have more than 50 rules (to stay on the safe side) make a binary tree or SQLITE will fail, // If we have more than 50 rules (to stay on the safe side) make a binary tree or SQLITE will fail,
// see: http://issues.qgis.org/issues/19441 // see: https://github.com/qgis/QGIS/issues/27269
else if ( subfilters.count() > 50 ) else if ( subfilters.count() > 50 )
{ {
std::function<QString( const QStringList & )>bt = [ &bt ]( const QStringList & subf ) std::function<QString( const QStringList & )>bt = [ &bt ]( const QStringList & subf )

View File

@ -36,7 +36,7 @@ QgsCrashDialog::QgsCrashDialog( QWidget *parent )
"<a href=\"http://qgis.org/en/site/getinvolved/development/bugreporting.html#bugs-features-and-issues\">Follow the steps to help our developers.</a>" "<a href=\"http://qgis.org/en/site/getinvolved/development/bugreporting.html#bugs-features-and-issues\">Follow the steps to help our developers.</a>"
"<br><br>" "<br><br>"
"You can also send us a helpful bug report using the Copy Report button <br>and opening a ticket at " "You can also send us a helpful bug report using the Copy Report button <br>and opening a ticket at "
"<a href=\"https://issues.qgis.org/\">issues.qgis.org</a>" ) ); "<a href=\"https://github.com/qgis/QGIS/issues\">QGIS Issue Tracker</a>" ) );
mHelpLabel->setTextInteractionFlags( Qt::TextBrowserInteraction ); mHelpLabel->setTextInteractionFlags( Qt::TextBrowserInteraction );
mHelpLabel->setOpenExternalLinks( true ); mHelpLabel->setOpenExternalLinks( true );

View File

@ -116,7 +116,7 @@ void QgsAttributeTableDelegate::setModelData( QWidget *editor, QAbstractItemMode
if ( ( oldValue != newValue && newValue.isValid() ) || oldValue.isNull() != newValue.isNull() ) if ( ( oldValue != newValue && newValue.isValid() ) || oldValue.isNull() != newValue.isNull() )
{ {
// This fixes https://issues.qgis.org/issues/16492 // This fixes https://github.com/qgis/QGIS/issues/24398
QgsFeatureRequest request( fid ); QgsFeatureRequest request( fid );
request.setFlags( QgsFeatureRequest::NoGeometry ); request.setFlags( QgsFeatureRequest::NoGeometry );
request.setNoAttributes(); request.setNoAttributes();

View File

@ -263,7 +263,7 @@ void QgsAttributeTableModel::updatedFields()
void QgsAttributeTableModel::editCommandEnded() void QgsAttributeTableModel::editCommandEnded()
{ {
// do not do reload(...) due would trigger (dataChanged) row sort // do not do reload(...) due would trigger (dataChanged) row sort
// giving issue: https://issues.qgis.org/issues/15976 // giving issue: https://github.com/qgis/QGIS/issues/23892
bulkEditCommandEnded( ); bulkEditCommandEnded( );
} }

View File

@ -332,7 +332,7 @@ void QgsDualView::initModels( QgsMapCanvas *mapCanvas, const QgsFeatureRequest &
mFilterModel = new QgsAttributeTableFilterModel( mapCanvas, mMasterModel, mMasterModel ); mFilterModel = new QgsAttributeTableFilterModel( mapCanvas, mMasterModel, mMasterModel );
// The following connections to invalidate() are necessary to keep the filter model in sync // The following connections to invalidate() are necessary to keep the filter model in sync
// see regression https://issues.qgis.org/issues/15974 // see regression https://github.com/qgis/QGIS/issues/23890
connect( mMasterModel, &QgsAttributeTableModel::rowsRemoved, mFilterModel, &QgsAttributeTableFilterModel::invalidate ); connect( mMasterModel, &QgsAttributeTableModel::rowsRemoved, mFilterModel, &QgsAttributeTableFilterModel::invalidate );
connect( mMasterModel, &QgsAttributeTableModel::rowsInserted, mFilterModel, &QgsAttributeTableFilterModel::invalidate ); connect( mMasterModel, &QgsAttributeTableModel::rowsInserted, mFilterModel, &QgsAttributeTableFilterModel::invalidate );

View File

@ -232,7 +232,7 @@ void QgsTextEditWrapper::setWidgetValue( const QVariant &val )
// We are checking for editable layer because in the form field context we do not // We are checking for editable layer because in the form field context we do not
// want to strip the separator unless the layer is editable. // want to strip the separator unless the layer is editable.
// Also check that we have something like a number in the value to avoid // Also check that we have something like a number in the value to avoid
// stripping out dots from nextval when we have a schema: see https://issues.qgis.org/issues/20200 // stripping out dots from nextval when we have a schema: see https://github.com/qgis/QGIS/issues/28021
// "Wrong sequence detection with Postgres" // "Wrong sequence detection with Postgres"
bool canConvertToDouble; bool canConvertToDouble;
QLocale().toDouble( v, &canConvertToDouble ); QLocale().toDouble( v, &canConvertToDouble );

View File

@ -217,7 +217,7 @@ void QgsValueRelationWidgetWrapper::setValue( const QVariant &value )
else if ( mComboBox ) else if ( mComboBox )
{ {
// findData fails to tell a 0 from a NULL // findData fails to tell a 0 from a NULL
// See: "Value relation, value 0 = NULL" - https://issues.qgis.org/issues/19981 // See: "Value relation, value 0 = NULL" - https://github.com/qgis/QGIS/issues/27803
int idx = -1; // default to not found int idx = -1; // default to not found
for ( int i = 0; i < mComboBox->count(); i++ ) for ( int i = 0; i < mComboBox->count(); i++ )
{ {

View File

@ -98,7 +98,7 @@ void QgsLayoutConfigObject::updateDataDefinedButton( QgsPropertyOverrideButton *
QgsLayoutObject::DataDefinedProperty key = static_cast< QgsLayoutObject::DataDefinedProperty >( button->propertyKey() ); QgsLayoutObject::DataDefinedProperty key = static_cast< QgsLayoutObject::DataDefinedProperty >( button->propertyKey() );
whileBlocking( button )->setToProperty( mLayoutObject->dataDefinedProperties().property( key ) ); whileBlocking( button )->setToProperty( mLayoutObject->dataDefinedProperties().property( key ) );
// In case the button was initialized to a different config object, we need to reconnect to it here (see https://issues.qgis.org/issues/18694 ) // In case the button was initialized to a different config object, we need to reconnect to it here (see https://github.com/qgis/QGIS/issues/26582 )
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLayoutConfigObject::updateDataDefinedProperty, Qt::UniqueConnection ); connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLayoutConfigObject::updateDataDefinedProperty, Qt::UniqueConnection );
button->registerExpressionContextGenerator( mLayoutObject ); button->registerExpressionContextGenerator( mLayoutObject );
} }

View File

@ -1022,7 +1022,7 @@ void QgsColorRampWidget::paintEvent( QPaintEvent *event )
// we need to set pen width to 1, // we need to set pen width to 1,
// since on retina displays // since on retina displays
// pen.setWidth(0) <=> pen.width = 0.5 // pen.setWidth(0) <=> pen.width = 0.5
// see https://issues.qgis.org/issues/15984 // see https://github.com/qgis/QGIS/issues/23900
pen.setWidth( 1 ); pen.setWidth( 1 );
painter.setPen( pen ); painter.setPen( pen );
painter.setBrush( Qt::NoBrush ); painter.setBrush( Qt::NoBrush );

View File

@ -665,7 +665,7 @@ void QgsPropertyOverrideButton::showExpressionDialog()
{ {
QgsExpressionContext context = mExpressionContextGenerator ? mExpressionContextGenerator->createExpressionContext() : QgsExpressionContext(); QgsExpressionContext context = mExpressionContextGenerator ? mExpressionContextGenerator->createExpressionContext() : QgsExpressionContext();
// build sensible initial expression text - see https://issues.qgis.org/issues/18638 // build sensible initial expression text - see https://github.com/qgis/QGIS/issues/26526
QString currentExpression = ( mProperty.propertyType() == QgsProperty::StaticProperty && !mProperty.staticValue().isValid() ) ? QString() QString currentExpression = ( mProperty.propertyType() == QgsProperty::StaticProperty && !mProperty.staticValue().isValid() ) ? QString()
: mProperty.asExpression(); : mProperty.asExpression();

View File

@ -137,7 +137,7 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer *rasterLa
// pyramids are not necessarily built every time // pyramids are not necessarily built every time
mCrsSelector->setLayerCrs( mLayerCrs ); mCrsSelector->setLayerCrs( mLayerCrs );
//default to layer CRS - see https://issues.qgis.org/issues/14209 for discussion //default to layer CRS - see https://github.com/qgis/QGIS/issues/22211 for discussion
mCrsSelector->setCrs( mLayerCrs ); mCrsSelector->setCrs( mLayerCrs );
connect( mCrsSelector, &QgsProjectionSelectionWidget::crsChanged, connect( mCrsSelector, &QgsProjectionSelectionWidget::crsChanged,

View File

@ -551,7 +551,7 @@ void QgsRubberBand::updateRect()
void QgsRubberBand::updatePosition() void QgsRubberBand::updatePosition()
{ {
// re-compute rectangle // re-compute rectangle
// See https://issues.qgis.org/issues/12392 // See https://github.com/qgis/QGIS/issues/20566
// NOTE: could be optimized by saving map-extent // NOTE: could be optimized by saving map-extent
// of rubberband and simply re-projecting // of rubberband and simply re-projecting
// that to device-rectangle on "updatePosition" // that to device-rectangle on "updatePosition"

View File

@ -918,7 +918,7 @@ QDomDocument QgsGrassModuleStandardOptions::readInterfaceDescription( const QStr
// GRASS commands usually output text in system default encoding. // GRASS commands usually output text in system default encoding.
// Let's use the System codec whether Qt doesn't recognize the encoding // Let's use the System codec whether Qt doesn't recognize the encoding
// of the interface description (see https://issues.qgis.org/issues/4547) // of the interface description (see https://github.com/qgis/QGIS/issues/14461)
QTextCodec *codec = nullptr; QTextCodec *codec = nullptr;
QgsDebugMsg( "trying to get encoding name from XML interface description..." ); QgsDebugMsg( "trying to get encoding name from XML interface description..." );

View File

@ -172,7 +172,7 @@ QgsGdalProvider::QgsGdalProvider( const QString &uri, const ProviderOptions &opt
if ( !CPLGetConfigOption( "VRT_SHARED_SOURCE", nullptr ) ) if ( !CPLGetConfigOption( "VRT_SHARED_SOURCE", nullptr ) )
{ {
// GDAL < 2.3 has issues with use of VRT in multi-threaded // GDAL < 2.3 has issues with use of VRT in multi-threaded
// scenarios. See https://issues.qgis.org/issues/16507 / // scenarios. See https://github.com/qgis/QGIS/issues/24413 /
// https://trac.osgeo.org/gdal/ticket/6939 // https://trac.osgeo.org/gdal/ticket/6939
CPLSetConfigOption( "VRT_SHARED_SOURCE", "NO" ); CPLSetConfigOption( "VRT_SHARED_SOURCE", "NO" );
} }

View File

@ -1873,7 +1873,7 @@ bool QgsOgrProvider::addAttributes( const QList<QgsField> &attributes )
// Without the below hack, the length of the first added field would have // Without the below hack, the length of the first added field would have
// been reset to zero, and QgsVectorLayerEditBuffer::commitChanges() would // been reset to zero, and QgsVectorLayerEditBuffer::commitChanges() would
// error out because of this. // error out because of this.
// See https://issues.qgis.org/issues/19009 // See https://github.com/qgis/QGIS/issues/26840
for ( auto field : oldFields ) for ( auto field : oldFields )
{ {
int idx = mAttributeFields.lookupField( field.name() ); int idx = mAttributeFields.lookupField( field.name() );
@ -3726,7 +3726,7 @@ QSet<QVariant> QgsOgrProvider::uniqueValues( int index, int limit ) const
// GPKG/SQLite fid // GPKG/SQLite fid
// For GPKG and SQLITE drivers PK fields are not exposed as real fields, (and OGR_F_GetFID only // For GPKG and SQLITE drivers PK fields are not exposed as real fields, (and OGR_F_GetFID only
// works with GPKG), so we are adding an extra column that will become index 0 // works with GPKG), so we are adding an extra column that will become index 0
// See https://issues.qgis.org/issues/21311 // See https://github.com/qgis/QGIS/issues/29129
if ( ( mGDALDriverName == QLatin1String( "GPKG" ) || mGDALDriverName == QLatin1String( "SQLite" ) ) if ( ( mGDALDriverName == QLatin1String( "GPKG" ) || mGDALDriverName == QLatin1String( "SQLite" ) )
&& mFirstFieldIsFid && index == 0 ) && mFirstFieldIsFid && index == 0 )
{ {

View File

@ -160,7 +160,7 @@ QgsPostgresConn *QgsPostgresConn::connectDb( const QString &conninfo, bool reado
if ( shared ) if ( shared )
{ {
// sharing connection between threads is not safe // sharing connection between threads is not safe
// See https://issues.qgis.org/issues/13141 // See https://github.com/qgis/QGIS/issues/21205
Q_ASSERT( QApplication::instance()->thread() == QThread::currentThread() ); Q_ASSERT( QApplication::instance()->thread() == QThread::currentThread() );
if ( connections.contains( conninfo ) ) if ( connections.contains( conninfo ) )
@ -1354,7 +1354,7 @@ qint64 QgsPostgresConn::getBinaryInt( QgsPostgresResult &queryResult, int row, i
if ( mSwapEndian ) if ( mSwapEndian )
oid = ntohs( oid ); oid = ntohs( oid );
/* cast to signed 16bit /* cast to signed 16bit
* See https://issues.qgis.org/issues/14262 */ * See https://github.com/qgis/QGIS/issues/22258 */
oid = ( qint16 )oid; oid = ( qint16 )oid;
break; break;
@ -1404,7 +1404,7 @@ qint64 QgsPostgresConn::getBinaryInt( QgsPostgresResult &queryResult, int row, i
if ( mSwapEndian ) if ( mSwapEndian )
oid = ntohl( oid ); oid = ntohl( oid );
/* cast to signed 32bit /* cast to signed 32bit
* See https://issues.qgis.org/issues/14262 */ * See https://github.com/qgis/QGIS/issues/22258 */
oid = ( qint32 )oid; oid = ( qint32 )oid;
break; break;
} }

View File

@ -77,7 +77,7 @@ QgsPostgresProvider::pkType( const QgsField &f ) const
// unless we can guarantee all values are unsigned // unless we can guarantee all values are unsigned
// (in which case we could use pktUint64) // (in which case we could use pktUint64)
// we'll have to use a Map type. // we'll have to use a Map type.
// See https://issues.qgis.org/issues/14262 // See https://github.com/qgis/QGIS/issues/22258
return PktFidMap; // pktUint64 return PktFidMap; // pktUint64
case QVariant::Int: case QVariant::Int:
@ -178,7 +178,7 @@ QgsPostgresProvider::QgsPostgresProvider( QString const &uri, const ProviderOpti
} }
// NOTE: mValid would be true after true return from // NOTE: mValid would be true after true return from
// getGeometryDetails, see https://issues.qgis.org/issues/13781 // getGeometryDetails, see https://github.com/qgis/QGIS/issues/21807
if ( mSpatialColType == SctTopoGeometry ) if ( mSpatialColType == SctTopoGeometry )
{ {
@ -3236,7 +3236,7 @@ long QgsPostgresProvider::featureCount() const
if ( featuresCounted >= 0 ) if ( featuresCounted >= 0 )
return featuresCounted; return featuresCounted;
// See: https://issues.qgis.org/issues/17388 - QGIS crashes on featureCount()) // See: https://github.com/qgis/QGIS/issues/25285 - QGIS crashes on featureCount())
if ( ! connectionRO() ) if ( ! connectionRO() )
{ {
return 0; return 0;

View File

@ -487,7 +487,7 @@ class QgsPostgresUtils
// We shift negative 32bit integers to above the max 32bit // We shift negative 32bit integers to above the max 32bit
// positive integer to support the whole range of int32 values // positive integer to support the whole range of int32 values
// See https://issues.qgis.org/issues/14262 // See https://github.com/qgis/QGIS/issues/22258
static qint64 int32pk_to_fid( qint32 x ) static qint64 int32pk_to_fid( qint32 x )
{ {
return x >= 0 ? x : x + INT32PK_OFFSET; return x >= 0 ? x : x + INT32PK_OFFSET;

View File

@ -1478,7 +1478,7 @@ bool QgsWFSProvider::readAttributesFromSchema( QDomDocument &schemaDoc,
//attribute name //attribute name
QString name = attributeElement.attribute( QStringLiteral( "name" ) ); QString name = attributeElement.attribute( QStringLiteral( "name" ) );
// Some servers like http://ogi.state.ok.us/geoserver/wfs on layer ogi:doq_centroids // Some servers like http://ogi.state.ok.us/geoserver/wfs on layer ogi:doq_centroids
// return attribute names padded with spaces. See https://issues.qgis.org/issues/3426 // return attribute names padded with spaces. See https://github.com/qgis/QGIS/issues/13486
// I'm not completely sure how legal this // I'm not completely sure how legal this
// is but this validates with Xerces 3.1, and its schema analyzer does also the trimming. // is but this validates with Xerces 3.1, and its schema analyzer does also the trimming.
name = name.trimmed(); name = name.trimmed();

View File

@ -59,7 +59,7 @@ namespace QgsWms
renderJob.start(); renderJob.start();
// Allows the main thread to manage blocking call coming from rendering // Allows the main thread to manage blocking call coming from rendering
// threads (see discussion in https://issues.qgis.org/issues/18988). // threads (see discussion in https://github.com/qgis/QGIS/issues/26819).
QEventLoop loop; QEventLoop loop;
QObject::connect( &renderJob, &QgsMapRendererParallelJob::finished, &loop, &QEventLoop::quit ); QObject::connect( &renderJob, &QgsMapRendererParallelJob::finished, &loop, &QEventLoop::quit );
loop.exec(); loop.exec();

View File

@ -623,7 +623,7 @@ void TestQgsGeometrySnapper::snapMultiPolygonToPolygon()
flist << ff; flist << ff;
rl->dataProvider()->addFeatures( flist ); rl->dataProvider()->addFeatures( flist );
// test MultiPolygon that could be removed in the process https://issues.qgis.org/issues/18497 // test MultiPolygon that could be removed in the process https://github.com/qgis/QGIS/issues/26385
QgsGeometry polygonGeom = QgsGeometry::fromWkt( QStringLiteral( "MultiPolygon(((0.1 -0.1, 5 0.1, 9.9 0.1, 0.1 -0.1)))" ) ); QgsGeometry polygonGeom = QgsGeometry::fromWkt( QStringLiteral( "MultiPolygon(((0.1 -0.1, 5 0.1, 9.9 0.1, 0.1 -0.1)))" ) );
QgsGeometrySnapper snapper( rl ); QgsGeometrySnapper snapper( rl );
QgsGeometry result = snapper.snapGeometry( polygonGeom, 1 ); QgsGeometry result = snapper.snapGeometry( polygonGeom, 1 );

View File

@ -209,7 +209,7 @@ void TestQgisAppClipboard::pasteWkt()
QCOMPARE( point->y(), 30.0 ); QCOMPARE( point->y(), 30.0 );
// be sure parsing does not consider attached parameters that // be sure parsing does not consider attached parameters that
// can change geometryType as in https://issues.qgis.org/issues/16870 // can change geometryType as in https://github.com/qgis/QGIS/issues/24769
mQgisApp->clipboard()->setText( QStringLiteral( "POINT (111 30)\t GoodFieldValue\nPOINT (125 10)\t(WrongFieldValue)" ) ); mQgisApp->clipboard()->setText( QStringLiteral( "POINT (111 30)\t GoodFieldValue\nPOINT (125 10)\t(WrongFieldValue)" ) );
features = mQgisApp->clipboard()->copyOf(); features = mQgisApp->clipboard()->copyOf();

View File

@ -320,7 +320,7 @@ void TestQgsAttributeTable::testOrderColumn()
std::unique_ptr< QgsAttributeTableDialog > dlg( new QgsAttributeTableDialog( tempLayer.get() ) ); std::unique_ptr< QgsAttributeTableDialog > dlg( new QgsAttributeTableDialog( tempLayer.get() ) );
// Issue https://issues.qgis.org/issues/20673 // Issue https://github.com/qgis/QGIS/issues/28493
// When we reorder column (last column becomes first column), and we select an entire row // When we reorder column (last column becomes first column), and we select an entire row
// the currentIndex is no longer the first column, and consequently it breaks edition // the currentIndex is no longer the first column, and consequently it breaks edition

View File

@ -93,12 +93,12 @@ void TestQgsCurve::curveToLine()
"LineString (0 0, 29.29 70.71, 100 100, 170.71 70.71, 200 0)", 2 ); "LineString (0 0, 29.29 70.71, 100 100, 170.71 70.71, 200 0)", 2 );
/* op: Maximum of M_PI / 8 degrees of angle, (a)symmetric */ /* op: Maximum of M_PI / 8 degrees of angle, (a)symmetric */
/* See https://issues.qgis.org/issues/16717 */ /* See https://github.com/qgis/QGIS/issues/24616 */
TEST_C2L( circularString, M_PI / 8, QgsAbstractGeometry::MaximumAngle, TEST_C2L( circularString, M_PI / 8, QgsAbstractGeometry::MaximumAngle,
"LineString (0 0, 7.61 38.27, 29.29 70.71, 61.73 92.39, 100 100, 138.27 92.39, 170.71 70.71, 192.39 38.27, 200 0)", 2 ); "LineString (0 0, 7.61 38.27, 29.29 70.71, 61.73 92.39, 100 100, 138.27 92.39, 170.71 70.71, 192.39 38.27, 200 0)", 2 );
/* op: Maximum of 70 degrees of angle, symmetric */ /* op: Maximum of 70 degrees of angle, symmetric */
/* See https://issues.qgis.org/issues/16722 */ /* See https://github.com/qgis/QGIS/issues/24621 */
TEST_C2L( circularString, 70 * M_PI / 180, QgsAbstractGeometry::MaximumAngle, TEST_C2L( circularString, 70 * M_PI / 180, QgsAbstractGeometry::MaximumAngle,
"LineString (0 0, 50 86.6, 150 86.6, 200 0)", 2 ); "LineString (0 0, 50 86.6, 150 86.6, 200 0)", 2 );

View File

@ -16902,7 +16902,7 @@ QString TestQgsGeometry::elemToString( const QDomElement &elem ) const
void TestQgsGeometry::wkbInOut() void TestQgsGeometry::wkbInOut()
{ {
// Premature end of WKB // Premature end of WKB
// See https://issues.qgis.org/issues/14182 // See https://github.com/qgis/QGIS/issues/22184
const char *hexwkb = "0102000000EF0000000000000000000000000000000000000000000000000000000000000000000000"; const char *hexwkb = "0102000000EF0000000000000000000000000000000000000000000000000000000000000000000000";
int size; int size;
unsigned char *wkb = hex2bytes( hexwkb, &size ); unsigned char *wkb = hex2bytes( hexwkb, &size );

View File

@ -549,7 +549,7 @@ void TestQgsGeometryUtils::testCircleCenterRadius()
void TestQgsGeometryUtils::testSqrDistToLine() void TestQgsGeometryUtils::testSqrDistToLine()
{ {
// See https://issues.qgis.org/issues/13952#note-26 // See https://github.com/qgis/QGIS/issues/21967#issuecomment-495853991
QgsPointXY qp( 771938, 6.95593e+06 ); QgsPointXY qp( 771938, 6.95593e+06 );
QgsPointXY p1( 771946, 6.95593e+06 ); QgsPointXY p1( 771946, 6.95593e+06 );
QgsPointXY p2( 771904, 6.95595e+06 ); QgsPointXY p2( 771904, 6.95595e+06 );

View File

@ -638,7 +638,7 @@ bool TestQgsLabelingEngine::imageCheck( const QString &testName, QImage &image,
return resultFlag; return resultFlag;
} }
// See https://issues.qgis.org/issues/15507 // See https://github.com/qgis/QGIS/issues/23431
void TestQgsLabelingEngine::testRegisterFeatureUnprojectible() void TestQgsLabelingEngine::testRegisterFeatureUnprojectible()
{ {
QgsPalLayerSettings settings; QgsPalLayerSettings settings;
@ -750,7 +750,7 @@ void TestQgsLabelingEngine::testParallelLabelSmallFeature()
// This test assumes that NO label is drawn in this situation. In future we may want // This test assumes that NO label is drawn in this situation. In future we may want
// to revisit this and e.g. draw a centered horizontal label over the feature -- in which // to revisit this and e.g. draw a centered horizontal label over the feature -- in which
// case the reference image here should be freely revised. But for now, we just don't // case the reference image here should be freely revised. But for now, we just don't
// want a hang/crash such as described in https://issues.qgis.org/issues/18283 // want a hang/crash such as described in https://github.com/qgis/QGIS/issues/26174
QgsPalLayerSettings settings; QgsPalLayerSettings settings;
setDefaultLabelParams( settings ); setDefaultLabelParams( settings );

View File

@ -43,7 +43,7 @@ class TestQgsLayerDefinition: public QObject
/** /**
* test that export does not crash: regression #18981 * test that export does not crash: regression #18981
* https://issues.qgis.org/issues/18981 - Save QLR crashes QGIS 3 * https://github.com/qgis/QGIS/issues/26812 - Save QLR crashes QGIS 3
*/ */
void testExportDoesNotCrash(); void testExportDoesNotCrash();

View File

@ -168,7 +168,7 @@ TestQgsMapToPixelGeometrySimplifier::testIsGeneralizableByMapBoundingBox()
void TestQgsMapToPixelGeometrySimplifier::testWkbDimensionMismatch() void TestQgsMapToPixelGeometrySimplifier::testWkbDimensionMismatch()
{ {
// 2D multilinestring containing 2 3DZ linestrings // 2D multilinestring containing 2 3DZ linestrings
// See https://issues.qgis.org/issues/12416 // See https://github.com/qgis/QGIS/issues/20588
// NOTE: the first line needs to be 5 vertices or more, or // NOTE: the first line needs to be 5 vertices or more, or
// simplification won't even be attempted // simplification won't even be attempted
const char *hexwkb = "010500000002000000010200008005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000040000000000000000000000000000000000000000000000840000000000000F03F0000000000000000000000000000244000000000000000008DEDB5A0F7C6B0BE010200008002000000000000000000000000000000000000000000000000000000000000000000000000000000000000008DEDB5A0F7C6B03E"; const char *hexwkb = "010500000002000000010200008005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000040000000000000000000000000000000000000000000000840000000000000F03F0000000000000000000000000000244000000000000000008DEDB5A0F7C6B0BE010200008002000000000000000000000000000000000000000000000000000000000000000000000000000000000000008DEDB5A0F7C6B03E";

View File

@ -126,7 +126,7 @@ void TestQgsMarkerLineSymbol::lineOffset()
mMapSettings->setLayers( QList<QgsMapLayer *>() << mLinesLayer ); mMapSettings->setLayers( QList<QgsMapLayer *>() << mLinesLayer );
// Negative offset on marker line // Negative offset on marker line
// See https://issues.qgis.org/issues/13811 // See https://github.com/qgis/QGIS/issues/21836
QString qml = mTestDataDir + "marker_line_offset.qml"; QString qml = mTestDataDir + "marker_line_offset.qml";
bool success = false; bool success = false;
@ -137,7 +137,7 @@ void TestQgsMarkerLineSymbol::lineOffset()
QVERIFY( render( QStringLiteral( "line_offset" ) ) ); QVERIFY( render( QStringLiteral( "line_offset" ) ) );
// TODO: -0.0 offset, see // TODO: -0.0 offset, see
// https://issues.qgis.org/issues/13811#note-1 // https://github.com/qgis/QGIS/issues/21836#issuecomment-495853073
} }
void TestQgsMarkerLineSymbol::pointNumInterval() void TestQgsMarkerLineSymbol::pointNumInterval()

View File

@ -439,7 +439,7 @@ void TestQgsRasterLayer::checkStats()
} }
// test scale_factor and offset - uses netcdf file which may not be supported // test scale_factor and offset - uses netcdf file which may not be supported
// see https://issues.qgis.org/issues/8417 // see https://github.com/qgis/QGIS/issues/17186
void TestQgsRasterLayer::checkScaleOffset() void TestQgsRasterLayer::checkScaleOffset()
{ {
mReport += QLatin1String( "<h2>Check Stats with scale/offset</h2>\n" ); mReport += QLatin1String( "<h2>Check Stats with scale/offset</h2>\n" );

View File

@ -128,8 +128,8 @@ void TestQgsSvgCache::threadSafePicture()
// returns a detached copy which is safe to use across threads // returns a detached copy which is safe to use across threads
// refs: // refs:
// https://issues.qgis.org/issues/17077 // https://github.com/qgis/QGIS/issues/24976
// https://issues.qgis.org/issues/17089 // https://github.com/qgis/QGIS/issues/24988
QgsSvgCache cache; QgsSvgCache cache;
QString svgPath = TEST_DATA_DIR + QStringLiteral( "/sample_svg.svg" ); QString svgPath = TEST_DATA_DIR + QStringLiteral( "/sample_svg.svg" );

View File

@ -84,25 +84,25 @@ class TestQgsVectorFileWriter: public QObject
void polygonGridTest(); void polygonGridTest();
//! As above but using a projected CRS //! As above but using a projected CRS
void projectedPlygonGridTest(); void projectedPlygonGridTest();
//! This is a regression test ticket 1141 (broken Polish characters support since r8592) https://issues.qgis.org/issues/1141 //! This is a regression test ticket 1141 (broken Polish characters support since r8592) https://github.com/qgis/QGIS/issues/11201
void regression1141(); void regression1141();
//! Test prepareWriteAsVectorFormat //! Test prepareWriteAsVectorFormat
void prepareWriteAsVectorFormat(); void prepareWriteAsVectorFormat();
//! Test regression #21714 (Exported GeoPackages have wrong field definitions) //! Test regression #21714 (Exported GeoPackages have wrong field definitions)
void testTextFieldLength(); void testTextFieldLength();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxPoint(); void testExportToGpxPoint();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxPointTrackPoints(); void testExportToGpxPointTrackPoints();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxPointRoutePoints(); void testExportToGpxPointRoutePoints();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxLineString(); void testExportToGpxLineString();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxLineStringForceTrack(); void testExportToGpxLineStringForceTrack();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxMultiLineString(); void testExportToGpxMultiLineString();
//! Test https://issues.qgis.org/issues/22005 //! Test https://github.com/qgis/QGIS/issues/29819
void testExportToGpxMultiLineStringForceRoute(); void testExportToGpxMultiLineStringForceRoute();
private: private:

View File

@ -929,7 +929,7 @@ void TestQgsGeometryChecks::testSelfContactCheck()
cleanupTestContext( testContext ); cleanupTestContext( testContext );
// https://issues.qgis.org/issues/20408 // https://github.com/qgis/QGIS/issues/28228
// test with a linestring which collapses to an empty linestring // test with a linestring which collapses to an empty linestring
QgsGeometryCheckContext context( 1, QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3857" ) ), QgsCoordinateTransformContext() ); QgsGeometryCheckContext context( 1, QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3857" ) ), QgsCoordinateTransformContext() );
QgsGeometrySelfContactCheck check2( &context, QVariantMap() ); QgsGeometrySelfContactCheck check2( &context, QVariantMap() );

View File

@ -132,7 +132,7 @@ void TestQgsRangeWidgetWrapper::cleanup()
void TestQgsRangeWidgetWrapper::test_setDoubleRange() void TestQgsRangeWidgetWrapper::test_setDoubleRange()
{ {
// Test setting scale range with doubles and NULL values, default range // Test setting scale range with doubles and NULL values, default range
// See https://issues.qgis.org/issues/17878 // See https://github.com/qgis/QGIS/issues/25773
// QGIS 3 Vector Layer Fields Garbled when Clicking the Toggle Editing Icon // QGIS 3 Vector Layer Fields Garbled when Clicking the Toggle Editing Icon
QgsDoubleSpinBox *editor = qobject_cast<QgsDoubleSpinBox *>( widget1->createWidget( nullptr ) ); QgsDoubleSpinBox *editor = qobject_cast<QgsDoubleSpinBox *>( widget1->createWidget( nullptr ) );

View File

@ -342,7 +342,7 @@ void TestQgsRelationReferenceWidget::testSetGetForeignKey()
} }
// Test issue https://issues.qgis.org/issues/22071 // Test issue https://github.com/qgis/QGIS/issues/29884
// Relation reference widget wrong feature when "on map identification" // Relation reference widget wrong feature when "on map identification"
void TestQgsRelationReferenceWidget::testIdentifyOnMap() void TestQgsRelationReferenceWidget::testIdentifyOnMap()
{ {

View File

@ -72,7 +72,7 @@ void TestQgsScaleRangeWidget::test_setScaleRange()
// Test that setting scale range is always honoured // Test that setting scale range is always honoured
// rather than being limited by previously set // rather than being limited by previously set
// max or min. // max or min.
// See https://issues.qgis.org/issues/15463 // See https://github.com/qgis/QGIS/issues/23389
widget->setScaleRange( 6, 4 ); widget->setScaleRange( 6, 4 );
QCOMPARE( widget->minimumScale(), 6.0 ); QCOMPARE( widget->minimumScale(), 6.0 );

View File

@ -330,7 +330,7 @@ void TestQgsValueRelationWidgetWrapper::testDrillDownMulti()
void TestQgsValueRelationWidgetWrapper::testZeroIndexInRelatedTable() void TestQgsValueRelationWidgetWrapper::testZeroIndexInRelatedTable()
{ {
// findData fails to tell a 0 from a NULL // findData fails to tell a 0 from a NULL
// See: "Value relation, value 0 = NULL" - https://issues.qgis.org/issues/19981 // See: "Value relation, value 0 = NULL" - https://github.com/qgis/QGIS/issues/27803
// create a vector layer // create a vector layer
QgsVectorLayer vl1( QStringLiteral( "Polygon?crs=epsg:4326&field=pk:int&field=province:int&field=municipality:string" ), QStringLiteral( "vl1" ), QStringLiteral( "memory" ) ); QgsVectorLayer vl1( QStringLiteral( "Polygon?crs=epsg:4326&field=pk:int&field=province:int&field=municipality:string" ), QStringLiteral( "vl1" ), QStringLiteral( "memory" ) );

View File

@ -327,7 +327,7 @@ class PyQgsOGRProvider(unittest.TestCase):
self.assertEqual(gdal.GetConfigOption("GDAL_HTTP_PROXYUSERPWD"), "username") self.assertEqual(gdal.GetConfigOption("GDAL_HTTP_PROXYUSERPWD"), "username")
def testEditGeoJsonRemoveField(self): def testEditGeoJsonRemoveField(self):
""" Test bugfix of https://issues.qgis.org/issues/18596 (deleting an existing field)""" """ Test bugfix of https://github.com/qgis/QGIS/issues/26484 (deleting an existing field)"""
datasource = os.path.join(self.basetestpath, 'testEditGeoJsonRemoveField.json') datasource = os.path.join(self.basetestpath, 'testEditGeoJsonRemoveField.json')
with open(datasource, 'wt') as f: with open(datasource, 'wt') as f:
@ -350,7 +350,7 @@ class PyQgsOGRProvider(unittest.TestCase):
self.assertEqual(f['w'], 4) self.assertEqual(f['w'], 4)
def testEditGeoJsonAddField(self): def testEditGeoJsonAddField(self):
""" Test bugfix of https://issues.qgis.org/issues/18596 (adding a new field)""" """ Test bugfix of https://github.com/qgis/QGIS/issues/26484 (adding a new field)"""
datasource = os.path.join(self.basetestpath, 'testEditGeoJsonAddField.json') datasource = os.path.join(self.basetestpath, 'testEditGeoJsonAddField.json')
with open(datasource, 'wt') as f: with open(datasource, 'wt') as f:
@ -377,7 +377,7 @@ class PyQgsOGRProvider(unittest.TestCase):
self.assertEqual(len(vl.fields()), 1) self.assertEqual(len(vl.fields()), 1)
def testEditGeoJsonAddFieldAndThenAddFeatures(self): def testEditGeoJsonAddFieldAndThenAddFeatures(self):
""" Test bugfix of https://issues.qgis.org/issues/18596 (adding a new field)""" """ Test bugfix of https://github.com/qgis/QGIS/issues/26484 (adding a new field)"""
datasource = os.path.join(self.basetestpath, 'testEditGeoJsonAddField.json') datasource = os.path.join(self.basetestpath, 'testEditGeoJsonAddField.json')
with open(datasource, 'wt') as f: with open(datasource, 'wt') as f:

View File

@ -215,7 +215,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
@unittest.skip(int(gdal.VersionInfo('VERSION_NUM')) < GDAL_COMPUTE_VERSION(2, 1, 2)) @unittest.skip(int(gdal.VersionInfo('VERSION_NUM')) < GDAL_COMPUTE_VERSION(2, 1, 2))
def testGeopackageExtentUpdate(self): def testGeopackageExtentUpdate(self):
''' test https://issues.qgis.org/issues/15273 ''' ''' test https://github.com/qgis/QGIS/issues/23209 '''
tmpfile = os.path.join(self.basetestpath, 'testGeopackageExtentUpdate.gpkg') tmpfile = os.path.join(self.basetestpath, 'testGeopackageExtentUpdate.gpkg')
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile) ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint) lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint)
@ -643,7 +643,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
self.assertEqual(lyr2.wkbType(), QgsWkbTypes.Point) self.assertEqual(lyr2.wkbType(), QgsWkbTypes.Point)
def testGeopackageTwoLayerEdition(self): def testGeopackageTwoLayerEdition(self):
''' test https://issues.qgis.org/issues/17034 ''' ''' test https://github.com/qgis/QGIS/issues/24933 '''
tmpfile = os.path.join(self.basetestpath, 'testGeopackageTwoLayerEdition.gpkg') tmpfile = os.path.join(self.basetestpath, 'testGeopackageTwoLayerEdition.gpkg')
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile) ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
lyr = ds.CreateLayer('layer1', geom_type=ogr.wkbPoint) lyr = ds.CreateLayer('layer1', geom_type=ogr.wkbPoint)
@ -1033,7 +1033,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
self.assertNotEqual(_lessdigits(subSet_vl.extent().toString()), unfiltered_extent) self.assertNotEqual(_lessdigits(subSet_vl.extent().toString()), unfiltered_extent)
def testRequestWithoutGeometryOnLayerMixedGeometry(self): def testRequestWithoutGeometryOnLayerMixedGeometry(self):
""" Test bugfix for https://issues.qgis.org/issues/19077 """ """ Test bugfix for https://github.com/qgis/QGIS/issues/26907 """
# Issue is more a generic one of the OGR provider, but easy to trigger with GPKG # Issue is more a generic one of the OGR provider, but easy to trigger with GPKG
@ -1059,7 +1059,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
self.assertEqual(len(features), 1) self.assertEqual(len(features), 1)
def testAddingTwoIntFieldsWithWidth(self): def testAddingTwoIntFieldsWithWidth(self):
""" Test buggfix for https://issues.qgis.org/issues/19009 """ """ Test buggfix for https://github.com/qgis/QGIS/issues/26840 """
tmpfile = os.path.join(self.basetestpath, 'testRequestWithoutGeometryOnLayerMixedGeometry.gpkg') tmpfile = os.path.join(self.basetestpath, 'testRequestWithoutGeometryOnLayerMixedGeometry.gpkg')
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile) ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
@ -1079,7 +1079,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
self.assertTrue(vl.commitChanges()) self.assertTrue(vl.commitChanges())
def testApproxFeatureCountAndExtent(self): def testApproxFeatureCountAndExtent(self):
""" Test perf improvement for for https://issues.qgis.org/issues/18402 """ """ Test perf improvement for for https://github.com/qgis/QGIS/issues/26292 """
tmpfile = os.path.join(self.basetestpath, 'testApproxFeatureCountAndExtent.gpkg') tmpfile = os.path.join(self.basetestpath, 'testApproxFeatureCountAndExtent.gpkg')
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile) ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)

View File

@ -240,7 +240,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
self.assertTrue(vl.isValid()) self.assertTrue(vl.isValid())
test_unique([f for f in vl.getFeatures()], 4) test_unique([f for f in vl.getFeatures()], 4)
# See https://issues.qgis.org/issues/14262 # See https://github.com/qgis/QGIS/issues/22258
# TODO: accept multi-featured layers, and an array of values/fids # TODO: accept multi-featured layers, and an array of values/fids
def testSignedIdentifiers(self): def testSignedIdentifiers(self):
@ -815,7 +815,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
# If an attribute map is provided, QgsVectorLayerUtils.createFeature must # If an attribute map is provided, QgsVectorLayerUtils.createFeature must
# respect it, otherwise default values from provider are checked. # respect it, otherwise default values from provider are checked.
# User's choice will not be respected if the value violates unique constraints. # User's choice will not be respected if the value violates unique constraints.
# See https://issues.qgis.org/issues/19936 # See https://github.com/qgis/QGIS/issues/27758
f = QgsVectorLayerUtils.createFeature(vl, attributes={1: 5, 3: 'map'}) f = QgsVectorLayerUtils.createFeature(vl, attributes={1: 5, 3: 'map'})
# changed so that createFeature respects user choice # changed so that createFeature respects user choice
self.assertEqual(f.attributes(), [default_clause, 5, "'qgis'::text", 'map', None, None]) self.assertEqual(f.attributes(), [default_clause, 5, "'qgis'::text", 'map', None, None])
@ -829,7 +829,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
f = QgsVectorLayerUtils.createFeature(vl, attributes={1: 5}) f = QgsVectorLayerUtils.createFeature(vl, attributes={1: 5})
self.assertEqual(f.attributes(), [default_clause, 5, "'qgis'::text", 'mappy', None, None]) self.assertEqual(f.attributes(), [default_clause, 5, "'qgis'::text", 'mappy', None, None])
# See https://issues.qgis.org/issues/15188 # See https://github.com/qgis/QGIS/issues/23127
def testNumericPrecision(self): def testNumericPrecision(self):
uri = 'point?field=f1:int' uri = 'point?field=f1:int'
uri += '&field=f2:double(6,4)' uri += '&field=f2:double(6,4)'
@ -853,7 +853,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
self.assertEqual(f['f2'], 123.456) self.assertEqual(f['f2'], 123.456)
self.assertEqual(f['f3'], '12345678.90123456789') self.assertEqual(f['f3'], '12345678.90123456789')
# See https://issues.qgis.org/issues/15226 # See https://github.com/qgis/QGIS/issues/23163
def testImportKey(self): def testImportKey(self):
uri = 'point?field=f1:int' uri = 'point?field=f1:int'
uri += '&field=F2:double(6,4)' uri += '&field=F2:double(6,4)'
@ -895,7 +895,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
testKey(lyr, '"f1","F2","f3"', ['f1', 'F2', 'f3']) testKey(lyr, '"f1","F2","f3"', ['f1', 'F2', 'f3'])
testKey(lyr, None, ['id']) testKey(lyr, None, ['id'])
# See https://issues.qgis.org/issues/17518 # See https://github.com/qgis/QGIS/issues/25415
def testImportWithoutSchema(self): def testImportWithoutSchema(self):
def _test(table, schema=None): def _test(table, schema=None):

View File

@ -977,7 +977,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase):
def testUpdatedFields(self): def testUpdatedFields(self):
"""Test when referenced layer update its fields """Test when referenced layer update its fields
https://issues.qgis.org/issues/20893 https://github.com/qgis/QGIS/issues/28712
""" """
ml = QgsVectorLayer("Point?srid=EPSG:4326&field=a:int", "mem", "memory") ml = QgsVectorLayer("Point?srid=EPSG:4326&field=a:int", "mem", "memory")

View File

@ -115,7 +115,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="gml:AbstractFeatureType"> <xsd:extension base="gml:AbstractFeatureType">
<xsd:sequence> <xsd:sequence>
<!-- add a trailing space to the name to test https://issues.qgis.org/issues/3426 --> <!-- add a trailing space to the name to test https://github.com/qgis/QGIS/issues/13486 -->
<xsd:element maxOccurs="1" minOccurs="0" name="pk " nillable="true" type="xsd:long"/> <xsd:element maxOccurs="1" minOccurs="0" name="pk " nillable="true" type="xsd:long"/>
<xsd:element maxOccurs="1" minOccurs="0" name="cnt" nillable="true" type="xsd:long"/> <xsd:element maxOccurs="1" minOccurs="0" name="cnt" nillable="true" type="xsd:long"/>
<xsd:element maxOccurs="1" minOccurs="0" name="name" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="name" nillable="true" type="xsd:string"/>
@ -2963,7 +2963,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
self.assertEqual((got.x(), got.y()), (426858.0, 5427937.0)) self.assertEqual((got.x(), got.y()), (426858.0, 5427937.0))
def testGetFeatureWithNamespaces(self): def testGetFeatureWithNamespaces(self):
''' test https://issues.qgis.org/issues/14685 ''' ''' test https://github.com/qgis/QGIS/issues/22649 '''
endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_getfeature_with_namespaces' endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_getfeature_with_namespaces'
@ -3552,7 +3552,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
self.assertTrue(vl.isValid()) self.assertTrue(vl.isValid())
def testGeometryCollectionAsMultiLineString(self): def testGeometryCollectionAsMultiLineString(self):
"""Test https://issues.qgis.org/issues/19571 """ """Test https://github.com/qgis/QGIS/issues/27398 """
endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_gc_as_mls' endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_gc_as_mls'
@ -3807,7 +3807,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
pass # skip this feature source test -- provider is not affected pass # skip this feature source test -- provider is not affected
def testFilteredFeatureRequests(self): def testFilteredFeatureRequests(self):
"""Test https://issues.qgis.org/issues/21077 """ """Test https://github.com/qgis/QGIS/issues/28895 """
endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_filtered_feature_requests' endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_filtered_feature_requests'

View File

@ -875,7 +875,7 @@ class TestQgsGeometry(unittest.TestCase):
"""Test we can simplify a complex geometry. """Test we can simplify a complex geometry.
Note: there is a ticket related to this issue here: Note: there is a ticket related to this issue here:
https://issues.qgis.org/issues/4189 https://github.com/qgis/QGIS/issues/14164
Backstory: Ole Nielson pointed out an issue to me Backstory: Ole Nielson pointed out an issue to me
(Tim Sutton) where simplify ftools was dropping (Tim Sutton) where simplify ftools was dropping
@ -2285,7 +2285,7 @@ class TestQgsGeometry(unittest.TestCase):
assert compareWkt(expWkt, wkt), "convertToType failed: from multiline to polygon. Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt) assert compareWkt(expWkt, wkt), "convertToType failed: from multiline to polygon. Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt)
def testRegression13053(self): def testRegression13053(self):
""" See https://issues.qgis.org/issues/13053 """ """ See https://github.com/qgis/QGIS/issues/21125 """
p = QgsGeometry.fromWkt('MULTIPOLYGON(((62.0 18.0, 62.0 19.0, 63.0 19.0, 63.0 18.0, 62.0 18.0)), ((63.0 19.0, 63.0 20.0, 64.0 20.0, 64.0 19.0, 63.0 19.0)))') p = QgsGeometry.fromWkt('MULTIPOLYGON(((62.0 18.0, 62.0 19.0, 63.0 19.0, 63.0 18.0, 62.0 18.0)), ((63.0 19.0, 63.0 20.0, 64.0 20.0, 64.0 19.0, 63.0 19.0)))')
assert p is not None assert p is not None
@ -2294,7 +2294,7 @@ class TestQgsGeometry(unittest.TestCase):
assert compareWkt(expWkt, wkt), "testRegression13053 failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt) assert compareWkt(expWkt, wkt), "testRegression13053 failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt)
def testRegression13055(self): def testRegression13055(self):
""" See https://issues.qgis.org/issues/13055 """ See https://github.com/qgis/QGIS/issues/21127
Testing that invalid WKT with z values but not using PolygonZ is still parsed Testing that invalid WKT with z values but not using PolygonZ is still parsed
by QGIS. by QGIS.
""" """
@ -2306,7 +2306,7 @@ class TestQgsGeometry(unittest.TestCase):
assert compareWkt(expWkt, wkt), "testRegression13055 failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt) assert compareWkt(expWkt, wkt), "testRegression13055 failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt)
def testRegression13274(self): def testRegression13274(self):
""" See https://issues.qgis.org/issues/13274 """ See https://github.com/qgis/QGIS/issues/21334
Testing that two combined linestrings produce another line string if possible Testing that two combined linestrings produce another line string if possible
""" """
a = QgsGeometry.fromWkt('LineString (0 0, 1 0)') a = QgsGeometry.fromWkt('LineString (0 0, 1 0)')
@ -2325,7 +2325,7 @@ class TestQgsGeometry(unittest.TestCase):
wkt = g.asWkt() wkt = g.asWkt()
assert compareWkt(expWkt, wkt), "testReshape failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt) assert compareWkt(expWkt, wkt), "testReshape failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt)
# Test reshape a geometry involving the first/last vertex (https://issues.qgis.org/issues/14443) # Test reshape a geometry involving the first/last vertex (https://github.com/qgis/QGIS/issues/22422)
g.reshapeGeometry(QgsLineString([QgsPoint(0.5, 1), QgsPoint(0, 0.5)])) g.reshapeGeometry(QgsLineString([QgsPoint(0.5, 1), QgsPoint(0, 0.5)]))
expWkt = 'Polygon ((0 0.5, 0 0, 1 0, 1 0.5, 0.5 1, 0 0.5))' expWkt = 'Polygon ((0 0.5, 0 0, 1 0, 1 0.5, 0.5 1, 0 0.5))'

View File

@ -789,7 +789,7 @@ class TestQgsJsonUtils(unittest.TestCase):
def testExportFeaturesWithLocale_regression20053(self): def testExportFeaturesWithLocale_regression20053(self):
""" Test exporting feature export with range widgets and locale different than C """ Test exporting feature export with range widgets and locale different than C
Regression: https://issues.qgis.org/issues/20053 - decimal separator in csv files Regression: https://github.com/qgis/QGIS/issues/27875 - decimal separator in csv files
""" """
source = QgsVectorLayer("Point?field=name:string&field=cost:double&field=population:int&field=date:date", source = QgsVectorLayer("Point?field=name:string&field=cost:double&field=population:int&field=date:date",

View File

@ -366,7 +366,7 @@ class TestQgsLayoutAtlas(unittest.TestCase):
self.assertEqual(self.atlas.currentFilename(), expected) self.assertEqual(self.atlas.currentFilename(), expected)
self.atlas.endRender() self.atlas.endRender()
# using feature attribute (refs https://issues.qgis.org/issues/19552) # using feature attribute (refs https://github.com/qgis/QGIS/issues/27379)
self.atlas.setFilenameExpression("'output_' || attribute(@atlas_feature,'NAME_1')") self.atlas.setFilenameExpression("'output_' || attribute(@atlas_feature,'NAME_1')")
expected = ['output_Basse-Normandie', expected = ['output_Basse-Normandie',

View File

@ -96,7 +96,7 @@ class TestPointBase(object):
self._Mismatches['TestComposerImageVsCanvasPoint'] = 800 self._Mismatches['TestComposerImageVsCanvasPoint'] = 800
self._Mismatches['TestComposerImagePoint'] = 800 self._Mismatches['TestComposerImagePoint'] = 800
# verify fix for issues # verify fix for issues
# https://issues.qgis.org/issues/9057 # https://github.com/qgis/QGIS/issues/17705
# http://gis.stackexchange.com/questions/86900 # http://gis.stackexchange.com/questions/86900
format = self.lyr.format() format = self.lyr.format()