Skip to content

Commit

Permalink
Merge pull request #16 from mkroli/dotty
Browse files Browse the repository at this point in the history
Dotty
  • Loading branch information
mkroli committed Mar 19, 2021
2 parents 14483b5 + 9542dd7 commit f4ea160
Show file tree
Hide file tree
Showing 33 changed files with 118 additions and 56 deletions.
23 changes: 23 additions & 0 deletions .github/workflows/scala_3.0.yml
@@ -0,0 +1,23 @@
name: Scala 3.0

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:
name: "Scala 3.0"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: sbt -Dsbt.color=true -Dsbt.supershell=false ++3.0.0-RC1 clean test
Expand Up @@ -18,17 +18,17 @@ package com.github.mkroli.dns4s.akka
import java.net.InetSocketAddress
import java.util.concurrent.TimeUnit

import akka.actor.{Actor, ActorRef}
import akka.io.{IO, Udp}
import akka.actor._
import akka.io.Udp.CommandFailed
import akka.io.{IO, Udp}
import akka.pattern.ask
import akka.util.{ByteString, Timeout}
import com.github.mkroli.dns4s.{Message, MessageBuffer}
import com.github.mkroli.dns4s.dsl.{Query, Response}
import com.github.mkroli.dns4s.{Message, MessageBuffer}
import com.google.common.cache.CacheBuilder

import scala.collection.JavaConverters._
import scala.language.postfixOps
import scala.language.{implicitConversions, postfixOps}
import scala.util.Try

