1
+ package org .springframework .shell .jline ;
2
+
3
+ import org .jline .reader .EOFError ;
4
+ import org .jline .reader .impl .DefaultParser ;
5
+ import org .junit .jupiter .params .ParameterizedTest ;
6
+ import org .junit .jupiter .params .provider .Arguments ;
7
+ import org .junit .jupiter .params .provider .MethodSource ;
8
+
9
+ import java .io .Reader ;
10
+ import java .io .StringReader ;
11
+ import java .util .stream .Stream ;
12
+
13
+ import static org .junit .jupiter .api .Assertions .*;
14
+
15
+ class FileInputProviderTests {
16
+ private final ExtendedDefaultParser springParser = new ExtendedDefaultParser ();
17
+ private final DefaultParser jlineParser = new DefaultParser ();
18
+ private FileInputProvider fileInputProvider ;
19
+
20
+ static Stream <Arguments > regularLinesUnclosedQuotes () {
21
+ return Stream .of (
22
+ Arguments .of ("Regular line with unclosed 'quote" ),
23
+ Arguments .of ("Regular line with unclosed \" quote" )
24
+ );
25
+ }
26
+
27
+ static Stream <Arguments > commentsUnclosedQuotes () {
28
+ return Stream .of (
29
+ Arguments .of ("//Commented line with unclosed 'quote" ),
30
+ Arguments .of ("//Commented line with unclosed \" quote" )
31
+ );
32
+ }
33
+
34
+ @ ParameterizedTest
35
+ @ MethodSource ("regularLinesUnclosedQuotes" )
36
+ void shouldThrowOnUnclosedQuoteDefaultParser (String line ) {
37
+ jlineParser .setEofOnUnclosedQuote (true );
38
+ Reader reader = new StringReader (line );
39
+ fileInputProvider = new FileInputProvider (reader , jlineParser );
40
+ Exception exception = assertThrows (EOFError .class , () -> {
41
+ fileInputProvider .readInput ();
42
+ });
43
+ String expectedExceptionMessage = "Missing closing quote" ;
44
+ String actualExceptionMessage = exception .getMessage ();
45
+ assertTrue (actualExceptionMessage .contains (expectedExceptionMessage ));
46
+ }
47
+
48
+ @ ParameterizedTest
49
+ @ MethodSource ("regularLinesUnclosedQuotes" )
50
+ void shouldThrowOnUnclosedQuoteExtendedParser (String line ) {
51
+ springParser .setEofOnUnclosedQuote (true );
52
+ Reader reader = new StringReader (line );
53
+ fileInputProvider = new FileInputProvider (reader , springParser );
54
+ Exception exception = assertThrows (EOFError .class , () -> {
55
+ fileInputProvider .readInput ();
56
+ });
57
+ String expectedExceptionMessage = "Missing closing quote" ;
58
+ String actualExceptionMessage = exception .getMessage ();
59
+ assertTrue (actualExceptionMessage .contains (expectedExceptionMessage ));
60
+ }
61
+
62
+ @ ParameterizedTest
63
+ @ MethodSource ("commentsUnclosedQuotes" )
64
+ void shoulNotThrowOnUnclosedQuoteDefaultParser (String line ) {
65
+ jlineParser .setEofOnUnclosedQuote (true );
66
+ Reader reader = new StringReader (line );
67
+ fileInputProvider = new FileInputProvider (reader , jlineParser );
68
+ assertDoesNotThrow (() -> {
69
+ fileInputProvider .readInput ();
70
+ });
71
+ }
72
+
73
+ @ ParameterizedTest
74
+ @ MethodSource ("commentsUnclosedQuotes" )
75
+ void shouldNotThrowOnUnclosedQuoteExtendedParser (String line ) {
76
+ springParser .setEofOnUnclosedQuote (true );
77
+ Reader reader = new StringReader (line );
78
+ fileInputProvider = new FileInputProvider (reader , springParser );
79
+ assertDoesNotThrow (() -> {
80
+ fileInputProvider .readInput ();
81
+ });
82
+ }
83
+ }
0 commit comments