@@ -25,13 +25,6 @@ class PluginsTest {
25
25
class P7 extends TestPhase
26
26
class P8 extends TestPhase
27
27
28
- class TestPlugin extends TestPhase with Plugin {
29
- def name = this .getClass.getName
30
- override def description = " "
31
-
32
- override def init (options : List [String ]): List [PluginPhase ] = this :: Nil
33
- }
34
-
35
28
val basicPlan = List (
36
29
List (new P1 ),
37
30
List (new P2 ),
@@ -45,45 +38,45 @@ class PluginsTest {
45
38
46
39
@ Test
47
40
def insertAfter = {
48
- object M1 extends TestPlugin {
41
+ object M1 extends TestPhase {
49
42
override val runsAfter = Set (classOf [P3d ])
50
43
}
51
44
52
- val updatedPlan = Plugins .schedule(basicPlan, M1 :: Nil , _ => Nil )
45
+ val updatedPlan = Plugins .schedule(basicPlan, M1 :: Nil )
53
46
assert(updatedPlan(3 )(0 ) eq M1 )
54
47
}
55
48
56
49
@ Test
57
50
def insertBefore = {
58
- object ConstFold extends TestPlugin {
51
+ object ConstFold extends TestPhase {
59
52
override val runsBefore = Set (classOf [P7 ])
60
53
}
61
54
62
- val updatedPlan = Plugins .schedule(basicPlan, ConstFold :: Nil , _ => Nil )
55
+ val updatedPlan = Plugins .schedule(basicPlan, ConstFold :: Nil )
63
56
assert(updatedPlan(6 )(0 ) eq ConstFold )
64
57
}
65
58
66
59
@ Test
67
60
def insertBeforeAfter = {
68
- object ConstFold extends TestPlugin {
61
+ object ConstFold extends TestPhase {
69
62
override val runsAfter = Set (classOf [P3d ])
70
63
override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
71
64
}
72
65
73
66
// prefers the runsBefore
74
- val updatedPlan = Plugins .schedule(basicPlan, ConstFold :: Nil , _ => Nil )
67
+ val updatedPlan = Plugins .schedule(basicPlan, ConstFold :: Nil )
75
68
assert(updatedPlan(6 )(0 ) eq ConstFold )
76
69
}
77
70
78
71
@ Test
79
72
def constraintUnsatisfiable = {
80
- object ConstFold extends TestPlugin {
73
+ object ConstFold extends TestPhase {
81
74
override val runsAfter = Set (classOf [P6d ])
82
75
override val runsBefore = Set (classOf [P2 ], classOf [P8 ])
83
76
}
84
77
85
78
try {
86
- Plugins .schedule(basicPlan, ConstFold :: Nil , _ => Nil )
79
+ Plugins .schedule(basicPlan, ConstFold :: Nil )
87
80
assert(false , " unsatisfiable constraint should throw exception, but not" )
88
81
} catch {
89
82
case _ : Exception =>
@@ -92,44 +85,86 @@ class PluginsTest {
92
85
93
86
@ Test
94
87
def orderingTwoPlugins1 = {
95
- object M1 extends TestPlugin {
88
+ object M1 extends TestPhase {
96
89
override val runsAfter = Set (classOf [P3d ])
97
90
override val runsBefore = Set (M2 .getClass, classOf [P7 ], classOf [P8 ])
98
91
}
99
- object M2 extends TestPlugin {
92
+ object M2 extends TestPhase {
100
93
override val runsAfter = Set (classOf [P3d ])
101
94
override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
102
95
}
103
96
104
97
// M1 inserted to plan first
105
- val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil , _ => Nil )
98
+ val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil )
106
99
assert(updatedPlan1(6 )(0 ) eq M1 )
107
100
assert(updatedPlan1(7 )(0 ) eq M2 )
108
101
109
102
// M2 inserted to plan first
110
- val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil , _ => Nil )
103
+ val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil )
111
104
assert(updatedPlan2(6 )(0 ) eq M1 )
112
105
assert(updatedPlan2(7 )(0 ) eq M2 )
113
106
}
114
107
115
108
@ Test
116
109
def orderingTwoPlugins2 = {
117
- object M1 extends TestPlugin {
110
+ object M1 extends TestPhase {
118
111
override val runsAfter = Set (classOf [P3d ], M2 .getClass)
119
112
}
120
- object M2 extends TestPlugin {
113
+ object M2 extends TestPhase {
121
114
override val runsAfter = Set (classOf [P3d ])
122
115
override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
123
116
}
124
117
125
118
// M1 inserted to plan first
126
- val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil , _ => Nil )
119
+ val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil )
127
120
assert(updatedPlan1(4 )(0 ) eq M1 )
128
121
assert(updatedPlan1(3 )(0 ) eq M2 )
129
122
130
123
// M2 inserted to plan first
131
- val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil , _ => Nil )
124
+ val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil )
125
+ assert(updatedPlan2(4 )(0 ) eq M1 )
126
+ assert(updatedPlan2(3 )(0 ) eq M2 )
127
+ }
128
+
129
+ @ Test
130
+ def orderingTwoPlugins3 = {
131
+ object M1 extends TestPhase {
132
+ override val runsAfter = Set (classOf [P3d ], M2 .getClass)
133
+ override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
134
+ }
135
+ object M2 extends TestPhase {
136
+ override val runsAfter = Set (classOf [P3d ])
137
+ override val runsBefore = Set (classOf [P5 ])
138
+ }
139
+
140
+ // M1 inserted to plan first
141
+ val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil )
142
+ assert(updatedPlan1(7 )(0 ) eq M1 )
143
+ assert(updatedPlan1(4 )(0 ) eq M2 )
144
+
145
+ // M2 inserted to plan first
146
+ val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil )
132
147
assert(updatedPlan2(7 )(0 ) eq M1 )
133
- assert(updatedPlan2(6 )(0 ) eq M2 )
148
+ assert(updatedPlan2(4 )(0 ) eq M2 )
149
+ }
150
+
151
+ @ Test
152
+ def deterministic = {
153
+ object M1 extends TestPhase {
154
+ override val runsAfter = Set (classOf [P3d ])
155
+ override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
156
+ }
157
+ object M2 extends TestPhase {
158
+ override val runsAfter = Set (classOf [P3d ])
159
+ override val runsBefore = Set (classOf [P7 ], classOf [P8 ])
160
+ }
161
+
162
+ val updatedPlan1 = Plugins .schedule(basicPlan, M1 :: M2 :: Nil )
163
+ assert(updatedPlan1(6 )(0 ) eq M1 )
164
+ assert(updatedPlan1(7 )(0 ) eq M2 )
165
+
166
+ val updatedPlan2 = Plugins .schedule(basicPlan, M2 :: M1 :: Nil )
167
+ assert(updatedPlan1(6 )(0 ) eq M1 )
168
+ assert(updatedPlan1(7 )(0 ) eq M2 )
134
169
}
135
170
}
0 commit comments