Excellent. I've added your name to the authors list on the gist. That is the version I'll be submitting to evolution soon.
~Robert Widmann 2017/01/25 0:58、thislooksfun <thislooks...@repbot.org> のメッセージ: > No problem, it's been inactive for a couple weeks since I've been really > busy. And yeah, yours is more thorough. I didn't even consider adding a > `testTargets` section. That alone is worth merging. > > -thislooksfun (tlf) > >> On Jan 24, 2017, at 11:55 PM, Robert Widmann <devteam.cod...@gmail.com> >> wrote: >> >> Oh, I'm sorry. I didn't know there was existing work in this space. >> Considering this proposal looks like it expands on your earlier work, would >> you like to sign on to this and merge the two efforts? >> >> ~Robert Widmann >> >> 2017/01/25 0:47、thislooksfun <thislooks...@repbot.org> のメッセージ: >> >>> As the author of the Add support for test-only dependencies thread, and the >>> accompanying draft, this gets a big +1 from me. >>> >>> -thislooksfun (tlf) >>> >>>> On Jan 24, 2017, at 4:32 PM, Robert Widmann via swift-evolution >>>> <swift-evolution@swift.org> wrote: >>>> >>>> Hello Swift Community, >>>> >>>> Harlan Haskins and I have been working on libraries to make interacting >>>> with LLVM and Clang’s APIs more elegant with native Swift interfaces. >>>> While writing up the packages we realized the package manager wouldn’t >>>> allow us to specify testing targets and test-only dependencies. To >>>> rectify that, I have attached a draft proposal for adding test-only >>>> targets and dependency fields to the Swift Package manager. This proposal >>>> can also be read in gist form. >>>> >>>> Cheers, >>>> >>>> ~Robert Widmann >>>> >>>> Test-Only Package Dependencies and Targets >>>> Proposal: SE-NNNN >>>> Authors: Harlan Haskins, Robert Widmann >>>> Review Manager: TBD >>>> Status: Awaiting review >>>> Introduction >>>> >>>> This proposal reinstates Swift package manager’s ability to fetch >>>> dependencies and build targets scoped exclusively to the testing module(s) >>>> of a given package. >>>> >>>> Swift-evolution thread: Discussion thread topic for that proposal >>>> >>>> Motivation >>>> >>>> Soon after SE-0019 identified the need for richer test-only dependencies >>>> and targets, a decision was made to remove the package manager’s fledgling >>>> ability to treat certain dependencies as test-only. This has led to a >>>> myriad of clever-but-needlessly-complex workarounds ([1], [2], [3]) on the >>>> part of 3rd parties to recover the feature themselves. In addition, the >>>> Swift community has come up with a number of their own frameworks to >>>> augment functionality in XCTest but depending on these external testing >>>> frameworks is brittle and difficult to get right. >>>> >>>> Proposed solution >>>> >>>> We propose the re-introduction of the testDependencies parameter in >>>> Package Manifests to support external test-only dependencies. To support >>>> local test-only targets we also propose the introduction of the >>>> testTargets parameter and an extension of the existing swift test command >>>> to support individual invocation of these targets. >>>> >>>> Detailed design >>>> >>>> The behavior of the new testDependencies parameter mirrors that of the >>>> existing dependencies parameter with one important difference: fetched >>>> dependencies are only built to support package-defined test targets as >>>> part of an invocation of swift test. >>>> >>>> import PackageDescription >>>> >>>> let package = Package( >>>> name: "Foo", >>>> targets: [ >>>> Target(name: "Foo") >>>> ], >>>> dependencies: [ >>>> .Package(url: "https://github.com/org/ana.git", versions: >>>> Version(1,0,0)...Version(1,9,9)), >>>> ], >>>> testDependencies: [ >>>> .Package(url: "https://github.com/org/anism.git", versions: >>>> Version(1,0,0)...Version(1,9,9)), >>>> ] >>>> ) >>>> Similarly, the behavior of the testTargets field mirrors that of the >>>> existing targets field but defines a set of targets that are only built >>>> during an invocation of swift test. Importantly, a target defined in >>>> testTargets may reference a target defined in targets but not vice-versa. >>>> Should that behavior be needed, the test target should be promoted to a >>>> “full” target. >>>> >>>> import PackageDescription >>>> >>>> let package = Package( >>>> name: "SwiftPM", >>>> targets: [ >>>> Target( >>>> name: "PackageDescription", >>>> dependencies: []), >>>> >>>> // MARK: Support libraries >>>> >>>> Target( >>>> /** Cross-platform access to bare `libc` functionality. */ >>>> name: "libc", >>>> dependencies: []), >>>> Target( >>>> /** “Swifty” POSIX functions from libc */ >>>> name: "POSIX", >>>> dependencies: ["libc"]), >>>> Target( >>>> /** Basic support library */ >>>> name: "Basic", >>>> dependencies: ["libc", "POSIX"]), >>>> >>>> /* Omitted for Brevity */ >>>> ], >>>> testTargets: [ >>>> Target( >>>> name: "BasicPerformanceTests", >>>> dependencies: ["Basic"]), >>>> /* Omitted for Brevity */ >>>> ] >>>> ) >>>> Finally, with well-defined test targets in hand, we propose swift test be >>>> amended to support individual test execution. >>>> >>>> We propose the following syntax to execute all tests of all known test >>>> targets. >>>> >>>> $ swift test >>>> To run a set of specific test cases, reference the module-defining test >>>> target and the specific name of a subclass of XCTestCase: >>>> >>>> $ swift test TestModule.TestCase >>>> To run an individual test case, reference the module-defining test target, >>>> the name of the test case subclass, and the name of the test: >>>> >>>> $ swift test TestModule.TestCase.exampleTest >>>> Impact on Existing Code >>>> >>>> As this change is purely additive there will be no impact on existing code >>>> and no impact on existing packages. >>>> >>>> Alternatives considered >>>> >>>> Other names for the parameters to be added to the package manifest are >>>> possible. >>>> >>>> The new support for executing specific tests could be exposed behind a >>>> flag. >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> swift-evolution@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution