Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: add code coverage #2163

Merged
merged 22 commits into from Aug 25, 2022
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions .scalafix.conf
@@ -0,0 +1,29 @@
rules = [
OrganizeImports,
RemoveUnused
]

OrganizeImports {
blankLines = Auto
coalesceToWildcardImportThreshold = null
expandRelative = false
groupExplicitlyImportedImplicitsSeparately = false
groupedImports = Explode
groups = [
"*"
"re:(javax?|scala)\\."
"re:(dsp|org.knora)\\."
]
importSelectorsOrder = Ascii
importsOrder = Ascii
preset = DEFAULT
removeUnused = true
}

RemoveUnused {
imports = false
privates = true
locals = true
patternvars = true
params = true
}
5 changes: 5 additions & 0 deletions Makefile
Expand Up @@ -334,6 +334,11 @@ info: ## print out all variables
check: # Run code formating check
@sbt "check"

.PHONY: fix
fix: # Run code formating fix
@sbt "fix"

subotic marked this conversation as resolved.
Show resolved Hide resolved

.PHONY: help
help: ## this help
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort
Expand Down
58 changes: 40 additions & 18 deletions build.sbt
Expand Up @@ -15,7 +15,13 @@ import scala.sys.process.Process
//////////////////////////////////////

// when true enables run cancellation w/o exiting sbt
cancelable in Global := true
// use Ctrl-c to stop current task but not quit SBT
Global / cancelable := true

Global / scalaVersion := Dependencies.ScalaVersion
Global / semanticdbEnabled := true
Global / semanticdbVersion := scalafixSemanticdb.revision
Global / scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.6.0"

lazy val aggregatedProjects: Seq[ProjectReference] = Seq(webapi, sipi)

Expand All @@ -38,18 +44,16 @@ lazy val root: Project = Project(id = "root", file("."))
ThisBuild / scmInfo := Some(
ScmInfo(url("https://github.com/dasch-swiss/dsp-api"), "scm:git:git@github.com:dasch-swiss/dsp-api.git")
),
Global / scalaVersion := Dependencies.scalaVersion,
Global / scalaVersion := Dependencies.ScalaVersion,
// use 'git describe' for deriving the version
git.useGitDescribe := true,
// override generated version string because docker hub rejects '+' in tags
ThisBuild / version ~= (_.replace('+', '-')),
// use Ctrl-c to stop current task but not quit SBT
Global / cancelable := true,
publish / skip := true
publish / skip := true
)

addCommandAlias("fmt", "all root/scalafmtSbt root/scalafmtAll")
addCommandAlias("check", "all root/scalafmtSbtCheck root/scalafmtCheckAll")
addCommandAlias("fmt", "; all root/scalafmtSbt root/scalafmtAll; root/scalafixAll")
addCommandAlias("check", "; all root/scalafmtSbtCheck root/scalafmtCheckAll; root/scalafixAll --check")

