@@ -6,6 +6,7 @@ import ammonite.ops._
6
6
import mill ._
7
7
import mill .define .Target
8
8
import mill .eval .{Evaluator , Result }
9
+ import mill .modules .Assembly
9
10
import mill .scalalib .publish ._
10
11
import mill .util .{TestEvaluator , TestUtil }
11
12
import mill .scalalib .publish .VersionControl
@@ -19,10 +20,14 @@ object HelloWorldTests extends TestSuite {
19
20
trait HelloBase extends TestUtil .BaseModule {
20
21
def millSourcePath = TestUtil .getSrcPathBase() / millOuterCtx.enclosing.split('.' )
21
22
}
23
+
22
24
trait HelloWorldModule extends scalalib.ScalaModule {
23
25
def scalaVersion = " 2.12.4"
24
26
}
25
27
28
+ trait HelloWorldModuleWithMain extends HelloWorldModule {
29
+ def mainClass = Some (" Main" )
30
+ }
26
31
27
32
object HelloWorld extends HelloBase {
28
33
object core extends HelloWorldModule
@@ -43,24 +48,41 @@ object HelloWorldTests extends TestSuite {
43
48
}
44
49
45
50
object HelloWorldWithMain extends HelloBase {
46
- object core extends HelloWorldModule {
47
- def mainClass = Some (" Main" )
51
+ object core extends HelloWorldModuleWithMain
52
+ }
53
+
54
+ val akkaHttpDep = Agg (ivy " com.typesafe.akka::akka-http:10.0.13 " )
55
+
56
+ object HelloWorldAkkaHttpAppend extends HelloBase {
57
+ object core extends HelloWorldModuleWithMain {
58
+ def ivyDeps = akkaHttpDep
59
+
60
+ def assemblyRules = T { Seq (Assembly .Rule .Append (" reference.conf" )) }
48
61
}
49
62
}
50
63
51
- object HelloWorldAkkaHttp extends HelloBase {
52
- object core extends HelloWorldModule {
53
- def mainClass = Some (" Main" )
54
- def ivyDeps = Agg (
55
- ivy " com.typesafe.akka::akka-http:10.0.13 "
56
- )
64
+ object HelloWorldAkkaHttpAppendPattern extends HelloBase {
65
+ object core extends HelloWorldModuleWithMain {
66
+ def ivyDeps = akkaHttpDep
67
+
68
+ def assemblyRules = T { Seq (Assembly .Rule .AppendPattern (" .*.conf" )) }
57
69
}
58
70
}
59
71
60
- object HelloWorldMulti extends HelloBase {
61
- object core extends HelloWorldModule {
62
- def mainClass = Some (" Main" )
72
+ object HelloWorldMultiAppend extends HelloBase {
73
+ object core extends HelloWorldModuleWithMain {
74
+ def moduleDeps = Seq (model)
75
+
76
+ def assemblyRules = T { Seq (Assembly .Rule .Append (" reference.conf" )) }
77
+ }
78
+ object model extends HelloWorldModule
79
+ }
80
+
81
+ object HelloWorldMultiAppendPattern extends HelloBase {
82
+ object core extends HelloWorldModuleWithMain {
63
83
def moduleDeps = Seq (model)
84
+
85
+ def assemblyRules = T { Seq (Assembly .Rule .AppendPattern (" .*.conf" )) }
64
86
}
65
87
object model extends HelloWorldModule
66
88
}
@@ -192,14 +214,14 @@ object HelloWorldTests extends TestSuite {
192
214
cp(resourcePath, m.millSourcePath)
193
215
t(eval)
194
216
}
195
-
217
+
196
218
197
219
198
220
199
221
def tests : Tests = Tests {
200
222
' scalaVersion - {
201
-
202
- ' fromBuild - workspaceTest(HelloWorld ){eval =>
223
+
224
+ ' fromBuild - workspaceTest(HelloWorld ){eval =>
203
225
val Right ((result, evalCount)) = eval.apply(HelloWorld .core.scalaVersion)
204
226
205
227
assert(
@@ -478,49 +500,72 @@ object HelloWorldTests extends TestSuite {
478
500
}
479
501
480
502
' assemblyRules - {
481
- ' appendWithDeps - workspaceTest(HelloWorldAkkaHttp ) { eval =>
482
- val Right ((result, _)) = eval.apply(HelloWorldAkkaHttp .core.assembly)
483
-
484
- val jarFile = new JarFile (result.path.toIO)
485
-
486
- assert(jarEntries(jarFile).contains(" reference.conf" ))
487
-
488
- val referenceContent = readFileFromJar(jarFile, " reference.conf" )
489
-
490
- assert(
491
- // akka modules configs are present
492
- referenceContent.contains(" akka-http Reference Config File" ),
493
- referenceContent.contains(" Akka Actor Reference Config File" ),
494
- referenceContent.contains(" Akka Stream Reference Config File" ),
495
- // our application config is present too
496
- referenceContent.contains(" My application Reference Config File" ),
497
- referenceContent.contains(
498
- """ akka.http.client.user-agent-header="hello-world-client""""
503
+ def checkAppend [M <: TestUtil .BaseModule ](module : M ,
504
+ target : Target [PathRef ]) =
505
+ workspaceTest(module) { eval =>
506
+ val Right ((result, _)) = eval.apply(target)
507
+
508
+ val jarFile = new JarFile (result.path.toIO)
509
+
510
+ assert(jarEntries(jarFile).contains(" reference.conf" ))
511
+
512
+ val referenceContent = readFileFromJar(jarFile, " reference.conf" )
513
+
514
+ assert(
515
+ // akka modules configs are present
516
+ referenceContent.contains(" akka-http Reference Config File" ),
517
+ referenceContent.contains(" Akka Actor Reference Config File" ),
518
+ referenceContent.contains(" Akka Stream Reference Config File" ),
519
+ // our application config is present too
520
+ referenceContent.contains(" My application Reference Config File" ),
521
+ referenceContent.contains(
522
+ """ akka.http.client.user-agent-header="hello-world-client""""
523
+ )
499
524
)
500
- )
501
- }
502
- ' appendMultiModule - workspaceTest(
503
- HelloWorldMulti ,
504
- resourcePath = pwd / ' scalalib / ' test / ' resources / " hello-world-multi"
505
- ) { eval =>
506
- val Right ((result, _)) = eval.apply(HelloWorldMulti .core.assembly)
507
-
508
- val jarFile = new JarFile (result.path.toIO)
509
-
510
- assert(jarEntries(jarFile).contains(" reference.conf" ))
511
-
512
- val referenceContent = readFileFromJar(jarFile, " reference.conf" )
525
+ }
526
+
527
+ def checkAppendMulti [M <: TestUtil .BaseModule ](
528
+ module : M ,
529
+ target : Target [PathRef ]) =
530
+ workspaceTest(
531
+ module,
532
+ resourcePath = pwd / ' scalalib / ' test / ' resources / " hello-world-multi"
533
+ ) { eval =>
534
+ val Right ((result, _)) = eval.apply(target)
535
+
536
+ val jarFile = new JarFile (result.path.toIO)
537
+
538
+ assert(jarEntries(jarFile).contains(" reference.conf" ))
539
+
540
+ val referenceContent = readFileFromJar(jarFile, " reference.conf" )
541
+
542
+ assert(
543
+ // reference config from core module
544
+ referenceContent.contains(" Core Reference Config File" ),
545
+ // reference config from model module
546
+ referenceContent.contains(" Model Reference Config File" ),
547
+ // concatenated content
548
+ referenceContent.contains(" bar.baz=hello" ),
549
+ referenceContent.contains(" foo.bar=2" )
550
+ )
551
+ }
513
552
514
- assert(
515
- // reference config from core module
516
- referenceContent.contains(" Core Reference Config File" ),
517
- // reference config from model module
518
- referenceContent.contains(" Model Reference Config File" ),
519
- // concatenated content
520
- referenceContent.contains(" bar.baz=hello" ),
521
- referenceContent.contains(" foo.bar=2" )
522
- )
523
- }
553
+ ' appendWithDeps - checkAppend(
554
+ HelloWorldAkkaHttpAppend ,
555
+ HelloWorldAkkaHttpAppend .core.assembly
556
+ )
557
+ ' appendMultiModule - checkAppendMulti(
558
+ HelloWorldMultiAppend ,
559
+ HelloWorldMultiAppend .core.assembly
560
+ )
561
+ ' appendPatternWithDeps - checkAppend(
562
+ HelloWorldAkkaHttpAppendPattern ,
563
+ HelloWorldAkkaHttpAppendPattern .core.assembly
564
+ )
565
+ ' appendMultiModule - checkAppendMulti(
566
+ HelloWorldMultiAppendPattern ,
567
+ HelloWorldMultiAppendPattern .core.assembly
568
+ )
524
569
}
525
570
526
571
' run - workspaceTest(HelloWorldWithMain ){eval =>
0 commit comments