plugins { id("lms.spring-boot") } /** PIT запускается отдельной задачей: Gradle-плагин 1.15 несовместим с Gradle 9.6. */ val pitest by configurations.creating dependencies { add("pitest", libs.pitestCommandLine) } tasks.register("pitestCourseAccess") { group = "verification" description = "Mutation testing CourseAccessService (P0 access matrix)" dependsOn(tasks.testClasses) classpath = pitest + sourceSets.getByName("test").runtimeClasspath mainClass.set("org.pitest.mutationtest.commandline.MutationCoverageReport") val reportDir = layout.buildDirectory .dir("reports/pitest-course-access") .get() .asFile .absolutePath val sourceDirs = sourceSets.main .get() .kotlin.srcDirs .joinToString(",") { it.absolutePath } val testClasspath = sourceSets.getByName("test").runtimeClasspath.asPath args( "--reportDir", reportDir, "--targetClasses", "ru.ysu.lms.academic.course.CourseAccessService", "--targetTests", "ru.ysu.lms.academic.course.CourseAccessServiceMutationTest", "--sourceDirs", sourceDirs, "--classPath", testClasspath, "--mutators", "STRONGER", "--threads", "1", "--verbose", "--outputFormats", "XML,HTML", "--timestampedReports", "false", "--timeoutConst", "15000", "--failWhenNoMutations", "true", ) } dependencies { implementation(platform(libs.springBootBom)) implementation(libs.springBootStarterWeb) implementation(libs.springBootStarterValidation) implementation(libs.springBootStarterActuator) implementation(libs.springBootStarterDataJpa) implementation(libs.springBootStarterSecurity) implementation(libs.springBootStarterOauth2ResourceServer) implementation(libs.springBootStarterFlyway) implementation(libs.flywayPostgresql) runtimeOnly(libs.postgresql) implementation(libs.jacksonYaml) implementation(libs.jacksonModuleKotlin) implementation(libs.jackson3ModuleKotlin) implementation(libs.springdocStarterWebmvcUi) implementation(project(":libs:common-http")) implementation(project(":libs:markdown")) implementation(project(":libs:security-jwt")) testImplementation(project(":libs:test-support")) testImplementation(libs.springSecurityTest) // PIT 1.15/1.20 JUnit5-плагин несовместим с JUnit Platform 6 (Spring Boot 4): // mutation harness запускается через встроенный JUnit 4 plugin. testImplementation("junit:junit:4.13.2") } springBoot { mainClass.set("ru.ysu.lms.academic.AcademicServiceApplicationKt") }