@@ -108,7 +108,7 @@ describe('performRelease', () => {
108108
109109 await expect (
110110 readVersion ( repoRoot , 'packages/server/package.json' ) ,
111- ) . resolves . toBe ( '1. 0.0' ) ;
111+ ) . resolves . toBe ( '0.0.3 ' ) ;
112112 await expect (
113113 readVersion ( repoRoot , 'packages/frontend/package.json' ) ,
114114 ) . resolves . toBe ( '2.0.0' ) ;
@@ -118,6 +118,42 @@ describe('performRelease', () => {
118118 ) ;
119119 } ) ;
120120
121+ test ( 'bumps from current package versions even when latest tag lags behind' , async ( ) => {
122+ await writePackageJson ( repoRoot , 'packages/server/package.json' , '0.0.4' ) ;
123+ await writePackageJson ( repoRoot , 'packages/frontend/package.json' , '0.0.4' ) ;
124+ await writePackageJson (
125+ repoRoot ,
126+ 'packages/standalone/package.json' ,
127+ '0.0.4' ,
128+ ) ;
129+ await git ( repoRoot , [ 'add' , 'packages/server/package.json' ] ) ;
130+ await git ( repoRoot , [ 'add' , 'packages/frontend/package.json' ] ) ;
131+ await git ( repoRoot , [ 'add' , 'packages/standalone/package.json' ] ) ;
132+ await git ( repoRoot , [ 'commit' , '-m' , 'chore: release v0.0.4' ] ) ;
133+
134+ await expect (
135+ performRelease ( {
136+ cwd : repoRoot ,
137+ dryRun : false ,
138+ logger : TEST_LOGGER ,
139+ releaseType : 'patch' ,
140+ signTag : false ,
141+ } ) ,
142+ ) . resolves . toEqual ( {
143+ dryRun : false ,
144+ previousTag : 'v0.0.4' ,
145+ tag : 'v0.0.5' ,
146+ version : '0.0.5' ,
147+ } ) ;
148+
149+ await expect ( git ( repoRoot , [ 'tag' , '--list' , 'v0.0.5' ] ) ) . resolves . toBe (
150+ 'v0.0.5' ,
151+ ) ;
152+ await expect ( git ( repoRoot , [ 'log' , '-1' , '--pretty=%s' ] ) ) . resolves . toBe (
153+ 'chore: release v0.0.5' ,
154+ ) ;
155+ } ) ;
156+
121157 test ( 'dry run does not modify package versions or create git objects' , async ( ) => {
122158 const result = await performRelease ( {
123159 cwd : repoRoot ,
@@ -136,14 +172,14 @@ describe('performRelease', () => {
136172
137173 await expect (
138174 readVersion ( repoRoot , 'packages/server/package.json' ) ,
139- ) . resolves . toBe ( '1. 0.0' ) ;
175+ ) . resolves . toBe ( '0.0.3 ' ) ;
140176 await expect ( git ( repoRoot , [ 'tag' , '--list' , 'v0.1.0' ] ) ) . resolves . toBe ( '' ) ;
141177 await expect ( git ( repoRoot , [ 'log' , '-1' , '--pretty=%s' ] ) ) . resolves . toBe (
142178 'chore: seed release fixtures' ,
143179 ) ;
144180 } ) ;
145181
146- test ( 'fails when there is no release tag' , async ( ) => {
182+ test ( 'does not require an existing release tag' , async ( ) => {
147183 const emptyRepo = await mkdtemp (
148184 path . join ( os . tmpdir ( ) , 'tinyauth-tools-empty-' ) ,
149185 ) ;
@@ -155,6 +191,26 @@ describe('performRelease', () => {
155191 await git ( emptyRepo , [ 'config' , 'commit.gpgSign' , 'false' ] ) ;
156192 await git ( emptyRepo , [ 'config' , 'tag.gpgSign' , 'false' ] ) ;
157193
194+ await writePackageJson (
195+ emptyRepo ,
196+ 'packages/server/package.json' ,
197+ '0.0.3' ,
198+ ) ;
199+ await writePackageJson (
200+ emptyRepo ,
201+ 'packages/frontend/package.json' ,
202+ '0.0.3' ,
203+ ) ;
204+ await writePackageJson (
205+ emptyRepo ,
206+ 'packages/standalone/package.json' ,
207+ '0.0.3' ,
208+ ) ;
209+ await git ( emptyRepo , [ 'add' , 'packages/server/package.json' ] ) ;
210+ await git ( emptyRepo , [ 'add' , 'packages/frontend/package.json' ] ) ;
211+ await git ( emptyRepo , [ 'add' , 'packages/standalone/package.json' ] ) ;
212+ await git ( emptyRepo , [ 'commit' , '-m' , 'chore: seed release fixtures' ] ) ;
213+
158214 await expect (
159215 performRelease ( {
160216 cwd : emptyRepo ,
@@ -163,7 +219,12 @@ describe('performRelease', () => {
163219 releaseType : 'minor' ,
164220 signTag : false ,
165221 } ) ,
166- ) . rejects . toThrow ( 'No release tag found' ) ;
222+ ) . resolves . toEqual ( {
223+ dryRun : false ,
224+ previousTag : 'v0.0.3' ,
225+ tag : 'v0.1.0' ,
226+ version : '0.1.0' ,
227+ } ) ;
167228 } finally {
168229 await rm ( emptyRepo , { force : true , recursive : true } ) ;
169230 }
@@ -177,9 +238,9 @@ async function setupRepository(repoRoot: string): Promise<void> {
177238 await git ( repoRoot , [ 'config' , 'commit.gpgSign' , 'false' ] ) ;
178239 await git ( repoRoot , [ 'config' , 'tag.gpgSign' , 'false' ] ) ;
179240
180- await writePackageJson ( repoRoot , 'packages/server/package.json' , '1. 0.0' ) ;
181- await writePackageJson ( repoRoot , 'packages/frontend/package.json' , '1. 0.0' ) ;
182- await writePackageJson ( repoRoot , 'packages/standalone/package.json' , '1. 0.0' ) ;
241+ await writePackageJson ( repoRoot , 'packages/server/package.json' , '0.0.3 ' ) ;
242+ await writePackageJson ( repoRoot , 'packages/frontend/package.json' , '0.0.3 ' ) ;
243+ await writePackageJson ( repoRoot , 'packages/standalone/package.json' , '0.0.3 ' ) ;
183244
184245 await git ( repoRoot , [ 'add' , 'packages/server/package.json' ] ) ;
185246 await git ( repoRoot , [ 'add' , 'packages/frontend/package.json' ] ) ;
0 commit comments