33const fs = require ( 'node:fs' ) ;
44const os = require ( 'node:os' ) ;
55const path = require ( 'node:path' ) ;
6- const {
7- getEmberSourceVersion,
8- isVersionAtLeast,
9- isEmberSourceVersionAtLeast,
10- } = require ( '../../../lib/utils/ember-source-version' ) ;
6+ const { isEmberSourceVersionAtLeast } = require ( '../../../lib/utils/ember-source-version' ) ;
117
128describe ( 'ember-source-version' , ( ) => {
13- describe ( 'isVersionAtLeast' , ( ) => {
14- it ( 'returns true when major version is greater' , ( ) => {
15- expect ( isVersionAtLeast ( '7.0.0' , 6 , 8 ) ) . toBe ( true ) ;
16- } ) ;
17-
18- it ( 'returns true when major matches and minor is greater' , ( ) => {
19- expect ( isVersionAtLeast ( '6.10.0' , 6 , 8 ) ) . toBe ( true ) ;
20- } ) ;
21-
22- it ( 'returns true when major and minor match exactly' , ( ) => {
23- expect ( isVersionAtLeast ( '6.8.0' , 6 , 8 ) ) . toBe ( true ) ;
24- } ) ;
25-
26- it ( 'returns true when major and minor match with patch version' , ( ) => {
27- expect ( isVersionAtLeast ( '6.8.3' , 6 , 8 ) ) . toBe ( true ) ;
28- } ) ;
29-
30- it ( 'returns false when major matches but minor is less' , ( ) => {
31- expect ( isVersionAtLeast ( '6.7.0' , 6 , 8 ) ) . toBe ( false ) ;
32- } ) ;
33-
34- it ( 'returns false when major is less' , ( ) => {
35- expect ( isVersionAtLeast ( '5.12.0' , 6 , 8 ) ) . toBe ( false ) ;
36- } ) ;
37-
38- it ( 'returns false for null' , ( ) => {
39- expect ( isVersionAtLeast ( null , 6 , 8 ) ) . toBe ( false ) ;
40- } ) ;
41-
42- it ( 'returns false for undefined' , ( ) => {
43- expect ( isVersionAtLeast ( undefined , 6 , 8 ) ) . toBe ( false ) ;
44- } ) ;
45-
46- it ( 'returns false for empty string' , ( ) => {
47- expect ( isVersionAtLeast ( '' , 6 , 8 ) ) . toBe ( false ) ;
48- } ) ;
49-
50- it ( 'returns false for non-string input' , ( ) => {
51- expect ( isVersionAtLeast ( 123 , 6 , 8 ) ) . toBe ( false ) ;
52- } ) ;
53-
54- it ( 'returns false for invalid version string' , ( ) => {
55- expect ( isVersionAtLeast ( 'invalid' , 6 , 8 ) ) . toBe ( false ) ;
56- } ) ;
57-
58- it ( 'handles pre-release versions' , ( ) => {
59- expect ( isVersionAtLeast ( '6.8.0-beta.1' , 6 , 8 ) ) . toBe ( true ) ;
60- } ) ;
61-
62- it ( 'handles two-part version strings' , ( ) => {
63- expect ( isVersionAtLeast ( '6.8' , 6 , 8 ) ) . toBe ( true ) ;
64- } ) ;
65-
66- it ( 'checks against 0.0 minimum' , ( ) => {
67- expect ( isVersionAtLeast ( '0.0.1' , 0 , 0 ) ) . toBe ( true ) ;
68- } ) ;
69- } ) ;
70-
71- describe ( 'getEmberSourceVersion' , ( ) => {
9+ describe ( 'isEmberSourceVersionAtLeast' , ( ) => {
7210 let tmpDir ;
7311
7412 beforeEach ( ( ) => {
@@ -79,80 +17,67 @@ describe('ember-source-version', () => {
7917 fs . rmSync ( tmpDir , { recursive : true } ) ;
8018 } ) ;
8119
82- it ( 'returns null when ember-source is not installed' , ( ) => {
83- expect ( getEmberSourceVersion ( tmpDir ) ) . toBeNull ( ) ;
84- } ) ;
85-
86- it ( 'returns the version when ember-source is installed' , ( ) => {
20+ it ( 'returns true when installed version meets the requirement' , ( ) => {
8721 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
8822 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
8923 fs . writeFileSync (
9024 path . join ( emberSourceDir , 'package.json' ) ,
9125 JSON . stringify ( { name : 'ember-source' , version : '6.8.0' } )
9226 ) ;
9327
94- expect ( getEmberSourceVersion ( tmpDir ) ) . toBe ( '6.8.0' ) ;
28+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
9529 } ) ;
9630
97- it ( 'returns null when package.json has no version field ' , ( ) => {
31+ it ( 'returns true when installed version exceeds the requirement ' , ( ) => {
9832 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
9933 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
10034 fs . writeFileSync (
10135 path . join ( emberSourceDir , 'package.json' ) ,
102- JSON . stringify ( { name : 'ember-source' } )
36+ JSON . stringify ( { name : 'ember-source' , version : '7.0.0' } )
10337 ) ;
10438
105- expect ( getEmberSourceVersion ( tmpDir ) ) . toBeNull ( ) ;
39+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
10640 } ) ;
10741
108- it ( 'returns null when package.json is malformed ' , ( ) => {
42+ it ( 'returns true when major version is greater ' , ( ) => {
10943 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
11044 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
111- fs . writeFileSync ( path . join ( emberSourceDir , 'package.json' ) , 'not json' ) ;
45+ fs . writeFileSync (
46+ path . join ( emberSourceDir , 'package.json' ) ,
47+ JSON . stringify ( { name : 'ember-source' , version : '7.0.0' } )
48+ ) ;
11249
113- expect ( getEmberSourceVersion ( tmpDir ) ) . toBeNull ( ) ;
50+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
11451 } ) ;
11552
116- it ( 'handles pre-release versions ' , ( ) => {
53+ it ( 'returns true when major matches and minor is greater ' , ( ) => {
11754 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
11855 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
11956 fs . writeFileSync (
12057 path . join ( emberSourceDir , 'package.json' ) ,
121- JSON . stringify ( { name : 'ember-source' , version : '7.0.0-beta.1 ' } )
58+ JSON . stringify ( { name : 'ember-source' , version : '6.10.0 ' } )
12259 ) ;
12360
124- expect ( getEmberSourceVersion ( tmpDir ) ) . toBe ( '7.0.0-beta.1' ) ;
125- } ) ;
126- } ) ;
127-
128- describe ( 'isEmberSourceVersionAtLeast' , ( ) => {
129- let tmpDir ;
130-
131- beforeEach ( ( ) => {
132- tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'eslint-plugin-ember-' ) ) ;
133- } ) ;
134-
135- afterEach ( ( ) => {
136- fs . rmSync ( tmpDir , { recursive : true } ) ;
61+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
13762 } ) ;
13863
139- it ( 'returns true when installed version meets the requirement ' , ( ) => {
64+ it ( 'returns true with patch version' , ( ) => {
14065 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
14166 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
14267 fs . writeFileSync (
14368 path . join ( emberSourceDir , 'package.json' ) ,
144- JSON . stringify ( { name : 'ember-source' , version : '6.8.0 ' } )
69+ JSON . stringify ( { name : 'ember-source' , version : '6.8.3 ' } )
14570 ) ;
14671
14772 expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
14873 } ) ;
14974
150- it ( 'returns true when installed version exceeds the requirement' , ( ) => {
75+ it ( 'returns true with pre-release version that meets requirement' , ( ) => {
15176 const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
15277 fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
15378 fs . writeFileSync (
15479 path . join ( emberSourceDir , 'package.json' ) ,
155- JSON . stringify ( { name : 'ember-source' , version : '7.0.0 ' } )
80+ JSON . stringify ( { name : 'ember-source' , version : '6.8.0-beta.1 ' } )
15681 ) ;
15782
15883 expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( true ) ;
@@ -169,8 +94,38 @@ describe('ember-source-version', () => {
16994 expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( false ) ;
17095 } ) ;
17196
97+ it ( 'returns false when major is less' , ( ) => {
98+ const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
99+ fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
100+ fs . writeFileSync (
101+ path . join ( emberSourceDir , 'package.json' ) ,
102+ JSON . stringify ( { name : 'ember-source' , version : '5.12.0' } )
103+ ) ;
104+
105+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( false ) ;
106+ } ) ;
107+
172108 it ( 'returns false when ember-source is not installed' , ( ) => {
173109 expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( false ) ;
174110 } ) ;
111+
112+ it ( 'returns false when package.json has no version field' , ( ) => {
113+ const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
114+ fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
115+ fs . writeFileSync (
116+ path . join ( emberSourceDir , 'package.json' ) ,
117+ JSON . stringify ( { name : 'ember-source' } )
118+ ) ;
119+
120+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( false ) ;
121+ } ) ;
122+
123+ it ( 'returns false when package.json is malformed' , ( ) => {
124+ const emberSourceDir = path . join ( tmpDir , 'node_modules' , 'ember-source' ) ;
125+ fs . mkdirSync ( emberSourceDir , { recursive : true } ) ;
126+ fs . writeFileSync ( path . join ( emberSourceDir , 'package.json' ) , 'not json' ) ;
127+
128+ expect ( isEmberSourceVersionAtLeast ( 6 , 8 , tmpDir ) ) . toBe ( false ) ;
129+ } ) ;
175130 } ) ;
176131} ) ;
0 commit comments