# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Build and test Pekko with Scala 3

on:
  schedule:
    - cron: "0 0 * * *"
  pull_request:
  workflow_dispatch:

permissions: {}

concurrency:
  # Only run once for latest commit per ref and cancel other (previous) runs.
  group: ci-scala3-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Test
    runs-on: ubuntu-22.04
    if: github.repository == 'apache/pekko'
    strategy:
      fail-fast: true
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0
          fetch-tags: true

      - name: Setup Java 17
        uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: 17

      - name: Install sbt
        uses: sbt/setup-sbt@17575ea4e18dd928fe5968dbe32294b97923d65b # v1.1.13

      - name: Cache Coursier cache
        uses: coursier/cache-action@4e2615869d13561d626ed48655e1a39e5b192b3c # v6.4.7

      - name: Enable jvm-opts
        run: cp .jvmopts-ci .jvmopts

      - name: Compile and run tests on Scala 3
        env:
          DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
        # note that this is not running any multi-jvm tests (yet) because multi-in-test=false
        run: |
          sbt \
          -Dpekko.log.timestamps=true \
          -Dpekko.test.timefactor=2 \
          -Dpekko.actor.testkit.typed.timefactor=2 \
          -Dpekko.test.multi-in-test=false \
          -Dpekko.test.tags.exclude=gh-exclude,timing \
          -Dmultinode.XX:MetaspaceSize=128M \
          -Dmultinode.Xms256M \
          -Dmultinode.Xmx256M \
          -Dmultinode.XX:+AlwaysActAsServerClassMachine \
          "++ 3.x test"
