@@ -1719,78 +1719,6 @@ final class WorkspaceTests: XCTestCase {
1719
1719
}
1720
1720
}
1721
1721
1722
- func testPackageGraphOnlyRootDependency( ) throws {
1723
- let path = AbsolutePath ( " /RootPkg " )
1724
- let fs = InMemoryFileSystem ( )
1725
- let manifestGraph = try MockManifestGraph ( at: path,
1726
- rootDeps: [
1727
- ] ,
1728
- packages: [
1729
- MockPackage ( " B " , version: v1) ,
1730
- ] ,
1731
- fs: fs
1732
- )
1733
- let provider = manifestGraph. repoProvider!
1734
-
1735
- let workspace = Workspace . createWith (
1736
- rootPackage: path,
1737
- manifestLoader: manifestGraph. manifestLoader,
1738
- delegate: TestWorkspaceDelegate ( ) ,
1739
- fileSystem: fs,
1740
- repositoryProvider: provider
1741
- )
1742
- let diagnostics = DiagnosticsEngine ( )
1743
- let root = PackageGraphRootInput ( packages: [ path] , dependencies: [
1744
- . init( url: " /RootPkg/B " , requirement: . exact( v1. asPD4Version) , location: " rootB " ) ,
1745
- ] )
1746
-
1747
- let graph = workspace. loadPackageGraph ( root: root, diagnostics: diagnostics)
1748
- XCTAssertFalse ( diagnostics. hasErrors)
1749
- XCTAssertEqual ( graph. rootPackages. map { $0. name} . sorted ( ) , [ " Root " ] )
1750
- XCTAssertEqual ( graph. packages. map { $0. name} . sorted ( ) , [ " B " , " Root " ] )
1751
- XCTAssertEqual ( graph. targets. map { $0. name} . sorted ( ) , [ " B " , " Root " ] )
1752
- XCTAssertEqual ( graph. products. map { $0. name} . sorted ( ) , [ " B " , " Root " ] )
1753
- }
1754
-
1755
- func testPackageGraphWithGraphRootDependencies( ) throws {
1756
- let path = AbsolutePath ( " /RootPkg " )
1757
- let fs = InMemoryFileSystem ( )
1758
- let manifestGraph = try MockManifestGraph ( at: path,
1759
- rootDeps: [
1760
- MockDependency ( " A " , version: Version ( 1 , 0 , 0 ) ..< Version ( 1 , . max, . max) ) ,
1761
- ] ,
1762
- packages: [
1763
- MockPackage ( " A " , version: v1) ,
1764
- MockPackage ( " A " , version: " 1.5.1 " ) ,
1765
- MockPackage ( " B " , version: v1) ,
1766
- ] ,
1767
- fs: fs
1768
- )
1769
- let provider = manifestGraph. repoProvider!
1770
- try provider. specifierMap [ manifestGraph. repo ( " A " ) ] !. tag ( name: " 1.5.1 " )
1771
-
1772
- let workspace = Workspace . createWith (
1773
- rootPackage: path,
1774
- manifestLoader: manifestGraph. manifestLoader,
1775
- delegate: TestWorkspaceDelegate ( ) ,
1776
- fileSystem: fs,
1777
- repositoryProvider: provider
1778
- )
1779
- let diagnostics = DiagnosticsEngine ( )
1780
- let root = PackageGraphRootInput ( packages: [ path] , dependencies: [
1781
- . init( url: " /RootPkg/B " , requirement: . exact( v1. asPD4Version) , location: " rootB " ) ,
1782
- . init( url: " /RootPkg/A " , requirement: . exact( v1. asPD4Version) , location: " rootA " ) ,
1783
- ] )
1784
-
1785
- let graph = workspace. loadPackageGraph ( root: root, diagnostics: diagnostics)
1786
- XCTAssertFalse ( diagnostics. hasErrors)
1787
- XCTAssertEqual ( graph. rootPackages. map { $0. name} . sorted ( ) , [ " Root " ] )
1788
- XCTAssertEqual ( graph. lookup ( " A " ) . manifest. version, v1)
1789
- XCTAssertEqual ( graph. packages. map { $0. name} . sorted ( ) , [ " A " , " B " , " Root " ] )
1790
- XCTAssertEqual ( graph. targets. map { $0. name} . sorted ( ) , [ " A " , " B " , " Root " ] )
1791
- XCTAssertEqual ( graph. products. map { $0. name} . sorted ( ) , [ " A " , " B " , " Root " ] )
1792
- }
1793
-
1794
1722
func testDeletedCheckoutDirectory( ) throws {
1795
1723
fixture ( name: " DependencyResolution/External/Simple " ) { path in
1796
1724
let barRoot = path. appending ( component: " Bar " )
@@ -1814,202 +1742,6 @@ final class WorkspaceTests: XCTestCase {
1814
1742
}
1815
1743
}
1816
1744
1817
- func testGraphData( ) throws {
1818
- let path = AbsolutePath ( " /RootPkg " )
1819
- let fs = InMemoryFileSystem ( )
1820
- let manifestGraph = try MockManifestGraph ( at: path,
1821
- rootDeps: [ ] ,
1822
- packages: [
1823
- MockPackage ( " A " , version: v1) ,
1824
- MockPackage ( " A " , version: " 1.5.1 " ) ,
1825
- MockPackage ( " B " , version: v1) ,
1826
- ] ,
1827
- fs: fs)
1828
- let provider = manifestGraph. repoProvider!
1829
- try provider. specifierMap [ manifestGraph. repo ( " A " ) ] !. tag ( name: " 1.5.1 " )
1830
-
1831
- let delegate = TestWorkspaceDelegate ( )
1832
- let workspace = Workspace . createWith (
1833
- rootPackage: path,
1834
- manifestLoader: manifestGraph. manifestLoader,
1835
- delegate: delegate,
1836
- fileSystem: fs,
1837
- repositoryProvider: provider)
1838
- let diagnostics = DiagnosticsEngine ( )
1839
- let root = PackageGraphRootInput ( packages: [ path] , dependencies: [
1840
- . init( url: " /RootPkg/B " , requirement: . exact( v1. asPD4Version) , location: " rootB " ) ,
1841
- . init( url: " /RootPkg/A " , requirement: . exact( v1. asPD4Version) , location: " rootA " ) ,
1842
- ] )
1843
-
1844
- let data = workspace. loadGraphData ( root: root, diagnostics: diagnostics)
1845
-
1846
- // Sanity.
1847
- XCTAssertFalse ( diagnostics. hasErrors)
1848
- XCTAssertEqual ( data. graph. rootPackages. map { $0. name} , [ " Root " ] )
1849
- XCTAssertEqual ( data. graph. packages. map { $0. name} . sorted ( ) , [ " A " , " B " , " Root " ] )
1850
-
1851
- // Check package association.
1852
- XCTAssertEqual ( data. dependencyMap [ data. graph. lookup ( " A " ) ] ? . packageRef. identity, " a " )
1853
- XCTAssertEqual ( data. dependencyMap [ data. graph. lookup ( " B " ) ] ? . packageRef. identity, " b " )
1854
-
1855
- let currentDeps = workspace. managedDependencies. values. map { $0. packageRef}
1856
- // Check delegates.
1857
- XCTAssertEqual ( delegate. managedDependenciesData [ 0 ] . map { $0. packageRef} , currentDeps)
1858
-
1859
- // Load graph data again.
1860
- do {
1861
- let data = workspace. loadGraphData ( root: root, diagnostics: diagnostics)
1862
- // Check package association.
1863
- XCTAssertEqual ( data. dependencyMap [ data. graph. lookup ( " A " ) ] ? . packageRef. identity, " a " )
1864
- XCTAssertEqual ( data. dependencyMap [ data. graph. lookup ( " B " ) ] ? . packageRef. identity, " b " )
1865
- }
1866
-
1867
- XCTAssertEqual ( delegate. managedDependenciesData [ 1 ] . map { $0. packageRef} , currentDeps)
1868
- XCTAssertEqual ( delegate. managedDependenciesData. count, 2 )
1869
- }
1870
-
1871
- func testIsResolutionRequired( ) throws {
1872
- let aRepo = RepositorySpecifier ( url: " /A " )
1873
- let bRepo = RepositorySpecifier ( url: " /B " )
1874
- let cRepo = RepositorySpecifier ( url: " /C " )
1875
- let aRef = PackageReference ( identity: " a " , path: aRepo. url)
1876
- let bRef = PackageReference ( identity: " b " , path: bRepo. url)
1877
- let cRef = PackageReference ( identity: " c " , path: cRepo. url)
1878
- let v1 = CheckoutState ( revision: Revision ( identifier: " hello " ) , version: " 1.0.0 " )
1879
- let v1_1 = CheckoutState ( revision: Revision ( identifier: " hello " ) , version: " 1.0.1 " )
1880
- let v1_5 = CheckoutState ( revision: Revision ( identifier: " hello " ) , version: " 1.0.5 " )
1881
- let v2 = CheckoutState ( revision: Revision ( identifier: " hello " ) , version: " 2.0.0 " )
1882
-
1883
- let v1Range : VersionSetSpecifier = . range( " 1.0.0 " ..< " 2.0.0 " )
1884
- let v2Range : VersionSetSpecifier = . range( " 2.0.0 " ..< " 3.0.0 " )
1885
-
1886
- let fs = InMemoryFileSystem ( )
1887
-
1888
- let workspace = Workspace . createWith ( rootPackage: . root, fileSystem: fs)
1889
- let pinsStore = try workspace. pinsStore. load ( )
1890
-
1891
- // Test Empty case.
1892
- do {
1893
- let result = workspace. isResolutionRequired ( dependencies: [ ] , pinsStore: pinsStore)
1894
- XCTAssertEqual ( result. resolve, false )
1895
- }
1896
-
1897
- // Fill the pinsStore.
1898
- pinsStore. pin ( packageRef: aRef, state: v1)
1899
- pinsStore. pin ( packageRef: bRef, state: v1_5)
1900
- pinsStore. pin ( packageRef: cRef, state: v2)
1901
-
1902
- // Fill ManagedDependencies (all different than pins).
1903
- let managedDependencies = workspace. managedDependencies
1904
- managedDependencies [ forIdentity: aRef. identity] = ManagedDependency (
1905
- packageRef: aRef, subpath: RelativePath ( " A " ) , checkoutState: v1_1)
1906
- managedDependencies [ forIdentity: bRef. identity] = ManagedDependency (
1907
- packageRef: bRef, subpath: RelativePath ( " B " ) , checkoutState: v1_5)
1908
- managedDependencies [ forIdentity: bRef. identity] = managedDependencies [ forIdentity: bRef. identity] ? . editedDependency (
1909
- subpath: RelativePath ( " B " ) , unmanagedPath: nil )
1910
-
1911
- // We should need to resolve if input is not satisfiable.
1912
- do {
1913
- let result = workspace. isResolutionRequired ( dependencies: [
1914
- RepositoryPackageConstraint ( container: aRef, versionRequirement: v1Range) ,
1915
- RepositoryPackageConstraint ( container: aRef, versionRequirement: v2Range) ,
1916
- ] , pinsStore: pinsStore)
1917
-
1918
- XCTAssertEqual ( result. resolve, true )
1919
- XCTAssertEqual ( result. validPins. count, 3 )
1920
- }
1921
-
1922
- // We should need to resolve when pins don't satisfy the inputs.
1923
- do {
1924
- let result = workspace. isResolutionRequired ( dependencies: [
1925
- RepositoryPackageConstraint ( container: aRef, versionRequirement: v1Range) ,
1926
- RepositoryPackageConstraint ( container: bRef, versionRequirement: v1Range) ,
1927
- RepositoryPackageConstraint ( container: cRef, versionRequirement: v1Range) ,
1928
- ] , pinsStore: pinsStore)
1929
-
1930
- XCTAssertEqual ( result. resolve, true )
1931
- XCTAssertEqual ( result. validPins. map ( { $0. identifier. repository. url} ) . sorted ( ) , [ " /A " , " /B " ] )
1932
- }
1933
-
1934
- // We should need to resolve if managed dependencies is out of sync with pins.
1935
- do {
1936
- let result = workspace. isResolutionRequired ( dependencies: [
1937
- RepositoryPackageConstraint ( container: aRef, versionRequirement: v1Range) ,
1938
- RepositoryPackageConstraint ( container: bRef, versionRequirement: v1Range) ,
1939
- RepositoryPackageConstraint ( container: cRef, versionRequirement: v2Range) ,
1940
- ] , pinsStore: pinsStore)
1941
-
1942
- XCTAssertEqual ( result. resolve, true )
1943
- XCTAssertEqual ( result. validPins. map ( { $0. identifier. repository. url} ) . sorted ( ) , [ " /A " , " /B " , " /C " ] )
1944
- }
1945
-
1946
- // We shouldn't need to resolve if everything is fine.
1947
- do {
1948
- managedDependencies [ forIdentity: aRef. identity] = ManagedDependency (
1949
- packageRef: aRef, subpath: RelativePath ( " A " ) , checkoutState: v1)
1950
- managedDependencies [ forIdentity: bRef. identity] = ManagedDependency (
1951
- packageRef: bRef, subpath: RelativePath ( " B " ) , checkoutState: v1_5)
1952
- managedDependencies [ forIdentity: cRef. identity] = ManagedDependency (
1953
- packageRef: cRef, subpath: RelativePath ( " C " ) , checkoutState: v2)
1954
-
1955
- let result = workspace. isResolutionRequired ( dependencies: [
1956
- RepositoryPackageConstraint ( container: aRef, versionRequirement: v1Range) ,
1957
- RepositoryPackageConstraint ( container: bRef, versionRequirement: v1Range) ,
1958
- RepositoryPackageConstraint ( container: cRef, versionRequirement: v2Range) ,
1959
- ] , pinsStore: pinsStore)
1960
-
1961
- XCTAssertEqual ( result. resolve, false )
1962
- XCTAssertEqual ( result. validPins, [ ] )
1963
- }
1964
- }
1965
-
1966
- func testResolverCanHaveError( ) throws {
1967
- let v2 : Version = " 2.0.0 "
1968
- let path = AbsolutePath ( " /RootPkg " )
1969
- let fs = InMemoryFileSystem ( )
1970
-
1971
- let manifestGraph = try MockManifestGraph ( at: path,
1972
- rootDeps: [ ] ,
1973
- packages: [
1974
- MockPackage ( " A " , version: v1, dependencies: [
1975
- MockDependency ( " AA " , version: v1)
1976
- ] ) ,
1977
- MockPackage ( " B " , version: v1, dependencies: [
1978
- MockDependency ( " AA " , version: v2)
1979
- ] ) ,
1980
- MockPackage ( " AA " , version: v1) ,
1981
- MockPackage ( " AA " , version: v2) ,
1982
- ] ,
1983
- fs: fs)
1984
- let provider = manifestGraph. repoProvider!
1985
- try provider. specifierMap [ manifestGraph. repo ( " AA " ) ] !. tag ( name: " 2.0.0 " )
1986
-
1987
- let delegate = TestWorkspaceDelegate ( )
1988
-
1989
- let workspace = Workspace . createWith (
1990
- rootPackage: path,
1991
- manifestLoader: manifestGraph. manifestLoader,
1992
- delegate: delegate,
1993
- fileSystem: fs,
1994
- repositoryProvider: provider)
1995
-
1996
- let root = PackageGraphRootInput ( packages: [ ] , dependencies: [
1997
- . init( url: " /RootPkg/A " , requirement: . exact( v1. asPD4Version) , location: " A " ) ,
1998
- . init( url: " /RootPkg/B " , requirement: . exact( v1. asPD4Version) , location: " B " ) ,
1999
- ] )
2000
-
2001
- let diagnostics = DiagnosticsEngine ( )
2002
- workspace. resolve ( root: root, diagnostics: diagnostics)
2003
-
2004
- // Check that we produce error.
2005
- DiagnosticsEngineTester ( diagnostics) { result in
2006
- result. check ( diagnostic: . contains( " dependency graph is unresolvable; " ) , behavior: . error)
2007
- }
2008
-
2009
- // There should be no extra fetches.
2010
- XCTAssertEqual ( delegate. repoUpdates, [ ] )
2011
- }
2012
-
2013
1745
static var allTests = [
2014
1746
( " testBasics " , testBasics) ,
2015
1747
( " testBranchAndRevision " , testBranchAndRevision) ,
@@ -2032,13 +1764,8 @@ final class WorkspaceTests: XCTestCase {
2032
1764
( " testToolsVersionRootPackages " , testToolsVersionRootPackages) ,
2033
1765
( " testTOTPackageEdit " , testTOTPackageEdit) ,
2034
1766
( " testLoadingRootManifests " , testLoadingRootManifests) ,
2035
- ( " testPackageGraphWithGraphRootDependencies " , testPackageGraphWithGraphRootDependencies) ,
2036
- ( " testPackageGraphOnlyRootDependency " , testPackageGraphOnlyRootDependency) ,
2037
1767
( " testDeletedCheckoutDirectory " , testDeletedCheckoutDirectory) ,
2038
- ( " testGraphData " , testGraphData) ,
2039
1768
( " testSymlinkedDependency " , testSymlinkedDependency) ,
2040
- ( " testIsResolutionRequired " , testIsResolutionRequired) ,
2041
- ( " testResolverCanHaveError " , testResolverCanHaveError) ,
2042
1769
( " testCanUneditRemovedDependencies " , testCanUneditRemovedDependencies)
2043
1770
]
2044
1771
}
0 commit comments