41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/test_hook.rb', line 41
def compile_file_content(request)
test = "import java.util.*;\nimport java.util.function.*;\nimport java.util.stream.*;\nimport java.util.stream.Collectors.*;\nimport java.time.*;\nimport org.junit.runner.RunWith;\nimport org.junit.*;\nimport org.junit.runner.*;\nimport org.junit.runner.notification.*;\nimport org.junit.runners.*;\nimport org.junit.runners.model.InitializationError;\nimport org.apache.commons.text.StringEscapeUtils;\n\#{has_files?(request) ? '' : request.content}\n\#{request.extra}\n\npublic class SubmissionTest {\n\#{request.test}\n@AfterClass\npublic static void afterAll(){\n System.out.println(\"!!!JAVA-MUMUKI-OUTPUT!!!\");\n}\n\npublic static void main(String[] args) {\n JUnitCore core = new JUnitCore();\n core.addListener(new MuListener());\n core.run(SubmissionTest.class);\n}\n}\nclass MuListener extends RunListener {\nprivate Map<String, Collection<String>> tests = new HashMap<>();\n@Override\npublic void testStarted(Description description) throws Exception {\n String methodName = description.getMethodName();\n tests.put(methodName, Arrays.asList(methodName, \"passed\"));\n}\n\n@Override\npublic void testFailure(Failure failure) {\n String methodName = failure.getDescription().getMethodName();\n tests.put(methodName, Arrays.asList(methodName, \"failed\", failure.getMessage()));\n}\n\n@Override\npublic void testRunFinished(Result r) {\n String result = prettyFormatResults(tests.values());\n System.out.println(StringEscapeUtils.unescapeJson(result));\n}\n\npublic String prettyFormatString(String string) {\n return (\"\\\\\\\"\"+string+\"\\\\\\\"\");\n}\npublic String prettyFormatExample(Collection<String> example) {\n return \"[\"+example.stream().map(element -> prettyFormatString(element)).collect(Collectors.joining(\",\")) +\"]\";\n}\npublic String prettyFormatResults(Collection<Collection<String>> results) {\n return \"[\"+results.stream().map(element -> prettyFormatExample(element)).collect(Collectors.joining(\",\"))+\"]\";\n}\n}\n"
has_files?(request) ?
files_of(request).merge('SubmissionTest.java' => test) :
test
end
|