mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-17 13:27:30 +03:00
Add a new serialized test case
Contains a serialized, mutually recursive function that won't be recognized as unsafe unless the sandboxing information is expanded correctly.
This commit is contained in:
parent
a3b3ece726
commit
3d5e688466
@ -20,6 +20,24 @@ sandbox.checkAllowed name ok a =
|
||||
true -> Tests.pass (name ++ " allowed")
|
||||
false -> Tests.fail name " unexpected disallowed"
|
||||
|
||||
sandbox.directory =
|
||||
"unison-src/transcripts-using-base/serialized-cases/"
|
||||
|
||||
sandbox.file = FilePath (directory ++ "case-04.v4.ser")
|
||||
|
||||
serial.checkLoaded : '{IO, Tests, Exception} ()
|
||||
serial.checkLoaded = do
|
||||
input = FilePath.readFile sandbox.file
|
||||
match fromBase32 input with
|
||||
Left msg -> raiseFailure msg input
|
||||
Right bs ->
|
||||
(deps, v) = loadValueBytes bs
|
||||
|
||||
_ = cache_ deps
|
||||
match Value.load v with
|
||||
Left l -> raiseFailure "value missing deps" l
|
||||
Right (f, _) -> checkUnsafe "loaded" (Value.value f)
|
||||
|
||||
sandbox.tests = do
|
||||
checkSafe "5" 5
|
||||
checkSafe "5.0" 5.0
|
||||
@ -30,3 +48,4 @@ sandbox.tests = do
|
||||
checkUnsafe "Code.cache_" Code.cache_
|
||||
checkAllowed "FilePath.open" [termLink FilePath.open.impl] FilePath.open
|
||||
checkAllowed "Code.cache_" [termLink Code.cache_] Code.cache_
|
||||
!checkLoaded
|
||||
|
@ -11,7 +11,7 @@ serial.availableCases _ =
|
||||
slice = cases (FilePath nm) ->
|
||||
Text.take (Text.size nm - 7) nm
|
||||
-- caseNums = ["00", "01", "02", "03"]
|
||||
caseNums = ["00", "02"]
|
||||
caseNums = ["00", "02", "04"]
|
||||
files = map (n -> FilePath ("case-" ++ n ++ ".v4.ser")) caseNums
|
||||
map slice (filter p files)
|
||||
|
||||
|
@ -35,7 +35,10 @@ runTestCase name =
|
||||
hfile = directory ++ name ++ ".v4.hash"
|
||||
|
||||
p@(f, i) = loadSelfContained sfile
|
||||
pl@(fl, il) = loadSelfContained lsfile
|
||||
pl@(fl, il) =
|
||||
if fileExists lsfile
|
||||
then loadSelfContained lsfile
|
||||
else p
|
||||
o = fromUtf8 (readFile ofile)
|
||||
h = readFile hfile
|
||||
|
||||
|
@ -31,7 +31,10 @@ runTestCase name =
|
||||
hfile = directory ++ name ++ ".v4.hash"
|
||||
|
||||
p@(f, i) = loadSelfContained sfile
|
||||
pl@(fl, il) = loadSelfContained lsfile
|
||||
pl@(fl, il) =
|
||||
if fileExists lsfile
|
||||
then loadSelfContained lsfile
|
||||
else p
|
||||
o = fromUtf8 (readFile ofile)
|
||||
h = readFile hfile
|
||||
|
||||
@ -88,8 +91,9 @@ serialTests = do
|
||||
◉ serialTests case-01
|
||||
◉ serialTests case-02
|
||||
◉ serialTests case-03
|
||||
◉ serialTests case-04
|
||||
|
||||
✅ 4 test(s) passing
|
||||
✅ 5 test(s) passing
|
||||
|
||||
Tip: Use view serialTests to view the source of a test.
|
||||
|
||||
|
23
unison-src/transcripts-using-base/serial-test-04.md
Normal file
23
unison-src/transcripts-using-base/serial-test-04.md
Normal file
@ -0,0 +1,23 @@
|
||||
```ucm:hide
|
||||
.> builtins.mergeio
|
||||
```
|
||||
|
||||
```unison
|
||||
|
||||
mutual0 = cases
|
||||
0 -> "okay"
|
||||
n ->
|
||||
_ = openFile
|
||||
mutual1 (drop n 1)
|
||||
|
||||
mutual1 n =
|
||||
mutual0 n
|
||||
|
||||
mkTestCase = do
|
||||
saveTestCase "case-04" "v4" mutual1 5
|
||||
```
|
||||
|
||||
```ucm
|
||||
.> add
|
||||
.> run mkTestCase
|
||||
```
|
41
unison-src/transcripts-using-base/serial-test-04.output.md
Normal file
41
unison-src/transcripts-using-base/serial-test-04.output.md
Normal file
@ -0,0 +1,41 @@
|
||||
```unison
|
||||
mutual0 = cases
|
||||
0 -> "okay"
|
||||
n ->
|
||||
_ = openFile
|
||||
mutual1 (drop n 1)
|
||||
|
||||
mutual1 n =
|
||||
mutual0 n
|
||||
|
||||
mkTestCase = do
|
||||
saveTestCase "case-04" "v4" mutual1 5
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
I found and typechecked these definitions in scratch.u. If you
|
||||
do an `add` or `update`, here's how your codebase would
|
||||
change:
|
||||
|
||||
⍟ These new definitions are ok to `add`:
|
||||
|
||||
mkTestCase : '{IO, Exception} ()
|
||||
mutual0 : Nat -> Text
|
||||
mutual1 : Nat -> Text
|
||||
|
||||
```
|
||||
```ucm
|
||||
.> add
|
||||
|
||||
⍟ I've added these definitions:
|
||||
|
||||
mkTestCase : '{IO, Exception} ()
|
||||
mutual0 : Nat -> Text
|
||||
mutual1 : Nat -> Text
|
||||
|
||||
.> run mkTestCase
|
||||
|
||||
()
|
||||
|
||||
```
|
@ -0,0 +1 @@
|
||||
okay
|
@ -0,0 +1 @@
|
||||
EXAQLMU6IKGAY7DNOHND5VUQQAQPIJN3IVCF5DISOOEVLRQZ3Q2CZOYEVDMY7MYQX2CG6CJFH2HQD6XOMKHQNK5JUZB3G7RZQNREQRQ=
|
@ -0,0 +1 @@
|
||||
AAAAABABAFABKYCFITJNTOQRE3BRWTYOOLZIFGNVKRU5GVLMBALLTNRPXH2ZPF4XNLZYXJVJEXKJWKPQNL7E3K7B2E3V4XY2ROGIXGCG4I3T5ZYZ6UAAAAAAAAAAAAAAAIBQCBIBAFABKYCFITJNTOQRE3BRWTYOOLZIFGNVKRU5GVLMBALLTNRPXH2ZPF4XNLZYXJVJEXKJWKPQNL7E3K7B2E3V4XY2ROGIXGCG4I3T5ZYZ6UAAAAAAAAAAAAAAAIBQEAABEEADVNOCW62AVOZXJ6CMCXMWMTBLF4FFUTLGYPNRXF3BZCNXIDIOZNIAAEAUAFLAIVCNFWN2CETMGG2PBZZPFAUZWVKGTU2VNQEBNONWF647LF4XS5VPHC5GVES5JGZJ6BVP4TNL4HITOXS7DKFYZC4YI3RDOPXHDH2QAAAAAAAAAAAAAABAGBQAAEAQMAAGAABU4YLUAEAAAAAAAAAAAAAHAMCG623BPEAQWAACAEAQGAIBEEAG57PICSIFU224UOLFTG2BAWCL4E7NVW2SJJUAWDIJO7R3YJCNHYQAAAFACAIMAEAAAAAAAAAAAAILAAAQCAIDAEAAQTTBOQXGI4TPOABAEAADAEASCAB2WXBLPNAKXM3U7BGBLWLGJQVS6CS2JVTMHWY3S5Q4RG3UBUHMWUAQCAABAFAAAL7RKMFUH4QQ5G2NTSQN244XUAWGVES3B5ALZMIZQ472Z3Z2SNRY5NY74Q7LRMSAM6YKIY6LXDY4GMGUQNR5G27OEYPJPYTZR5GNAIAAAAAAAAAAAAAAAAAQCQAVMBCUJUWZXIISNQY3J4HHF4UCTG2VI2OTKVWAQFVZWYX3T5MXS6LWV44LU2USLVE3FHYGV7SNVPQ5CN26L4NIXDELTBDOENZ644M7KAAAAAAAAAAAAAAAEAYCAAASCAB2WXBLPNAKXM3U7BGBLWLGJQVS6CS2JVTMHWY3S5Q4RG3UBUHMWUAQCAKACVQEKRGS3G5BCJWDDNHQ44XSQKM3KVDJ2NKWYCAWXG3C7OPVS6LZO2XTROTKSJOUTMU7A2X6JWV6DUJXLZPRVC4MROMENYRXH3TRT5IAAAAAAAAAAAAAAAQDAYAACAIDAEASCAB2WXBLPNAKXM3U7BGBLWLGJQVS6CS2JVTMHWY3S5Q4RG3UBUHMWUAACAABAFAAAL7RKMFUH4QQ5G2NTSQN244XUAWGVES3B5ALZMIZQ472Z3Z2SNRY5NY74Q7LRMSAM6YKIY6LXDY4GMGUQNR5G27OEYPJPYTZR5GNAIAAAAAAAAAAAAAAAAAQCQAVMBCUJUWZXIISNQY3J4HHF4UCTG2VI2OTKVWAQFVZWYX3T5MXS6LWV44LU2USLVE3FHYGV7SNVPQ5CN26L4NIXDELTBDOENZ644M7KAAAAAAAAAAAAAAAEAYCAAASCADO7XUBJEC2NNOKHFSZTNAQLBF6CPW23NJEU2ALBUEXPY54ERGT4IAACAKACVQEKRGS3G5BCJWDDNHQ44XSQKM3KVDJ2NKWYCAWXG3C7OPVS6LZO2XTROTKSJOUTMU7A2X6JWV6DUJXLZPRVC4MROMENYRXH3TRT5IAAAAAAAAAAAAAAAQDAYAAACYAAEAQCAYBAEQQB7ZTWJ7HTBQHKHV76VRKV22ASGMLEU2GTPHIUF5WVZ3MTEG7GMVZAAAAWAACAEAQGAIACNEU6LTPOBSW4RTJNRSS42LNOBWC45RTAABQCAJBADXQNAUFQOHXJTPKPSMQ3IJJCGO7SAOAWDHVWQXMIWYAY7DBUH626AACAEAACAKAAAX7CUYLIPZBB2NU3HFA3VZZPIBMNKJFWD2AXSYRTBZ7VTXTVE3DR23R7ZB6XCZEAZ5QURR4XOHRYMYNJA3D2NV64JQ6S7RHTD2M2AQAAAAAAAAAAAAAAAABAFABKYCFITJNTOQRE3BRWTYOOLZIFGNVKRU5GVLMBALLTNRPXH2ZPF4XNLZYXJVJEXKJWKPQNL7E3K7B2E3V4XY2ROGIXGCG4I3T5ZYZ6UAAAAAAAAAAAAAAAIBQEAABEEAO6BUCQWBY65GN5J6JSDNBFEIZ36IBYCYM6W2C5RC3ADD4MGQ73LYAAEAUAFLAIVCNFWN2CETMGG2PBZZPFAUZWVKGTU2VNQEBNONWF647LF4XS5VPHC5GVES5JGZJ6BVP4TNL4HITOXS7DKFYZC4YI3RDOPXHDH2QAAAAAAAAAAAAAABAGBQAAQAQCAIBBMAACAIBAMAAEAQBAABQABABAAAQCQAAF7YVGC2D6IIOTNGZZIG5OOL2ALDKSJNQ6QF4WEMYOP5M545JGY4OW4P6IPVYWJAGPMFEMPF3R4ODGDKIGY6TNPXCMHUX4J4Y6TGQEAAAAAAAAAAAAAAAAAIBIAKWARKE2LM3UEJGYMNU6DTS6KBJTNKUNHJVK3AIC243ML5Z6WLZPF3K6OF2NKJF2SNST4DK7ZG2XYORG5PF6GULRSFZQRXCG47OOGPVAAAAAAAAAAAAAAACAMBAAAJBAD7THMT6PGDAOUPL75LCVLVUBEMYWJJUNG6ORIL3NLTWZGIN6MZLSAABAFABKYCFITJNTOQRE3BRWTYOOLZIFGNVKRU5GVLMBALLTNRPXH2ZPF4XNLZYXJVJEXKJWKPQNL7E3K7B2E3V4XY2ROGIXGCG4I3T5ZYZ6UAAAAAAAAAAAAAAAIBQMAABAEDAABABIADA6Z4AIF7CZJFJTJVKJO2WEGOJWWKPIBDZ454XRZHXTTXXLQUQ3F726PGQ3QMG3LDJDQLAG5LVZVZCGSQ2FYQWVEV6JOCWJWKTUQT5AABAAAIBAEAACAIBAMCACQBFYD4HAAEOPEY6KWV5SK35RF27KLC64VY4NKCESKIVSPM4WQMVB3WRYSXHRELECCBPXMQZXK54ZO7TPJJTSUMN7XIN6C6D4CBWNAK54AAAAEAAAAIBIAAC74KTBNB7EEHJWTM4UDOXHF5AFRVJEWYPIC6LCGMHH6WO6OUTMOHLOH7EH24LEQDHWCSGHS5Y6HBTBVEDMPJWX3RGD2L6E6MPJTICAAAAAAAAAAAAAAAAAEAUAFLAIVCNFWN2CETMGG2PBZZPFAUZWVKGTU2VNQEBNONWF647LF4XS5VPHC5GVES5JGZJ6BVP4TNL4HITOXS7DKFYZC4YI3RDOPXHDH2QAAAAAAAAAAAAAABAGBIBAFABKYCFITJNTOQRE3BRWTYOOLZIFGNVKRU5GVLMBALLTNRPXH2ZPF4XNLZYXJVJEXKJWKPQNL7E3K7B2E3V4XY2ROGIXGCG4I3T5ZYZ6UAAAAAAAAAAAAAAAIAACIIAHK24FN5UBK5TOT4EYFOZMZGCWLYKLJGWNQ63DOLWDSE3OQGQ5S2QCAAAAAAAAAAAAAAACAKACVQEKRGS3G5BCJWDDNHQ44XSQKM3KVDJ2NKWYCAWXG3C7OPVS6LZO2XTROTKSJOUTMU7A2X6JWV6DUJXLZPRVC4MROMENYRXH3TRT5IAAAAAAAAAAAAAAAQDBACQCAKAAAX7CUYLIPZBB2NU3HFA3VZZPIBMNKJFWD2AXSYRTBZ7VTXTVE3DR23R7ZB6XCZEAZ5QURR4XOHRYMYNJA3D2NV64JQ6S7RHTD2M2AQAAAAAAAAAAAAAAAABAFAAAL7RKMFUH4QQ5G2NTSQN244XUAWGVES3B5ALZMIZQ472Z3Z2SNRY5NY74Q7LRMSAM6YKIY6LXDY4GMGUQNR5G27OEYPJPYTZR5GNAIAAAAAAAAAAAAAAAA======
|
Loading…
Reference in New Issue
Block a user