Skip to content

Commit 30d4027

Browse files
committed
(#801) Add genconf subcommand to the expression fuzzer
1 parent 36f2605 commit 30d4027

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

HyperNerd.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ executable Fuzzy
165165
, text
166166
, random
167167
, aeson
168+
, bytestring
168169

169170
hs-source-dirs: src
170171

src/FuzzyMain.hs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import qualified Data.Text as T
1212
import System.Environment
1313
import System.Random
1414
import Text.Printf
15+
import qualified Data.ByteString.Lazy as BS
1516

1617
data FuzzParams = FuzzParams
1718
{ fpFuzzCount :: Int
@@ -42,6 +43,9 @@ instance FromJSON FuzzParams where
4243
readFuzzParams :: FilePath -> IO FuzzParams
4344
readFuzzParams = fmap (either error id) . eitherDecodeFileStrict
4445

46+
saveFuzzParams :: FuzzParams -> FilePath -> IO ()
47+
saveFuzzParams params filePath = BS.writeFile filePath $ encode params
48+
4549
defaultFuzzParams :: FuzzParams
4650
defaultFuzzParams =
4751
FuzzParams
@@ -132,8 +136,15 @@ fuzz params = do
132136
printf "Successes: %d\n" $ length $ filter id report
133137

134138
mainWithArgs :: [String] -> IO ()
135-
mainWithArgs (fuzzParamsPath:_) = readFuzzParams fuzzParamsPath >>= fuzz
136-
mainWithArgs _ = error "Usage: Fuzz <fuzz.json>"
139+
mainWithArgs ("genconf":configFilePath:_) = do
140+
saveFuzzParams defaultFuzzParams configFilePath
141+
printf "Generated default configuration at %s" configFilePath
142+
mainWithArgs ("runconf":fuzzParamsPath:_) = readFuzzParams fuzzParamsPath >>= fuzz
143+
mainWithArgs _ =
144+
error
145+
"Usage: \n\
146+
\ Fuzz genconf <fuzz.json>\n\
147+
\ Fuzz runconf <fuzz.json>"
137148

138149
main :: IO ()
139150
main = getArgs >>= mainWithArgs

0 commit comments

Comments
 (0)