1
+#!/bin/sh
2
+
3
+test_description="Test bundle-uri bundle_uri_parse_line()"
4
+
5
+TEST_NO_CREATE_REPO=1
6
+TEST_PASSES_SANITIZE_LEAK=true
7
+. ./test-lib.sh
8
+
9
+test_expect_success 'bundle_uri_parse_line() just URIs' '
10
+ cat >in <<-\EOF &&
11
+ bundle.one.uri=http://example.com/bundle.bdl
12
+ bundle.two.uri=https://example.com/bundle.bdl
13
+ bundle.three.uri=file:///usr/share/git/bundle.bdl
14
+ EOF
15
+
16
+ cat >expect <<-\EOF &&
17
+ [bundle]
18
+ version = 1
19
+ mode = all
20
+ [bundle "one"]
21
+ uri = http://example.com/bundle.bdl
22
+ [bundle "two"]
23
+ uri = https://example.com/bundle.bdl
24
+ [bundle "three"]
25
+ uri = file:///usr/share/git/bundle.bdl
26
+ EOF
27
+
28
+ test-tool bundle-uri parse-key-values in >actual 2>err &&
29
+ test_must_be_empty err &&
30
+ test_cmp_config_output expect actual
31
+'
32
+
33
+test_expect_success 'bundle_uri_parse_line() parsing edge cases: empty key or value' '
34
+ cat >in <<-\EOF &&
35
+ =bogus-value
36
+ bogus-key=
37
+ EOF
38
+
39
+ cat >err.expect <<-EOF &&
40
+ error: bundle-uri: line has empty key or value
41
+ error: bad line: '\''=bogus-value'\''
42
+ error: bundle-uri: line has empty key or value
43
+ error: bad line: '\''bogus-key='\''
44
+ EOF
45
+
46
+ cat >expect <<-\EOF &&
47
+ [bundle]
48
+ version = 1
49
+ mode = all
50
+ EOF
51
+
52
+ test_must_fail test-tool bundle-uri parse-key-values in >actual 2>err &&
53
+ test_cmp err.expect err &&
54
+ test_cmp_config_output expect actual
55
+'
56
+
57
+test_expect_success 'bundle_uri_parse_line() parsing edge cases: empty lines' '
58
+ cat >in <<-\EOF &&
59
+ bundle.one.uri=http://example.com/bundle.bdl
60
+
61
+ bundle.two.uri=https://example.com/bundle.bdl
62
+
63
+ bundle.three.uri=file:///usr/share/git/bundle.bdl
64
+ EOF
65
+
66
+ cat >err.expect <<-\EOF &&
67
+ error: bundle-uri: got an empty line
68
+ error: bad line: '\'''\''
69
+ error: bundle-uri: got an empty line
70
+ error: bad line: '\'''\''
71
+ EOF
72
+
73
+ # We fail, but try to continue parsing regardless
74
+ cat >expect <<-\EOF &&
75
+ [bundle]
76
+ version = 1
77
+ mode = all
78
+ [bundle "one"]
79
+ uri = http://example.com/bundle.bdl
80
+ [bundle "two"]
81
+ uri = https://example.com/bundle.bdl
82
+ [bundle "three"]
83
+ uri = file:///usr/share/git/bundle.bdl
84
+ EOF
85
+
86
+ test_must_fail test-tool bundle-uri parse-key-values in >actual 2>err &&
87
+ test_cmp err.expect err &&
88
+ test_cmp_config_output expect actual
89
+'
90
+
91
+test_expect_success 'bundle_uri_parse_line() parsing edge cases: duplicate lines' '
92
+ cat >in <<-\EOF &&
93
+ bundle.one.uri=http://example.com/bundle.bdl
94
+ bundle.two.uri=https://example.com/bundle.bdl
95
+ bundle.one.uri=https://example.com/bundle-2.bdl
96
+ bundle.three.uri=file:///usr/share/git/bundle.bdl
97
+ EOF
98
+
99
+ cat >err.expect <<-\EOF &&
100
+ error: bad line: '\''bundle.one.uri=https://example.com/bundle-2.bdl'\''
101
+ EOF
102
+
103
+ # We fail, but try to continue parsing regardless
104
+ cat >expect <<-\EOF &&
105
+ [bundle]
106
+ version = 1
107
+ mode = all
108
+ [bundle "one"]
109
+ uri = http://example.com/bundle.bdl
110
+ [bundle "two"]
111
+ uri = https://example.com/bundle.bdl
112
+ [bundle "three"]
113
+ uri = file:///usr/share/git/bundle.bdl
114
+ EOF
115
+
116
+ test_must_fail test-tool bundle-uri parse-key-values in >actual 2>err &&
117
+ test_cmp err.expect err &&
118
+ test_cmp_config_output expect actual
119
+'
120
+
121
+test_done