Skip to content

Commit

Permalink
Merge pull request #130 from amosproj/general/ci/init-lint-and-test-w…
Browse files Browse the repository at this point in the history
…orkflows

ci: init lint and test workflows
  • Loading branch information
a-miscellaneous authored Dec 7, 2023
2 parents 00ea6be + b27b0db commit d624a01
Show file tree
Hide file tree
Showing 10 changed files with 94 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
root = true

# Apply standard rules to all Kotlin files
[*.{kt,kts}]
ktlint_code_style = ktlint_official
ktlint_standard = enabled
indent_size = 4
indent_style = space

# Ignore code in Prototype directory
[Prototypes/**/*.kt]
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: lint
on:
push:
branches:
- main
pull_request:
jobs:
ktlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# from the ktlint wiki page https://pinterest.github.io/ktlint/1.0.1/install/cli/
- run: curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.0.1/ktlint && chmod a+x ktlint && sudo mv ktlint /usr/local/bin/
- run: ktlint
53 changes: 53 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: test
on:
push:
branches:
- main
pull_request:
jobs:
lib1:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./VideoGenerator/example
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: 'gradle'
cache-dependency-path: |
./VideoGenerator/example/*.gradle*
./VideoGenerator/example/**/gradle-wrapper.properties
- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Give exec permission for ./gradlew
run: chmod +x ./gradlew
- name: Assemble the apk
run: ./gradlew assembleDebug assembleAndroidTest
- name: Download test assets
run: ./gradlew downloadAndUnzipTestAssets
- name: Run Tests
run: ./gradlew test
lib2:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./DifferenceGenerator
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
cache: 'gradle'
cache-dependency-path: |
./DifferenceGenerator/*.gradle*
./DifferenceGenerator/**/gradle-wrapper.properties
- name: Download test assets
run: ./gradlew downloadAndUnzipTestAssets
- name: Run Tests
run: ./gradlew test
2 changes: 1 addition & 1 deletion DifferenceGenerator/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ dependencies {
}

tasks.test {
useJUnitPlatform()
useJUnitPlatform { excludeTags("benchmark") }
systemProperty("gapOpenPenalty", System.getProperty("gapOpenPenalty") ?: "-0.5")
systemProperty("gapExtensionPenalty", System.getProperty("gapExtensionPenalty") ?: "-0.5")
}
Expand Down
4 changes: 4 additions & 0 deletions DifferenceGenerator/src/main/kotlin/DifferenceGenerator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import algorithms.AlignmentElement
import mask.CompositeMask
import mask.Mask
import org.bytedeco.ffmpeg.global.avcodec.AV_CODEC_ID_FFV1
import org.bytedeco.ffmpeg.global.avutil
import org.bytedeco.javacv.FFmpegFrameRecorder
import org.bytedeco.javacv.Frame
import wrappers.MaskedImageGrabber
Expand Down Expand Up @@ -65,6 +66,9 @@ class DifferenceGenerator(
video1Grabber.mask = mask
video2Grabber.mask = mask

// turn off verbose ffmpeg output
avutil.av_log_set_level(avutil.AV_LOG_QUIET)

generateDifference()
}

Expand Down
2 changes: 2 additions & 0 deletions DifferenceGenerator/src/test/kotlin/ReadRuntimeTests.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import org.bytedeco.javacv.FFmpegFrameGrabber
import org.bytedeco.javacv.Frame
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import wrappers.Resettable2DFrameConverter
import java.awt.image.DataBufferByte
Expand All @@ -11,6 +12,7 @@ import kotlin.system.measureTimeMillis

// maybe an interface for the methods?

@Tag("benchmark")
internal class ReadRuntimeTests {
private val resourcesPathPrefix = "src/test/resources/"
private val video9Frames = resourcesPathPrefix + "9Screenshots.mov"
Expand Down
2 changes: 2 additions & 0 deletions DifferenceGenerator/src/test/kotlin/WriteRuntimeTests.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.bytedeco.javacv.Frame
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import wrappers.Resettable2DFrameConverter
import java.awt.Color
Expand All @@ -7,6 +8,7 @@ import kotlin.system.measureTimeMillis

// maybe an interface for the methods?

@Tag("benchmark")
internal class WriteRuntimeTests {
private val runAmount = 50
private val size = 6000
Expand Down
4 changes: 4 additions & 0 deletions VideoGenerator/library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ dependencies {
testImplementation(kotlin("test"))
}

tasks.test {
useJUnitPlatform { excludeTags("benchmark") }
}

kotlin {
jvmToolchain(11)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import org.bytedeco.ffmpeg.global.avcodec
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import java.io.File
import java.lang.Exception
Expand All @@ -10,6 +11,7 @@ import kotlin.math.log10
import kotlin.math.pow
import kotlin.system.measureTimeMillis

@Tag("benchmark")
class VideoGeneratorBenchmarkTest {
private lateinit var videoGenerator: VideoGeneratorImpl
private val videoPath = "src/resources/testOutput.mkv"
Expand Down
6 changes: 6 additions & 0 deletions VideoGenerator/library/src/main/kotlin/VideoGeneratorImpl.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.bytedeco.ffmpeg.global.avcodec
import org.bytedeco.ffmpeg.global.avutil
import org.bytedeco.javacv.FFmpegFrameRecorder
import org.bytedeco.javacv.Frame
import java.io.ByteArrayInputStream
Expand All @@ -18,6 +19,11 @@ class VideoGeneratorImpl(
var videoFormat: String = "matroska"
var codecOptions: Map<String, String> = mapOf("" to "")

init {
// turn off verbose ffmpeg output
avutil.av_log_set_level(avutil.AV_LOG_QUIET)
}

/**
* Loads a frame from the given byte array.
* Note, that this function is specifically using javax.ImageIO and is thus not suitable
Expand Down

0 comments on commit d624a01

Please sign in to comment.