From 9ba4cb69331386dfde9bac69dc2d5b22401face3 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 12 Dec 2018 16:56:02 -0800 Subject: collapse boilerplate folder structure within src/ folders (#505) * collapse boilerplate folder structure within src/ folders * . --- .../dependency/updates/UpdatesFinderTests.scala | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 scalalib/test/src/dependency/updates/UpdatesFinderTests.scala (limited to 'scalalib/test/src/dependency/updates/UpdatesFinderTests.scala') diff --git a/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala new file mode 100644 index 00000000..7b6e6e36 --- /dev/null +++ b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala @@ -0,0 +1,173 @@ +/* + * This file contains code originally published under the following license: + * + * Copyright (c) 2012, Roman Timushev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package mill.scalalib.dependency.updates + +import mill.scalalib.dependency.versions.{DependencyVersions, Version} +import utest._ + +object UpdatesFinderTests extends TestSuite { + + private def updates(current: String, + available: Seq[String], + allowPreRelease: Boolean) = { + val dependency = coursier.Dependency( + coursier.Module("com.example.organization", "example-artifact"), + current) + val currentVersion = Version(current) + val allVersions = available.map(Version(_)).toSet + + UpdatesFinder + .findUpdates(DependencyVersions(dependency, currentVersion, allVersions), + allowPreRelease) + .updates + .map(_.toString) + } + + val available = Seq( + "0.9.9-SNAPSHOT", + "0.9.9-M3", + "0.9.9", + "1.0.0-SNAPSHOT", + "1.0.0-M2", + "1.0.0-M3", + "1.0.0", + "1.0.1-SNAPSHOT", + "1.0.1-M3", + "1.0.1" + ) + + val tests = Tests { + + 'snapshotArtifacts - { + val u = updates("1.0.0-SNAPSHOT", available, allowPreRelease = false) + val pu = updates("1.0.0-SNAPSHOT", available, allowPreRelease = true) + + 'noOldStableVersions - { + assert(!u.contains("0.9.9")) + } + 'noOldMilestones - { + assert(!u.contains("0.9.9-M3")) + } + 'noOldSnapshots - { + assert(!u.contains("0.9.9-SNAPSHOT")) + } + 'noCurrentMilestones - { + assert(!u.contains("1.0.0-M3")) + } + 'noCurrentSnapshot - { + assert(!u.contains("1.0.0-SNAPSHOT")) + } + 'stableUpdates - { + assert(u.contains("1.0.0") && u.contains("1.0.1")) + } + 'milestoneUpdates - { + assert(u.contains("1.0.1-M3")) + } + 'snapshotUpdates - { + assert(u.contains("1.0.1-SNAPSHOT")) + } + 'noDifferencesRegardingOptionalPreReleases - { + assert(u == pu) + } + } + + 'milestoneArtifacts - { + val u = updates("1.0.0-M2", available, allowPreRelease = false) + val pu = updates("1.0.0-M2", available, allowPreRelease = true) + + 'noOldStableVersions - { + assert(!u.contains("0.9.9")) + } + 'noOldSnapshots - { + assert(!u.contains("0.9.9-SNAPSHOT")) + } + 'noOldMilestones - { + assert(!u.contains("0.9.9-M3")) + } + 'noCurrentSnapshot - { + assert(!u.contains("1.0.0-SNAPSHOT")) + } + 'currentMilestones - { + assert(u.contains("1.0.0-M3")) + } + 'stableUpdates - { + assert(u.contains("1.0.1")) + } + 'noSnapshotUpdates - { + assert(!u.contains("1.0.1-SNAPSHOT")) + } + 'milestoneUpdates - { + assert(u.contains("1.0.1-M3")) + } + 'noDifferencesRegardingOptionalPreReleases - { + assert(u == pu) + } + } + + 'stableArtifacts - { + val u = updates("1.0.0", available, allowPreRelease = false) + val pu = updates("1.0.0", available, allowPreRelease = true) + + 'noOldStableVersions - { + assert(!u.contains("0.9.9")) + assert(!pu.contains("0.9.9")) + } + 'noOldSnapshots - { + assert(!u.contains("0.9.9-SNAPSHOT")) + assert(!pu.contains("0.9.9-SNAPSHOT")) + } + 'noOldMilestones - { + assert(!u.contains("0.9.9-M3")) + assert(!pu.contains("0.9.9-M3")) + } + 'noCurrentSnapshot - { + assert(!u.contains("1.0.0-SNAPSHOT")) + assert(!pu.contains("1.0.0-SNAPSHOT")) + } + 'noCurrentMilestones - { + assert(!u.contains("1.0.0-M3")) + assert(!pu.contains("1.0.0-M3")) + } + 'stableUpdates - { + assert(u.contains("1.0.1")) + assert(pu.contains("1.0.1")) + } + 'noSnapshotUpdates - { + assert(!u.contains("1.0.1-SNAPSHOT")) + assert(!pu.contains("1.0.1-SNAPSHOT")) + } + 'noMilestoneUpdates - { + assert(!u.contains("1.0.1-M3")) + } + 'milestoneUpdatesWhenAllowingPreReleases - { + assert(pu.contains("1.0.1-M3")) + } + } + } +} -- cgit v1.2.3