Skip to content

Commit aa95c13

Browse files
committed
Add tests for Compare, toAbsolutePath, GenDiff
1 parent 2adecf8 commit aa95c13

File tree

7 files changed

+325
-10
lines changed

7 files changed

+325
-10
lines changed

coverage.out

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,195 @@
11
mode: set
2+
code/src/compare/compare.go:16.62,22.9 6 1
3+
code/src/compare/compare.go:23.24,25.31 2 1
4+
code/src/compare/compare.go:26.24,28.31 2 1
5+
code/src/compare/compare.go:29.10,35.5 1 1
6+
code/src/compare/compare.go:37.2,37.14 1 1
7+
code/src/compare/compare.go:40.62,45.23 5 1
8+
code/src/compare/compare.go:45.23,47.3 1 1
9+
code/src/compare/compare.go:47.8,49.3 1 0
10+
code/src/compare/compare.go:51.2,51.30 1 1
11+
code/src/compare/compare.go:51.30,58.3 5 1
12+
code/src/compare/compare.go:60.2,60.23 1 1
13+
code/src/compare/compare.go:60.23,61.37 1 1
14+
code/src/compare/compare.go:61.37,70.4 3 1
15+
code/src/compare/compare.go:72.8,72.30 1 0
16+
code/src/compare/compare.go:72.30,73.37 1 0
17+
code/src/compare/compare.go:73.37,82.4 3 0
18+
code/src/compare/compare.go:84.2,84.14 1 1
19+
code/src/compare/compare.go:87.61,93.24 5 1
20+
code/src/compare/compare.go:93.24,95.3 1 1
21+
code/src/compare/compare.go:96.2,96.24 1 1
22+
code/src/compare/compare.go:96.24,98.3 1 1
23+
code/src/compare/compare.go:99.2,100.30 2 1
24+
code/src/compare/compare.go:100.30,102.3 1 1
25+
code/src/compare/compare.go:104.2,104.45 1 1
26+
code/src/compare/compare.go:104.45,106.3 1 1
27+
code/src/compare/compare.go:107.2,108.33 2 1
28+
code/src/compare/compare.go:108.33,109.24 1 1
29+
code/src/compare/compare.go:109.24,110.12 1 0
30+
code/src/compare/compare.go:112.3,119.36 6 1
31+
code/src/compare/compare.go:119.36,130.12 5 1
32+
code/src/compare/compare.go:132.9,135.4 2 1
33+
code/src/compare/compare.go:137.2,137.14 1 1
34+
code/src/compare/compare.go:140.83,144.9 4 1
35+
code/src/compare/compare.go:145.59,146.100 1 1
36+
code/src/compare/compare.go:147.17,149.116 2 1
37+
code/src/compare/compare.go:150.18,151.107 1 1
38+
code/src/compare/compare.go:152.18,153.103 1 1
39+
code/src/compare/compare.go:154.10,155.87 1 0
40+
code/src/compare/compare.go:157.2,157.14 1 1
41+
code/src/compare/compare.go:160.57,163.2 2 1
42+
code/src/compare/compare.go:165.47,166.18 1 1
43+
code/src/compare/compare.go:166.18,168.3 1 1
44+
code/src/compare/compare.go:169.2,170.14 2 1
45+
code/src/compare/compare.go:173.48,174.22 1 1
46+
code/src/compare/compare.go:175.70,176.21 1 1
47+
code/src/compare/compare.go:177.10,178.22 1 1
48+
code/src/parsers/parsers.go:12.74,14.16 2 1
49+
code/src/parsers/parsers.go:14.16,16.3 1 0
50+
code/src/parsers/parsers.go:17.2,18.16 2 1
51+
code/src/parsers/parsers.go:18.16,20.3 1 0
52+
code/src/parsers/parsers.go:21.2,26.9 5 1
53+
code/src/parsers/parsers.go:27.42,28.55 1 1
54+
code/src/parsers/parsers.go:28.55,30.4 1 0
55+
code/src/parsers/parsers.go:31.3,31.55 1 1
56+
code/src/parsers/parsers.go:31.55,33.4 1 0
57+
code/src/parsers/parsers.go:34.3,34.27 1 1
58+
code/src/parsers/parsers.go:36.78,37.55 1 1
59+
code/src/parsers/parsers.go:37.55,39.4 1 0
60+
code/src/parsers/parsers.go:40.3,40.55 1 1
61+
code/src/parsers/parsers.go:40.55,42.4 1 0
62+
code/src/parsers/parsers.go:43.3,43.27 1 1
63+
code/src/parsers/parsers.go:45.20,46.74 1 1
64+
code/src/parsers/parsers.go:48.10,49.82 1 1
65+
code/src/formatters/formatters.go:11.35,12.14 1 1
66+
code/src/formatters/formatters.go:13.15,14.29 1 1
67+
code/src/formatters/formatters.go:15.14,16.28 1 1
68+
code/src/formatters/formatters.go:17.10,18.22 1 1
69+
code/src/formatters/json.go:21.39,23.2 1 1
70+
code/src/formatters/json.go:25.73,28.16 3 1
71+
code/src/formatters/json.go:28.16,30.3 1 0
72+
code/src/formatters/json.go:31.2,31.17 1 1
73+
code/src/formatters/json.go:34.53,43.16 3 1
74+
code/src/formatters/json.go:43.16,45.3 1 0
75+
code/src/formatters/json.go:46.2,46.27 1 1
76+
code/src/formatters/json.go:49.53,51.34 2 1
77+
code/src/formatters/json.go:51.34,56.33 5 1
78+
code/src/formatters/json.go:57.23,66.31 3 1
79+
code/src/formatters/json.go:68.11,73.41 1 1
80+
code/src/formatters/json.go:73.41,84.5 4 1
81+
code/src/formatters/json.go:84.10,84.53 1 1
82+
code/src/formatters/json.go:84.53,91.5 2 1
83+
code/src/formatters/json.go:91.10,100.5 2 1
84+
code/src/formatters/json.go:103.2,103.15 1 1
85+
code/src/formatters/json.go:106.43,107.22 1 1
86+
code/src/formatters/json.go:108.27,109.18 1 1
87+
code/src/formatters/json.go:110.31,111.17 1 1
88+
code/src/formatters/json.go:112.27,113.19 1 1
89+
code/src/formatters/json.go:114.76,115.19 1 1
90+
code/src/formatters/json.go:116.23,117.21 1 1
91+
code/src/formatters/json.go:118.10,119.12 1 0
92+
code/src/formatters/plain.go:20.42,22.2 1 1
93+
code/src/formatters/plain.go:24.76,28.31 4 1
94+
code/src/formatters/plain.go:28.31,29.39 1 1
95+
code/src/formatters/plain.go:29.39,30.12 1 1
96+
code/src/formatters/plain.go:32.3,33.29 2 1
97+
code/src/formatters/plain.go:33.29,35.4 1 1
98+
code/src/formatters/plain.go:37.2,37.24 1 1
99+
code/src/formatters/plain.go:40.36,46.33 6 1
100+
code/src/formatters/plain.go:46.33,48.3 1 1
101+
code/src/formatters/plain.go:48.8,48.28 1 1
102+
code/src/formatters/plain.go:48.28,50.3 1 1
103+
code/src/formatters/plain.go:50.8,52.3 1 1
104+
code/src/formatters/plain.go:53.2,53.33 1 1
105+
code/src/formatters/plain.go:53.33,55.3 1 1
106+
code/src/formatters/plain.go:55.8,55.28 1 1
107+
code/src/formatters/plain.go:55.28,57.3 1 1
108+
code/src/formatters/plain.go:57.8,59.3 1 1
109+
code/src/formatters/plain.go:60.2,60.19 1 1
110+
code/src/formatters/plain.go:61.31,62.151 1 1
111+
code/src/formatters/plain.go:63.76,64.166 1 1
112+
code/src/formatters/plain.go:65.27,66.121 1 1
113+
code/src/formatters/plain.go:68.2,68.19 1 1
114+
code/src/formatters/plain.go:71.33,72.30 1 1
115+
code/src/formatters/plain.go:72.30,75.3 2 1
116+
code/src/formatters/plain.go:76.2,76.20 1 1
117+
code/src/formatters/plain.go:77.12,78.25 1 1
118+
code/src/formatters/plain.go:79.11,80.16 1 1
119+
code/src/formatters/plain.go:81.93,82.25 1 1
120+
code/src/formatters/plain.go:83.10,84.54 1 1
121+
code/src/formatters/plain.go:88.49,90.29 2 1
122+
code/src/formatters/plain.go:90.29,97.9 7 1
123+
code/src/formatters/plain.go:97.9,100.4 2 1
124+
code/src/formatters/plain.go:102.2,102.16 1 1
125+
code/src/formatters/plain.go:105.85,108.55 3 1
126+
code/src/formatters/plain.go:108.55,110.45 2 1
127+
code/src/formatters/plain.go:110.45,112.12 2 1
128+
code/src/formatters/plain.go:114.3,115.35 2 1
129+
code/src/formatters/plain.go:116.23,127.20 5 1
130+
code/src/formatters/plain.go:128.11,133.38 1 1
131+
code/src/formatters/plain.go:133.38,146.5 6 1
132+
code/src/formatters/plain.go:146.10,156.5 3 1
133+
code/src/formatters/plain.go:159.2,159.26 1 1
134+
code/src/formatters/stylish.go:12.28,14.2 1 1
135+
code/src/formatters/stylish.go:16.68,22.2 5 1
136+
code/src/formatters/stylish.go:24.56,26.23 2 1
137+
code/src/formatters/stylish.go:26.23,35.28 7 1
138+
code/src/formatters/stylish.go:36.23,39.51 3 1
139+
code/src/formatters/stylish.go:40.31,44.35 4 1
140+
code/src/formatters/stylish.go:44.35,52.5 3 1
141+
code/src/formatters/stylish.go:53.4,54.51 2 1
142+
code/src/formatters/stylish.go:55.11,56.67 1 1
143+
code/src/formatters/stylish.go:59.2,59.19 1 1
144+
code/src/formatters/stylish.go:63.32,64.17 1 1
145+
code/src/formatters/stylish.go:64.17,66.3 1 1
146+
code/src/formatters/stylish.go:66.8,66.24 1 1
147+
code/src/formatters/stylish.go:66.24,68.3 1 1
148+
code/src/formatters/stylish.go:68.8,70.3 1 1
149+
code/src/formatters/stylish.go:74.51,76.23 2 1
150+
code/src/formatters/stylish.go:76.23,78.3 1 1
151+
code/src/formatters/stylish.go:79.2,80.19 2 1
152+
code/src/formatters/stylish.go:84.40,85.20 1 1
153+
code/src/formatters/stylish.go:86.23,87.21 1 1
154+
code/src/formatters/stylish.go:88.63,89.21 1 1
155+
code/src/formatters/stylish.go:90.65,91.21 1 1
156+
code/src/formatters/stylish.go:92.10,93.21 1 1
157+
code/src/formatters/stylish.go:97.34,98.20 1 1
158+
code/src/formatters/stylish.go:99.11,100.16 1 1
159+
code/src/formatters/stylish.go:101.10,102.25 1 1
160+
code/src/formatters/stylish.go:107.42,108.22 1 1
161+
code/src/formatters/stylish.go:109.65,110.14 1 1
162+
code/src/formatters/stylish.go:111.63,112.14 1 1
163+
code/src/formatters/stylish.go:113.23,114.14 1 1
164+
code/src/formatters/stylish.go:115.27,116.14 1 1
165+
code/src/formatters/stylish.go:117.10,118.12 1 1
166+
code/src/formatters/stylish.go:123.53,132.39 4 1
167+
code/src/formatters/stylish.go:132.39,135.3 2 1
168+
code/src/formatters/stylish.go:135.8,135.47 1 1
169+
code/src/formatters/stylish.go:135.47,137.3 1 1
170+
code/src/formatters/stylish.go:137.8,137.63 1 0
171+
code/src/formatters/stylish.go:137.63,139.3 1 0
172+
code/src/formatters/stylish.go:140.2,140.11 1 0
173+
code/src/formatters/stylish.go:144.37,147.2 2 1
174+
code/gendiff.go:11.59,13.16 2 1
175+
code/gendiff.go:13.16,15.3 1 1
176+
code/gendiff.go:16.2,17.16 2 1
177+
code/gendiff.go:17.16,19.3 1 1
178+
code/gendiff.go:20.2,24.16 5 1
179+
code/gendiff.go:24.16,26.3 1 0
180+
code/gendiff.go:27.2,27.17 1 1
181+
code/gendiff.go:30.66,31.32 1 1
182+
code/gendiff.go:31.32,33.3 1 1
183+
code/gendiff.go:34.2,37.52 4 1
184+
code/gendiff.go:37.52,41.3 3 1
185+
code/gendiff.go:42.2,44.32 3 1
186+
code/gendiff.go:44.32,46.3 1 0
187+
code/gendiff.go:46.8,48.3 1 1
188+
code/cmd/gendiff/main.go:13.13,25.61 1 0
189+
code/cmd/gendiff/main.go:25.61,28.28 3 0
190+
code/cmd/gendiff/main.go:28.28,31.5 2 0
191+
code/cmd/gendiff/main.go:32.4,34.18 3 0
192+
code/cmd/gendiff/main.go:34.18,36.5 1 0
193+
code/cmd/gendiff/main.go:37.4,38.14 2 0
194+
code/cmd/gendiff/main.go:41.2,41.63 1 0
195+
code/cmd/gendiff/main.go:41.63,43.3 1 0

