Skip to content

Commit f0725ad

Browse files
committed
moon_json: test_directories
1 parent ebd637a commit f0725ad

File tree

1 file changed

+80
-17
lines changed

1 file changed

+80
-17
lines changed

src/moon_json/test_directories.cr

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,86 @@
1818
# -----------------------------------------------------------------------
1919

2020
module MoonScript
21-
class MoonJson
22-
class Parser
23-
def parse_test_directories: Array(String)
24-
@parser.location.try do |location|
25-
directories = %w[]
26-
27-
@parser.read_array do
28-
directories << parse_test_directory
29-
end
30-
31-
error! :test_directories_empty do
32-
end
33-
34-
block do
35-
end
36-
end
21+
class MoonJson
22+
class Parser
23+
def parse_test_directories : Array(String)
24+
@parser.location.try do |location|
25+
directories = %w[]
26+
27+
@parser.read_array do
28+
directories << parse_test_directory
29+
end
30+
31+
error! :test_directories_empty do
32+
block do
33+
text "The"
34+
bold "test-directories"
35+
text "field lists all directories relative to moon.json"
36+
text "which contain the test files."
3737
end
38+
39+
block do
40+
text "The"
41+
bold "test-directories"
42+
text "array should not be empty"
43+
end
44+
45+
snippet snippet_data(location)
46+
end if directories.empty?
47+
48+
directories
49+
end
50+
rescue JSON::ParseException
51+
error! :test_directories_invalid do
52+
block do
53+
text "The"
54+
bold "test-directories"
55+
text "field lists all directories relative to the moon.json"
56+
text "which contain the test files."
57+
end
58+
59+
block do
60+
text "The"
61+
bold "test-directories"
62+
text "field should be an array"
63+
end
64+
65+
snippet snippet_data
66+
end
67+
end
68+
69+
def parse_test_directory : String
70+
location =
71+
@parser.location
72+
73+
directory =
74+
@parser.read_string
75+
76+
path =
77+
Path[root, directory]
78+
79+
error! :test_directory_not_exists do
80+
block do
81+
text "The test directory"
82+
bold directory
83+
text "does not exists:"
84+
end
85+
86+
snippet snippet_data(location)
87+
end unless Dir.exists?(path)
88+
89+
directory
90+
rescue JSON::ParseException
91+
error! :test_directory_invalid do
92+
block do
93+
text "All entries in the"
94+
bold "test-directories"
95+
text "array should be string:"
96+
end
97+
98+
snippet snippet_data
3899
end
100+
end
39101
end
40-
end
102+
end
103+
end

0 commit comments

Comments
 (0)