@@ -1757,6 +1757,139 @@ Valid values are: "auto", "", "~", "^", "="`,
1757
1757
}
1758
1758
` ) ;
1759
1759
} ) ;
1760
+
1761
+ it ( 'should not double patch transitive dependents that are already direct dependents' , async ( ) => {
1762
+ projectGraph = createWorkspaceWithPackageDependencies ( tree , {
1763
+ '@slateui/core' : {
1764
+ projectRoot : 'packages/core' ,
1765
+ packageName : '@slateui/core' ,
1766
+ version : '1.0.0' ,
1767
+ packageJsonPath : 'packages/core/package.json' ,
1768
+ localDependencies : [ ] ,
1769
+ } ,
1770
+ // buttons depends on core
1771
+ '@slateui/buttons' : {
1772
+ projectRoot : 'packages/buttons' ,
1773
+ packageName : '@slateui/buttons' ,
1774
+ version : '1.0.0' ,
1775
+ packageJsonPath : 'packages/buttons/package.json' ,
1776
+ localDependencies : [
1777
+ {
1778
+ projectName : '@slateui/core' ,
1779
+ dependencyCollection : 'dependencies' ,
1780
+ version : '1.0.0' ,
1781
+ } ,
1782
+ ] ,
1783
+ } ,
1784
+ // forms depends on both core and buttons, making it both a direct and transitive dependent of core
1785
+ '@slateui/forms' : {
1786
+ projectRoot : 'packages/forms' ,
1787
+ packageName : '@slateui/forms' ,
1788
+ version : '1.0.0' ,
1789
+ packageJsonPath : 'packages/forms/package.json' ,
1790
+ localDependencies : [
1791
+ {
1792
+ projectName : '@slateui/core' ,
1793
+ dependencyCollection : 'dependencies' ,
1794
+ version : '1.0.0' ,
1795
+ } ,
1796
+ {
1797
+ projectName : '@slateui/buttons' ,
1798
+ dependencyCollection : 'dependencies' ,
1799
+ version : '1.0.0' ,
1800
+ } ,
1801
+ ] ,
1802
+ } ,
1803
+ } ) ;
1804
+
1805
+ expect (
1806
+ await releaseVersionGenerator ( tree , {
1807
+ projects : [ projectGraph . nodes [ '@slateui/core' ] ] ,
1808
+ releaseGroup : createReleaseGroup ( 'independent' ) ,
1809
+ projectGraph,
1810
+ // Bump core to 2.0.0, which will cause buttons and forms to be patched to 1.0.1
1811
+ // This prevents a regression against an issue where forms would end up being patched twice to 1.0.2 in this scenario
1812
+ specifier : '2.0.0' ,
1813
+ currentVersionResolver : 'disk' ,
1814
+ specifierSource : 'prompt' ,
1815
+ } )
1816
+ ) . toMatchInlineSnapshot ( `
1817
+ {
1818
+ "callback": [Function],
1819
+ "data": {
1820
+ "@slateui/buttons": {
1821
+ "currentVersion": "1.0.0",
1822
+ "dependentProjects": [
1823
+ {
1824
+ "dependencyCollection": "dependencies",
1825
+ "rawVersionSpec": "1.0.0",
1826
+ "source": "@slateui/forms",
1827
+ "target": "@slateui/buttons",
1828
+ "type": "static",
1829
+ },
1830
+ ],
1831
+ "newVersion": "1.0.1",
1832
+ },
1833
+ "@slateui/core": {
1834
+ "currentVersion": "1.0.0",
1835
+ "dependentProjects": [
1836
+ {
1837
+ "dependencyCollection": "dependencies",
1838
+ "rawVersionSpec": "1.0.0",
1839
+ "source": "@slateui/buttons",
1840
+ "target": "@slateui/core",
1841
+ "type": "static",
1842
+ },
1843
+ {
1844
+ "dependencyCollection": "dependencies",
1845
+ "rawVersionSpec": "1.0.0",
1846
+ "source": "@slateui/forms",
1847
+ "target": "@slateui/core",
1848
+ "type": "static",
1849
+ },
1850
+ ],
1851
+ "newVersion": "2.0.0",
1852
+ },
1853
+ "@slateui/forms": {
1854
+ "currentVersion": "1.0.0",
1855
+ "dependentProjects": [],
1856
+ "newVersion": "1.0.1",
1857
+ },
1858
+ },
1859
+ }
1860
+ ` ) ;
1861
+
1862
+ expect ( readJson ( tree , 'packages/core/package.json' ) )
1863
+ . toMatchInlineSnapshot ( `
1864
+ {
1865
+ "name": "@slateui/core",
1866
+ "version": "2.0.0",
1867
+ }
1868
+ ` ) ;
1869
+
1870
+ expect ( readJson ( tree , 'packages/buttons/package.json' ) )
1871
+ . toMatchInlineSnapshot ( `
1872
+ {
1873
+ "dependencies": {
1874
+ "@slateui/core": "2.0.0",
1875
+ },
1876
+ "name": "@slateui/buttons",
1877
+ "version": "1.0.1",
1878
+ }
1879
+ ` ) ;
1880
+
1881
+ expect ( readJson ( tree , 'packages/forms/package.json' ) )
1882
+ . toMatchInlineSnapshot ( `
1883
+ {
1884
+ "dependencies": {
1885
+ "@slateui/buttons": "1.0.1",
1886
+ "@slateui/core": "2.0.0",
1887
+ },
1888
+ "name": "@slateui/forms",
1889
+ "version": "1.0.1",
1890
+ }
1891
+ ` ) ;
1892
+ } ) ;
1760
1893
} ) ;
1761
1894
} ) ;
1762
1895
0 commit comments