diff --git a/CHANGELOG.md b/CHANGELOG.md index 1962010..79282c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [v1.0.7] + +### Added +- Parsed args validation method. If an argument is missing its value, it throws an exception. +- Added unit test when args list is empty + ## [v1.0.6] ### Changed @@ -37,4 +43,5 @@ All notable changes to this project will be documented in this file. [v1.0.3]: https://github.com/andersonkmi/spark-utils/compare/v1.0.2...v1.0.3 [v1.0.4]: https://github.com/andersonkmi/spark-utils/compare/v1.0.3...v1.0.4 [v1.0.5]: https://github.com/andersonkmi/spark-utils/compare/v1.0.4...v1.0.5 -[v1.0.6]: https://github.com/andersonkmi/spark-utils/compare/v1.0.5...v1.0.6 \ No newline at end of file +[v1.0.6]: https://github.com/andersonkmi/spark-utils/compare/v1.0.5...v1.0.6 +[v1.0.7]: https://github.com/andersonkmi/spark-utils/compare/v1.0.6...v1.0.7 \ No newline at end of file diff --git a/build.sbt b/build.sbt index eb2d954..e31599c 100644 --- a/build.sbt +++ b/build.sbt @@ -4,7 +4,7 @@ organization := "org.codecraftlabs.spark" name := "spark-utils" -val appVersion = "1.0.6" +val appVersion = "1.0.7" val appName = "spark-utils" diff --git a/src/main/scala/org/codecraftlabs/spark/utils/ArgsUtils.scala b/src/main/scala/org/codecraftlabs/spark/utils/ArgsUtils.scala index 159887f..6570599 100644 --- a/src/main/scala/org/codecraftlabs/spark/utils/ArgsUtils.scala +++ b/src/main/scala/org/codecraftlabs/spark/utils/ArgsUtils.scala @@ -5,6 +5,7 @@ import scala.collection.mutable object ArgsUtils { private val ArgsKeyIndicator: String = "--" + @throws(classOf[Exceptions]) def parseArgs(args: Array[String]): Map[String, String] = { val result = mutable.Map[String, String]() @@ -21,7 +22,13 @@ object ArgsUtils { result(currentKey) = currentItem } } + validateParsedArgs(result.toMap) result.toMap } } + + @throws(classOf[Exceptions]) + private def validateParsedArgs(args: Map[String, String]): Unit = { + if(args.exists(_._2.isEmpty)) throw Exceptions("Missing arguments") + } } \ No newline at end of file diff --git a/src/main/scala/org/codecraftlabs/spark/utils/Exceptions.scala b/src/main/scala/org/codecraftlabs/spark/utils/Exceptions.scala new file mode 100644 index 0000000..f5e4d48 --- /dev/null +++ b/src/main/scala/org/codecraftlabs/spark/utils/Exceptions.scala @@ -0,0 +1,3 @@ +package org.codecraftlabs.spark.utils + +final case class Exceptions(private val message: String = "", private val cause: Throwable = None.orNull) extends Exception(message, cause) \ No newline at end of file diff --git a/src/test/scala/org/codecraftlabs/spark/utils/ArgsUtilSpec.scala b/src/test/scala/org/codecraftlabs/spark/utils/ArgsUtilSpec.scala index 4956964..ad77342 100644 --- a/src/test/scala/org/codecraftlabs/spark/utils/ArgsUtilSpec.scala +++ b/src/test/scala/org/codecraftlabs/spark/utils/ArgsUtilSpec.scala @@ -14,13 +14,16 @@ class ArgsUtilSpec extends FlatSpec with Matchers with BeforeAndAfterAll { result.size shouldEqual 0 } - "Single args" should "return 1 empty arg" in { - val args = Array("--test") + "Empty args" should "be empty" in { + val args = Array.empty[String] val result = ArgsUtils.parseArgs(args) result should not be null - result.size shouldEqual 1 - result.head._1 shouldEqual "--test" - result.head._2 shouldEqual "" + result.size shouldEqual 0 + } + + "Single args" should "return 1 empty arg" in { + val args = Array("--test") + an [Exceptions] should be thrownBy ArgsUtils.parseArgs(args) } "Single arguments" should "return 1 valid arg" in {