Skip to content

Commit 35e1c5f

Browse files
author
taylor.smock
committed
See #23049, fix an issue where tests might visit the entire dataset during upload
git-svn-id: https://josm.openstreetmap.de/svn/trunk@18776 0c6e7542-c601-0410-84e7-c038aed88b3b
1 parent 8146f9f commit 35e1c5f

File tree

3 files changed

+25
-12
lines changed

3 files changed

+25
-12
lines changed

src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414

1515
import org.openstreetmap.josm.data.APIDataSet;
1616
import org.openstreetmap.josm.data.osm.OsmPrimitive;
17-
import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
1817
import org.openstreetmap.josm.data.validation.OsmValidator;
19-
import org.openstreetmap.josm.data.validation.Severity;
2018
import org.openstreetmap.josm.data.validation.TestError;
2119
import org.openstreetmap.josm.data.validation.ValidationTask;
2220
import org.openstreetmap.josm.data.validation.util.AggregatePrimitivesVisitor;
@@ -52,10 +50,6 @@ public boolean checkUpload(APIDataSet apiDataSet) {
5250
Collection<OsmPrimitive> visited = v.visit(apiDataSet.getPrimitivesToUpdate());
5351
OsmValidator.initializeTests();
5452
new ValidationTask(errors -> {
55-
if (!Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER_UPLOAD.get())) {
56-
// Use >= just in case we add additional levels.
57-
errors.removeIf(error -> error.getSeverity().getLevel() >= Severity.OTHER.getLevel());
58-
}
5953
if (errors.stream().allMatch(TestError::isIgnored)) {
6054
returnCode.set(true);
6155
} else {

src/org/openstreetmap/josm/data/validation/ValidationTask.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ protected void finish() {
107107
});
108108
}
109109
if (this.onFinish != null) {
110+
// Remove any low severity issues if they are not desired.
111+
if (!(Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER.get()) &&
112+
(!this.beforeUpload || Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER_UPLOAD.get())))) {
113+
// Use >= just in case we add additional levels.
114+
this.errors.removeIf(error -> error.getSeverity().getLevel() >= Severity.OTHER.getLevel());
115+
}
110116
this.onFinish.accept(this.errors);
111117
}
112118
}
@@ -124,7 +130,8 @@ protected void realRun() {
124130
testCounter++;
125131
getProgressMonitor().setCustomText(tr("Test {0}/{1}: Starting {2}", testCounter, tests.size(), test.getName()));
126132
test.setBeforeUpload(this.beforeUpload);
127-
test.setPartialSelection(formerValidatedPrimitives != null);
133+
// Pre-upload checks only run on a partial selection.
134+
test.setPartialSelection(this.beforeUpload || formerValidatedPrimitives != null);
128135
test.startTest(getProgressMonitor().createSubTaskMonitor(validatedPrimitives.size(), false));
129136
test.visit(validatedPrimitives);
130137
test.endTest();

test/unit/org/openstreetmap/josm/actions/upload/ValidateUploadHookTest.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
import static org.junit.jupiter.api.Assertions.assertTrue;
66

77
import java.util.Collections;
8+
import java.util.stream.Stream;
89

910
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1011
import mockit.Mock;
1112
import org.junit.jupiter.api.Test;
1213
import org.junit.jupiter.api.extension.RegisterExtension;
1314
import org.junit.jupiter.params.ParameterizedTest;
14-
import org.junit.jupiter.params.provider.ValueSource;
15+
import org.junit.jupiter.params.provider.Arguments;
16+
import org.junit.jupiter.params.provider.MethodSource;
1517
import org.openstreetmap.josm.TestUtils;
1618
import org.openstreetmap.josm.data.APIDataSet;
1719
import org.openstreetmap.josm.data.Bounds;
@@ -47,10 +49,20 @@ void testCheckUpload() {
4749
assertTrue(new ValidateUploadHook().checkUpload(new APIDataSet()));
4850
}
4951

52+
static Stream<Arguments> testUploadOtherErrors() {
53+
return Stream.of(
54+
Arguments.of(true, true),
55+
Arguments.of(true, false),
56+
Arguments.of(false, false),
57+
Arguments.of(false, true)
58+
);
59+
}
60+
5061
@ParameterizedTest
51-
@ValueSource(booleans = {true, false})
52-
void testUploadOtherErrors(boolean otherEnabled) {
53-
ValidatorPrefHelper.PREF_OTHER_UPLOAD.put(otherEnabled);
62+
@MethodSource
63+
void testUploadOtherErrors(boolean otherUploadEnabled, boolean otherEnabled) {
64+
ValidatorPrefHelper.PREF_OTHER.put(otherEnabled);
65+
ValidatorPrefHelper.PREF_OTHER_UPLOAD.put(otherUploadEnabled);
5466
final DataSet ds = new DataSet();
5567
final Way building = TestUtils.newWay("building=yes", new Node(new LatLon(33.2287665, -111.8259225)),
5668
new Node(new LatLon(33.2287335, -111.8257513)), new Node(new LatLon(33.2285316, -111.8258086)),
@@ -73,6 +85,6 @@ public void dispose() {
7385
}
7486
};
7587
new ValidateUploadHook().checkUpload(new APIDataSet(ds));
76-
assertEquals(!otherEnabled, mocker.getInvocationLog().isEmpty());
88+
assertEquals(!(otherEnabled && otherUploadEnabled), mocker.getInvocationLog().isEmpty());
7789
}
7890
}

0 commit comments

Comments
 (0)