class DnsActor(port: Int, requester: ActorRef, handler: ActorRef)(implicit timeout: Timeout) extends Actor {
Expand Down
Expand Up @@ -35,7 +35,7 @@ object Dns extends ExtensionId[DnsExtension] with ExtensionIdProvider {

override def lookup() = Dns

case class Bind(handler: ActorRef, port: Int, implicit val timeout: Timeout = 5 seconds)
case class Bind(handler: ActorRef, port: Int)(implicit val timeout: Timeout = 5 seconds)

case object Bound

Expand Down
Expand Up @@ -24,8 +24,8 @@ class DnsExtensionActor extends Actor {
lazy val simple = context.actorOf(Props[DnsSimpleClientActor](), "simple")

override def receive = {
case Dns.Bind(handler, port, timeout) =>
implicit val _timeout = timeout
case b @ Dns.Bind(handler, port) =>
implicit val _timeout = b.timeout
val requester = sender()
context.actorOf(Props(new DnsActor(port, requester, handler)), s"dns-$port")
case p @ Dns.DnsPacket(Query(_), _) =>
Expand Down
Expand Up @@ -17,7 +17,7 @@ package com.github.mkroli.dns4s.akka

import java.net.{InetAddress, InetSocketAddress}

import akka.actor.{ActorRef, ActorSystem}
import akka.actor._
import akka.io.IO
import akka.testkit.{ImplicitSender, TestKitBase, TestProbe}
import akka.util.Timeout
Expand All @@ -27,13 +27,18 @@ import org.scalatest.BeforeAndAfterAll
import org.scalatest.funspec.AnyFunSpec

import scala.concurrent.duration.DurationInt
import scala.language.postfixOps
import scala.language.{implicitConversions, postfixOps}

class DnsExtensionSpec extends AnyFunSpec with TestKitBase with ImplicitSender with BeforeAndAfterAll {
implicit lazy val system = ActorSystem()
implicit lazy val timeout = Timeout(5 seconds)
trait DefaultActorSystem {
self: TestKitBase =>

override def afterAll = shutdown(system)
override implicit val system: ActorSystem = ActorSystem()
}

class DnsExtensionSpec extends AnyFunSpec with DefaultActorSystem with TestKitBase with ImplicitSender with BeforeAndAfterAll {
implicit val timeout: Timeout = Timeout(5 seconds)

override def afterAll() = shutdown(system)

describe("DnsExtension") {
describe("Binding/Unbinding") {
Expand Down
33 changes: 20 additions & 13 deletions build.sbt
Expand Up @@ -16,27 +16,32 @@

import ReleaseTransformations._

lazy val scalaVersions = "2.13.3" :: "2.12.12" :: "2.11.12" :: "2.10.7" :: Nil
lazy val scalaVersions = "2.13.3" :: "2.12.12" :: "2.11.12" :: "2.10.7" :: "3.0.0-RC1" :: Nil

lazy val guavaDependencies = Seq(
"com.google.guava" % "guava" % "[15.0,24.0)",
"com.google.code.findbugs" % "jsr305" % "[0.+,)" % "provided"
)

lazy val akkaDependencies = Seq(
"com.typesafe.akka" %% "akka-actor" % "[2.3.0,2.7.0)",
"com.typesafe.akka" %% "akka-testkit" % "[2.3.0,2.7.0)" % "test"
)
lazy val akkaDependencies = Def.setting {
Seq(
"com.typesafe.akka" %% "akka-actor" % "[2.3.0,2.7.0)",
"com.typesafe.akka" %% "akka-testkit" % "[2.3.0,2.7.0)" % "test"
).map(_.withDottyCompat(scalaVersion.value))
}

lazy val nettyDependencies = Seq(
"io.netty" % "netty-handler" % "[4.0.0,4.2.0)"
)

lazy val scalaTestDependencies = Seq(
"org.scalatest" %% "scalatest" % "3.2.0" % "test",
"org.scalatest" %% "scalatest-funspec" % "3.2.0" % "test",
"org.scalatestplus" %% "scalacheck-1-14" % "3.2.0.0" % "test",
"org.scalacheck" %% "scalacheck" % "1.14.1" % "test"
lazy val scalaTestDependencies = Def.setting(
Seq(
"org.scalatest" %% "scalatest" % "[3.2.2,3.2.6]" % "test",
"org.scalatest" %% "scalatest-funspec" % "[3.2.2,3.2.6]" % "test"
) :+ (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 10)) => "org.scalatestplus" %% "scalacheck-1-14" % "[3.2.2.0,3.2.6.0]" % "test"
case _ => "org.scalatestplus" %% "scalacheck-1-15" % "[3.2.2.0,3.2.6.0]" % "test"
})
)

def projectSettings(n: String, d: String) = Seq(
Expand All @@ -46,8 +51,10 @@ def projectSettings(n: String, d: String) = Seq(
scalaVersion := scalaVersions.head,
scalacOptions ++= Seq("-feature", "-unchecked", "-deprecation") ++ (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 10 | 11)) => Seq("-target:jvm-1.6")
case Some((3, 0)) => Seq("-Xtarget", "8")
case _ => Seq("-target:jvm-1.8")
}),
scalacOptions ++= { if (isDotty.value) Seq("-source:future-migration") else Nil },
mimaPreviousArtifacts := Set(organization.value %% name.value % "0.10"),
crossScalaVersions := scalaVersions,
autoAPIMappings := true,
Expand Down Expand Up @@ -82,15 +89,15 @@ def projectOsgiSettings(bundleName: String, packagesPrefix: String, packages: St
)

lazy val dns4sProjectSettings = Seq(
libraryDependencies ++= guavaDependencies ++ scalaTestDependencies
libraryDependencies ++= guavaDependencies ++ scalaTestDependencies.value
)

lazy val dns4sAkkaProjectSettings = Seq(
libraryDependencies ++= guavaDependencies ++ akkaDependencies ++ scalaTestDependencies
libraryDependencies ++= guavaDependencies ++ akkaDependencies.value ++ scalaTestDependencies.value
)

lazy val dns4sNettyProjectSettings = Seq(
libraryDependencies ++= nettyDependencies ++ scalaTestDependencies
libraryDependencies ++= nettyDependencies ++ scalaTestDependencies.value
)

lazy val projectReleaseSettings = Seq(
Expand Down
Expand Up @@ -17,7 +17,7 @@ package com.github.mkroli.dns4s

import java.nio.ByteBuffer

import scala.language.postfixOps
import scala.language.{implicitConversions, postfixOps}

trait MessageBufferEncoder {
def apply(buf: MessageBuffer): MessageBuffer
Expand Down
Expand Up @@ -21,7 +21,9 @@ import java.net.InetAddress
import com.github.mkroli.dns4s.section.resource.OPTResource
import com.github.mkroli.dns4s.section.resource.OPTResource.{ClientSubnetOPTOptionData, OPTOption, UnknownOPTOptionData}

private[dsl] abstract class OptionDataExtractor[T: Manifest] {
import scala.reflect.ClassTag

private[dsl] abstract class OptionDataExtractor[T: ClassTag] {
def unapply(o: OPTOption): Option[T] = o.data match {
case o: T => Some(o)
case _ => None
Expand Down
Expand Up @@ -15,30 +15,16 @@
*/
package com.github.mkroli.dns4s.dsl

import java.net.Inet4Address
import java.net.Inet6Address
import java.net.InetAddress
import java.net.{Inet4Address, Inet6Address, InetAddress}

import com.github.mkroli.dns4s.Message
import com.github.mkroli.dns4s.section.ResourceRecord
import com.github.mkroli.dns4s.section.resource.{
AAAAResource,
AResource,
CAAResource,
CNameResource,
HInfoResource,
MXResource,
NAPTRResource,
NSResource,
OPTResource,
PTRResource,
SOAResource,
TXTResource
}
import com.github.mkroli.dns4s.section.resource.CAAResource.{IODEFResource, IssueResource, IssueWildResource, CustomCAAResource}
import com.github.mkroli.dns4s.section.resource.CAAResource.{CustomCAAResource, IODEFResource, IssueResource, IssueWildResource}
import com.github.mkroli.dns4s.section.resource._
import com.google.common.net.InetAddresses

import scala.reflect.ClassTag

trait ResourceRecordModifier { self =>
def ~(rrm: ResourceRecordModifier) = new ResourceRecordModifier {
override def apply(rr: ResourceRecord): ResourceRecord = rrm(self(rr))
Expand Down Expand Up @@ -95,7 +81,7 @@ object RRTtl extends ResourceRecordField(_.`ttl`) {
}
}

private[dsl] abstract class ResourceRecordExtractor[T: Manifest] {
private[dsl] abstract class ResourceRecordExtractor[T: ClassTag] {
def unapply(rr: ResourceRecord): Option[T] = rr.rdata match {
case rr: T => Some(rr)
case _ => None
Expand Down
7 changes: 3 additions & 4 deletions core/src/test/scala/com/github/mkroli/dns4s/MessageSpec.scala
Expand Up @@ -15,12 +15,11 @@
*/
package com.github.mkroli.dns4s

import com.github.mkroli.dns4s.section.{HeaderSection, QuestionSection, ResourceRecord}
import com.github.mkroli.dns4s.section.resource.CNameResource
import org.scalatest.funspec.AnyFunSpec

import com.github.mkroli.dns4s.section.HeaderSection
import com.github.mkroli.dns4s.section.QuestionSection
import com.github.mkroli.dns4s.section.ResourceRecord
import com.github.mkroli.dns4s.section.resource.CNameResource
import scala.language.implicitConversions

class MessageSpec extends AnyFunSpec {
describe("Message") {
Expand Down
Expand Up @@ -18,6 +18,8 @@ package com.github.mkroli.dns4s.dsl
import com.github.mkroli.dns4s.section.HeaderSection
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class HeaderSpec extends AnyFunSpec {
describe("Header") {
it("should be possible to create a query") {
Expand Down
Expand Up @@ -18,6 +18,8 @@ package com.github.mkroli.dns4s.dsl
import com.github.mkroli.dns4s.section.ResourceRecord
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class QuestionSpec extends AnyFunSpec {
describe("QuestionSection") {
it("should be possible to create no questions") {
Expand Down
Expand Up @@ -23,6 +23,8 @@ import com.github.mkroli.dns4s.section.resource.OPTResource.{ClientSubnetOPTOpti
import com.github.mkroli.dns4s.section.resource._
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class ResourceRecordSpec extends AnyFunSpec {
describe("ResourceRecord") {
it("should be possible to create an answer") {
Expand Down
Expand Up @@ -18,6 +18,8 @@ package com.github.mkroli.dns4s.section
import com.github.mkroli.dns4s.{MessageBuffer, bytes, maxInt}
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class HeaderSpec extends AnyFunSpec {
lazy val defaultHeader = HeaderSection(0, false, 0, false, false, false, false, 0, 0, 0, 0, 0)

Expand Down
Expand Up @@ -20,6 +20,8 @@ import java.nio.BufferUnderflowException
import com.github.mkroli.dns4s.{MessageBuffer, bytes, maxInt}
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class QuestionSpec extends AnyFunSpec {
describe("QuestionSection") {
describe("validation") {
Expand Down
Expand Up @@ -17,10 +17,12 @@ package com.github.mkroli.dns4s.section

import java.net.{Inet4Address, InetAddress}

import com.github.mkroli.dns4s.{MessageBuffer, bytes, maxInt, maxLong}
import com.github.mkroli.dns4s.section.resource.{AResource, UnknownResource}
import com.github.mkroli.dns4s.{MessageBuffer, bytes, maxInt, maxLong}
import org.scalatest.funspec.AnyFunSpec

import scala.language.implicitConversions

class ResourceRecordSpec extends AnyFunSpec {
describe("ResourceRecord") {
describe("validation") {
Expand Down
Expand Up @@ -22,6 +22,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes, bytesGenerator}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class AAAAResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("AAAAResource") {
describe("encoding/decoding") {
Expand Down
Expand Up @@ -22,6 +22,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class AResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("AResource") {
describe("encoding/decoding") {
Expand Down
Expand Up @@ -21,6 +21,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class CAAResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("CustomCAAResource") {
describe("validation") {
Expand Down
Expand Up @@ -20,6 +20,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes, dnGen}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class CNameResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("CNameResource") {
describe("encoding/decoding") {
Expand Down
Expand Up @@ -20,6 +20,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes, csGen}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class HInfoResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("HInfoResource") {
describe("encoding/decoding") {
Expand Down
Expand Up @@ -20,6 +20,8 @@ import com.github.mkroli.dns4s.section.ResourceRecord
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class MXResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("MXResource") {
describe("validation") {
Expand Down
Expand Up @@ -20,6 +20,8 @@ import com.github.mkroli.dns4s.section.ResourceRecord
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class NAPTRResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("NAPTRResource") {
describe("validation") {
Expand Down
Expand Up @@ -20,6 +20,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes, dnGen}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class NSResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("NSResource") {
describe("encoding/decoding") {
Expand Down
Expand Up @@ -23,6 +23,8 @@ import com.github.mkroli.dns4s.{MessageBuffer, bytes, bytesGenerator}
import org.scalatest.funspec.AnyFunSpec
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks

import scala.language.implicitConversions

class OPTResourceSpec extends AnyFunSpec with ScalaCheckPropertyChecks {
describe("OPTResource") {
describe("encoding/decoding") {
Expand Down

0 comments on commit f4ea160

Please sign in to comment.