From cec77d4530ae51ee9ffe0ab57fa7a37cced2b181 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 3 Jan 2021 17:39:28 +0100 Subject: [PATCH] patch 8.2.2287: sort test fails when locale is French Canadian MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Problem: Sort test fails when locale is French Canadian. Solution: Expect a different sort order. (Dominique Pellé, closes #7609) --- src/testdir/test_sort.vim | 24 ++++++++++++------------ src/version.c | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim index 42a44528f..47c58594d 100644 --- a/src/testdir/test_sort.vim +++ b/src/testdir/test_sort.vim @@ -16,23 +16,24 @@ func Test_sort_strings() call assert_equal([1, 2, 3], sort([3, 2, 1])) call assert_equal([13, 28, 3], sort([3, 28, 13])) - call assert_equal(['A', 'O', 'P', 'a', 'o', 'p', 'Ä', 'Ô', 'ä', 'ô', 'œ', 'œ'], - \ sort(['A', 'O', 'P', 'a', 'o', 'p', 'Ä', 'Ô', 'ä', 'ô', 'œ', 'œ'])) + call assert_equal(['A', 'O', 'P', 'a', 'o', 'p', 'Ä', 'Ô', 'ä', 'ô', 'Œ', 'œ'], + \ sort(['A', 'O', 'P', 'a', 'o', 'p', 'Ä', 'Ô', 'ä', 'ô', 'œ', 'Œ'])) - call assert_equal(['A', 'a', 'o', 'O', 'p', 'P', 'Ä', 'Ô', 'ä', 'ô', 'œ', 'œ'], - \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'i')) + call assert_equal(['A', 'a', 'o', 'O', 'p', 'P', 'Ä', 'Ô', 'ä', 'ô', 'Œ', 'œ'], + \ sort(['A', 'a', 'o', 'O', 'œ', 'Œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'i')) " This does not appear to work correctly on Mac. if !has('mac') - if v:collate =~? '^en_ca.*\.utf-\?8$' && !has('mac') + if v:collate =~? '^\(en\|fr\)_ca.utf-\?8$' " with Canadian English capitals come before lower case. - call assert_equal(['A', 'a', 'Ä', 'ä', 'O', 'o', 'Ô', 'ô', 'œ', 'œ', 'P', 'p'], - \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) + " 'Œ' is omitted because it can sort before or after 'œ' + call assert_equal(['A', 'a', 'Ä', 'ä', 'O', 'o', 'Ô', 'ô', 'œ', 'P', 'p'], + \ sort(['A', 'a', 'o', 'O', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) elseif v:collate =~? '^\(en\|es\|de\|fr\|it\|nl\).*\.utf-\?8$' " With the following locales, the accentuated letters are ordered " similarly to the non-accentuated letters... - call assert_equal(['a', 'A', 'ä', 'Ä', 'o', 'O', 'ô', 'Ô', 'œ', 'œ', 'p', 'P'], - \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) + call assert_equal(['a', 'A', 'ä', 'Ä', 'o', 'O', 'ô', 'Ô', 'œ', 'Œ', 'p', 'P'], + \ sort(['A', 'a', 'o', 'O', 'œ', 'Œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) elseif v:collate =~? '^sv.*utf-\?8$' " ... whereas with a Swedish locale, the accentuated letters are ordered " after Z. @@ -1236,8 +1237,9 @@ func Test_sort_cmd() " This does not appear to work correctly on Mac. if !has('mac') - if v:collate =~? '^en_ca.*\.utf-\?8$' + if v:collate =~? '^\(en\|fr\)_ca.utf-\?8$' " en_CA.utf-8 sorts capitals before lower case + " 'Œ' is omitted because it can sort before or after 'œ' let tests += [ \ { \ 'name' : 'sort with locale ' .. v:collate, @@ -1250,7 +1252,6 @@ func Test_sort_cmd() \ 'È', \ 'É', \ 'Ô', - \ 'Œ', \ 'Z', \ 'a', \ 'e', @@ -1278,7 +1279,6 @@ func Test_sort_cmd() \ 'Ô', \ 'ô', \ 'œ', - \ 'Œ', \ 'Z', \ 'z' \ ] diff --git a/src/version.c b/src/version.c index aa01a3920..87d3c3dcc 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2287, /**/ 2286, /**/ -- 2.40.0