fix quickcheck failure

prop_encode_decode_roundtrip failed on "\175" in C locale.

This may be a new problem after the switch to RawFilePath, but it
already had filtering for high chars, so changed to only test ascii
chars.
This commit is contained in:
Joey Hess 2019-12-30 13:54:46 -04:00
parent 91ec283be6
commit e006acc8e3
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 7 additions and 7 deletions

View file

@ -46,8 +46,8 @@ prop_encode_decode_roundtrip s = s' ==
-- "\343\200\271".
--
-- This property papers over the problem, by only
-- testing chars < 256.
nohigh = filter (\c -> ord c < 256)
-- testing ascii
nohigh = filter isAscii
-- A String can contain a NUL, but toRawFilePath
-- truncates on the NUL, which is generally fine
-- because unix filenames cannot contain NUL.

View file

@ -15,7 +15,7 @@ module Utility.Format (
) where
import Text.Printf (printf)
import Data.Char (isAlphaNum, isOctDigit, isHexDigit, isSpace, chr, ord)
import Data.Char (isAlphaNum, isOctDigit, isHexDigit, isSpace, chr, ord, isAscii)
import Data.Maybe (fromMaybe)
import Data.Word (Word8)
import Data.List (isPrefixOf)
@ -176,12 +176,12 @@ encode_c' p = concatMap echar
{- For quickcheck.
-
- Encoding and then decoding roundtrips only when
- the string does not contain high unicode, because eg,
- both "\12345" and "\227\128\185" are encoded to "\343\200\271".
- the string is ascii because eg, both "\12345" and
- "\227\128\185" are encoded to "\343\200\271".
-
- This property papers over the problem, by only testing chars < 256.
- This property papers over the problem, by only testing ascii.
-}
prop_encode_c_decode_c_roundtrip :: String -> Bool
prop_encode_c_decode_c_roundtrip s = s' == decode_c (encode_c s')
where
s' = filter (\c -> ord c < 256) s
s' = filter isAscii s