Skip to content

Commit 4fb1715

Browse files
committed
Make output format more consistent
1 parent e30b60a commit 4fb1715

8 files changed

+80
-26
lines changed

crates/plugins/java/src/java_plugin.rs

+66-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::{
44
error::JavaError, CompileResult, JvmWrapper, TestCase, TestCaseStatus, TestMethod, TestRun,
55
};
66
use j4rs::InvocationArg;
7+
use serde::{Deserialize, Serialize};
78
use std::{
89
collections::HashMap,
910
convert::TryFrom,
@@ -13,8 +14,8 @@ use std::{
1314
};
1415
use tmc_langs_framework::{
1516
nom::{bytes, character, combinator, error::VerboseError, sequence, IResult},
16-
ExerciseDesc, Language, LanguagePlugin, RunResult, RunStatus, StyleValidationResult, TestDesc,
17-
TestResult, TmcCommand,
17+
ExerciseDesc, Language, LanguagePlugin, RunResult, RunStatus, StyleValidationError,
18+
StyleValidationResult, StyleValidationStrategy, TestDesc, TestResult, TmcCommand,
1819
};
1920
use tmc_langs_util::{deserialize, file_util, parse_util};
2021
use walkdir::WalkDir;
@@ -254,12 +255,12 @@ pub(crate) trait JavaPlugin: LanguagePlugin {
254255
&[InvocationArg::from(file), InvocationArg::from(locale)],
255256
)?;
256257
let result = jvm.invoke(&checkstyle_runner, "run", InvocationArg::empty())?;
257-
let result: StyleValidationResult = jvm.to_rust(result)?;
258+
let result: JavaStyleValidationResult = jvm.to_rust(result)?;
258259
Ok(result)
259260
})?;
260261

261262
log::debug!("Validation result: {:?}", result);
262-
Ok(result)
263+
Ok(result.into())
263264
}
264265

265266
/// Parses @Points("1.1") point annotations.
@@ -291,6 +292,67 @@ pub(crate) trait JavaPlugin: LanguagePlugin {
291292
}
292293
}
293294

295+
/// Determines how style errors are handled.
296+
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
297+
#[serde(rename_all = "UPPERCASE")]
298+
pub enum JavaStyleValidationStrategy {
299+
Fail,
300+
Warn,
301+
Disabled,
302+
}
303+
304+
impl From<JavaStyleValidationStrategy> for StyleValidationStrategy {
305+
fn from(value: JavaStyleValidationStrategy) -> Self {
306+
match value {
307+
JavaStyleValidationStrategy::Fail => Self::Fail,
308+
JavaStyleValidationStrategy::Warn => Self::Warn,
309+
JavaStyleValidationStrategy::Disabled => Self::Disabled,
310+
}
311+
}
312+
}
313+
314+
/// A style validation error.
315+
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
316+
#[serde(rename_all = "camelCase")]
317+
pub struct JavaStyleValidationError {
318+
pub column: u32,
319+
pub line: u32,
320+
pub message: String,
321+
pub source_name: String,
322+
}
323+
324+
impl From<JavaStyleValidationError> for StyleValidationError {
325+
fn from(value: JavaStyleValidationError) -> Self {
326+
Self {
327+
column: value.column,
328+
line: value.line,
329+
message: value.message,
330+
source_name: value.source_name,
331+
}
332+
}
333+
}
334+
335+
/// The result of a style check.
336+
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq)]
337+
#[serde(rename_all = "camelCase")]
338+
pub struct JavaStyleValidationResult {
339+
pub strategy: JavaStyleValidationStrategy,
340+
pub validation_errors: Option<HashMap<PathBuf, Vec<JavaStyleValidationError>>>,
341+
}
342+
343+
impl From<JavaStyleValidationResult> for StyleValidationResult {
344+
fn from(value: JavaStyleValidationResult) -> Self {
345+
Self {
346+
strategy: value.strategy.into(),
347+
validation_errors: value.validation_errors.map(|hm| {
348+
hm.into_iter()
349+
.map(|(k, v)| (k, v.into_iter().map(Into::into).collect()))
350+
.collect()
351+
}),
352+
}
353+
}
354+
}
355+
294356
#[cfg(test)]
295357
#[allow(clippy::unwrap_used)]
296358
mod test {
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/csharp/failing-exercise
4+
input_file: sample_exercises/csharp/failing-exercise
55
---
66
output-kind: output-data
77
status: finished
@@ -11,5 +11,4 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: DISABLED
14-
validationErrors: ~
15-
14+
validation_errors: ~
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/csharp/non-compiling-exercise
4+
input_file: sample_exercises/csharp/non-compiling-exercise
55
---
66
output-kind: output-data
77
status: finished
@@ -11,5 +11,4 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: DISABLED
14-
validationErrors: ~
15-
14+
validation_errors: ~
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/csharp/partially-passing
4+
input_file: sample_exercises/csharp/partially-passing
55
---
66
output-kind: output-data
77
status: finished
@@ -11,5 +11,4 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: DISABLED
14-
validationErrors: ~
15-
14+
validation_errors: ~
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/csharp/passing-exercise
4+
input_file: sample_exercises/csharp/passing-exercise
55
---
66
output-kind: output-data
77
status: finished
@@ -11,5 +11,4 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: DISABLED
14-
validationErrors: ~
15-
14+
validation_errors: ~
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/java/ant-exercise
4+
input_file: sample_exercises/java/ant-exercise
55
---
66
output-kind: output-data
77
status: finished
@@ -11,10 +11,9 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: FAIL
14-
validationErrors:
14+
validation_errors:
1515
Arith.java:
1616
- column: 0
1717
line: 7
1818
message: Indentation incorrect. Expected 4, but was 8.
19-
sourceName: com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck
20-
19+
source_name: com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
source: crates/tmc-langs-cli/tests/integration.rs
33
expression: output
4-
input_file: crates/tmc-langs-cli/tests/sample_exercises/java/maven-exercise
4+
input_file: sample_exercises/java/maven-exercise
55
---
66
output-kind: output-data
77
status: finished
@@ -11,10 +11,9 @@ data:
1111
output-data-kind: validation
1212
output-data:
1313
strategy: FAIL
14-
validationErrors:
14+
validation_errors:
1515
fi/helsinki/cs/maventest/App.java:
1616
- column: 0
1717
line: 4
1818
message: Indentation incorrect. Expected 4, but was 8.
19-
sourceName: com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck
20-
19+
source_name: com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck

crates/tmc-langs-framework/src/domain.rs

-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@ pub enum StyleValidationStrategy {
141141
/// A style validation error.
142142
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, JsonSchema)]
143143
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
144-
#[serde(rename_all = "camelCase")]
145144
pub struct StyleValidationError {
146145
pub column: u32,
147146
pub line: u32,
@@ -152,7 +151,6 @@ pub struct StyleValidationError {
152151
/// The result of a style check.
153152
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, JsonSchema)]
154153
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
155-
#[serde(rename_all = "camelCase")]
156154
pub struct StyleValidationResult {
157155
pub strategy: StyleValidationStrategy,
158156
pub validation_errors: Option<HashMap<PathBuf, Vec<StyleValidationError>>>,

0 commit comments

Comments
 (0)