From 6e40def8f3681b131870432c478e3a261b85b83a Mon Sep 17 00:00:00 2001 From: Jarmo Isotalo Date: Fri, 6 Nov 2015 23:13:58 +0200 Subject: [PATCH] Revert "Merge pull request #34 from DarthKipsu/lang-syntax" This reverts commit fdad46d153d85140264e9ada94d923825894ea4b, reversing changes made to cf7c78cbf45a5800e624001c89b8a969e78b8221. --- .../cs/tmc/langs/rust/CargoPlugin.java | 38 +----- .../cs/tmc/langs/rust/RustPointsParser.java | 64 ---------- .../cs/tmc/langs/rust/util/Constants.java | 4 +- .../cs/tmc/langs/rust/CargoPluginTest.java | 49 -------- .../tmc/langs/rust/RustPointsParserTest.java | 119 ------------------ .../test/resources/multiplePoints/Cargo.toml | 7 -- .../test/resources/multiplePoints/src/lib.rs | 5 - .../resources/multiplePoints/tests/mod.rs | 16 --- .../resources/multiplePointsSuite/Cargo.toml | 7 -- .../resources/multiplePointsSuite/src/lib.rs | 5 - .../multiplePointsSuite/tests/mod.rs | 19 --- .../src/test/resources/points/Cargo.toml | 7 -- .../src/test/resources/points/src/lib.rs | 5 - .../src/test/resources/points/tests/mod.rs | 12 -- 14 files changed, 6 insertions(+), 351 deletions(-) delete mode 100644 tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParser.java delete mode 100644 tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParserTest.java delete mode 100755 tmc-langs-rust/src/test/resources/multiplePoints/Cargo.toml delete mode 100644 tmc-langs-rust/src/test/resources/multiplePoints/src/lib.rs delete mode 100755 tmc-langs-rust/src/test/resources/multiplePoints/tests/mod.rs delete mode 100755 tmc-langs-rust/src/test/resources/multiplePointsSuite/Cargo.toml delete mode 100644 tmc-langs-rust/src/test/resources/multiplePointsSuite/src/lib.rs delete mode 100755 tmc-langs-rust/src/test/resources/multiplePointsSuite/tests/mod.rs delete mode 100755 tmc-langs-rust/src/test/resources/points/Cargo.toml delete mode 100644 tmc-langs-rust/src/test/resources/points/src/lib.rs delete mode 100755 tmc-langs-rust/src/test/resources/points/tests/mod.rs diff --git a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/CargoPlugin.java b/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/CargoPlugin.java index 061bcf83c..a1165ca6e 100644 --- a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/CargoPlugin.java +++ b/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/CargoPlugin.java @@ -23,12 +23,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; -import java.util.List; public class CargoPlugin extends AbstractLanguagePlugin { @@ -63,7 +61,7 @@ protected StudentFilePolicy getStudentFilePolicy(Path projectPath) { public ValidationResult checkCodeStyle(Path path) { if (run(new String[]{"cargo", "clean"}, path).isPresent()) { String[] command = {"cargo", "rustc", "--", "--forbid", "warnings"}; - log.info("Building for lints with command {}", Arrays.deepToString(command)); + log.info("Building for lints with command {0}", Arrays.deepToString(command)); Optional result = run(command, path); if (result.isPresent()) { return parseLints(result.get()); @@ -83,25 +81,7 @@ public String getPluginName() { @Override public Optional scanExercise(Path path, String exerciseName) { - if (!isExerciseTypeCorrect(path)) { - log.error("Failed to scan exercise due to missing Cargo.toml."); - return Optional.absent(); - } - - try { - runTests(path); - } catch (Exception e) { - log.error("Failed to run tests: {}", e); - return Optional.absent(); - } - try { - Path pointsFile = path.resolve(Constants.POINTS); - List lines = Files.readAllLines(pointsFile, StandardCharsets.UTF_8); - return Optional.of(parseExercisePoints(lines, exerciseName)); - } catch (IOException e) { - log.error("Failed to parse test points: {}", e); - return Optional.absent(); - } + throw new UnsupportedOperationException("Not supported yet."); } @Override @@ -116,7 +96,7 @@ public RunResult runTests(Path path) { private Optional build(Path path) { String[] command = {"cargo", "test", "--no-run"}; - log.info("Building project with command {}", Arrays.deepToString(command)); + log.info("Building project with command {0}", Arrays.deepToString(command)); Optional result = run(command, path); if (result.isPresent()) { if (result.get().statusCode == 0) { @@ -129,7 +109,7 @@ private Optional build(Path path) { private RunResult runBuiltTests(Path dir) { String[] command = {"cargo", "test"}; - log.info("Running tests with command {}", Arrays.deepToString(command)); + log.info("Running tests with command {0}", Arrays.deepToString(command)); Optional result = run(command, dir); if (result.isPresent()) { return parseResult(result.get(), dir); @@ -142,7 +122,7 @@ private Optional run(String[] command, Path dir) { try { return Optional.of(runner.call()); } catch (Exception e) { - log.error("Running command {} failed {}", Arrays.deepToString(command), e); + log.error("Running command {0} failed {1}", Arrays.deepToString(command), e); return Optional.absent(); } } @@ -166,12 +146,4 @@ private ValidationResult parseLints(ProcessResult processResult) { return new LinterResultParser().parse(processResult); } - private ExerciseDesc parseExercisePoints(List lines, String exerciseName) { - Optional result = new RustPointsParser().parse(lines, exerciseName); - if (result.isPresent()) { - return result.get(); - } - log.error("Parsing points file failed."); - return null; - } } diff --git a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParser.java b/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParser.java deleted file mode 100644 index 8a03d495e..000000000 --- a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParser.java +++ /dev/null @@ -1,64 +0,0 @@ -package fi.helsinki.cs.tmc.langs.rust; - -import fi.helsinki.cs.tmc.langs.domain.ExerciseDesc; -import fi.helsinki.cs.tmc.langs.domain.TestDesc; - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -public class RustPointsParser { - - /** - * Parses a file containing information of points of exercise. - */ - public Optional parse(List lines, String exerciseName) { - Map> map = new HashMap<>(); - for (String line : lines) { - String[] keyValue = line.split(" = "); - if (keyValue.length != 2) { - return Optional.absent(); - } - addAndInitialise(map, keyValue[0], keyValue[1]); - if (!handleSuites(map, keyValue[0], keyValue[1])) { - return Optional.absent(); - } - } - return Optional.of(buildResult(map, exerciseName)); - } - - private boolean handleSuites(Map> map, String key, String value) { - String[] keySplit = key.split("\\."); - if (keySplit.length > 1) { - if (keySplit.length > 2) { - return false; - } - addAndInitialise(map, keySplit[0], value); - } - return true; - } - - private void addAndInitialise(Map> map, String key, String value) { - List list = map.get(key); - if (list == null) { - list = new ArrayList<>(); - map.put(key, list); - } - list.add(value); - } - - private ExerciseDesc buildResult(Map> map, String exerciseName) { - Builder builder = ImmutableList.builder(); - for (Entry> entry : map.entrySet()) { - builder.add(new TestDesc(entry.getKey(), ImmutableList.copyOf(entry.getValue()))); - } - return new ExerciseDesc(exerciseName, builder.build()); - } - -} diff --git a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/util/Constants.java b/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/util/Constants.java index be0a59a55..e89f06cfd 100644 --- a/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/util/Constants.java +++ b/tmc-langs-rust/src/main/java/fi/helsinki/cs/tmc/langs/rust/util/Constants.java @@ -1,12 +1,10 @@ + package fi.helsinki.cs.tmc.langs.rust.util; import java.nio.file.Path; import java.nio.file.Paths; public class Constants { - public static final Path CARGO_TOML = Paths.get("Cargo.toml"); public static final Path SOURCE = Paths.get("src"); - public static final Path TESTS = Paths.get("tests", "mod.rs"); - public static final Path POINTS = Paths.get("tmc-points.txt"); } diff --git a/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/CargoPluginTest.java b/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/CargoPluginTest.java index e1bce66b6..8bc77371d 100644 --- a/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/CargoPluginTest.java +++ b/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/CargoPluginTest.java @@ -6,14 +6,10 @@ import fi.helsinki.cs.tmc.langs.abstraction.ValidationError; import fi.helsinki.cs.tmc.langs.abstraction.ValidationResult; -import fi.helsinki.cs.tmc.langs.domain.ExerciseDesc; import fi.helsinki.cs.tmc.langs.domain.RunResult; import fi.helsinki.cs.tmc.langs.domain.SpecialLogs; -import fi.helsinki.cs.tmc.langs.domain.TestDesc; import fi.helsinki.cs.tmc.langs.utils.TestUtils; -import com.google.common.base.Optional; - import org.junit.Before; import org.junit.Test; @@ -216,49 +212,4 @@ public void lintingHasRightErrorsWithTwoFiles() { assertTrue(error2.getValue().get(0).getMessage().contains("snake case")); assertTrue(error2.getValue().get(0).getSourceName().contains("xor_adder.rs")); } - - @Test - public void scanningExerciseWorks() { - Path path = TestUtils.getPath(getClass(), "points"); - Optional desc = cargoPlugin.scanExercise(path, "test"); - assertTrue(desc.isPresent()); - assertEquals("test", desc.get().name); - assertEquals(1, desc.get().tests.size()); - assertEquals("it_shall_work", desc.get().tests.get(0).name); - assertEquals(1, desc.get().tests.get(0).points.size()); - assertEquals("10", desc.get().tests.get(0).points.get(0)); - } - - @Test - public void scanningWithMultipleExerciseWorks() { - Path path = TestUtils.getPath(getClass(), "multiplePoints"); - Optional desc = cargoPlugin.scanExercise(path, "test"); - assertTrue(desc.isPresent()); - assertEquals("test", desc.get().name); - assertEquals(2, desc.get().tests.size()); - TestDesc test1 = desc.get().tests.get(0); - TestDesc test2 = desc.get().tests.get(1); - if (test2.name.equals("it_shall_work")) { - TestDesc tmp = test1; - test1 = test2; - test2 = tmp; - } - assertEquals("it_shall_work", test1.name); - assertEquals(1, test1.points.size()); - assertEquals("4", test1.points.get(0)); - - assertEquals("it_shall_work2", test2.name); - assertEquals(1, test2.points.size()); - assertEquals("7", test2.points.get(0)); - } - - @Test - public void scanningWithSuiteWorks() { - Path path = TestUtils.getPath(getClass(), "multiplePointsSuite"); - Optional desc = cargoPlugin.scanExercise(path, "test"); - assertTrue(desc.isPresent()); - assertEquals("test", desc.get().name); - assertEquals(3, desc.get().tests.size()); - //TODO: Figure out how the suites should actually work - } } diff --git a/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParserTest.java b/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParserTest.java deleted file mode 100644 index 3a674d67e..000000000 --- a/tmc-langs-rust/src/test/java/fi/helsinki/cs/tmc/langs/rust/RustPointsParserTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package fi.helsinki.cs.tmc.langs.rust; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import fi.helsinki.cs.tmc.langs.domain.ExerciseDesc; -import fi.helsinki.cs.tmc.langs.domain.TestDesc; - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableList; - -import org.junit.Before; -import org.junit.Test; - -import java.util.Collections; - -public class RustPointsParserTest { - - private RustPointsParser parser; - private static final String name = "Exercise"; - - @Before - public void setUp() { - parser = new RustPointsParser(); - } - - @Test - public void worksWithNothing() { - Optional result = parser.parse(Collections.emptyList(), name); - assertTrue(result.isPresent()); - assertEquals(name, result.get().name); - assertTrue(result.get().tests.isEmpty()); - } - - @Test - public void failsWithNoValue() { - assertFalse(parser.parse(ImmutableList.of("test"), name).isPresent()); - } - - @Test - public void worksWithOne() { - Optional result - = parser.parse(ImmutableList.of("test = 1"), name); - assertTrue(result.isPresent()); - assertEquals(name, result.get().name); - assertEquals(1, result.get().tests.size()); - TestDesc desc = result.get().tests.get(0); - assertEquals("test", desc.name); - assertEquals(1, desc.points.size()); - assertEquals("1", desc.points.get(0)); - } - - @Test - public void worksWithMultipleSame() { - Optional result - = parser.parse(ImmutableList.of("test = 1", "test = 2"), name); - assertTrue(result.isPresent()); - assertEquals(name, result.get().name); - assertEquals(1, result.get().tests.size()); - TestDesc desc = result.get().tests.get(0); - assertEquals("test", desc.name); - assertEquals(2, desc.points.size()); - assertTrue(desc.points.contains("1")); - assertTrue(desc.points.contains("2")); - } - - @Test - public void worksWithMultipleDifferent() { - Optional result - = parser.parse(ImmutableList.of("test = 1", "asd = 2"), name); - assertTrue(result.isPresent()); - assertEquals(name, result.get().name); - assertEquals(2, result.get().tests.size()); - TestDesc desc1 = result.get().tests.get(0); - TestDesc desc2 = result.get().tests.get(1); - if (desc2.name.equals("test")) { - TestDesc temp = desc1; - desc1 = desc2; - desc2 = temp; - } - assertEquals("test", desc1.name); - assertEquals(1, desc1.points.size()); - assertEquals("1", desc1.points.get(0)); - - assertEquals("asd", desc2.name); - assertEquals(1, desc2.points.size()); - assertEquals("2", desc2.points.get(0)); - } - - @Test - public void worksWithSuites() { - Optional result - = parser.parse(ImmutableList.of("test = 1", "test.asd = 2"), name); - assertTrue(result.isPresent()); - assertEquals(name, result.get().name); - assertEquals(2, result.get().tests.size()); - TestDesc desc1 = result.get().tests.get(0); - TestDesc desc2 = result.get().tests.get(1); - if (desc2.name.equals("test")) { - TestDesc temp = desc1; - desc1 = desc2; - desc2 = temp; - } - assertEquals("test", desc1.name); - assertEquals(2, desc1.points.size()); - assertTrue(desc1.points.contains("1")); - assertTrue(desc1.points.contains("2")); - - assertEquals("test.asd", desc2.name); - assertEquals(1, desc2.points.size()); - assertEquals("2", desc2.points.get(0)); - } - - @Test - public void failsWithDeepSuites() { - assertFalse(parser.parse(ImmutableList.of("a.b.c = 0"), name).isPresent()); - } -} diff --git a/tmc-langs-rust/src/test/resources/multiplePoints/Cargo.toml b/tmc-langs-rust/src/test/resources/multiplePoints/Cargo.toml deleted file mode 100755 index a7786f940..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePoints/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "passing" -version = "0.1.0" -authors = ["Example"] - -[dependencies.points] -git = "https://github.com/WaDelma/points.git" diff --git a/tmc-langs-rust/src/test/resources/multiplePoints/src/lib.rs b/tmc-langs-rust/src/test/resources/multiplePoints/src/lib.rs deleted file mode 100644 index edc27f080..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePoints/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ - -pub fn mul_xor_add(a: u64, b: u64) -> u64 { - let x = a * b; - (x ^ a) + (x ^ b) -} \ No newline at end of file diff --git a/tmc-langs-rust/src/test/resources/multiplePoints/tests/mod.rs b/tmc-langs-rust/src/test/resources/multiplePoints/tests/mod.rs deleted file mode 100755 index d49cf7eca..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePoints/tests/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -#[macro_use] -extern crate points; - -extern crate passing; - -points! { - #[points = "4"] - test it_shall_work { - assert_eq!(9, passing::mul_xor_add(2, 3)); - } - - #[points = "7"] - test it_shall_work2 { - assert_eq!(5, passing::mul_xor_add(1, 4)); - } -} diff --git a/tmc-langs-rust/src/test/resources/multiplePointsSuite/Cargo.toml b/tmc-langs-rust/src/test/resources/multiplePointsSuite/Cargo.toml deleted file mode 100755 index a7786f940..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePointsSuite/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "passing" -version = "0.1.0" -authors = ["Example"] - -[dependencies.points] -git = "https://github.com/WaDelma/points.git" diff --git a/tmc-langs-rust/src/test/resources/multiplePointsSuite/src/lib.rs b/tmc-langs-rust/src/test/resources/multiplePointsSuite/src/lib.rs deleted file mode 100644 index edc27f080..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePointsSuite/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ - -pub fn mul_xor_add(a: u64, b: u64) -> u64 { - let x = a * b; - (x ^ a) + (x ^ b) -} \ No newline at end of file diff --git a/tmc-langs-rust/src/test/resources/multiplePointsSuite/tests/mod.rs b/tmc-langs-rust/src/test/resources/multiplePointsSuite/tests/mod.rs deleted file mode 100755 index d634686e2..000000000 --- a/tmc-langs-rust/src/test/resources/multiplePointsSuite/tests/mod.rs +++ /dev/null @@ -1,19 +0,0 @@ -#[macro_use] -extern crate points; - -extern crate passing; - -points! { - #[points = "4"] - suite exercise1 { - #[points = "6"] - test it_shall_work { - assert_eq!(9, passing::mul_xor_add(2, 3)); - } - - #[points = "7"] - test it_shall_work2 { - assert_eq!(5, passing::mul_xor_add(1, 4)); - } - } -} diff --git a/tmc-langs-rust/src/test/resources/points/Cargo.toml b/tmc-langs-rust/src/test/resources/points/Cargo.toml deleted file mode 100755 index a7786f940..000000000 --- a/tmc-langs-rust/src/test/resources/points/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "passing" -version = "0.1.0" -authors = ["Example"] - -[dependencies.points] -git = "https://github.com/WaDelma/points.git" diff --git a/tmc-langs-rust/src/test/resources/points/src/lib.rs b/tmc-langs-rust/src/test/resources/points/src/lib.rs deleted file mode 100644 index edc27f080..000000000 --- a/tmc-langs-rust/src/test/resources/points/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ - -pub fn mul_xor_add(a: u64, b: u64) -> u64 { - let x = a * b; - (x ^ a) + (x ^ b) -} \ No newline at end of file diff --git a/tmc-langs-rust/src/test/resources/points/tests/mod.rs b/tmc-langs-rust/src/test/resources/points/tests/mod.rs deleted file mode 100755 index 8d1be63d0..000000000 --- a/tmc-langs-rust/src/test/resources/points/tests/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -#[macro_use] -extern crate points; - -extern crate passing; - -points! { - #[points = "10"] - test it_shall_work { - assert_eq!(9, passing::mul_xor_add(2, 3)); - } -} -