@@ -16,6 +16,56 @@ class PackageDescriptionNextLoadingTests: PackageDescriptionLoadingTests {
16
16
. vNext
17
17
}
18
18
19
+ func testSourceControlDependencies( ) throws {
20
+ let manifest = """
21
+ import PackageDescription
22
+ let package = Package(
23
+ name: " MyPackage " ,
24
+ dependencies: [
25
+ // from
26
+ .package(name: " foo1 " , url: " http://localhost/foo1 " , from: " 1.1.1 " ),
27
+ .package(url: " http://localhost/foo2 " , from: " 1.1.1 " ),
28
+ // upToNextMajor
29
+ .package(name: " bar1 " , url: " http://localhost/bar1 " , .upToNextMajor(from: " 1.1.1 " )),
30
+ .package(url: " http://localhost/bar2 " , .upToNextMajor(from: " 1.1.1 " )),
31
+ // upToNextMinor
32
+ .package(name: " baz1 " , url: " http://localhost/baz1 " , .upToNextMinor(from: " 1.1.1 " )),
33
+ .package(url: " http://localhost/baz2 " , .upToNextMinor(from: " 1.1.1 " )),
34
+ // exact
35
+ .package(name: " qux1 " , url: " http://localhost/qux1 " , .exact( " 1.1.1 " )),
36
+ .package(url: " http://localhost/qux2 " , .exact( " 1.1.1 " )),
37
+ .package(url: " http://localhost/qux3 " , exact: " 1.1.1 " ),
38
+ // branch
39
+ .package(name: " quux1 " , url: " http://localhost/quux1 " , .branch( " main " )),
40
+ .package(url: " http://localhost/quux2 " , .branch( " main " )),
41
+ .package(url: " http://localhost/quux3 " , branch: " main " ),
42
+ // revision
43
+ .package(name: " quuz1 " , url: " http://localhost/quuz1 " , .revision( " abcdefg " )),
44
+ .package(url: " http://localhost/quuz2 " , .revision( " abcdefg " )),
45
+ .package(url: " http://localhost/quuz3 " , revision: " abcdefg " ),
46
+ ]
47
+ )
48
+ """
49
+ loadManifest ( manifest, toolsVersion: self . toolsVersion) { manifest in
50
+ let deps = Dictionary ( uniqueKeysWithValues: manifest. dependencies. map { ( $0. identity. description, $0) } )
51
+ XCTAssertEqual ( deps [ " foo1 " ] , . sourceControl( identity: . plain( " foo1 " ) , name: " foo1 " , location: " http://localhost/foo1 " , requirement: . range( " 1.1.1 " ..< " 2.0.0 " ) ) )
52
+ XCTAssertEqual ( deps [ " foo2 " ] , . sourceControl( identity: . plain( " foo2 " ) , name: nil , location: " http://localhost/foo2 " , requirement: . range( " 1.1.1 " ..< " 2.0.0 " ) ) )
53
+ XCTAssertEqual ( deps [ " bar1 " ] , . sourceControl( identity: . plain( " bar1 " ) , name: " bar1 " , location: " http://localhost/bar1 " , requirement: . range( " 1.1.1 " ..< " 2.0.0 " ) ) )
54
+ XCTAssertEqual ( deps [ " bar2 " ] , . sourceControl( identity: . plain( " bar2 " ) , name: nil , location: " http://localhost/bar2 " , requirement: . range( " 1.1.1 " ..< " 2.0.0 " ) ) )
55
+ XCTAssertEqual ( deps [ " baz1 " ] , . sourceControl( identity: . plain( " baz1 " ) , name: " baz1 " , location: " http://localhost/baz1 " , requirement: . range( " 1.1.1 " ..< " 1.2.0 " ) ) )
56
+ XCTAssertEqual ( deps [ " baz2 " ] , . sourceControl( identity: . plain( " baz2 " ) , name: nil , location: " http://localhost/baz2 " , requirement: . range( " 1.1.1 " ..< " 1.2.0 " ) ) )
57
+ XCTAssertEqual ( deps [ " qux1 " ] , . sourceControl( identity: . plain( " qux1 " ) , name: " qux1 " , location: " http://localhost/qux1 " , requirement: . exact( " 1.1.1 " ) ) )
58
+ XCTAssertEqual ( deps [ " qux2 " ] , . sourceControl( identity: . plain( " qux2 " ) , name: nil , location: " http://localhost/qux2 " , requirement: . exact( " 1.1.1 " ) ) )
59
+ XCTAssertEqual ( deps [ " qux3 " ] , . sourceControl( identity: . plain( " qux3 " ) , name: nil , location: " http://localhost/qux3 " , requirement: . exact( " 1.1.1 " ) ) )
60
+ XCTAssertEqual ( deps [ " quux1 " ] , . sourceControl( identity: . plain( " quux1 " ) , name: " quux1 " , location: " http://localhost/quux1 " , requirement: . branch( " main " ) ) )
61
+ XCTAssertEqual ( deps [ " quux2 " ] , . sourceControl( identity: . plain( " quux2 " ) , name: nil , location: " http://localhost/quux2 " , requirement: . branch( " main " ) ) )
62
+ XCTAssertEqual ( deps [ " quux3 " ] , . sourceControl( identity: . plain( " quux3 " ) , name: nil , location: " http://localhost/quux3 " , requirement: . branch( " main " ) ) )
63
+ XCTAssertEqual ( deps [ " quuz1 " ] , . sourceControl( identity: . plain( " quuz1 " ) , name: " quuz1 " , location: " http://localhost/quuz1 " , requirement: . revision( " abcdefg " ) ) )
64
+ XCTAssertEqual ( deps [ " quuz2 " ] , . sourceControl( identity: . plain( " quuz2 " ) , name: nil , location: " http://localhost/quuz2 " , requirement: . revision( " abcdefg " ) ) )
65
+ XCTAssertEqual ( deps [ " quuz3 " ] , . sourceControl( identity: . plain( " quuz3 " ) , name: nil , location: " http://localhost/quuz3 " , requirement: . revision( " abcdefg " ) ) )
66
+ }
67
+ }
68
+
19
69
func testRegistryDependencies( ) throws {
20
70
let manifest = """
21
71
import PackageDescription
0 commit comments