@@ -11,51 +11,101 @@ describe('loading plugins from packages', () => {
1111 spawnSync ( 'npm' , [ 'install' ] , { cwd : testPackagePath , timeout : 5000 } ) ;
1212 } ) ;
1313
14- it (
15- 'should load plugins that are the default export (module.exports = pluginObj)' ,
16- async ( ) => {
17- const loader = new PluginLoader ( [ join ( testPackagePath , 'default-export.js' ) ] ) ;
18- await loader . load ( ) ;
19- expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
20- expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
21- expect (
22- loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
23- ) . toBe ( true ) ;
24- } ,
25- { timeout : 10000 } ,
26- ) ;
14+ describe ( 'CommonJS syntax' , ( ) => {
15+ it (
16+ 'should load plugins that are the default export' ,
17+ async ( ) => {
18+ const loader = new PluginLoader ( [ join ( testPackagePath , 'default-export.js' ) ] ) ;
19+ await loader . load ( ) ;
20+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
21+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
22+ expect (
23+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
24+ ) . toBe ( true ) ;
25+ } ,
26+ { timeout : 10000 } ,
27+ ) ;
2728
28- it (
29- 'should load multiple plugins from a module that match the plugin class (module.exports = { pluginFoo, pluginBar }) ' ,
30- async ( ) => {
31- const loader = new PluginLoader ( [ join ( testPackagePath , 'multiple-export.js' ) ] ) ;
32- await loader . load ( ) ;
33- expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
34- expect ( loader . pullPlugins . length ) . toBe ( 1 ) ;
35- expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
36- expect (
37- loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
38- ) . toBe ( true ) ;
39- expect (
40- loader . pullPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPullActionPlugin' ) ) ,
41- ) . toBe ( true ) ;
42- } ,
43- { timeout : 10000 } ,
44- ) ;
29+ it (
30+ 'should load multiple plugins from a module that match the plugin class' ,
31+ async ( ) => {
32+ const loader = new PluginLoader ( [ join ( testPackagePath , 'multiple-export.js' ) ] ) ;
33+ await loader . load ( ) ;
34+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
35+ expect ( loader . pullPlugins . length ) . toBe ( 1 ) ;
36+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
37+ expect (
38+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
39+ ) . toBe ( true ) ;
40+ expect (
41+ loader . pullPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPullActionPlugin' ) ) ,
42+ ) . toBe ( true ) ;
43+ } ,
44+ { timeout : 10000 } ,
45+ ) ;
4546
46- it (
47- 'should load plugins that are subclassed from plugin classes' ,
48- async ( ) => {
49- const loader = new PluginLoader ( [ join ( testPackagePath , 'subclass.js' ) ] ) ;
50- await loader . load ( ) ;
51- expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
52- expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
53- expect (
54- loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
55- ) . toBe ( true ) ;
56- } ,
57- { timeout : 10000 } ,
58- ) ;
47+ it (
48+ 'should load plugins that are subclassed from plugin classes' ,
49+ async ( ) => {
50+ const loader = new PluginLoader ( [ join ( testPackagePath , 'subclass.js' ) ] ) ;
51+ await loader . load ( ) ;
52+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
53+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
54+ expect (
55+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
56+ ) . toBe ( true ) ;
57+ } ,
58+ { timeout : 10000 } ,
59+ ) ;
60+ } ) ;
61+
62+ describe ( 'ESM syntax' , ( ) => {
63+ it (
64+ 'should load plugins that are the default export (exports default pluginObj)' ,
65+ async ( ) => {
66+ const loader = new PluginLoader ( [ join ( testPackagePath , 'esm-export.js' ) ] ) ;
67+ await loader . load ( ) ;
68+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
69+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
70+ expect (
71+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
72+ ) . toBe ( true ) ;
73+ } ,
74+ { timeout : 10000 } ,
75+ ) ;
76+
77+ it (
78+ 'should load multiple plugins from a module that match the plugin class' ,
79+ async ( ) => {
80+ const loader = new PluginLoader ( [ join ( testPackagePath , 'esm-multiple-export.js' ) ] ) ;
81+ await loader . load ( ) ;
82+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
83+ expect ( loader . pullPlugins . length ) . toBe ( 1 ) ;
84+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
85+ expect (
86+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
87+ ) . toBe ( true ) ;
88+ expect (
89+ loader . pullPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPullActionPlugin' ) ) ,
90+ ) . toBe ( true ) ;
91+ } ,
92+ { timeout : 10000 } ,
93+ ) ;
94+
95+ it (
96+ 'should load plugins that are subclassed from plugin classes' ,
97+ async ( ) => {
98+ const loader = new PluginLoader ( [ join ( testPackagePath , 'esm-subclass.js' ) ] ) ;
99+ await loader . load ( ) ;
100+ expect ( loader . pushPlugins . length ) . toBe ( 1 ) ;
101+ expect ( loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p ) ) ) . toBe ( true ) ;
102+ expect (
103+ loader . pushPlugins . every ( ( p ) => isCompatiblePlugin ( p , 'isGitProxyPushActionPlugin' ) ) ,
104+ ) . toBe ( true ) ;
105+ } ,
106+ { timeout : 10000 } ,
107+ ) ;
108+ } ) ;
59109
60110 it (
61111 'should not load plugins that are not valid modules' ,
0 commit comments