Skip to content

Commit 3e8e13b

Browse files
committed
2 parents 20dfa49 + 405e15a commit 3e8e13b

File tree

8 files changed

+260
-83
lines changed

8 files changed

+260
-83
lines changed

README.md

Lines changed: 170 additions & 68 deletions
Large diffs are not rendered by default.

build.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ licenseReport {
4747

4848
// Define group and version based on root project or use defaults for standalone
4949
val projectGroup = "software.bevel"
50-
val projectVersion = "1.1.3"
50+
val projectVersion = "1.2.0"
5151

5252
group = projectGroup
5353
version = projectVersion
@@ -62,11 +62,11 @@ dependencies {
6262
if (rootProject.name == "code-to-knowledge-graph") {
6363
//api(project(":antlr"))
6464
//api(project(":regex"))
65-
api("$projectGroup:code-to-knowledge-graph-providers:1.1.3")
66-
api("$projectGroup:code-to-knowledge-graph-vscode:1.1.3")
67-
api("$projectGroup:file-system-domain:1.1.0")
68-
api("$projectGroup:graph-domain:1.1.0")
69-
api("$projectGroup:networking:1.1.0")
65+
api("$projectGroup:code-to-knowledge-graph-providers:1.2.0")
66+
api("$projectGroup:code-to-knowledge-graph-vscode:1.2.0")
67+
api("$projectGroup:file-system-domain:1.2.0")
68+
api("$projectGroup:graph-domain:1.2.0")
69+
api("$projectGroup:networking:1.2.0")
7070
} else {
7171
//api(project(":code-to-knowledge-graph:antlr"))
7272
//api(project(":code-to-knowledge-graph:regex"))

providers/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ licenseReport {
4747

4848
// Define group and version based on root project or use defaults for standalone
4949
val projectGroup = "software.bevel"
50-
val projectVersion = "1.1.3"
50+
val projectVersion = "1.2.0"
5151

5252
group = projectGroup
5353
version = projectVersion
@@ -61,8 +61,8 @@ dependencies {
6161
api("org.slf4j:slf4j-api:2.0.17")
6262
// Handle external module dependencies differently based on whether we're in standalone or multi-project mode
6363
if (rootProject.name == "code-to-knowledge-graph-providers") {
64-
api("$projectGroup:file-system-domain:1.1.0")
65-
api("$projectGroup:graph-domain:1.1.0")
64+
api("$projectGroup:file-system-domain:1.2.0")
65+
api("$projectGroup:graph-domain:1.2.0")
6666
} else {
6767
api(project(":file-system-domain"))
6868
api(project(":graph-domain"))
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<!-- Create a custom appender that will throw exceptions on error logs -->
4+
<appender name="THROWING_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
5+
<encoder>
6+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
7+
</encoder>
8+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
9+
<level>INFO</level>
10+
</filter>
11+
</appender>
12+
13+
<!-- Custom TurboFilter that throws exceptions for ERROR level logs -->
14+
<turboFilter class="ch.qos.logback.classic.turbo.TurboFilter">
15+
<name>ErrorToExceptionFilter</name>
16+
<class>software.bevel.code_to_knowledge_graph.vscode.ErrorToExceptionTurboFilter</class>
17+
</turboFilter>
18+
19+
<!-- Configure root logger -->
20+
<root level="INFO">
21+
<appender-ref ref="THROWING_CONSOLE" />
22+
</root>
23+
</configuration>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#Test version properties
2-
#Mon Jun 02 17:20:14 CEST 2025
2+
#Tue Jun 03 11:04:39 CEST 2025
33
version=1.0.0-TEST

vscode/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ licenseReport {
4747

4848
// Define group and version based on root project or use defaults for standalone
4949
val projectGroup = "software.bevel"
50-
val projectVersion = "1.1.3"
50+
val projectVersion = "1.2.0"
5151

5252
group = projectGroup
5353
version = projectVersion
@@ -60,8 +60,8 @@ dependencies {
6060
api("org.slf4j:slf4j-api:2.0.17")
6161
// Handle external module dependencies differently based on whether we're in standalone or multi-project mode
6262
if (rootProject.name == "code-to-knowledge-graph-vscode") {
63-
api("$projectGroup:file-system-domain:1.1.0")
64-
api("$projectGroup:graph-domain:1.1.0")
63+
api("$projectGroup:file-system-domain:1.2.0")
64+
api("$projectGroup:graph-domain:1.2.0")
6565
} else {
6666
api(project(":file-system-domain"))
6767
api(project(":graph-domain"))
@@ -71,7 +71,7 @@ dependencies {
7171
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2")
7272
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2")
7373

74-
testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.3")
74+
testImplementation("ch.qos.logback:logback-classic:1.4.14")
7575
testImplementation(kotlin("test"))
7676
testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.3")
7777
testImplementation("org.mockito:mockito-core:4.0.0")
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package software.bevel.code_to_knowledge_graph.vscode
2+
3+
import ch.qos.logback.classic.Level
4+
import ch.qos.logback.classic.Logger
5+
import ch.qos.logback.classic.turbo.TurboFilter
6+
import ch.qos.logback.core.spi.FilterReply
7+
import org.slf4j.Marker
8+
9+
/**
10+
* A custom Logback TurboFilter that throws exceptions when ERROR level logs are encountered during tests.
11+
* This helps ensure that error logging paths can be properly tested by causing test failures
12+
* when log.error() is called.
13+
*/
14+
class ErrorToExceptionTurboFilter : TurboFilter() {
15+
16+
override fun decide(
17+
marker: Marker?,
18+
logger: Logger?,
19+
level: Level?,
20+
format: String?,
21+
params: Array<out Any>?,
22+
t: Throwable?
23+
): FilterReply {
24+
// Only throw exceptions for ERROR level logs
25+
if (level == Level.ERROR) {
26+
val errorMessage = if (format != null && params != null) {
27+
formatMessage(format, params)
28+
} else {
29+
format ?: "Unknown error"
30+
}
31+
32+
val exception = t ?: RuntimeException("Error logged: $errorMessage")
33+
34+
// Throw a runtime exception with the log message and original cause
35+
throw RuntimeException("Error logged via SLF4J: $errorMessage", exception)
36+
}
37+
38+
// For all other log levels, continue normal processing
39+
return FilterReply.NEUTRAL
40+
}
41+
42+
/**
43+
* Simple formatter for log messages that contain parameters
44+
*/
45+
private fun formatMessage(format: String, params: Array<out Any>): String {
46+
var result = format
47+
params.forEach { param ->
48+
result = result.replaceFirst("{}", param.toString())
49+
}
50+
return result
51+
}
52+
}

vscode/src/test/resources/logback-test.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<!-- Custom TurboFilter that throws exceptions for ERROR level logs -->
1414
<turboFilter class="ch.qos.logback.classic.turbo.TurboFilter">
1515
<name>ErrorToExceptionFilter</name>
16-
<class>software.bevel.file_system_domain.logging.ErrorToExceptionTurboFilter</class>
16+
<class>software.bevel.code_to_knowledge_graph.vscode.ErrorToExceptionTurboFilter</class>
1717
</turboFilter>
1818

1919
<!-- Configure root logger -->

0 commit comments

Comments
 (0)