mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-22 00:06:12 -05:00
References to issues.qgis.org updated
This commit is contained in:
parent
a9e3950841
commit
38c8e757aa
13
BUGS
13
BUGS
@ -1,14 +1,11 @@
|
||||
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
|
||||
|
||||
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
|
||||
https://github.com/qgis/QGIS/issues
|
||||
|
||||
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:
|
||||
|
||||
@ -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...
|
||||
- Always check that your bug has not already been filed by someone else since
|
||||
dealing with duplicate tickets causes a lot of time wasting.
|
||||
- Always provide contact details and make sure you are subscribed to the
|
||||
ticket entry (either by adding yourself to CC field or by logging in before
|
||||
filing the ticket).
|
||||
- Be prepared to provided further feedback after the initial triage.
|
||||
- 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
|
||||
your work, we need to take the big picture view of things and focus on
|
||||
|
@ -227,7 +227,7 @@ IF(WITH_CORE)
|
||||
# https://sourceforge.net/p/mingw-w64/bugs/527/
|
||||
# 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")
|
||||
IF (WITH_THREAD_LOCAL)
|
||||
|
4
debian/upstream/metadata
vendored
4
debian/upstream/metadata
vendored
@ -1,6 +1,6 @@
|
||||
---
|
||||
Bug-Database: https://issues.qgis.org/projects/qgis/issues
|
||||
Bug-Submit: https://issues.qgis.org/projects/qgis/issues/new
|
||||
Bug-Database: https://github.com/qgis/QGIS/issues
|
||||
Bug-Submit: https://github.com/qgis/QGIS/issues
|
||||
Contact: qgis-developer@lists.osgeo.org
|
||||
Donation: https://qgis.org/en/site/getinvolved/donations.html
|
||||
Name: QGIS
|
||||
|
@ -59,9 +59,8 @@ users and developers.
|
||||
|
||||
\section index_bugs Bug Reporting
|
||||
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,
|
||||
please include some contact information in case we need help with replicating
|
||||
your issue.
|
||||
href="https://github.com/qgis/QGIS/issues">bug tracker</a>. When reporting bugs,
|
||||
please be available to follow up on your initial report.
|
||||
|
||||
\section index_ircchannel IRC channel
|
||||
Some QGIS users and developers can also often be found in the
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
<metadata_license>MIT</metadata_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="faq">https://qgis.org/en/site/getinvolved/faq/index.html</url>
|
||||
<url type="help">https://qgis.org/en/docs/index.html</url>
|
||||
|
@ -9,7 +9,7 @@ icon=images/MetaSearch.svg
|
||||
author=Tom Kralidis
|
||||
email=tomkralidis@gmail.com
|
||||
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
|
||||
repository=https://github.com/qgis/QGIS/tree/master/python/plugins/MetaSearch
|
||||
experimental=False
|
||||
|
@ -48,8 +48,8 @@ class TestDBManagerPostgisConnector(unittest.TestCase):
|
||||
connector._close_cursor(r)
|
||||
return val
|
||||
|
||||
# See https://issues.qgis.org/issues/16625
|
||||
# and https://issues.qgis.org/issues/10600
|
||||
# See https://github.com/qgis/QGIS/issues/24525
|
||||
# and https://github.com/qgis/QGIS/issues/19005
|
||||
def test_dbnameLessURI(self):
|
||||
c = PostGisDBConnector(QgsDataSourceUri())
|
||||
self.assertIsInstance(c, PostGisDBConnector)
|
||||
|
@ -66,7 +66,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
|
||||
# Remove temporary service file
|
||||
os.unlink(self.tmpservicefile)
|
||||
|
||||
# See https://issues.qgis.org/issues/16625
|
||||
# See https://github.com/qgis/QGIS/issues/24525
|
||||
|
||||
def test_rasterTableGdalURI(self):
|
||||
|
||||
@ -92,8 +92,8 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
|
||||
obj = QObject() # needs to be kept alive
|
||||
|
||||
# Test for empty URI
|
||||
# See https://issues.qgis.org/issues/16625
|
||||
# and https://issues.qgis.org/issues/10600
|
||||
# See https://github.com/qgis/QGIS/issues/24525
|
||||
# and https://github.com/qgis/QGIS/issues/19005
|
||||
|
||||
expected_dbname = self.testdb
|
||||
os.environ['PGDATABASE'] = expected_dbname
|
||||
@ -110,7 +110,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
|
||||
check_rasterTableGdalURI(expected_dbname)
|
||||
|
||||
# Test for service-only URI
|
||||
# See https://issues.qgis.org/issues/16626
|
||||
# See https://github.com/qgis/QGIS/issues/24526
|
||||
|
||||
os.environ['PGDATABASE'] = 'fake'
|
||||
database = PGDatabase(obj, QgsDataSourceUri('service=dbmanager'))
|
||||
@ -124,7 +124,7 @@ class TestDBManagerPostgisPlugin(unittest.TestCase):
|
||||
|
||||
check_rasterTableGdalURI(expected_dbname)
|
||||
|
||||
# See http://issues.qgis.org/issues/16833
|
||||
# See https://github.com/qgis/QGIS/issues/24732
|
||||
def test_unicodeInQuery(self):
|
||||
os.environ['PGDATABASE'] = self.testdb
|
||||
obj = QObject() # needs to be kept alive
|
||||
|
@ -11,8 +11,8 @@ email=volayaf@gmail.com
|
||||
|
||||
icon=:/images/themes/default/processingAlgorithm.svg
|
||||
|
||||
homepage=http://qgis.org
|
||||
tracker=https://issues.qgis.org/projects/qgis/issues
|
||||
homepage=https://qgis.org
|
||||
tracker=https://github.com/qgis/QGIS/issues
|
||||
repository=https://github.com/qgis/QGIS
|
||||
|
||||
hasProcessingProvider=yes
|
||||
hasProcessingProvider=yes
|
||||
|
@ -2765,7 +2765,7 @@ class TestGdalOgrToPostGis(unittest.TestCase):
|
||||
def tearDownClass(cls):
|
||||
pass
|
||||
|
||||
# See https://issues.qgis.org/issues/15706
|
||||
# See https://github.com/qgis/QGIS/issues/23629
|
||||
def test_getConnectionString(self):
|
||||
obj = OgrToPostGis()
|
||||
obj.initAlgorithm({})
|
||||
|
@ -51,7 +51,7 @@ Source5: %{name}-server-README.fedora
|
||||
Source6: %{name}-mime.xml
|
||||
|
||||
# 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
|
||||
Patch0: %{name}-lib64.patch
|
||||
|
||||
@ -163,7 +163,7 @@ Requires: %{name}%{?_isa} = %{combinedversion}-%{release}
|
||||
# This questions the sense of the libs package.
|
||||
# WARNING: Rebuild QGIS whenever a new version of GRASS is shipped! Even though
|
||||
# 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}
|
||||
|
||||
%description grass
|
||||
|
@ -220,7 +220,7 @@ QVariantMap QgsDissolveAlgorithm::processAlgorithm( const QVariantMap ¶meter
|
||||
if ( QgsWkbTypes::geometryType( result.wkbType() ) == QgsWkbTypes::LineGeometry )
|
||||
result = result.mergeLines();
|
||||
// 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 ( feedback->isCanceled() )
|
||||
|
@ -188,7 +188,7 @@ void QgsLayoutLabelWidget::mInsertExpressionButton_clicked()
|
||||
|
||||
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' ) );
|
||||
|
||||
// edit the selected expression if there's one
|
||||
|
@ -583,7 +583,7 @@ void QgsAttributeTableDialog::runFieldCalculation( QgsVectorLayer *layer, const
|
||||
mLayer->endEditCommand();
|
||||
|
||||
// refresh table with updated values
|
||||
// fixes https://issues.qgis.org/issues/17312
|
||||
// fixes https://github.com/qgis/QGIS/issues/25210
|
||||
QgsAttributeTableModel *masterModel = mMainView->masterModel();
|
||||
int modelColumn = masterModel->fieldCol( fieldindex );
|
||||
masterModel->reload( masterModel->index( 0, modelColumn ), masterModel->index( masterModel->rowCount() - 1, modelColumn ) );
|
||||
|
@ -212,7 +212,7 @@ QgsFeatureList QgsClipboard::stringToFeatureList( const QString &string, const Q
|
||||
// previous QgsOgrUtils::stringToFeatureList call
|
||||
// Get the first value of a \t separated list. WKT clipboard pasted
|
||||
// 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
|
||||
QStringList fieldValues = row.split( '\t' );
|
||||
if ( fieldValues.isEmpty() )
|
||||
|
@ -522,7 +522,7 @@ void QgsFieldCalculator::setPrecisionMinMax()
|
||||
bool precisionIsEnabled = minPrecType < maxPrecType;
|
||||
mOutputFieldPrecisionSpinBox->setEnabled( precisionIsEnabled );
|
||||
// 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)
|
||||
if ( precisionIsEnabled )
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ static void throwGEOSException( const char *fmt, ... )
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// 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
|
||||
// and burn on the "line_interpolate_point point" test if a GEOSException is thrown.
|
||||
// TODO - find a real fix for the underlying issue
|
||||
|
@ -138,7 +138,7 @@ void QgsLayerTree::writeXml( QDomElement &parentElement, const QgsReadWriteConte
|
||||
|
||||
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
|
||||
if ( ! layer )
|
||||
continue;
|
||||
|
@ -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
|
||||
// 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();
|
||||
}
|
||||
|
||||
|
@ -314,7 +314,7 @@ void QgsLabelingEngine::run( QgsRenderContext &context )
|
||||
// features are pre-rotated but not scaled/translated,
|
||||
// so we only disable rotation here. Ideally, they'd be
|
||||
// also pre-scaled/translated, as suggested here:
|
||||
// https://issues.qgis.org/issues/11856
|
||||
// https://github.com/qgis/QGIS/issues/20071
|
||||
QgsMapToPixel xform = mMapSettings.mapToPixel();
|
||||
xform.setMapRotation( 0, 0, 0 );
|
||||
#else
|
||||
|
@ -106,7 +106,7 @@ QString QgsMapSettingsUtils::worldFileContent( const QgsMapSettings &mapSettings
|
||||
double c = r[0] * s[2] + r[1] * s[5] + r[2];
|
||||
double d = r[3] * s[0] + r[4] * s[3];
|
||||
// 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 f = r[3] * s[2] + r[4] * s[5] + r[5];
|
||||
|
||||
|
@ -80,7 +80,7 @@ bool QgsMapToPixel::updateMatrix()
|
||||
{
|
||||
QTransform newMatrix = transform();
|
||||
|
||||
// https://issues.qgis.org/issues/12757
|
||||
// https://github.com/qgis/QGIS/issues/20856
|
||||
if ( !newMatrix.isInvertible() )
|
||||
return false;
|
||||
|
||||
|
@ -611,7 +611,7 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex )
|
||||
catch ( const QgsException &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() ) );
|
||||
}
|
||||
}
|
||||
@ -662,7 +662,7 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex )
|
||||
catch ( const QgsException &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() ) );
|
||||
continue;
|
||||
}
|
||||
@ -775,7 +775,7 @@ void QgsPointLocator::onFeatureAdded( QgsFeatureId fid )
|
||||
catch ( const QgsException &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() ) );
|
||||
return;
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ bool QgsTileCache::tile( const QUrl &url, QImage &image )
|
||||
image = QImage::fromData( imageData );
|
||||
|
||||
// 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( ) )
|
||||
{
|
||||
sTileCache.insert( url, new QImage( image ) );
|
||||
|
@ -102,7 +102,7 @@ void QgsVectorLayerDiagramProvider::drawLabel( QgsRenderContext &context, pal::L
|
||||
// features are pre-rotated but not scaled/translated,
|
||||
// so we only disable rotation here. Ideally, they'd be
|
||||
// also pre-scaled/translated, as suggested here:
|
||||
// https://issues.qgis.org/issues/11856
|
||||
// https://github.com/qgis/QGIS/issues/20071
|
||||
QgsMapToPixel xform = context.mapToPixel();
|
||||
xform.setMapRotation( 0, 0, 0 );
|
||||
#else
|
||||
|
@ -333,7 +333,7 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList &commitErrors )
|
||||
// no yes => changeAttributeValues
|
||||
// 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
|
||||
// this check have to be done before all checks to avoid to clear internal
|
||||
// buffer if some of next steps success.
|
||||
|
@ -382,7 +382,7 @@ void QgsVectorLayerLabelProvider::drawLabelPrivate( pal::LabelPosition *label, Q
|
||||
// features are pre-rotated but not scaled/translated,
|
||||
// so we only disable rotation here. Ideally, they'd be
|
||||
// also pre-scaled/translated, as suggested here:
|
||||
// https://issues.qgis.org/issues/11856
|
||||
// https://github.com/qgis/QGIS/issues/20071
|
||||
QgsMapToPixel xform = context.mapToPixel();
|
||||
xform.setMapRotation( 0, 0, 0 );
|
||||
|
||||
|
@ -19,7 +19,7 @@ originally part of the larger QgsRasterLayer class
|
||||
***************************************************************************/
|
||||
|
||||
// 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
|
||||
|
||||
#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.
|
||||
// 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 )
|
||||
{
|
||||
return false;
|
||||
|
@ -2082,7 +2082,7 @@ void QgsSvgMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext
|
||||
|
||||
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 );
|
||||
}
|
||||
|
||||
|
@ -423,7 +423,7 @@ bool QgsRuleBasedRenderer::Rule::startRender( QgsRenderContext &context, const Q
|
||||
sf = QStringLiteral( "TRUE" );
|
||||
}
|
||||
// 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 )
|
||||
{
|
||||
std::function<QString( const QStringList & )>bt = [ &bt ]( const QStringList & subf )
|
||||
|
@ -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>"
|
||||
"<br><br>"
|
||||
"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->setOpenExternalLinks( true );
|
||||
|
||||
|
@ -116,7 +116,7 @@ void QgsAttributeTableDelegate::setModelData( QWidget *editor, QAbstractItemMode
|
||||
|
||||
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 );
|
||||
request.setFlags( QgsFeatureRequest::NoGeometry );
|
||||
request.setNoAttributes();
|
||||
|
@ -263,7 +263,7 @@ void QgsAttributeTableModel::updatedFields()
|
||||
void QgsAttributeTableModel::editCommandEnded()
|
||||
{
|
||||
// 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( );
|
||||
}
|
||||
|
||||
|
@ -332,7 +332,7 @@ void QgsDualView::initModels( QgsMapCanvas *mapCanvas, const QgsFeatureRequest &
|
||||
mFilterModel = new QgsAttributeTableFilterModel( mapCanvas, mMasterModel, mMasterModel );
|
||||
|
||||
// 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::rowsInserted, mFilterModel, &QgsAttributeTableFilterModel::invalidate );
|
||||
|
||||
|
@ -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
|
||||
// want to strip the separator unless the layer is editable.
|
||||
// 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"
|
||||
bool canConvertToDouble;
|
||||
QLocale().toDouble( v, &canConvertToDouble );
|
||||
|
@ -217,7 +217,7 @@ void QgsValueRelationWidgetWrapper::setValue( const QVariant &value )
|
||||
else if ( mComboBox )
|
||||
{
|
||||
// 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
|
||||
for ( int i = 0; i < mComboBox->count(); i++ )
|
||||
{
|
||||
|
@ -98,7 +98,7 @@ void QgsLayoutConfigObject::updateDataDefinedButton( QgsPropertyOverrideButton *
|
||||
QgsLayoutObject::DataDefinedProperty key = static_cast< QgsLayoutObject::DataDefinedProperty >( button->propertyKey() );
|
||||
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 );
|
||||
button->registerExpressionContextGenerator( mLayoutObject );
|
||||
}
|
||||
|
@ -1022,7 +1022,7 @@ void QgsColorRampWidget::paintEvent( QPaintEvent *event )
|
||||
// we need to set pen width to 1,
|
||||
// since on retina displays
|
||||
// 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 );
|
||||
painter.setPen( pen );
|
||||
painter.setBrush( Qt::NoBrush );
|
||||
|
@ -665,7 +665,7 @@ void QgsPropertyOverrideButton::showExpressionDialog()
|
||||
{
|
||||
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()
|
||||
: mProperty.asExpression();
|
||||
|
||||
|
@ -137,7 +137,7 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer *rasterLa
|
||||
// pyramids are not necessarily built every time
|
||||
|
||||
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 );
|
||||
|
||||
connect( mCrsSelector, &QgsProjectionSelectionWidget::crsChanged,
|
||||
|
@ -551,7 +551,7 @@ void QgsRubberBand::updateRect()
|
||||
void QgsRubberBand::updatePosition()
|
||||
{
|
||||
// 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
|
||||
// of rubberband and simply re-projecting
|
||||
// that to device-rectangle on "updatePosition"
|
||||
|
@ -918,7 +918,7 @@ QDomDocument QgsGrassModuleStandardOptions::readInterfaceDescription( const QStr
|
||||
|
||||
// GRASS commands usually output text in system default 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;
|
||||
|
||||
QgsDebugMsg( "trying to get encoding name from XML interface description..." );
|
||||
|
@ -172,7 +172,7 @@ QgsGdalProvider::QgsGdalProvider( const QString &uri, const ProviderOptions &opt
|
||||
if ( !CPLGetConfigOption( "VRT_SHARED_SOURCE", nullptr ) )
|
||||
{
|
||||
// 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
|
||||
CPLSetConfigOption( "VRT_SHARED_SOURCE", "NO" );
|
||||
}
|
||||
|
@ -1873,7 +1873,7 @@ bool QgsOgrProvider::addAttributes( const QList<QgsField> &attributes )
|
||||
// Without the below hack, the length of the first added field would have
|
||||
// been reset to zero, and QgsVectorLayerEditBuffer::commitChanges() would
|
||||
// error out because of this.
|
||||
// See https://issues.qgis.org/issues/19009
|
||||
// See https://github.com/qgis/QGIS/issues/26840
|
||||
for ( auto field : oldFields )
|
||||
{
|
||||
int idx = mAttributeFields.lookupField( field.name() );
|
||||
@ -3726,7 +3726,7 @@ QSet<QVariant> QgsOgrProvider::uniqueValues( int index, int limit ) const
|
||||
// GPKG/SQLite fid
|
||||
// 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
|
||||
// See https://issues.qgis.org/issues/21311
|
||||
// See https://github.com/qgis/QGIS/issues/29129
|
||||
if ( ( mGDALDriverName == QLatin1String( "GPKG" ) || mGDALDriverName == QLatin1String( "SQLite" ) )
|
||||
&& mFirstFieldIsFid && index == 0 )
|
||||
{
|
||||
|
@ -160,7 +160,7 @@ QgsPostgresConn *QgsPostgresConn::connectDb( const QString &conninfo, bool reado
|
||||
if ( shared )
|
||||
{
|
||||
// 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() );
|
||||
|
||||
if ( connections.contains( conninfo ) )
|
||||
@ -1354,7 +1354,7 @@ qint64 QgsPostgresConn::getBinaryInt( QgsPostgresResult &queryResult, int row, i
|
||||
if ( mSwapEndian )
|
||||
oid = ntohs( oid );
|
||||
/* cast to signed 16bit
|
||||
* See https://issues.qgis.org/issues/14262 */
|
||||
* See https://github.com/qgis/QGIS/issues/22258 */
|
||||
oid = ( qint16 )oid;
|
||||
break;
|
||||
|
||||
@ -1404,7 +1404,7 @@ qint64 QgsPostgresConn::getBinaryInt( QgsPostgresResult &queryResult, int row, i
|
||||
if ( mSwapEndian )
|
||||
oid = ntohl( oid );
|
||||
/* cast to signed 32bit
|
||||
* See https://issues.qgis.org/issues/14262 */
|
||||
* See https://github.com/qgis/QGIS/issues/22258 */
|
||||
oid = ( qint32 )oid;
|
||||
break;
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ QgsPostgresProvider::pkType( const QgsField &f ) const
|
||||
// unless we can guarantee all values are unsigned
|
||||
// (in which case we could use pktUint64)
|
||||
// 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
|
||||
|
||||
case QVariant::Int:
|
||||
@ -178,7 +178,7 @@ QgsPostgresProvider::QgsPostgresProvider( QString const &uri, const ProviderOpti
|
||||
}
|
||||
|
||||
// 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 )
|
||||
{
|
||||
@ -3236,7 +3236,7 @@ long QgsPostgresProvider::featureCount() const
|
||||
if ( featuresCounted >= 0 )
|
||||
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() )
|
||||
{
|
||||
return 0;
|
||||
|
@ -487,7 +487,7 @@ class QgsPostgresUtils
|
||||
|
||||
// We shift negative 32bit integers to above the max 32bit
|
||||
// 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 )
|
||||
{
|
||||
return x >= 0 ? x : x + INT32PK_OFFSET;
|
||||
|
@ -1478,7 +1478,7 @@ bool QgsWFSProvider::readAttributesFromSchema( QDomDocument &schemaDoc,
|
||||
//attribute name
|
||||
QString name = attributeElement.attribute( QStringLiteral( "name" ) );
|
||||
// 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
|
||||
// is but this validates with Xerces 3.1, and its schema analyzer does also the trimming.
|
||||
name = name.trimmed();
|
||||
|
@ -59,7 +59,7 @@ namespace QgsWms
|
||||
renderJob.start();
|
||||
|
||||
// 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;
|
||||
QObject::connect( &renderJob, &QgsMapRendererParallelJob::finished, &loop, &QEventLoop::quit );
|
||||
loop.exec();
|
||||
|
@ -623,7 +623,7 @@ void TestQgsGeometrySnapper::snapMultiPolygonToPolygon()
|
||||
flist << ff;
|
||||
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)))" ) );
|
||||
QgsGeometrySnapper snapper( rl );
|
||||
QgsGeometry result = snapper.snapGeometry( polygonGeom, 1 );
|
||||
|
@ -209,7 +209,7 @@ void TestQgisAppClipboard::pasteWkt()
|
||||
QCOMPARE( point->y(), 30.0 );
|
||||
|
||||
// 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)" ) );
|
||||
|
||||
features = mQgisApp->clipboard()->copyOf();
|
||||
|
@ -320,7 +320,7 @@ void TestQgsAttributeTable::testOrderColumn()
|
||||
|
||||
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
|
||||
// the currentIndex is no longer the first column, and consequently it breaks edition
|
||||
|
||||
|
@ -93,12 +93,12 @@ void TestQgsCurve::curveToLine()
|
||||
"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 */
|
||||
/* See https://issues.qgis.org/issues/16717 */
|
||||
/* See https://github.com/qgis/QGIS/issues/24616 */
|
||||
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 );
|
||||
|
||||
/* 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,
|
||||
"LineString (0 0, 50 86.6, 150 86.6, 200 0)", 2 );
|
||||
|
||||
|
@ -16902,7 +16902,7 @@ QString TestQgsGeometry::elemToString( const QDomElement &elem ) const
|
||||
void TestQgsGeometry::wkbInOut()
|
||||
{
|
||||
// Premature end of WKB
|
||||
// See https://issues.qgis.org/issues/14182
|
||||
// See https://github.com/qgis/QGIS/issues/22184
|
||||
const char *hexwkb = "0102000000EF0000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
int size;
|
||||
unsigned char *wkb = hex2bytes( hexwkb, &size );
|
||||
|
@ -549,7 +549,7 @@ void TestQgsGeometryUtils::testCircleCenterRadius()
|
||||
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 p1( 771946, 6.95593e+06 );
|
||||
QgsPointXY p2( 771904, 6.95595e+06 );
|
||||
|
@ -638,7 +638,7 @@ bool TestQgsLabelingEngine::imageCheck( const QString &testName, QImage &image,
|
||||
return resultFlag;
|
||||
}
|
||||
|
||||
// See https://issues.qgis.org/issues/15507
|
||||
// See https://github.com/qgis/QGIS/issues/23431
|
||||
void TestQgsLabelingEngine::testRegisterFeatureUnprojectible()
|
||||
{
|
||||
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
|
||||
// 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
|
||||
// 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;
|
||||
setDefaultLabelParams( settings );
|
||||
|
@ -43,7 +43,7 @@ class TestQgsLayerDefinition: public QObject
|
||||
|
||||
/**
|
||||
* 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();
|
||||
|
||||
|
@ -168,7 +168,7 @@ TestQgsMapToPixelGeometrySimplifier::testIsGeneralizableByMapBoundingBox()
|
||||
void TestQgsMapToPixelGeometrySimplifier::testWkbDimensionMismatch()
|
||||
{
|
||||
// 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
|
||||
// simplification won't even be attempted
|
||||
const char *hexwkb = "010500000002000000010200008005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000000000000000000040000000000000000000000000000000000000000000000840000000000000F03F0000000000000000000000000000244000000000000000008DEDB5A0F7C6B0BE010200008002000000000000000000000000000000000000000000000000000000000000000000000000000000000000008DEDB5A0F7C6B03E";
|
||||
|
@ -126,7 +126,7 @@ void TestQgsMarkerLineSymbol::lineOffset()
|
||||
mMapSettings->setLayers( QList<QgsMapLayer *>() << mLinesLayer );
|
||||
|
||||
// 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";
|
||||
bool success = false;
|
||||
@ -137,7 +137,7 @@ void TestQgsMarkerLineSymbol::lineOffset()
|
||||
QVERIFY( render( QStringLiteral( "line_offset" ) ) );
|
||||
|
||||
// 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()
|
||||
|
@ -439,7 +439,7 @@ void TestQgsRasterLayer::checkStats()
|
||||
}
|
||||
|
||||
// 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()
|
||||
{
|
||||
mReport += QLatin1String( "<h2>Check Stats with scale/offset</h2>\n" );
|
||||
|
@ -128,8 +128,8 @@ void TestQgsSvgCache::threadSafePicture()
|
||||
// returns a detached copy which is safe to use across threads
|
||||
|
||||
// refs:
|
||||
// https://issues.qgis.org/issues/17077
|
||||
// https://issues.qgis.org/issues/17089
|
||||
// https://github.com/qgis/QGIS/issues/24976
|
||||
// https://github.com/qgis/QGIS/issues/24988
|
||||
|
||||
QgsSvgCache cache;
|
||||
QString svgPath = TEST_DATA_DIR + QStringLiteral( "/sample_svg.svg" );
|
||||
|
@ -84,25 +84,25 @@ class TestQgsVectorFileWriter: public QObject
|
||||
void polygonGridTest();
|
||||
//! As above but using a projected CRS
|
||||
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();
|
||||
//! Test prepareWriteAsVectorFormat
|
||||
void prepareWriteAsVectorFormat();
|
||||
//! Test regression #21714 (Exported GeoPackages have wrong field definitions)
|
||||
void testTextFieldLength();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxPoint();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxPointTrackPoints();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxPointRoutePoints();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxLineString();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxLineStringForceTrack();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxMultiLineString();
|
||||
//! Test https://issues.qgis.org/issues/22005
|
||||
//! Test https://github.com/qgis/QGIS/issues/29819
|
||||
void testExportToGpxMultiLineStringForceRoute();
|
||||
|
||||
private:
|
||||
|
@ -929,7 +929,7 @@ void TestQgsGeometryChecks::testSelfContactCheck()
|
||||
|
||||
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
|
||||
QgsGeometryCheckContext context( 1, QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3857" ) ), QgsCoordinateTransformContext() );
|
||||
QgsGeometrySelfContactCheck check2( &context, QVariantMap() );
|
||||
|
@ -132,7 +132,7 @@ void TestQgsRangeWidgetWrapper::cleanup()
|
||||
void TestQgsRangeWidgetWrapper::test_setDoubleRange()
|
||||
{
|
||||
// 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
|
||||
|
||||
QgsDoubleSpinBox *editor = qobject_cast<QgsDoubleSpinBox *>( widget1->createWidget( nullptr ) );
|
||||
|
@ -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"
|
||||
void TestQgsRelationReferenceWidget::testIdentifyOnMap()
|
||||
{
|
||||
|
@ -72,7 +72,7 @@ void TestQgsScaleRangeWidget::test_setScaleRange()
|
||||
// Test that setting scale range is always honoured
|
||||
// rather than being limited by previously set
|
||||
// max or min.
|
||||
// See https://issues.qgis.org/issues/15463
|
||||
// See https://github.com/qgis/QGIS/issues/23389
|
||||
|
||||
widget->setScaleRange( 6, 4 );
|
||||
QCOMPARE( widget->minimumScale(), 6.0 );
|
||||
|
@ -330,7 +330,7 @@ void TestQgsValueRelationWidgetWrapper::testDrillDownMulti()
|
||||
void TestQgsValueRelationWidgetWrapper::testZeroIndexInRelatedTable()
|
||||
{
|
||||
// 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
|
||||
QgsVectorLayer vl1( QStringLiteral( "Polygon?crs=epsg:4326&field=pk:int&field=province:int&field=municipality:string" ), QStringLiteral( "vl1" ), QStringLiteral( "memory" ) );
|
||||
|
@ -327,7 +327,7 @@ class PyQgsOGRProvider(unittest.TestCase):
|
||||
self.assertEqual(gdal.GetConfigOption("GDAL_HTTP_PROXYUSERPWD"), "username")
|
||||
|
||||
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')
|
||||
with open(datasource, 'wt') as f:
|
||||
@ -350,7 +350,7 @@ class PyQgsOGRProvider(unittest.TestCase):
|
||||
self.assertEqual(f['w'], 4)
|
||||
|
||||
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')
|
||||
with open(datasource, 'wt') as f:
|
||||
@ -377,7 +377,7 @@ class PyQgsOGRProvider(unittest.TestCase):
|
||||
self.assertEqual(len(vl.fields()), 1)
|
||||
|
||||
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')
|
||||
with open(datasource, 'wt') as f:
|
||||
|
@ -215,7 +215,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
|
||||
@unittest.skip(int(gdal.VersionInfo('VERSION_NUM')) < GDAL_COMPUTE_VERSION(2, 1, 2))
|
||||
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')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
|
||||
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint)
|
||||
@ -643,7 +643,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
self.assertEqual(lyr2.wkbType(), QgsWkbTypes.Point)
|
||||
|
||||
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')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
@ -1059,7 +1059,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
self.assertEqual(len(features), 1)
|
||||
|
||||
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')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
|
||||
@ -1079,7 +1079,7 @@ class TestPyQgsOGRProviderGpkg(unittest.TestCase):
|
||||
self.assertTrue(vl.commitChanges())
|
||||
|
||||
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')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(tmpfile)
|
||||
|
@ -240,7 +240,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
|
||||
self.assertTrue(vl.isValid())
|
||||
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
|
||||
def testSignedIdentifiers(self):
|
||||
|
||||
@ -815,7 +815,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
|
||||
# If an attribute map is provided, QgsVectorLayerUtils.createFeature must
|
||||
# respect it, otherwise default values from provider are checked.
|
||||
# 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'})
|
||||
# changed so that createFeature respects user choice
|
||||
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})
|
||||
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):
|
||||
uri = 'point?field=f1:int'
|
||||
uri += '&field=f2:double(6,4)'
|
||||
@ -853,7 +853,7 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
|
||||
self.assertEqual(f['f2'], 123.456)
|
||||
self.assertEqual(f['f3'], '12345678.90123456789')
|
||||
|
||||
# See https://issues.qgis.org/issues/15226
|
||||
# See https://github.com/qgis/QGIS/issues/23163
|
||||
def testImportKey(self):
|
||||
uri = 'point?field=f1:int'
|
||||
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, None, ['id'])
|
||||
|
||||
# See https://issues.qgis.org/issues/17518
|
||||
# See https://github.com/qgis/QGIS/issues/25415
|
||||
def testImportWithoutSchema(self):
|
||||
|
||||
def _test(table, schema=None):
|
||||
|
@ -977,7 +977,7 @@ class TestQgsVirtualLayerProvider(unittest.TestCase, ProviderTestCase):
|
||||
|
||||
def testUpdatedFields(self):
|
||||
"""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")
|
||||
|
@ -115,7 +115,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
|
||||
<xsd:complexContent>
|
||||
<xsd:extension base="gml:AbstractFeatureType">
|
||||
<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="cnt" nillable="true" type="xsd:long"/>
|
||||
<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))
|
||||
|
||||
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'
|
||||
|
||||
@ -3552,7 +3552,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
|
||||
self.assertTrue(vl.isValid())
|
||||
|
||||
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'
|
||||
|
||||
@ -3807,7 +3807,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase):
|
||||
pass # skip this feature source test -- provider is not affected
|
||||
|
||||
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'
|
||||
|
||||
|
@ -875,7 +875,7 @@ class TestQgsGeometry(unittest.TestCase):
|
||||
"""Test we can simplify a complex geometry.
|
||||
|
||||
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
|
||||
(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)
|
||||
|
||||
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)))')
|
||||
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)
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
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
|
||||
"""
|
||||
a = QgsGeometry.fromWkt('LineString (0 0, 1 0)')
|
||||
@ -2325,7 +2325,7 @@ class TestQgsGeometry(unittest.TestCase):
|
||||
wkt = g.asWkt()
|
||||
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)]))
|
||||
|
||||
expWkt = 'Polygon ((0 0.5, 0 0, 1 0, 1 0.5, 0.5 1, 0 0.5))'
|
||||
|
@ -789,7 +789,7 @@ class TestQgsJsonUtils(unittest.TestCase):
|
||||
|
||||
def testExportFeaturesWithLocale_regression20053(self):
|
||||
""" 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",
|
||||
|
@ -366,7 +366,7 @@ class TestQgsLayoutAtlas(unittest.TestCase):
|
||||
self.assertEqual(self.atlas.currentFilename(), expected)
|
||||
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')")
|
||||
expected = ['output_Basse-Normandie',
|
||||
|
@ -96,7 +96,7 @@ class TestPointBase(object):
|
||||
self._Mismatches['TestComposerImageVsCanvasPoint'] = 800
|
||||
self._Mismatches['TestComposerImagePoint'] = 800
|
||||
# verify fix for issues
|
||||
# https://issues.qgis.org/issues/9057
|
||||
# https://github.com/qgis/QGIS/issues/17705
|
||||
# http://gis.stackexchange.com/questions/86900
|
||||
|
||||
format = self.lyr.format()
|
||||
|
Loading…
x
Reference in New Issue
Block a user