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

View file

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