@@ -4,7 +4,13 @@ import bloop.rifle.BloopRifleConfig
4
4
import com .eed3si9n .expecty .Expecty .expect
5
5
6
6
import scala .build .Build
7
- import scala .build .input .Inputs
7
+ import scala .build .input .{
8
+ Inputs ,
9
+ ScalaCliInvokeData ,
10
+ VirtualJavaFile ,
11
+ VirtualScalaFile ,
12
+ VirtualScript
13
+ }
8
14
import scala .build .input .ElementsUtils .*
9
15
import scala .build .options .{BuildOptions , InternalOptions , MaybeScalaVersion }
10
16
import scala .build .tests .util .BloopServer
@@ -121,4 +127,57 @@ class InputsTests extends munit.FunSuite {
121
127
assert(! filesUnderScalaBuild.exists(_.baseName.startsWith(" project" )))
122
128
}
123
129
}
130
+
131
+ test(" URLs with query parameters" ) {
132
+ val urlBase =
133
+ " https://gist.githubusercontent.com/USER/hash/raw/hash"
134
+ val urls = Seq (
135
+ s " $urlBase/test.sc " ,
136
+ s " $urlBase/test.sc?foo=bar " ,
137
+ s " $urlBase/test.sc?foo=endsWith.md " ,
138
+ s " http://gist.githubusercontent.com/USER/hash/raw/hash/test.sc?foo=bar " ,
139
+ s " $urlBase/test.scala?foo=endsWith.java " ,
140
+ s " $urlBase/test.java?token=123456789123456789 " ,
141
+ s " file:///Users/user/content/test.sc "
142
+ )
143
+
144
+ TestInputs ().fromRoot { root =>
145
+ val elements = Inputs .validateArgs(
146
+ urls,
147
+ root,
148
+ download = url => Right (Array .emptyByteArray),
149
+ stdinOpt = None ,
150
+ acceptFds = true ,
151
+ enableMarkdown = true
152
+ )(using ScalaCliInvokeData .dummy)
153
+
154
+ elements match {
155
+ case Seq (
156
+ Right (Seq (el1 : VirtualScript )),
157
+ Right (Seq (el2 : VirtualScript )),
158
+ Right (Seq (el3 : VirtualScript )),
159
+ Right (Seq (el4 : VirtualScript )),
160
+ Right (Seq (el5 : VirtualScalaFile )),
161
+ Right (Seq (el6 : VirtualJavaFile )),
162
+ Right (Seq (el7 : VirtualScript ))
163
+ ) =>
164
+ Seq (el1, el2, el3, el4, el5, el6, el7)
165
+ .zip(urls)
166
+ .foreach {
167
+ case (el : VirtualScript , url) =>
168
+ expect(el.source == url)
169
+ expect(el.content.isEmpty)
170
+ expect(el.wrapperPath.endsWith(os.rel / " test.sc" ))
171
+ case (el : VirtualScalaFile , url) =>
172
+ expect(el.source == url)
173
+ expect(el.content.isEmpty)
174
+ case (el : VirtualJavaFile , url) =>
175
+ expect(el.source == url)
176
+ expect(el.content.isEmpty)
177
+ case _ => fail(" Unexpected elements" )
178
+ }
179
+ case _ => fail(" Unexpected elements" )
180
+ }
181
+ }
182
+ }
124
183
}
0 commit comments