summaryrefslogtreecommitdiff
path: root/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalalib/test/src/dependency/updates/UpdatesFinderTests.scala')
-rw-r--r--scalalib/test/src/dependency/updates/UpdatesFinderTests.scala173
1 files changed, 173 insertions, 0 deletions
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"))
+ }
+ }
+ }
+}