diff options
| author | Paul Eggert | 2018-05-02 11:14:07 -0700 |
|---|---|---|
| committer | Paul Eggert | 2018-05-02 11:46:03 -0700 |
| commit | f4b5ff20a663db483ee4bb3e60c34ce4cd2d6d70 (patch) | |
| tree | 3b9fdf5cc7b6ef37a5e63552a28b47a357350562 | |
| parent | 65ac27783a959a8339c2aab0f1e54d9b508a1f1f (diff) | |
| download | emacs-f4b5ff20a663db483ee4bb3e60c34ce4cd2d6d70.tar.gz emacs-f4b5ff20a663db483ee4bb3e60c34ce4cd2d6d70.zip | |
Port collation tests to glibc 2.27
* test/src/fns-tests.el (fns-tests-collate-strings)
(fns-tests-collate-sort): Don’t make unportable assumptions
about how en_US.UTF-8 collation works. These assumptions
are not true on Fedora 28, which ships with glibc 2.27.
| -rw-r--r-- | test/src/fns-tests.el | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el index f8554636bac..641947d66a0 100644 --- a/test/src/fns-tests.el +++ b/test/src/fns-tests.el | |||
| @@ -119,10 +119,9 @@ | |||
| 119 | 119 | ||
| 120 | ;; In POSIX or C locales, collation order is lexicographic. | 120 | ;; In POSIX or C locales, collation order is lexicographic. |
| 121 | (should (string-collate-lessp "XYZZY" "xyzzy" "POSIX")) | 121 | (should (string-collate-lessp "XYZZY" "xyzzy" "POSIX")) |
| 122 | ;; In a language specific locale, collation order is different. | 122 | ;; In a language specific locale on MS-Windows, collation order is different. |
| 123 | (should (string-collate-lessp | 123 | (when (eq system-type 'windows-nt) |
| 124 | "xyzzy" "XYZZY" | 124 | (should (string-collate-lessp "xyzzy" "XYZZY" "enu_USA"))) |
| 125 | (if (eq system-type 'windows-nt) "enu_USA" "en_US.UTF-8"))) | ||
| 126 | 125 | ||
| 127 | ;; Ignore case. | 126 | ;; Ignore case. |
| 128 | (should (string-collate-equalp "xyzzy" "XYZZY" nil t)) | 127 | (should (string-collate-equalp "xyzzy" "XYZZY" nil t)) |
| @@ -154,8 +153,6 @@ | |||
| 154 | (9 . "aaa") (9 . "zzz") (9 . "ppp") (9 . "fff")]))) | 153 | (9 . "aaa") (9 . "zzz") (9 . "ppp") (9 . "fff")]))) |
| 155 | 154 | ||
| 156 | (ert-deftest fns-tests-collate-sort () | 155 | (ert-deftest fns-tests-collate-sort () |
| 157 | ;; See https://lists.gnu.org/r/emacs-devel/2015-10/msg02505.html. | ||
| 158 | :expected-result (if (eq system-type 'cygwin) :failed :passed) | ||
| 159 | (skip-unless (fns-tests--collate-enabled-p)) | 156 | (skip-unless (fns-tests--collate-enabled-p)) |
| 160 | 157 | ||
| 161 | ;; Punctuation and whitespace characters are relevant for POSIX. | 158 | ;; Punctuation and whitespace characters are relevant for POSIX. |
| @@ -165,15 +162,16 @@ | |||
| 165 | (lambda (a b) (string-collate-lessp a b "POSIX"))) | 162 | (lambda (a b) (string-collate-lessp a b "POSIX"))) |
| 166 | '("1 1" "1 2" "1.1" "1.2" "11" "12"))) | 163 | '("1 1" "1 2" "1.1" "1.2" "11" "12"))) |
| 167 | ;; Punctuation and whitespace characters are not taken into account | 164 | ;; Punctuation and whitespace characters are not taken into account |
| 168 | ;; for collation in other locales. | 165 | ;; for collation in other locales, on MS-Windows systems. |
| 169 | (should | 166 | (when (eq system-type 'windows-nt) |
| 170 | (equal | 167 | (should |
| 171 | (sort '("11" "12" "1 1" "1 2" "1.1" "1.2") | 168 | (equal |
| 172 | (lambda (a b) | 169 | (sort '("11" "12" "1 1" "1 2" "1.1" "1.2") |
| 173 | (let ((w32-collate-ignore-punctuation t)) | 170 | (lambda (a b) |
| 174 | (string-collate-lessp | 171 | (let ((w32-collate-ignore-punctuation t)) |
| 175 | a b (if (eq system-type 'windows-nt) "enu_USA" "en_US.UTF-8"))))) | 172 | (string-collate-lessp |
| 176 | '("11" "1 1" "1.1" "12" "1 2" "1.2"))) | 173 | a b "enu_USA")))) |
| 174 | '("11" "1 1" "1.1" "12" "1 2" "1.2")))) | ||
| 177 | 175 | ||
| 178 | ;; Diacritics are different letters for POSIX, they sort lexicographical. | 176 | ;; Diacritics are different letters for POSIX, they sort lexicographical. |
| 179 | (should | 177 | (should |
| @@ -181,15 +179,17 @@ | |||
| 181 | (sort '("Ævar" "Agustín" "Adrian" "Eli") | 179 | (sort '("Ævar" "Agustín" "Adrian" "Eli") |
| 182 | (lambda (a b) (string-collate-lessp a b "POSIX"))) | 180 | (lambda (a b) (string-collate-lessp a b "POSIX"))) |
| 183 | '("Adrian" "Agustín" "Eli" "Ævar"))) | 181 | '("Adrian" "Agustín" "Eli" "Ævar"))) |
| 184 | ;; Diacritics are sorted between similar letters for other locales. | 182 | ;; Diacritics are sorted between similar letters for other locales, |
| 185 | (should | 183 | ;; on MS-Windows systems. |
| 186 | (equal | 184 | (when (eq system-type 'windows-nt) |
| 187 | (sort '("Ævar" "Agustín" "Adrian" "Eli") | 185 | (should |
| 188 | (lambda (a b) | 186 | (equal |
| 189 | (let ((w32-collate-ignore-punctuation t)) | 187 | (sort '("Ævar" "Agustín" "Adrian" "Eli") |
| 190 | (string-collate-lessp | 188 | (lambda (a b) |
| 191 | a b (if (eq system-type 'windows-nt) "enu_USA" "en_US.UTF-8"))))) | 189 | (let ((w32-collate-ignore-punctuation t)) |
| 192 | '("Adrian" "Ævar" "Agustín" "Eli")))) | 190 | (string-collate-lessp |
| 191 | a b "enu_USA")))) | ||
| 192 | '("Adrian" "Ævar" "Agustín" "Eli"))))) | ||
| 193 | 193 | ||
| 194 | (ert-deftest fns-tests-string-version-lessp () | 194 | (ert-deftest fns-tests-string-version-lessp () |
| 195 | (should (string-version-lessp "foo2.png" "foo12.png")) | 195 | (should (string-version-lessp "foo2.png" "foo12.png")) |