<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">To get a bit more concrete:</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">let package = Package(</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; name: "MyCoolPackage",</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; // etc</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; targets: [</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; &nbsp; Target(name: "MyCoolPackageTarget")</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp;],</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp;testTargets: [</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; &nbsp; Target(name: "MyCoolTestingTarget", dependencies: [.Dependency("one-of-my-test-dependencies")])</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp; ])</div></blockquote><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">&nbsp;&nbsp;</div> When someone else uses my package, MyCoolTestingTarget would not be built (although its sources would be present), but MyCoolPackageTarget would be -- if that makes sense. In this way, we'd get ad-hoc support for third-party testing frameworks and also improve the Package Manager to be able to be more useful as a build tool for a whole dev environment as opposed to just a build tool for creating and consuming packages.<div><br></div><div>The only drawback I can think of that falls out of this approach is that 3rd-party testing frameworks wouldn't support the `swift test` command-line invocation, but I'd personally rank that as a lower priority for me than just being able to get more granular control over what gets built in a local context vs what gets built when I'm a dependency of something else.</div><div><br></div><div>Hopefully that clears my idea up a bit more.<br><div><div><br></div><div><span style="font-family: helvetica, arial;">--&nbsp;</span><br><div><div id="bloop_sign_1458235494777009920" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">Brian Pratt<br></div></div> <br><p class="airmail_on">On March 17, 2016 at 10:05:23 AM, Brian Pratt (<a href="mailto:brian@pratt.io">brian@pratt.io</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div></div><div>




<title></title>



<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
Hey folks,</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
I think from my perspective SwiftPM could solve this problem by
simply allowing me to define and build targets that aren't going to
be included in the distributed package. Maybe a field like
`testTargets` or something that allows the author downstream to
link `testDependencies`?</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
SwiftPM is great as a package manager, but for a lot of my most
common development workflows, it falls short because of this
limitation -- I can't use it to build things that I don't mean to
distribute as part of the package.</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<div id="bloop_sign_1458226907414573056" class="bloop_sign">
<div style="font-family:helvetica,arial;font-size:13px">
--&nbsp;<br>
Brian Pratt<br></div>
</div>
<br>
<p class="airmail_on">On March 16, 2016 at 8:39:02 PM, Drew
Crawford via swift-build-dev (<a href="mailto:swift-build-dev@swift.org">swift-build-dev@swift.org</a>)
wrote:</p>
<blockquote type="cite" class="clean_bq">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div><span>Please take the lead on this.</span>
<div class=""><span><br class=""></span></div>
<div class=""><span>For background. &nbsp;We required a solution
around the time I was working on this originally, and given that
upstream wasn't ready (which is understandable) we decided to go
alone, and we're now committed to our solution. &nbsp;So from our
POV the problem has been solved.</span></div>
<div class=""><span><br class=""></span>
<div>
<blockquote type="cite" class="">
<div class=""><span>On Mar 16, 2016, at 8:12 PM, Max Howell
&lt;<a href="mailto:max.howell@apple.com" class="">max.howell@apple.com</a>&gt; wrote:</span></div>
<span><br class="Apple-interchange-newline"></span>
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span>It’s time to resurrect this proposal.</span>
<div class=""><span><br class=""></span></div>
<div class=""><span>By all means let’s talk a bit more here, but I
hope Drew will submit a proposal, or if he doesn’t have the time I
can write it up, co-authored and we’ll submit to
evolution.</span></div>
<div class=""><span><br class=""></span>
<div class="">
<blockquote type="cite" class="">
<div class=""><span>On Jan 12, 2016, at 5:02 PM, Max Howell
&lt;<a href="mailto:max.howell@apple.com" class="">max.howell@apple.com</a>&gt; wrote:</span></div>
<span><br class="Apple-interchange-newline"></span>
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span>To follow up here, I’d like to put this particular
proposal on the back burner for a couple weeks until we have the
initial testing infrastructure in place.</span>
<div class=""><span><br class=""></span></div>
<div class=""><span>We should keep this proposal in mind as we
build the testing infrastructure, as this protocol is in my mind at
least, the more important of the two.</span></div>
<div class=""><span><br class=""></span>
<div class="">
<blockquote type="cite" class="">
<div class=""><span>On Jan 6, 2016, at 11:58 AM, Max Howell via
swift-build-dev &lt;<a href="mailto:swift-build-dev@swift.org" class="">swift-build-dev@swift.org</a>&gt; wrote:</span></div>
<span><br class="Apple-interchange-newline"></span>
<div class="">
<div style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class="">
<div class=""><span><span class="" style="font-family: HelveticaNeue; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">
I envisaged command line arguments to `swift build`. What use cases
are we talking about here for making which tests run more
configurable?</span></span></div>
</blockquote>
</div>
<br class="">
<div class="">Well I think some kind of CLI support (like perhaps
passing the whole CLI to the testing framework?) makes sense.</div>
</div>
</div>
</blockquote>
<div class=""><br class=""></div>
<div class="">That’s our current thinking.</div>
<div class=""><br class=""></div>
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">Specifically one problem that motivates flexibility
here is the per-commit continuous integration. If my test suite is
15 minutes, and I'm going to run that in a few different
configurations &nbsp;(32 vs 64-bit, or say we support iOS someday
and I'm cross-compiling for N simulators or hardware devices, etc.)
I'm in for a bad time trying to do all that every commit.</div>
<div class=""><br class=""></div>
<div class="">There are a lot of "solutions" here–parallelization,
random sampling, running an abbreviated test suite ordinarily and
the full test suite every 10th commit–a test suite that tries to
maximize code coverage per unit time–there are all kinds of ways to
look at this problem that may make sense to somebody.</div>
<div class=""><br class=""></div>
<div class="">I'm simply pushing that decision out to individual
test frameworks to study. &nbsp;XCTest thinks you should have test
suites that are human curated. &nbsp;That's one way to skin the
cat. &nbsp;Let's give another test framework the flexibility to
think differently on this problem.</div>
</div>
</div>
</blockquote>
<div class=""><br class=""></div>
<div class="">Sounds super interesting. We should make sure the
protocol we design can do these things.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class=""><span class="" style="font-family: HelveticaNeue;">I’ll be working on the testing
infrastructure as soon as the proposal has been reviewed. As I do
so I’ll be making notes on this aspect.</span></blockquote>
<br class=""></div>
<div class="">Thanks for picking this up. &nbsp;Getting basic
testing support in place is really important, and IMO the current
proposal is really strong. &nbsp;I am focusing on some of these
other areas not as a distraction but because I think the basic
testing ideas are strong enough already that they don't need my
help :-)</div>
</div>
</div>
</blockquote>
</div>
<br class="" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">

<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=cbMbdH1LnH6O78Q-2BHw3jtU8ikibH470Fh9meAJKpwSqpJeTKnMxtBKMcwgO6eNd7RiBAIn9BZYPOs2eHgzutG3iFkECUBpSh2YJRbpFs5gYIFdbbC8ItMNA7gp-2BqGK4cWwBss4mY6Uv8sMAwKkzb1-2B1rswus8P2lPVMLer7xFPfSEQS6c96lmiGJyiZhqf-2F-2BJOnpV-2BhXXERxFHP94bzeH6uMWF-2B662RYrOYdPl-2FmMCE-3D" alt="" width="1" height="1" border="0" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;" class=""><span style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span>_______________________________________________</span><br style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">swift-build-dev mailing list</span><br style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="mailto:swift-build-dev@swift.org" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">swift-build-dev@swift.org</a><br style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" style="font-family: Helvetica; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-build-dev</a></div>
</blockquote>
</div>
<br class=""></div>
</div>
</div>
</blockquote>
</div>
<br class=""></div>
</div>
</div>
</blockquote>
</div>
<br class=""></div>
_______________________________________________<br>
swift-build-dev mailing list<br>
swift-build-dev@swift.org<br>
https://lists.swift.org/mailman/listinfo/swift-build-dev<br></div>
</div>
</blockquote>


</div></div></span></blockquote></div></div></div></div></body></html>