@@ -1729,21 +1729,145 @@ describe("multiSemanticRelease()", () => {
1729
1729
// Check manifests.
1730
1730
expect ( require ( `${ cwd } /packages/a/package.json` ) ) . toMatchObject ( {
1731
1731
peerDependencies : {
1732
- "msr-test-c" : strategy === "inherit" ? "1.0.0" : prefix + "1.0.0" ,
1732
+ "msr-test-c" : strategy === "inherit" ? "^ 1.0.0" : prefix + "1.0.0" ,
1733
1733
} ,
1734
1734
} ) ;
1735
1735
expect ( require ( `${ cwd } /packages/b/package.json` ) ) . toMatchObject ( {
1736
1736
dependencies : {
1737
- "msr-test-a" : strategy === "inherit" ? "1.0.0" : prefix + "1.0.0" ,
1737
+ "msr-test-a" : strategy === "inherit" ? "^ 1.0.0" : prefix + "1.0.0" ,
1738
1738
} ,
1739
1739
devDependencies : {
1740
- "msr-test-c" : strategy === "inherit" ? "1.0.0" : prefix + "1.0.0" ,
1740
+ "msr-test-c" : strategy === "inherit" ? "^ 1.0.0" : prefix + "1.0.0" ,
1741
1741
} ,
1742
1742
} ) ;
1743
1743
expect ( require ( `${ cwd } /packages/c/package.json` ) ) . toMatchObject ( {
1744
1744
devDependencies : {
1745
- "msr-test-b" : strategy === "inherit" ? "1.0.0" : prefix + "1.0.0" ,
1746
- "msr-test-d" : strategy === "inherit" ? "1.0.0" : prefix + "1.0.0" ,
1745
+ "msr-test-b" : strategy === "inherit" ? "^1.0.0" : prefix + "1.0.0" ,
1746
+ "msr-test-d" : strategy === "inherit" ? "^1.0.0" : prefix + "1.0.0" ,
1747
+ } ,
1748
+ } ) ;
1749
+ } ) ;
1750
+ } ) ;
1751
+ describe . each ( [
1752
+ [ "override" , "^" ] ,
1753
+ [ "satisfy" , "^" ] ,
1754
+ [ "inherit" , "^" ] ,
1755
+ ] ) ( "With Yarn Workspace Ranges & deps.bump=%s & deps.prefix=%s" , ( strategy , prefix ) => {
1756
+ test ( 'should replace "workspace:" with correct version' , async ( ) => {
1757
+ // Create Git repo with copy of Yarn workspaces fixture.
1758
+ const cwd = gitInit ( ) ;
1759
+ copyDirectory ( `test/fixtures/yarnWorkspacesRanges/` , cwd ) ;
1760
+ const sha = gitCommitAll ( cwd , "feat: Initial release" ) ;
1761
+ gitInitOrigin ( cwd ) ;
1762
+ gitPush ( cwd ) ;
1763
+
1764
+ // Capture output.
1765
+ const stdout = new WritableStreamBuffer ( ) ;
1766
+ const stderr = new WritableStreamBuffer ( ) ;
1767
+
1768
+ // Call multiSemanticRelease()
1769
+ // Doesn't include plugins that actually publish.
1770
+ const multiSemanticRelease = require ( "../../" ) ;
1771
+ const result = await multiSemanticRelease (
1772
+ [
1773
+ `packages/a/package.json` ,
1774
+ `packages/b/package.json` ,
1775
+ `packages/c/package.json` ,
1776
+ `packages/d/package.json` ,
1777
+ ] ,
1778
+ { } ,
1779
+ { cwd, stdout, stderr } ,
1780
+ { deps : { bump : strategy , prefix } }
1781
+ ) ;
1782
+
1783
+ // Get stdout and stderr output.
1784
+ const err = stderr . getContentsAsString ( "utf8" ) ;
1785
+ expect ( err ) . toBe ( false ) ;
1786
+ const out = stdout . getContentsAsString ( "utf8" ) ;
1787
+ expect ( out ) . toMatch ( "Started multirelease! Loading 4 packages..." ) ;
1788
+ expect ( out ) . toMatch ( "Loaded package msr-test-a" ) ;
1789
+ expect ( out ) . toMatch ( "Loaded package msr-test-b" ) ;
1790
+ expect ( out ) . toMatch ( "Loaded package msr-test-c" ) ;
1791
+ expect ( out ) . toMatch ( "Loaded package msr-test-d" ) ;
1792
+ expect ( out ) . toMatch ( "Queued 4 packages! Starting release..." ) ;
1793
+ expect ( out ) . toMatch ( "Created tag [email protected] " ) ;
1794
+ expect ( out ) . toMatch ( "Created tag [email protected] " ) ;
1795
+ expect ( out ) . toMatch ( "Created tag [email protected] " ) ;
1796
+ expect ( out ) . toMatch ( "Created tag [email protected] " ) ;
1797
+ expect ( out ) . toMatch ( "Released 4 of 4 packages, semantically!" ) ;
1798
+
1799
+ // A.
1800
+ expect ( result [ 0 ] . name ) . toBe ( "msr-test-a" ) ;
1801
+ expect ( result [ 0 ] . result . lastRelease ) . toEqual ( { } ) ;
1802
+ expect ( result [ 0 ] . result . nextRelease ) . toMatchObject ( {
1803
+ gitHead : sha ,
1804
+
1805
+ type : "minor" ,
1806
+ version : "1.0.0" ,
1807
+ } ) ;
1808
+ expect ( result [ 0 ] . result . nextRelease . notes ) . toMatch ( "# msr-test-a 1.0.0" ) ;
1809
+ expect ( result [ 0 ] . result . nextRelease . notes ) . toMatch ( "### Features\n\n* Initial release" ) ;
1810
+ expect ( result [ 0 ] . result . nextRelease . notes ) . toMatch (
1811
+ "### Dependencies\n\n* **msr-test-b:** upgraded to 1.0.0\n* **msr-test-c:** upgraded to 1.0.0"
1812
+ ) ;
1813
+
1814
+ // B.
1815
+ expect ( result [ 1 ] . name ) . toBe ( "msr-test-b" ) ;
1816
+ expect ( result [ 1 ] . result . lastRelease ) . toEqual ( { } ) ;
1817
+ expect ( result [ 1 ] . result . nextRelease ) . toMatchObject ( {
1818
+ gitHead : sha ,
1819
+
1820
+ type : "minor" ,
1821
+ version : "1.0.0" ,
1822
+ } ) ;
1823
+ expect ( result [ 1 ] . result . nextRelease . notes ) . toMatch ( "# msr-test-b 1.0.0" ) ;
1824
+ expect ( result [ 1 ] . result . nextRelease . notes ) . toMatch ( "### Features\n\n* Initial release" ) ;
1825
+ expect ( result [ 1 ] . result . nextRelease . notes ) . toMatch (
1826
+ "### Dependencies\n\n* **msr-test-d:** upgraded to 1.0.0"
1827
+ ) ;
1828
+
1829
+ // C.
1830
+ expect ( result [ 2 ] . name ) . toBe ( "msr-test-c" ) ;
1831
+ expect ( result [ 2 ] . result . lastRelease ) . toEqual ( { } ) ;
1832
+ expect ( result [ 2 ] . result . nextRelease ) . toMatchObject ( {
1833
+ gitHead : sha ,
1834
+
1835
+ type : "minor" ,
1836
+ version : "1.0.0" ,
1837
+ } ) ;
1838
+ expect ( result [ 2 ] . result . nextRelease . notes ) . toMatch ( "# msr-test-c 1.0.0" ) ;
1839
+ expect ( result [ 2 ] . result . nextRelease . notes ) . toMatch ( "### Features\n\n* Initial release" ) ;
1840
+
1841
+ // D.
1842
+ expect ( result [ 3 ] . name ) . toBe ( "msr-test-d" ) ;
1843
+ expect ( result [ 3 ] . result . lastRelease ) . toEqual ( { } ) ;
1844
+ expect ( result [ 3 ] . result . nextRelease ) . toMatchObject ( {
1845
+ gitHead : sha ,
1846
+
1847
+ type : "minor" ,
1848
+ version : "1.0.0" ,
1849
+ } ) ;
1850
+ expect ( result [ 3 ] . result . nextRelease . notes ) . toMatch ( "# msr-test-d 1.0.0" ) ;
1851
+ expect ( result [ 3 ] . result . nextRelease . notes ) . toMatch ( "### Features\n\n* Initial release" ) ;
1852
+
1853
+ // ONLY four times.
1854
+ expect ( result ) . toHaveLength ( 4 ) ;
1855
+
1856
+ // Check manifests.
1857
+ expect ( require ( `${ cwd } /packages/a/package.json` ) ) . toMatchObject ( {
1858
+ dependencies : {
1859
+ "msr-test-b" : "1.0.0" ,
1860
+ } ,
1861
+ devDependencies : {
1862
+ "msr-test-c" : strategy === "override" ? prefix + "1.0.0" : "^1.0.0" ,
1863
+ } ,
1864
+ peerDependencies : {
1865
+ "msr-test-d" : strategy === "override" ? prefix + "1.0.0" : "~1.0.0" ,
1866
+ } ,
1867
+ } ) ;
1868
+ expect ( require ( `${ cwd } /packages/b/package.json` ) ) . toMatchObject ( {
1869
+ optionalDependencies : {
1870
+ "msr-test-d" : strategy === "override" ? prefix + "1.0.0" : "^1.0.0" ,
1747
1871
} ,
1748
1872
} ) ;
1749
1873
} ) ;
0 commit comments