@@ -13,6 +13,7 @@ import scala.build.preprocessing.{
13
13
PreprocessedMarkdown ,
14
14
PreprocessedMarkdownCodeBlocks
15
15
}
16
+ import scala .build .tests .markdown .MarkdownTestUtil .*
16
17
17
18
class MarkdownCodeWrapperTests extends munit.FunSuite {
18
19
@@ -23,15 +24,75 @@ class MarkdownCodeWrapperTests extends munit.FunSuite {
23
24
24
25
test(" a simple Scala code block is wrapped correctly" ) {
25
26
val snippet = """ println("Hello")"""
26
- val codeBlock = MarkdownCodeBlock (Seq ( " scala " ) , snippet, 3 , 3 )
27
+ val codeBlock = MarkdownCodeBlock (PlainScalaInfo , snippet, 3 , 3 )
27
28
val preprocessedCodeBlocks = PreprocessedMarkdownCodeBlocks (Seq (codeBlock))
28
29
val markdown = PreprocessedMarkdown (scriptCodeBlocks = preprocessedCodeBlocks)
29
30
val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
30
- """ object Example_md { @annotation.nowarn("msg=pure expression does nothing") def main(args: Array[String]): Unit = { Scope; }
31
- |
32
- |object Scope {
33
- |println("Hello")
34
- |}}""" .stripMargin
31
+ s """ object Example_md { @annotation.nowarn("msg=pure expression does nothing") def main(args: Array[String]): Unit = { Scope; }
32
+ |
33
+ |object Scope {
34
+ | $snippet
35
+ |}} """ .stripMargin
36
+ )
37
+ val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
38
+ expect(result == (Some (expectedScala), None , None ))
39
+ }
40
+
41
+ test(" multiple plain Scala code blocks are wrapped correctly" ) {
42
+ val snippet1 = """ println("Hello")"""
43
+ val codeBlock1 = MarkdownCodeBlock (PlainScalaInfo , snippet1, 3 , 3 )
44
+ val snippet2 = """ println("world")"""
45
+ val codeBlock2 = MarkdownCodeBlock (PlainScalaInfo , snippet2, 8 , 8 )
46
+ val snippet3 = """ println("!")"""
47
+ val codeBlock3 = MarkdownCodeBlock (PlainScalaInfo , snippet3, 12 , 12 )
48
+ val preprocessedCodeBlocks =
49
+ PreprocessedMarkdownCodeBlocks (Seq (codeBlock1, codeBlock2, codeBlock3))
50
+ val markdown = PreprocessedMarkdown (scriptCodeBlocks = preprocessedCodeBlocks)
51
+ val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
52
+ s """ object Example_md { @annotation.nowarn("msg=pure expression does nothing") def main(args: Array[String]): Unit = { Scope; }
53
+ |
54
+ |object Scope {
55
+ | $snippet1
56
+ |
57
+ |
58
+ |
59
+ |
60
+ | $snippet2
61
+ |
62
+ |
63
+ |
64
+ | $snippet3
65
+ |}} """ .stripMargin
66
+ )
67
+ val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
68
+ expect(result == (Some (expectedScala), None , None ))
69
+ }
70
+
71
+ test(" multiple plain Scala code blocks with different scopes are wrapped correctly" ) {
72
+ val snippet1 = """ println("Hello")"""
73
+ val codeBlock1 = MarkdownCodeBlock (PlainScalaInfo , snippet1, 3 , 3 )
74
+ val snippet2 = """ println("world")"""
75
+ val codeBlock2 = MarkdownCodeBlock (ResetScalaInfo , snippet2, 8 , 8 )
76
+ val snippet3 = """ println("!")"""
77
+ val codeBlock3 = MarkdownCodeBlock (PlainScalaInfo , snippet3, 12 , 12 )
78
+ val preprocessedCodeBlocks =
79
+ PreprocessedMarkdownCodeBlocks (Seq (codeBlock1, codeBlock2, codeBlock3))
80
+ val markdown = PreprocessedMarkdown (scriptCodeBlocks = preprocessedCodeBlocks)
81
+ val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
82
+ s """ object Example_md { @annotation.nowarn("msg=pure expression does nothing") def main(args: Array[String]): Unit = { Scope; Scope1; }
83
+ |
84
+ |object Scope {
85
+ | $snippet1
86
+ |
87
+ |
88
+ |
89
+ |}; object Scope1 {
90
+ | $snippet2
91
+ |
92
+ |
93
+ |
94
+ | $snippet3
95
+ |}} """ .stripMargin
35
96
)
36
97
val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
37
98
expect(result == (Some (expectedScala), None , None ))
@@ -42,17 +103,39 @@ class MarkdownCodeWrapperTests extends munit.FunSuite {
42
103
""" object Main extends App {
43
104
| println("Hello")
44
105
|}""" .stripMargin
45
- val codeBlock = MarkdownCodeBlock (Seq ( " scala " , " raw " ) , snippet, 3 , 5 )
106
+ val codeBlock = MarkdownCodeBlock (RawScalaInfo , snippet, 3 , 5 )
46
107
val preprocessedCodeBlocks = PreprocessedMarkdownCodeBlocks (Seq (codeBlock))
47
108
val markdown = PreprocessedMarkdown (rawCodeBlocks = preprocessedCodeBlocks)
48
109
val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
49
- """
50
- |
51
- |
52
- |object Main extends App {
53
- | println("Hello")
54
- |}
55
- |""" .stripMargin
110
+ s """
111
+ |
112
+ |
113
+ | $snippet
114
+ | """ .stripMargin
115
+ )
116
+ val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
117
+ expect(result == (None , Some (expectedScala), None ))
118
+ }
119
+
120
+ test(" multiple raw Scala code blocks are glued together correctly" ) {
121
+ val snippet1 =
122
+ """ case class Message(value: String)""" .stripMargin
123
+ val codeBlock1 = MarkdownCodeBlock (RawScalaInfo , snippet1, 3 , 3 )
124
+ val snippet2 =
125
+ """ object Main extends App {
126
+ | println(Message("Hello").value)
127
+ |}""" .stripMargin
128
+ val codeBlock2 = MarkdownCodeBlock (RawScalaInfo , snippet2, 5 , 7 )
129
+ val preprocessedCodeBlocks = PreprocessedMarkdownCodeBlocks (Seq (codeBlock1, codeBlock2))
130
+ val markdown = PreprocessedMarkdown (rawCodeBlocks = preprocessedCodeBlocks)
131
+ val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
132
+ s """
133
+ |
134
+ |
135
+ | $snippet1
136
+ |
137
+ | $snippet2
138
+ | """ .stripMargin
56
139
)
57
140
val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
58
141
expect(result == (None , Some (expectedScala), None ))
@@ -64,18 +147,42 @@ class MarkdownCodeWrapperTests extends munit.FunSuite {
64
147
|class Test extends munit.FunSuite {
65
148
| assert(true)
66
149
|}""" .stripMargin
67
- val codeBlock = MarkdownCodeBlock (Seq ( " scala " , " test " ) , snippet, 3 , 6 )
150
+ val codeBlock = MarkdownCodeBlock (TestScalaInfo , snippet, 3 , 6 )
68
151
val preprocessedCodeBlocks = PreprocessedMarkdownCodeBlocks (Seq (codeBlock))
69
152
val markdown = PreprocessedMarkdown (testCodeBlocks = preprocessedCodeBlocks)
70
153
val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
71
- """
72
- |
73
- |
74
- |//> using lib "org.scalameta::munit:0.7.29"
75
- |class Test extends munit.FunSuite {
154
+ s """
155
+ |
156
+ |
157
+ | $snippet
158
+ | """ .stripMargin
159
+ )
160
+ val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
161
+ expect(result == (None , None , Some (expectedScala)))
162
+ }
163
+
164
+ test(" multiple test Scala snippets are glued together correctly" ) {
165
+ val snippet1 =
166
+ """ //> using lib "org.scalameta::munit:0.7.29"
167
+ |class Test1 extends munit.FunSuite {
168
+ | assert(true)
169
+ |}""" .stripMargin
170
+ val codeBlock1 = MarkdownCodeBlock (TestScalaInfo , snippet1, 3 , 6 )
171
+ val snippet2 =
172
+ """ class Test2 extends munit.FunSuite {
76
173
| assert(true)
77
- |}
78
- |""" .stripMargin
174
+ |}""" .stripMargin
175
+ val codeBlock2 = MarkdownCodeBlock (TestScalaInfo , snippet2, 8 , 10 )
176
+ val preprocessedCodeBlocks = PreprocessedMarkdownCodeBlocks (Seq (codeBlock1, codeBlock2))
177
+ val markdown = PreprocessedMarkdown (testCodeBlocks = preprocessedCodeBlocks)
178
+ val expectedScala = MarkdownCodeWrapper .WrappedMarkdownCode (
179
+ s """
180
+ |
181
+ |
182
+ | $snippet1
183
+ |
184
+ | $snippet2
185
+ | """ .stripMargin
79
186
)
80
187
val result = MarkdownCodeWrapper (os.sub / " Example.md" , markdown)
81
188
expect(result == (None , None , Some (expectedScala)))
0 commit comments