1shared_examples 'special characters' do
2  describe 'a special character in the buffer should be treated like any other character' do
3    it 'asterisk' do
4      with_history('echo "hello*"', 'echo "hello."') do
5        session.send_string('echo "hello*')
6        wait_for { session.content }.to eq('echo "hello*"')
7      end
8    end
9
10    it 'question mark' do
11      with_history('echo "hello?"', 'echo "hello."') do
12        session.send_string('echo "hello?')
13        wait_for { session.content }.to eq('echo "hello?"')
14      end
15    end
16
17    it 'backslash' do
18      with_history('echo "hello\nworld"') do
19        session.send_string('echo "hello\\')
20        wait_for { session.content }.to eq('echo "hello\nworld"')
21      end
22    end
23
24    it 'double backslash' do
25      with_history('echo "\\\\"') do
26        session.send_string('echo "\\\\')
27        wait_for { session.content }.to eq('echo "\\\\"')
28      end
29    end
30
31    it 'tilde' do
32      with_history('echo ~/foo') do
33        session.send_string('echo ~')
34        wait_for { session.content }.to eq('echo ~/foo')
35      end
36    end
37
38    it 'parentheses' do
39      with_history('echo "$(ls foo)"') do
40        session.send_string('echo "$(')
41        wait_for { session.content }.to eq('echo "$(ls foo)"')
42      end
43    end
44
45    it 'square bracket' do
46      with_history('echo "$history[123]"') do
47        session.send_string('echo "$history[')
48        wait_for { session.content }.to eq('echo "$history[123]"')
49        session.send_string('123]')
50        wait_for { session.content }.to eq('echo "$history[123]"')
51      end
52    end
53
54    it 'octothorpe' do
55      with_history('echo "#yolo"') do
56        session.send_string('echo "#')
57        wait_for { session.content }.to eq('echo "#yolo"')
58      end
59    end
60
61    it 'caret' do
62      with_history('echo "^A"', 'echo "^B"') do
63        session.send_string('echo "^A')
64        wait_for { session.content }.to eq('echo "^A"')
65      end
66    end
67
68    it 'dash' do
69      with_history('-foo() {}') do
70        session.send_string('-')
71        wait_for { session.content }.to eq('-foo() {}')
72      end
73    end
74  end
75end
76