4
4
*/
5
5
6
6
import { parse } from 'acorn'
7
- import { filterModules } from '../src/analyze'
7
+ import { detectableModules , filterModules } from '../src/analyze'
8
+ import compat from 'core-js-compat' ;
8
9
9
10
const parseModule = ( code : string ) => parse ( code , { ecmaVersion : 'latest' } )
10
11
test ( 'keep all used' , ( ) => {
@@ -45,8 +46,36 @@ test('Can detect errors with cause', () => {
45
46
expect ( filterModules ( [ 'es.error.cause' ] , ast0 ) ) . toEqual ( [ ] )
46
47
expect ( filterModules ( [ 'es.error.cause' ] , ast ) ) . toEqual ( [ 'es.error.cause' ] )
47
48
} )
49
+
50
+ test . failing ( 'Can detect all ES modules' , ( ) => {
51
+ const ast = parseModule ( '' )
52
+ expect (
53
+ filterModules ( compat . modules . filter ( v => v . startsWith ( 'es.' ) ) , ast )
54
+ ) . toBe ( [
55
+ // can not detect this
56
+ 'es.error.to-string'
57
+ ] )
58
+ } )
59
+
48
60
// X-Fail as not implemented
49
61
test . failing ( 'Can detect all esnext modules' , ( ) => {
50
62
const ast = parseModule ( '' )
51
63
expect ( filterModules ( compat . modules . filter ( v => v . startsWith ( 'esnext.' ) ) , ast ) ) . toBe ( [ ] )
64
+ } )
65
+
66
+ // X-Fail as not implemented
67
+ test . failing ( 'Can detect all web modules' , ( ) => {
68
+ const ast = parseModule ( '' )
69
+ expect ( filterModules ( compat . modules . filter ( v => v . startsWith ( 'web.' ) ) , ast ) ) . toBe ( [ ] )
70
+ } )
71
+
72
+ test ( 'All modules exist' , async ( ) => {
73
+ let failed = false
74
+
75
+ const all = detectableModules . map ( mod => import ( `core-js/modules/${ mod [ 0 ] } .js` ) )
76
+ try {
77
+ await Promise . all ( all )
78
+ } catch ( e ) {
79
+ expect ( e ) . toBe ( '' )
80
+ }
52
81
} )
0 commit comments