@@ -270,6 +270,56 @@ trait RunScriptTestDefinitions { this: RunTestDefinitions =>
270270 }
271271 }
272272
273+ test(" warn when script name shadows a dependency top-level package" ) {
274+ val inputs = TestInputs (
275+ os.rel / " os.sc" ->
276+ s """ //> using dep com.lihaoyi::os-lib:0.11.8
277+ |println("hi")
278+ | """ .stripMargin
279+ )
280+ inputs.fromRoot { root =>
281+ val res = os.proc(TestUtil .cli, extraOptions, " os.sc" )
282+ .call(cwd = root, check = false , mergeErrIntoOut = true )
283+ val output = res.out.trim()
284+ expect(output.contains(" shadows the 'os' package" ))
285+ expect(res.exitCode == 0 )
286+ }
287+ }
288+
289+ test(" warn with multiple JARs when script name shadows a shared package root" ) {
290+ val inputs = TestInputs (
291+ os.rel / " cats.sc" ->
292+ s """ //> using dep org.typelevel::cats-core:2.12.0
293+ |println("hi")
294+ | """ .stripMargin
295+ )
296+ inputs.fromRoot { root =>
297+ val res = os.proc(TestUtil .cli, extraOptions, " cats.sc" )
298+ .call(cwd = root, check = false , mergeErrIntoOut = true )
299+ val output = res.out.trim()
300+ expect(output.contains(" shadows the 'cats' package from dependencies:" ))
301+ expect(output.contains(" cats-core" ))
302+ expect(output.contains(" cats-kernel" ))
303+ expect(res.exitCode == 0 )
304+ }
305+ }
306+
307+ test(" do not warn when script name does not shadow a dependency top-level package" ) {
308+ val inputs = TestInputs (
309+ os.rel / " safe.sc" ->
310+ s """ //> using dep com.lihaoyi::os-lib:0.11.8
311+ |println("hi")
312+ | """ .stripMargin
313+ )
314+ inputs.fromRoot { root =>
315+ val res = os.proc(TestUtil .cli, extraOptions, " safe.sc" )
316+ .call(cwd = root, check = false , mergeErrIntoOut = true )
317+ val output = res.out.trim()
318+ expect(! output.contains(" shadows the 'os' package" ))
319+ expect(res.exitCode == 0 )
320+ }
321+ }
322+
273323 test(" Directory" ) {
274324 val message = " Hello"
275325 val inputs = TestInputs (
0 commit comments