gendiff.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ func GenDiff(path1, path2, format string) (string, error) {
2828
}
2929

3030
func toAbsolutePath(path1, path2 string) (string, string, error) {
31+
if path1 == "" || path2 == "" {
32+
return "", "", fmt.Errorf("некорректный ввод путей")
33+
}
3134
var abs1 string
3235
var abs2 string
3336
var err error
@@ -36,13 +39,11 @@ func toAbsolutePath(path1, path2 string) (string, string, error) {
3639
abs2 = path2
3740
return abs1, abs2, nil
3841
}
39-
abs1, err = filepath.Abs(path1)
40-
if err != nil {
41-
return "", "", fmt.Errorf("не удалось преобразовать путь %s в абсолютный: %w", path1, err)
42-
}
43-
abs2, err = filepath.Abs(path2)
44-
if err != nil {
45-
return "", "", fmt.Errorf("не удалось преобразовать путь %s в абсолютный: %w", path2, err)
42+
abs1, err1 := filepath.Abs(path1)
43+
abs2, err2 := filepath.Abs(path2)
44+
if err1 != nil || err2 != nil {
45+
return "", "", fmt.Errorf("не удалось преобразовать путь в абсолютный: %w", err)
46+
} else {
47+
return abs1, abs2, nil
4648
}
47-
return abs1, abs2, nil
4849
}

gendiff_test.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package code
2+
3+
import (
4+
"os"
5+
"path/filepath"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
func TestGenDiff(t *testing.T) {
13+
t.Parallel()
14+
testCases := []struct {
15+
name string
16+
path1 string
17+
path2 string
18+
format string
19+
want string
20+
err bool
21+
errMsg string
22+
}{
23+
{"output_stylish",
24+
"testdata/fixture/complicated/file1-1.yaml",
25+
"testdata/fixture/complicated/file2-1.yaml",
26+
"stylish",
27+
"testdata/fixture/complicated/expectStylish.txt",
28+
false,
29+
"",
30+
},
31+
{"output_plain",
32+
"testdata/fixture/complicated/file1-1.yaml",
33+
"testdata/fixture/complicated/file2-1.yaml",
34+
"plain",
35+
"testdata/fixture/complicated/expectPlain.txt",
36+
false,
37+
"",
38+
},
39+
{"output_json",
40+
"testdata/hexlet_testdata/file1.json",
41+
"testdata/hexlet_testdata/file2.json",
42+
"json",
43+
"testdata/hexlet_testdata/result_json.json",
44+
false,
45+
"",
46+
},
47+
{"error_incorrect_path",
48+
"",
49+
"testdata/hexlet_testdata/file2.json",
50+
"json",
51+
"",
52+
true,
53+
"toAbsolutePath: некорректный ввод путей",
54+
},
55+
{"error_different_file_formats",
56+
"testdata/hexlet_testdata/file1.yml",
57+
"testdata/hexlet_testdata/file2.json",
58+
"json",
59+
"",
60+
true,
61+
"parseDataFromFiles: разные форматы данных",
62+
},
63+
}
64+
for _, tc := range testCases {
65+
tc := tc
66+
t.Run(tc.name, func(t *testing.T) {
67+
t.Parallel()
68+
got, err := GenDiff(tc.path1, tc.path2, tc.format)
69+
if tc.err {
70+
require.EqualError(t, err, tc.errMsg)
71+
} else {
72+
require.NoError(t, err)
73+
bytes, err := os.ReadFile(tc.want)
74+
require.NoError(t, err)
75+
assert.Equal(t, got, string(bytes))
76+
}
77+
})
78+
}
79+
}
80+
81+
func TestToAbsolutePath(t *testing.T) {
82+
t.Parallel()
83+
temp := t.TempDir()
84+
path1 := filepath.Join(temp, "file1.json")
85+
path2 := filepath.Join(temp, "file2.json")
86+
want1, err := filepath.Abs(path1)
87+
require.NoError(t, err)
88+
want2, err := filepath.Abs(path2)
89+
require.NoError(t, err)
90+
got1, got2, err := toAbsolutePath(path1, path2)
91+
require.NoError(t, err)
92+
assert.Equal(t, got1, want1)
93+
assert.Equal(t, got2, want2)
94+
}

src/compare/compare_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,23 @@ func TestCompare(t *testing.T) {
1919
path3 string
2020
}{
2121
{
22-
name: "simpleJsonFiles",
22+
name: "simple_json_files",
2323
path1: "../../testdata/fixture/file1.json",
2424
path2: "../../testdata/fixture/file2.json",
2525
path3: "../../testdata/fixture/simpleDiff.txt",
2626
},
2727
{
28-
name: "complicatedYamlFiles",
28+
name: "complicated_yaml_files",
2929
path1: "../../testdata/fixture/complicated/file1-1.yaml",
3030
path2: "../../testdata/fixture/complicated/file2-1.yaml",
3131
path3: "../../testdata/fixture/complicated/complicatedDiff.txt",
3232
},
33+
{
34+
name: "json_files_with_arrays",
35+
path1: "../../testdata/fixture/array1.json",
36+
path2: "../../testdata/fixture/array2.json",
37+
path3: "../../testdata/fixture/withArrayDiff.txt",
38+
},
3339
}
3440

3541
for _, tc := range testCases {

testdata/fixture/array1.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[
2+
"текст",
3+
76,
4+
false,
5+
null,
6+
{
7+
"nested": "объект"
8+
},
9+
["вложенный", "массив"]
10+
]

testdata/fixture/array2.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[
2+
{
3+
"nested": "объект"
4+
},
5+
false,
6+
1202,
7+
["вложенный1", "массив1"],
8+
["вложенный2", "массив2"]
9+
]

testdata/fixture/withArrayDiff.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{false [0] mismatched types текст map[nested:объект]} {false [1] mismatched types 76 false} {false [2] mismatched types false 1202} {false [3] mismatched types <nil> [вложенный1 массив1]} {false [4] mismatched types map[nested:объект] [вложенный2 массив2]} {false [5] # Удалена [вложенный массив] <nil>}]

0 commit comments

Comments
 (0)