@@ -2,7 +2,7 @@ import {isDevelopment} from './context/local.js'
22import { currentProcessIsGlobal , inferPackageManagerForGlobalCLI } from './is-global.js'
33import { checkForCachedNewVersion , packageManagerFromUserAgent , PackageManager } from './node-package-manager.js'
44import { exec , isCI } from './system.js'
5- import { cliInstallCommand , runCLIUpgrade , versionToAutoUpgrade } from './upgrade.js'
5+ import { cliInstallCommand , getOutputUpdateCLIReminder , runCLIUpgrade , versionToAutoUpgrade } from './upgrade.js'
66import { isPreReleaseVersion } from './version.js'
77import { getAutoUpgradeEnabled } from '../../private/node/conf-store.js'
88import { vi , describe , test , expect , beforeEach } from 'vitest'
@@ -96,6 +96,38 @@ describe('cliInstallCommand', () => {
9696 expect ( got ) . toBeUndefined ( )
9797 } )
9898} )
99+ describe ( 'getOutputUpdateCLIReminder' , ( ) => {
100+ test ( 'returns a basic upgrade message for a minor version bump' , ( ) => {
101+ vi . mocked ( inferPackageManagerForGlobalCLI ) . mockReturnValue ( 'homebrew' )
102+
103+ const message = getOutputUpdateCLIReminder ( '3.91.0' )
104+
105+ expect ( message ) . toContain ( '3.91.0' )
106+ expect ( message ) . toContain ( 'brew upgrade shopify-cli' )
107+ expect ( message ) . not . toContain ( 'major version' )
108+ } )
109+
110+ test ( 'appends the GitHub release URL for a major version bump' , ( ) => {
111+ vi . mocked ( inferPackageManagerForGlobalCLI ) . mockReturnValue ( 'homebrew' )
112+
113+ const message = getOutputUpdateCLIReminder ( '4.0.0' , true )
114+
115+ expect ( message ) . toContain ( '4.0.0' )
116+ expect ( message ) . toContain ( 'brew upgrade shopify-cli' )
117+ expect ( message ) . toContain ( 'major version' )
118+ expect ( message ) . toContain ( 'https://github.com/Shopify/cli/releases/tag/4.0.0' )
119+ } )
120+
121+ test ( 'does not append the release URL for a minor version bump even when isMajor is false' , ( ) => {
122+ vi . mocked ( inferPackageManagerForGlobalCLI ) . mockReturnValue ( 'npm' )
123+
124+ const message = getOutputUpdateCLIReminder ( '3.91.0' , false )
125+
126+ expect ( message ) . not . toContain ( 'major version' )
127+ expect ( message ) . not . toContain ( 'releases/tag' )
128+ } )
129+ } )
130+
99131describe ( 'runCLIUpgrade' , ( ) => {
100132 beforeEach ( ( ) => {
101133 // Mock isDevelopment to return false by default (not in CLI development mode)
0 commit comments