@@ -15,9 +15,14 @@ import hedgehog.runner.*
1515object VcsUriFragmentTest extends Properties :
1616 override def tests : List [Test ] = List (
1717 example(" accepts typical branch and tag names" , testAcceptsSafe),
18+ example(" accepts hex commit id fragment" , testAcceptsHexSha),
19+ example(" rejects empty fragment" , testRejectsEmpty),
1820 example(" rejects ampersand" , testRejectsAmpersand),
1921 example(" rejects pipe" , testRejectsPipe),
2022 example(" rejects semicolon" , testRejectsSemicolon),
23+ example(" rejects space" , testRejectsSpace),
24+ example(" rejects percent" , testRejectsPercent),
25+ example(" rejects greater-than" , testRejectsGreaterThan),
2126 example(" rejects newline" , testRejectsNewline),
2227 example(" rejects DEL" , testRejectsDel),
2328 )
@@ -26,8 +31,16 @@ object VcsUriFragmentTest extends Properties:
2631 VcsUriFragment .validate(" develop" )
2732 VcsUriFragment .validate(" v1.2.3" )
2833 VcsUriFragment .validate(" feature/foo-bar" )
34+ VcsUriFragment .validate(" release/1.0.0+build" )
2935 Result .success
3036
37+ def testAcceptsHexSha : Result =
38+ VcsUriFragment .validate(" abc123def4567890abcdef1234567890abcdef12" )
39+ Result .success
40+
41+ def testRejectsEmpty : Result =
42+ interceptIllegal(" " )
43+
3144 def testRejectsAmpersand : Result =
3245 interceptIllegal(" a&b" )
3346
@@ -37,6 +50,15 @@ object VcsUriFragmentTest extends Properties:
3750 def testRejectsSemicolon : Result =
3851 interceptIllegal(" a;b" )
3952
53+ def testRejectsSpace : Result =
54+ interceptIllegal(" a b" )
55+
56+ def testRejectsPercent : Result =
57+ interceptIllegal(" a%20b" )
58+
59+ def testRejectsGreaterThan : Result =
60+ interceptIllegal(" a>b" )
61+
4062 def testRejectsNewline : Result =
4163 interceptIllegal(" a\n b" )
4264
0 commit comments