Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
galaxyproject
GitHub Repository: galaxyproject/training-material
Path: blob/main/bin/lint-test.rb
1677 views
1
# frozen_string_literal: true
2
3
require 'test/unit'
4
require './bin/lint'
5
6
# Test case for the GTN linter
7
class Gtn::Linter::Test < Test::Unit::TestCase
8
include Gtn::Linter
9
10
def test_fix_notoc
11
text = "a\n{: .no_toc}\nasdf".split "\n"
12
result = Gtn::Linter.fix_notoc(text)
13
14
assert_equal(result[0]['location']['range']['start']['line'], 2)
15
assert_equal(result[0]['location']['range']['start']['column'], 1)
16
17
assert_equal(result[0]['location']['range']['end']['line'], 3)
18
assert_equal(result[0]['location']['range']['end']['column'], 1)
19
end
20
21
def test_fix_broken_link
22
text = "a\n{% link does-not-exist.md %}\nasdf".split "\n"
23
# 123456789
24
result = Gtn::Linter.check_bad_link(text)
25
26
assert_equal(result[0]['message'], 'The linked file (`does-not-exist.md`) could not be found.')
27
28
assert_equal(result[0]['location']['range']['start']['line'], 2)
29
assert_equal(result[0]['location']['range']['start']['column'], 1)
30
31
assert_equal(result[0]['location']['range']['end']['line'], 2)
32
assert_equal(result[0]['location']['range']['end']['column'], 28)
33
end
34
35
def test_youtube
36
text = "a\n<iframe .. youtube.com ... </iframe>x\nasdf".split "\n"
37
result = Gtn::Linter.youtube_bad(text)
38
39
assert_equal(result[0]['location']['range']['start']['line'], 2)
40
assert_equal(result[0]['location']['range']['start']['column'], 1)
41
42
assert_equal(result[0]['location']['range']['end']['line'], 2)
43
assert_equal(result[0]['location']['range']['end']['column'], text[1].length)
44
end
45
46
def test_external_gtn_link
47
url = 'https://training.galaxyproject.org/training-material/topics/admin/tutorials/ansible-galaxy/tutorial.html'
48
text = "a\na[test](#{url})b\nasdf".split "\n"
49
# 1234567890
50
result = Gtn::Linter.link_gtn_tutorial_external(text)
51
52
assert_equal(result[0]['location']['range']['start']['line'], 2)
53
assert_equal(result[0]['location']['range']['start']['column'], 9)
54
55
assert_equal(result[0]['location']['range']['end']['line'], 2)
56
assert_equal(result[0]['location']['range']['end']['column'], 9 + url.length)
57
58
assert_equal(result[0]['suggestions'][0]['text'],
59
'{% link topics/admin/tutorials/ansible-galaxy/tutorial.md %}')
60
assert_equal(result[0]['suggestions'][0]['range']['start']['line'], 2)
61
assert_equal(result[0]['suggestions'][0]['range']['start']['column'], 9)
62
assert_equal(result[0]['suggestions'][0]['range']['end']['line'], 2)
63
assert_equal(result[0]['suggestions'][0]['range']['end']['column'], 9 + url.length)
64
end
65
66
def test_external_gtn_link_slides
67
url = 'https://training.galaxyproject.org/training-material/topics/admin/tutorials/ansible-galaxy/slides.html'
68
text = "a\na[test](#{url})b\nasdf".split "\n"
69
# 1234567890
70
result = Gtn::Linter.link_gtn_slides_external(text)
71
72
assert_equal(result[0]['location']['range']['start']['line'], 2)
73
assert_equal(result[0]['location']['range']['start']['column'], 9)
74
75
assert_equal(result[0]['location']['range']['end']['line'], 2)
76
assert_equal(result[0]['location']['range']['end']['column'], 9 + url.length)
77
78
assert_equal(result[0]['suggestions'][0]['text'],
79
'{% link topics/admin/tutorials/ansible-galaxy/slides.html %}')
80
assert_equal(result[0]['suggestions'][0]['range']['start']['line'], 2)
81
assert_equal(result[0]['suggestions'][0]['range']['start']['column'], 9)
82
assert_equal(result[0]['suggestions'][0]['range']['end']['line'], 2)
83
assert_equal(result[0]['suggestions'][0]['range']['end']['column'], 9 + url.length)
84
end
85
86
def test_doi
87
text = "a\nfrom [Pedro Larrañaga, 2006](https://doi.org/10.1093/bib/bbk007).\nasdf".split "\n"
88
# 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
89
result = Gtn::Linter.check_dois(text)
90
91
assert_equal(result[0]['location']['range']['start']['line'], 2)
92
assert_equal(result[0]['location']['range']['start']['column'], 6)
93
94
assert_equal(result[0]['location']['range']['end']['line'], 2)
95
assert_equal(result[0]['location']['range']['end']['column'], 64 + 2) # Inexplicable.
96
97
assert_equal(result[0]['suggestions'][0]['text'], '{% cite ... %}')
98
assert_equal(result[0]['suggestions'][0]['range']['start']['line'], 2)
99
assert_equal(result[0]['suggestions'][0]['range']['start']['column'], 6)
100
assert_equal(result[0]['suggestions'][0]['range']['end']['line'], 2)
101
assert_equal(result[0]['suggestions'][0]['range']['end']['column'], 64 + 2)
102
103
text = "a\nfrom [Pedro Larrañaga, 2006](https://doi.org/10.5281/zenodo.10238184212).\nasdf".split "\n"
104
# 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
105
result = Gtn::Linter.check_dois(text)
106
assert_equal(result.length, 0)
107
end
108
109
def testnew_title_
110
[
111
%w[tip Tip],
112
%w[details Details],
113
%w[hands_on Hands-on]
114
].each do |key, key_text|
115
text = "a\n> ### {% icon #{key} %} #{key_text}: Blah\n> #{key_text} text\n{: .#{key}}".split "\n"
116
# 12345678901234567890123456789012345678901234567890
117
result = Gtn::Linter.new_more_accessible_boxes(text)
118
119
assert_equal(result[0]['location']['range']['start']['line'], 2)
120
assert_equal(result[0]['location']['range']['start']['column'], 3)
121
122
assert_equal(result[0]['location']['range']['end']['line'], 2)
123
assert_equal(result[0]['location']['range']['end']['column'], 24 + key.length + key_text.length + 1)
124
125
k2 = key.gsub(/_/, '-')
126
assert_equal(result[0]['suggestions'][0]['text'], "<#{k2}-title>Blah</#{k2}-title>")
127
end
128
129
# assert_equal(result[0]['suggestions'][0]['range']['start']['line'], 2)
130
# assert_equal(result[0]['suggestions'][0]['range']['start']['column'], 9)
131
# assert_equal(result[0]['suggestions'][0]['range']['end']['line'], 2)
132
# assert_equal(result[0]['suggestions'][0]['range']['end']['column'], 9 + url.length)
133
end
134
end
135
136