Changeset 18958 in josm


Ignore:
Timestamp:
2024-01-25T20:00:41+01:00 (4 months ago)
Author:
taylor.smock
Message:

Fix #23418: Improve unit test consistency when run with non-English locales

This also fixes some tests that fail when run individually.

Location:
trunk/test/unit/org/openstreetmap/josm
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java

    r18918 r18958  
    2020import org.openstreetmap.josm.data.validation.Severity;
    2121import org.openstreetmap.josm.data.validation.TestError;
     22import org.openstreetmap.josm.testutils.annotations.I18n;
    2223import org.openstreetmap.josm.testutils.annotations.TaggingPresets;
    2324
     
    2526 * JUnit Test of {@link TagChecker}.
    2627 */
     28@I18n
    2729@TaggingPresets
    2830class TagCheckerTest {
  • trunk/test/unit/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayerTest.java

    r18927 r18958  
    2424import org.openstreetmap.josm.spi.preferences.Config;
    2525import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
     26import org.openstreetmap.josm.testutils.annotations.I18n;
    2627import org.openstreetmap.josm.testutils.annotations.Main;
    2728import org.openstreetmap.josm.testutils.annotations.Projection;
     
    3334@Main
    3435@Projection
     36@I18n
    3537class MarkerLayerTest {
    3638    /**
  • trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java

    r18853 r18958  
    2020import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector.PresetClassification;
    2121import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector.PresetClassifications;
     22import org.openstreetmap.josm.testutils.annotations.Territories;
    2223import org.xml.sax.SAXException;
    2324
     
    2526 * Unit tests of {@link PresetClassifications} class.
    2627 */
     28@Territories
    2729class PresetClassificationsTest {
    2830
  • trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java

    r18870 r18958  
    1818import org.openstreetmap.josm.gui.tagging.presets.items.Check;
    1919import org.openstreetmap.josm.gui.tagging.presets.items.Key;
     20import org.openstreetmap.josm.testutils.annotations.Territories;
    2021import org.xml.sax.SAXException;
    2122
     
    7778     * @throws IOException if any I/O error occurs
    7879     */
     80    @Territories
    7981    @Test
    8082    void testReadDefaultPresets() throws SAXException, IOException {
  • trunk/test/unit/org/openstreetmap/josm/testutils/annotations/I18n.java

    r18870 r18958  
    4646            if (!Locale.getDefault().equals(LanguageInfo.getLocale(language, false))) {
    4747                org.openstreetmap.josm.tools.I18n.set(language);
     48                // We want to have a consistent "country", so we don't use a locale with a country code from the original locale.
     49                // Unless someone specified it via the <lang>_<country> syntax.
     50                if (!language.contains("_")) {
     51                    Locale.setDefault(LanguageInfo.getLocale(language, false));
     52                }
    4853            }
    4954        }
     
    5156        @Override
    5257        public void afterEach(ExtensionContext context) {
    53             if (!Locale.ENGLISH.equals(Locale.getDefault())) {
     58            Locale original = org.openstreetmap.josm.tools.I18n.getOriginalLocale();
     59            if (original == null) {
    5460                org.openstreetmap.josm.tools.I18n.set("en");
    55                 org.openstreetmap.josm.tools.I18n.set(org.openstreetmap.josm.tools.I18n.getOriginalLocale().getLanguage());
    56                 Locale.setDefault(Locale.ENGLISH);
     61            } else if (!original.equals(Locale.getDefault())) {
     62                org.openstreetmap.josm.tools.I18n.set(original.getLanguage());
     63                Locale.setDefault(original);
    5764            }
    5865        }
  • trunk/test/unit/org/openstreetmap/josm/testutils/annotations/TaggingPresets.java

    r18918 r18958  
    88import java.lang.annotation.Target;
    99import java.util.Collection;
     10import java.util.Locale;
     11import java.util.Objects;
    1012
    1113import org.junit.jupiter.api.extension.BeforeAllCallback;
     
    3234    class TaggingPresetsExtension implements BeforeEachCallback, BeforeAllCallback {
    3335        private static int expectedHashcode = 0;
     36        private static Locale lastLocale;
    3437
    3538        @Override
     
    4851        public static synchronized void setup() {
    4952            final Collection<TaggingPreset> oldPresets = org.openstreetmap.josm.gui.tagging.presets.TaggingPresets.getTaggingPresets();
    50             if (oldPresets.isEmpty() || expectedHashcode != oldPresets.hashCode()) {
     53            if (oldPresets.isEmpty() || expectedHashcode != oldPresets.hashCode() || !Objects.equals(lastLocale, Locale.getDefault())) {
    5154                org.openstreetmap.josm.gui.tagging.presets.TaggingPresets.readFromPreferences();
    5255                expectedHashcode = org.openstreetmap.josm.gui.tagging.presets.TaggingPresets.getTaggingPresets().hashCode();
     56                lastLocale = Locale.getDefault();
    5357            }
    5458        }
Note: See TracChangeset for help on using the changeset viewer.