//////////////////////////////////////
// DSP's custom SIPI
Expand Down Expand Up @@ -138,7 +142,8 @@ lazy val webapi: Project = Project(id = "webapi", base = file("webapi"))
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
logLevel := Level.Info,
run / javaOptions := webapiJavaRunOptions,
Expand Down Expand Up @@ -195,7 +200,7 @@ lazy val webapi: Project = Project(id = "webapi", base = file("webapi"))
buildInfoKeys ++= Seq[BuildInfoKey](
name,
version,
"akkaHttp" -> Dependencies.akkaHttpVersion,
"akkaHttp" -> Dependencies.AkkaHttpVersion,
"sipi" -> Dependencies.sipiImage,
"fuseki" -> Dependencies.fusekiImage
),
Expand Down Expand Up @@ -251,7 +256,8 @@ lazy val roleInterface = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "roleInterface",
libraryDependencies ++= Dependencies.roleInterfaceLibraryDependencies,
Expand All @@ -267,7 +273,8 @@ lazy val roleHandler = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "roleHandler",
libraryDependencies ++= Dependencies.roleHandlerLibraryDependencies,
Expand All @@ -287,7 +294,8 @@ lazy val roleRepo = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "roleRepo",
libraryDependencies ++= Dependencies.roleRepoLibraryDependencies,
Expand All @@ -303,7 +311,8 @@ lazy val roleCore = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "roleCore",
libraryDependencies ++= Dependencies.roleCoreLibraryDependencies,
Expand All @@ -321,7 +330,8 @@ lazy val userInterface = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "userInterface",
libraryDependencies ++= Dependencies.userInterfaceLibraryDependencies,
Expand All @@ -337,7 +347,8 @@ lazy val userHandler = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "userHandler",
libraryDependencies ++= Dependencies.userHandlerLibraryDependencies,
Expand All @@ -357,7 +368,8 @@ lazy val userRepo = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "userRepo",
libraryDependencies ++= Dependencies.userRepoLibraryDependencies,
Expand All @@ -373,7 +385,8 @@ lazy val userCore = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "userCore",
libraryDependencies ++= Dependencies.userCoreLibraryDependencies,
Expand All @@ -391,7 +404,8 @@ lazy val schemaCore = project
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations"
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "schemaCore",
libraryDependencies ++= Dependencies.schemaCoreLibraryDependencies,
Expand All @@ -404,6 +418,14 @@ lazy val schemaCore = project
lazy val shared = project
.in(file("dsp-shared"))
.settings(
scalacOptions ++= Seq(
"-feature",
"-unchecked",
"-deprecation",
"-Yresolve-term-conflict:package",
"-Ymacro-annotations",
"-Ywarn-unused"
),
name := "shared",
libraryDependencies ++= Dependencies.sharedLibraryDependencies,
testFrameworks := Seq(new TestFramework("zio.test.sbt.ZTestFramework"))
Expand Down
1 change: 1 addition & 0 deletions dsp-shared/src/main/scala/dsp/valueobjects/Group.scala
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation

import dsp.errors.BadRequestException

object Group {
Expand Down
1 change: 0 additions & 1 deletion dsp-shared/src/main/scala/dsp/valueobjects/Id.scala
Expand Up @@ -5,7 +5,6 @@

package dsp.valueobjects

import dsp.errors.BadRequestException
import zio.prelude.Validation

import java.util.UUID
Expand Down
3 changes: 2 additions & 1 deletion dsp-shared/src/main/scala/dsp/valueobjects/Iri.scala
Expand Up @@ -5,10 +5,11 @@

package dsp.valueobjects

import dsp.errors.BadRequestException
import org.apache.commons.validator.routines.UrlValidator
import zio.prelude.Validation

import dsp.errors.BadRequestException

sealed trait Iri
object Iri {

Expand Down
5 changes: 3 additions & 2 deletions dsp-shared/src/main/scala/dsp/valueobjects/LangString.scala
@@ -1,8 +1,9 @@
package dsp.valueobjects

import dsp.errors.ValidationException
import zio.prelude.Validation
import zio._
import zio.prelude.Validation

import dsp.errors.ValidationException

/**
* LangString value object
Expand Down
Expand Up @@ -5,9 +5,10 @@

package dsp.valueobjects

import dsp.errors.ValidationException
import zio.prelude.Validation

import dsp.errors.ValidationException

/**
* LanguageCode value object.
*/
Expand Down
1 change: 1 addition & 0 deletions dsp-shared/src/main/scala/dsp/valueobjects/List.scala
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation

import dsp.errors.BadRequestException

object List {
Expand Down
1 change: 1 addition & 0 deletions dsp-shared/src/main/scala/dsp/valueobjects/Project.scala
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation

import dsp.errors.BadRequestException

object Project {
Expand Down
3 changes: 2 additions & 1 deletion dsp-shared/src/main/scala/dsp/valueobjects/Role.scala
Expand Up @@ -5,9 +5,10 @@

package dsp.valueobjects

import zio.prelude.Validation

import dsp.errors.BadRequestException
import dsp.valueobjects.LanguageCode
import zio.prelude.Validation

object Role {

Expand Down
10 changes: 5 additions & 5 deletions dsp-shared/src/main/scala/dsp/valueobjects/Schema.scala
Expand Up @@ -6,15 +6,15 @@
package dsp.valueobjects

import com.google.gwt.safehtml.shared.UriUtils.encodeAllowEscapes
import dsp.constants.SalsahGui
import dsp.errors.ValidationException
import dsp.valueobjects.{List => ListGuiElement}
import zio.prelude.ZValidation.Failure
import zio.prelude.ZValidation.Success
import zio.prelude._

import scala.collection.immutable.List

import dsp.constants.SalsahGui
import dsp.errors.ValidationException

object Schema {

/**
Expand Down Expand Up @@ -122,8 +122,8 @@ object Schema {

// if there were errors in creating gui attributes or gui element, all of the errors are returned
validatedGuiAttributesAndGuiElement match {
case Failure(log, errors) => Validation.failNonEmptyChunk(errors)
case Success(log, value) => GuiObject.make(value._1.toSet, value._2)
case Failure(_, errors) => Validation.failNonEmptyChunk(errors)
case Success(_, value) => GuiObject.make(value._1.toSet, value._2)
}

}
Expand Down
6 changes: 3 additions & 3 deletions dsp-shared/src/main/scala/dsp/valueobjects/User.scala
Expand Up @@ -5,8 +5,6 @@

package dsp.valueobjects

import dsp.errors.BadRequestException
import dsp.errors.ValidationException
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder
import zio._
Expand All @@ -15,9 +13,11 @@ import zio.prelude.Subtype
import zio.prelude.Validation

import java.security.SecureRandom
import scala.language.experimental.macros
import scala.util.matching.Regex

import dsp.errors.BadRequestException
import dsp.errors.ValidationException

object User {

// TODO-mpro: password, givenname, familyname are missing enhanced validation
Expand Down
4 changes: 2 additions & 2 deletions dsp-shared/src/main/scala/dsp/valueobjects/V2.scala
Expand Up @@ -6,15 +6,15 @@
package dsp.valueobjects

import com.google.gwt.safehtml.shared.UriUtils.encodeAllowEscapes
import dsp.errors.BadRequestException
import org.apache.commons.lang3.StringUtils
import org.apache.commons.validator.routines.UrlValidator

import java.nio.ByteBuffer
import java.util.Base64
import java.util.UUID
import scala.util.matching.Regex

import dsp.errors.BadRequestException

// TODO-mpro: don't forget to remove all occurances and additional "helper"
// implementations in webapi project which needed to be added temporary in order
// to avoid circular dependencies after moving value objects to separate project.
Expand Down
Expand Up @@ -5,10 +5,11 @@

package dsp.valueobjects

import dsp.valueobjects.Group._
import zio.prelude.Validation
import zio.test._

import dsp.errors.BadRequestException
import dsp.valueobjects.Group._

/**
* This spec is used to test the [[Group]] value objects creation.
Expand Down
5 changes: 3 additions & 2 deletions dsp-shared/src/test/scala/dsp/valueobjects/IriSpec.scala
Expand Up @@ -5,10 +5,11 @@

package dsp.valueobjects

import dsp.valueobjects.Iri._
import zio.prelude.Validation
import zio.test._

import dsp.errors.BadRequestException
import dsp.valueobjects.Iri._

/**
* This spec is used to test the [[Iri]] value objects creation.
Expand All @@ -26,7 +27,7 @@ object IriSpec extends ZIOSpecDefault {
val validUserIri = "http://rdfh.ch/users/jDEEitJESRi3pDaDjjQ1WQ"
val userIriWithUUIDVersion3 = "http://rdfh.ch/users/cCmdcpn2MO211YYOplR1hQ"

def spec = (groupIriTest + listIriTest + projectIriTest)
def spec = (groupIriTest + listIriTest + projectIriTest + RoleIriTest + UserIriTest)

private val groupIriTest = suite("IriSpec - GroupIri")(
test("pass an empty value and return an error") {
Expand Down