fdlint 0.2.0.pre → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +36 -15
  4. data/Rakefile +1 -1
  5. data/bin/fdlint +30 -9
  6. data/lib/fdlint/cli.rb +62 -10
  7. data/lib/fdlint/helper/logger.rb +1 -1
  8. data/lib/fdlint/log_entry.rb +14 -0
  9. data/lib/fdlint/parser/html/html_parser.rb +10 -12
  10. data/lib/fdlint/parser/html/query.rb +64 -50
  11. data/lib/fdlint/parser/html/struct.rb +20 -3
  12. data/lib/fdlint/parser/parser_visitable.rb +11 -5
  13. data/lib/fdlint/printer/base_printer.rb +6 -0
  14. data/lib/fdlint/printer/console_printer.rb +15 -23
  15. data/lib/fdlint/rule.rb +4 -4
  16. data/lib/fdlint/support/core/object.rb +6 -0
  17. data/lib/fdlint/support/core_ext.rb +1 -0
  18. data/lib/fdlint/validator.rb +60 -8
  19. data/lib/fdlint/version.rb +1 -1
  20. data/lib/hook/git_pre_commit +18 -0
  21. data/rules.d/css.rule.rb +1 -1
  22. data/rules.d/filename.rule.rb +3 -1
  23. data/rules.d/html.rule.rb +45 -32
  24. data/rules.d/js.rule.rb +2 -2
  25. data/test/all_tests.rb +28 -42
  26. data/test/css/mac_line_end_support_test.rb +10 -12
  27. data/test/css/parser_test.rb +4 -5
  28. data/test/css/rule/check_encoding_test.rb +7 -8
  29. data/test/css/rule/check_list_rule_test.rb +85 -102
  30. data/test/css/rule/file_name_test.rb +18 -39
  31. data/test/default_test.rb +1 -14
  32. data/test/fixtures/css/ad.css +0 -0
  33. data/test/fixtures/css/adver/test.css +0 -0
  34. data/test/fixtures/css/camelCase.css +0 -0
  35. data/test/fixtures/css/min/ad.css +0 -0
  36. data/test/fixtures/css/min/ad.min.css +0 -0
  37. data/test/fixtures/html/mixed_log_levels.html +1 -0
  38. data/test/fixtures/html/mixed_types.html +3 -0
  39. data/test/helper.rb +116 -16
  40. data/test/html/mixed_type_test.rb +14 -20
  41. data/test/html/parser/parse_comment_test.rb +4 -4
  42. data/test/html/parser/parse_dtd_test.rb +7 -7
  43. data/test/html/parser/parse_script_tag_test.rb +21 -14
  44. data/test/html/parser/parse_with_auto_close_tag_test.rb +12 -10
  45. data/test/html/parser/parse_with_diff_case_test.rb +8 -9
  46. data/test/html/parser/parse_with_emtpy_test.rb +5 -3
  47. data/test/html/parser/parse_with_multi_children_test.rb +4 -4
  48. data/test/html/parser/parse_with_multi_line_test.rb +5 -5
  49. data/test/html/parser/parse_with_prop_test.rb +10 -10
  50. data/test/html/parser/parse_with_script_tag_test.rb +4 -4
  51. data/test/html/parser/parse_with_selfclosing_test.rb +11 -11
  52. data/test/html/parser/parse_with_simple_tag_test.rb +7 -7
  53. data/test/html/parser/parse_with_simple_tree_test.rb +6 -6
  54. data/test/html/parser/parse_with_style_tag_test.rb +4 -4
  55. data/test/html/parser/parse_with_text_test.rb +7 -7
  56. data/test/html/parser_test.rb +19 -19
  57. data/test/html/query_test.rb +18 -18
  58. data/test/html/rule/check_block_level_element_test.rb +22 -24
  59. data/test/html/rule/check_button_test.rb +9 -9
  60. data/test/html/rule/check_css_in_head_test.rb +11 -32
  61. data/test/html/rule/check_dtd_test.rb +15 -11
  62. data/test/html/rule/check_form_element_name_test.rb +10 -9
  63. data/test/html/rule/check_head_contain_meta_and_title_test.rb +28 -34
  64. data/test/html/rule/check_hyperlink_with_target_test.rb +23 -17
  65. data/test/html/rule/check_hyperlink_with_title_test.rb +13 -20
  66. data/test/html/rule/check_id_n_class_downcase_test.rb +8 -19
  67. data/test/html/rule/check_img_with_alt_prop_test.rb +11 -12
  68. data/test/html/rule/check_no_import_css_test.rb +20 -20
  69. data/test/html/rule/check_prop_have_value_test.rb +9 -13
  70. data/test/html/rule/check_prop_seperator_test.rb +9 -13
  71. data/test/html/rule/check_style_prop_test.rb +7 -12
  72. data/test/html/rule/check_tag_closed_test.rb +15 -40
  73. data/test/html/rule/check_tag_downcase_test.rb +31 -28
  74. data/test/html/rule/check_unescape_char_test.rb +17 -17
  75. data/test/html/rule/check_unique_import_test.rb +15 -33
  76. data/test/html/rule_test.rb +2 -6
  77. data/test/js/expr/expr.rb +1 -1
  78. data/test/js/expr/left_hand.rb +1 -1
  79. data/test/js/expr/operate.rb +1 -1
  80. data/test/js/expr/primary.rb +1 -1
  81. data/test/js/parser_test.rb +3 -6
  82. data/test/js/rule/alert_check_test.rb +5 -19
  83. data/test/js/rule/base_test.rb +5 -19
  84. data/test/js/rule/jq_check_test.rb +26 -58
  85. data/test/js/rule/nest_try_catch_test.rb +26 -43
  86. data/test/js/rule/new_object_and_new_array_test.rb +5 -21
  87. data/test/js/rule/no_eval_test.rb +3 -19
  88. data/test/js/rule/no_global_test.rb +34 -73
  89. data/test/js/rule/private_method_check_test.rb +14 -43
  90. data/test/js/rule/semicolon_test.rb +18 -47
  91. data/test/js/rule/stat_if_with_brace_test.rb +30 -53
  92. data/test/js/rule/stat_if_with_muti_else_test.rb +36 -53
  93. data/test/js/rule/use_strict_equal_test.rb +16 -29
  94. data/test/js/rule_test.rb +2 -4
  95. data/test/js/stat/if.rb +1 -1
  96. data/test/js/stat/iter.rb +1 -1
  97. data/test/js/stat/stat.rb +1 -1
  98. data/test/js/stat/switch.rb +1 -1
  99. data/test/js/stat/try.rb +1 -1
  100. data/test/js/stat/var.rb +1 -1
  101. data/test/parser_visitable_test.rb +14 -36
  102. data/test/position_info_test.rb +4 -5
  103. data/test/runner/log_level_test.rb +30 -25
  104. metadata +11 -14
  105. data/lib/fdlint/file_validator.rb +0 -38
  106. data/lib/fdlint/parser/html/rule/check_tag_rule.rb +0 -80
  107. data/test/css/rule/compression_test.rb +0 -53
  108. data/test/html/rule/check_class_count_test.rb +0 -36
  109. data/test/html/rule/check_html_template_test.rb +0 -103
  110. data/test/js/rule/all_test.rb +0 -23
  111. data/test/js/rule/file_checker_test.rb +0 -131
  112. data/test/rule_dsl/dsl_basic_test.rb +0 -91
  113. data/test/rule_dsl/importing_test.rb +0 -48
  114. data/test/test_helper.rb +0 -9
@@ -2,164 +2,147 @@
2
2
 
3
3
  require_relative '../../helper'
4
4
 
5
- require 'node'
6
- require 'css/struct'
7
- require 'css/rule/checklist'
5
+ require 'fdlint/parser/node'
6
+ require 'fdlint/parser/css/struct'
8
7
 
9
- module XRayTest
8
+ module FdlintTest
10
9
  module CSS
11
10
  module Rule
12
11
 
13
12
  class CheckListRuleTest < Test::Unit::TestCase
14
13
 
15
- include XRay::CSS, XRay::CSS::Rule, XRay::Rule, XRay::Context
16
-
17
- Node = XRay::Node
18
- XRay::Rule.import_all
14
+ Node = Fdlint::Parser::Node
15
+ Fdlint::Rule.rules
19
16
 
20
17
  def setup
21
- self.scope = :page
18
+ @file = nil
22
19
  end
23
20
 
24
21
  # selector
25
22
 
26
23
  def test_check_selector_with_id
27
24
 
28
- selector = Node.new '#mydiv a'
29
- message, level = check_selector_with_id selector
25
+ # 路径中不包含 /lib/ 文件会被辨认为页面级别样式
26
+ # 此时检查 selecotr id 的规则才会生效
27
+ css_file_level :page
30
28
 
31
- assert_equal :error, level
29
+ parse :selector, '#mydiv a' do |results|
30
+ assert_has_result results, [:error, '页面级别样式不使用id']
31
+ end
32
32
 
33
- selector = Node.new 'ul #mydiv dt'
34
- ret = check_selector_with_id selector
35
- assert_not_nil ret
33
+ parse :selector, 'ul #mydiv dt' do |results|
34
+ assert_has_result results, [:error, '页面级别样式不使用id']
35
+ end
36
36
 
37
- selector = Node.new '.guide-part ul li'
38
- ret = check_selector_with_id selector
39
- assert_nil ret
37
+ parse :selector, '.guide-part ul li' do |results|
38
+ assert results.blank?
39
+ end
40
40
  end
41
41
 
42
42
  def test_check_selector_with_global_tag
43
- selector = Node.new 'a'
44
- message, level = check_selector_with_global_tag selector
45
-
46
- assert_equal :error, level
43
+ # 路径中不包含 /lib/ 文件会被辨认为页面级别样式
44
+ # 此时检查 global selecotr 的规则才会生效
45
+ css_file_level :page
47
46
 
48
- selector = Node.new 'body'
49
- message, level = check_selector_with_global_tag selector
47
+ parse :selector, 'a' do |results|
48
+ assert_has_result results, [:error, '页面级别样式不能全局定义标签样式']
49
+ end
50
50
 
51
- assert_equal :error, level
51
+ parse :selector, 'body' do |results|
52
+ assert_has_result results, [:error, '页面级别样式不能全局定义标签样式']
53
+ end
52
54
  end
53
55
 
54
56
  def test_check_selector_level
55
- selector = Node.new '.mypart .mysubpart ul li a'
56
- message, level = check_selector_level selector
57
-
58
- assert_equal :error, level
59
-
60
- selector = Node.new '.mypart ul li a'
61
- ret = check_selector_level selector
62
- assert_nil ret
63
-
64
- selector = Node.new 'html>div.mypart ul li a'
65
- message, level = check_selector_level selector
66
- assert_equal :error, level
67
-
68
- selector = Node.new 'div.mypart ul li a'
69
- ret = check_selector_level selector
70
- assert_nil ret
71
- end
57
+ parse :selector, '.mypart .mysubpart ul li a' do |results|
58
+ assert_has_result results, [:error, 'CSS级联深度不能超过4层']
59
+ end
72
60
 
73
- def test_check_selector_with_star
74
- selector = Node.new '* html'
75
- message, level = check_selector_with_star selector
61
+ parse :selector, 'html>div.mypart ul li a' do |results|
62
+ assert_has_result results, [:error, 'CSS级联深度不能超过4层']
63
+ end
64
+
65
+ parse :selector, '.mypart ul li a' do |results|
66
+ assert results.blank?
67
+ end
76
68
 
77
- assert_equal :error, level
69
+ parse :selector, 'div.mypart ul li a' do |results|
70
+ assert results.blank?
71
+ end
78
72
  end
79
73
 
80
- def test_check_declarations_sequence
81
-
74
+ def test_check_selector_with_star
75
+ parse :selector, '* html' do |results|
76
+ assert_has_result results, [:error, '禁止使用星号选择符']
77
+ end
82
78
  end
83
79
 
84
80
  # declaration
85
81
 
86
82
  def test_check_good_declaration_font
87
- sel = Node.new 'font'
88
- expr = Node.new 'Arial'
89
- dec = Declaration.new(sel, expr)
90
-
91
- message, level = check_declaration_font dec
92
- assert_equal nil, level
83
+ parse :declaration, 'font: Arail;' do |results|
84
+ assert results.blank?
85
+ end
93
86
  end
94
87
 
95
88
  def test_check_declaration_font
96
- sel = Node.new 'font'
97
- expr = Node.new '宋体'
98
- dec = Declaration.new(sel, expr)
99
-
100
- message, level = check_declaration_font dec
101
- assert_equal :error, level
102
- end
103
-
104
- def test_check_redefine_a_hover_color
105
- selector = Node.new 'a:hover'
106
-
107
- prop = Node.new 'color'
108
- expr = Node.new '#f00'
109
- dec = Declaration.new(prop, expr)
110
-
111
- ruleset = RuleSet.new(selector, [dec])
112
-
113
- message, level = check_ruleset_redefine_a_hover_color ruleset
114
- assert_equal :error, level
89
+ parse :declaration, 'font: 宋体;' do |results|
90
+ assert_has_result results, [:error, '字体名称中的中文必须用ascii字符表示']
91
+ end
115
92
  end
116
93
 
117
- def test_check_redefine_lib_css
118
- selector = Node.new '.fd-hide'
119
- message, level = check_selector_redefine_lib_css selector
120
- assert_equal :error, level
121
-
122
- @scope = :lib
123
- ret = check_selector_redefine_lib_css selector
124
- assert_nil ret
125
- end
126
-
127
94
  def test_check_property_hack
128
- props = %w(_background +font-size *color)
95
+ props = %w(_background +font-size *color d\isplay)
129
96
  props.each do |prop|
130
- prop = Node.new prop
131
- message, level = check_property_hack prop
132
- assert_equal :error, level
97
+ parse :property, prop do |results|
98
+ assert_has_result results, [:error, '合理使用hack']
99
+ end
133
100
  end
134
101
  end
135
102
 
136
- def test_check_property_slash_hack
137
- prop = Node.new 'd\isplay'
138
- message, level = check_property_hack prop
139
- assert_equal :error, level
140
- end
141
-
142
103
  def test_check_selector_using_hack
143
- selector = Node.new 'html*'
144
- message, level = check_selector_using_hack selector
145
- assert_equal :error, level
104
+ parse :selector, 'html*' do |results|
105
+ assert_has_result results, [:error, '合理使用hack']
106
+ end
146
107
  end
147
108
 
148
109
  def test_check_value_use_css_expression
149
- expr = Node.new 'expression(onfocus=this.blur())'
150
- message, level = check_value_use_css_expression expr
151
- assert_equal :error, level
110
+ parse :value, 'expression(onfocus=this.blur())' do |results|
111
+ assert_has_result results, [:error, '禁止使用CSS表达式']
112
+ end
152
113
  end
153
114
 
154
115
  def test_check_value_use_hack
155
116
  exprs = %w(9px\0 #000\9)
156
117
  exprs.each do |expr|
157
- expr = Node.new expr
158
- message, level = check_value_use_hack expr
159
- assert_equal :error, level
118
+ parse :value, expr do |results|
119
+ assert_has_result results, [:error, '合理使用hack']
120
+ end
160
121
  end
161
122
  end
162
123
 
124
+ private
125
+
126
+ def css_file_level level
127
+ if level == :page
128
+ @file = File.new( '.' )
129
+ elsif level == :lib
130
+ @file = File.new( File.join FIXTURE_PATH, 'css/lib/' )
131
+ end
132
+ end
133
+
134
+ def parse type, text
135
+ parser = Fdlint::Parser::CSS::CssParser.new( text ).tap do |parser|
136
+ visitors = Fdlint::Rule.for_css_content.map do |validation|
137
+ validation.to_visitor file: @file
138
+ end
139
+ parser.add_visitors visitors
140
+ parser.send "parse_#{type}"
141
+ end
142
+
143
+ yield parser.results.flatten
144
+ end
145
+
163
146
  end
164
147
 
165
148
  end
@@ -2,72 +2,51 @@
2
2
 
3
3
  require_relative '../../helper'
4
4
 
5
- require 'node'
6
- require 'css/struct'
7
- require 'css/rule/checklist'
5
+ require 'fdlint/parser/node'
6
+ require 'fdlint/parser/css/struct'
8
7
 
9
- module XRayTest
8
+ module FdlintTest
10
9
  module CSS
11
10
  module Rule
12
11
 
13
12
  class CheckFileNameTest < Test::Unit::TestCase
14
13
 
15
- include XRay::Rule
16
-
17
14
  def setup
15
+ Fdlint::Rule.all
18
16
  end
19
17
 
20
18
  def test_file_name_with_ad
21
- check 'css/ad.css' do |results|
22
- expect_err = ["路径和文件名中不应该出现ad", :error]
23
- assert_equal [expect_err], results, "文件名中不应出现ad"
19
+ check fixture_path('css/ad.css') do |results|
20
+ assert_has_result results, [:error, "路径和文件名中不应该出现ad"]
24
21
  end
25
22
  end
26
23
 
27
24
  def test_path_name_with_ad
28
- check "/css/adver/test.css" do |results|
29
- expect_err = ["路径和文件名中不应该出现ad", :error]
30
- assert_equal [expect_err], results, "文件路径中不应出现ad"
31
- end
32
- end
33
-
34
- def test_file_name_without_ad
35
- check 'not-exsiting-file.css' do |results|
36
- assert results.empty?, "文件名中不应出现ad,包括路径"
25
+ check fixture_path( "css/adver/test.css" ) do |results|
26
+ assert_has_result results, [:error, "路径和文件名中不应该出现ad"]
37
27
  end
38
28
  end
39
29
 
40
30
  def test_file_name_with_underscore
41
- check 'not_exsiting_file.css' do |results|
42
- expect_err = ["文件名中单词的分隔符应该使用中横线“-”", :error]
43
- assert_equal [expect_err], results, "文件名中单词的分隔符应该使用中横线“-”"
31
+ check fixture_path( 'css/using_id.css' ) do |results|
32
+ assert_has_result results, [:warn, "文件名中的连字符建议使用“-”而不是“_”"]
44
33
  end
45
34
  end
46
35
 
47
36
  def test_file_name_with_upcase
48
- check 'someFile.css' do |results|
49
- expect_err = ["文件夹和文件命名必须用小写字母", :error]
50
- assert_equal [expect_err], results, "文件夹和文件命名必须用小写字母"
37
+ check fixture_path( 'css/camelCase.css' ) do |results|
38
+ assert_has_result results, [:error, "文件夹和文件命名必须用小写字母"]
51
39
  end
52
40
  end
53
41
 
54
- def test_dir_name_with_minus
55
- check 'test-post-offer/main.css' do |results|
56
- expect_err = ["文件夹只有需要版本区分时才可用中横线分隔,如fdev-v3", :error]
57
- assert_equal [expect_err], results, "文件夹只有需要版本区分时才可用中横线分隔"
58
- end
59
- end
42
+ protected
60
43
 
61
- def test_dir_name_with_version_minus
62
- check 'test-2/main.css' do |results|
63
- assert results.empty?, "目录名字中带有版本号时可以用中横线"
44
+ def check(file, &block)
45
+ Fdlint::Validator.new( file ).tap do |validator|
46
+ validator.validate_file
47
+ yield validator.results
48
+ end
64
49
  end
65
- end
66
-
67
- protected
68
- def check(file, &block)
69
- yield check_css_file(file)
70
- end
71
50
 
72
51
  end
73
52
 
data/test/default_test.rb CHANGED
@@ -1,14 +1 @@
1
- require 'test_helper'
2
-
3
- class DefaultTest < Test::Unit::TestCase
4
-
5
- def setup
6
- end
7
-
8
- def teardown
9
- end
10
-
11
- def test_the_truth
12
- assert true
13
- end
14
- end
1
+ require 'all_tests'
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,5 @@
1
1
  <html>
2
+ <link rel="stylesheet" href="test.css"/>
2
3
  <body>
3
4
  <img src="test.jpg" />
4
5
  </body>
@@ -4,6 +4,9 @@
4
4
  <script>
5
5
  var a = 1;
6
6
  </script>
7
+ <script>
8
+ var b = 1;
9
+ </script>
7
10
  </head>
8
11
  <body>
9
12
  <style>
data/test/helper.rb CHANGED
@@ -9,33 +9,133 @@ end
9
9
  $LOAD_PATH << File.join(File.dirname(__FILE__), '../lib')
10
10
 
11
11
  require 'test/unit'
12
- require 'node'
13
- require 'log_entry.rb'
14
- require 'runner'
15
12
  require 'pathname'
16
13
  require 'logger'
17
14
 
15
+ require 'fdlint'
16
+
18
17
  FIXTURE_ABS_PATH = File.expand_path(File.join( File.dirname(__FILE__) , '/fixtures' ))
19
18
  FIXTURE_REL_PATH = Pathname.new(FIXTURE_ABS_PATH).relative_path_from(Pathname.new(File.expand_path '.'))
20
19
  FIXTURE_PATH = FIXTURE_REL_PATH
21
20
 
22
- XRay::Rule.import_all
23
-
24
- module XRayTest
25
- class Logger < ::Logger
26
- def initialize
27
- super(STDOUT)
28
- debug = ARGV.include? '-d'
29
- self.level = debug ? Logger::INFO : Logger::WARN
30
- end
31
- end
32
- end
33
-
34
21
  def has_ruby?(ver)
35
22
  not `which ruby#{ver}`.empty?
36
23
  end
37
24
 
38
25
  def fixture(path)
39
- IO.read File.join( FIXTURE_PATH, path )
26
+ IO.read fixture_path( path )
27
+ end
28
+
29
+ def fixture_path( path )
30
+ File.join( FIXTURE_PATH, path )
31
+ end
32
+
33
+ def assert_has_result( results, condition, msg=nil)
34
+ level, text = *condition
35
+ assert(
36
+ results.index do |ret|
37
+ ret.level == level && ret.message == text
38
+ end,
39
+ msg
40
+ )
41
+ end
42
+
43
+ def assert_not_has_result( results, condition, msg=nil)
44
+ level, text = *condition
45
+ assert_nil(
46
+ results.index do |ret|
47
+ ret.level == level && ret.message == text
48
+ end,
49
+ msg
50
+ )
40
51
  end
41
52
 
53
+ module FdlintTest
54
+
55
+ module RuleTest
56
+
57
+ def self.extended(klass)
58
+ def klass.included(cls)
59
+ cls.send :include, FdlintTest::RuleTest
60
+ end
61
+ end
62
+
63
+ def self.included(klass)
64
+ klass.send :extend, ClassMethods
65
+ klass.send :include, InstanceMethods
66
+ end
67
+
68
+ module ClassMethods
69
+
70
+ def check_rule expect, &block
71
+ @expect = expect
72
+ yield
73
+ end
74
+
75
+ def should_with_result expect=@expect, &block
76
+ level, msg = *expect
77
+ texts(&block).each_with_index do |src, i|
78
+ define_method "test_should_with_result_#{msg}_#{i}_#{src[0,20]}" do
79
+ parse src do |results|
80
+ assert_has_result results, expect, msg
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ def should_without_result expect=@expect, &block
87
+ level, msg = *expect
88
+ texts(&block).each_with_index do |src, i|
89
+ define_method "test_should_without_result_#{msg}_#{i}" do
90
+ parse src do |results|
91
+ assert_not_has_result results, expect, msg
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ def texts( &block )
98
+ texts = block.call
99
+ texts = [texts] if texts.is_a? String
100
+ texts
101
+ end
102
+ end
103
+
104
+ module InstanceMethods
105
+ def parse text, &block
106
+ Fdlint::Validator.new( nil, :text => text, :syntax => syntax ).validate.tap do |results|
107
+ yield results if block_given?
108
+ end
109
+ end
110
+ end
111
+
112
+ end
113
+
114
+ module HTML
115
+ include Fdlint::Parser::HTML
116
+ extend FdlintTest::RuleTest
117
+
118
+ def parser( text )
119
+ @parser ||= HtmlParser.new(text)
120
+ end
121
+
122
+ def syntax
123
+ :html
124
+ end
125
+
126
+ end
127
+
128
+ module JS
129
+ include Fdlint::Parser::JS
130
+ extend FdlintTest::RuleTest
131
+
132
+ def parser( text )
133
+ @parser ||= JsParser.new(text)
134
+ end
135
+
136
+ def syntax
137
+ :js
138
+ end
139
+
140
+ end
141
+ end
@@ -1,32 +1,26 @@
1
1
  # encoding: utf-8
2
2
  require_relative '../helper'
3
- require 'html/parser'
4
- require 'html/query'
3
+ require 'fdlint/parser/html/html_parser'
4
+ require 'fdlint/parser/html/query'
5
5
 
6
- module XRayTest
6
+ module FdlintTest
7
7
  module HTML
8
8
 
9
9
  class MixedTypeTest < Test::Unit::TestCase
10
10
 
11
- def setup
12
- @runner = ::XRay::Runner.new
13
- end
14
-
15
- def test_check_html_script_and_style
16
- html = %Q{<div class="mod">
17
- <script> var a=1; </script>
18
- <style>.mod {_font:arial;}</style>
19
- </div>}
11
+ include FdlintTest::HTML
20
12
 
21
- results = @runner.check_html( html )
22
- assert results.any? {|ret| ret.message == '必须存在文档类型声明' }
23
- assert results.any? {|ret| ret.message == '不允许使用全局变量' && ret.row ==2 && ret.column == 10 }
24
- assert results.any? {|ret| ret.message == '合理使用hack' && ret.row == 3 && ret.column == 14 }
25
- end
13
+ def test_check_html_script_and_style
14
+ src = %Q{<div class="mod">
15
+ <script> var a=1; </script>
16
+ <style>.mod {_font:arial;}</style>
17
+ </div>}
26
18
 
27
- private
28
- def parse(html)
29
- ::XRay::HTML::Parser.parse html
19
+ parse src do |results|
20
+ assert_has_result results, [:error, '必须存在文档类型声明']
21
+ assert_has_result results, [:error, '禁止使用未定义的变量(或全局变量)']
22
+ assert_has_result results, [:error, '合理使用hack']
23
+ end
30
24
  end
31
25
 
32
26
  end
@@ -1,13 +1,13 @@
1
1
  require_relative '../../helper'
2
2
 
3
- module XRayTest
3
+ module FdlintTest
4
4
  module HTML
5
5
  module Parser
6
6
 
7
7
  class ParseCommentTest < Test::Unit::TestCase
8
8
 
9
- include XRay::HTML
10
-
9
+ include Fdlint::Parser::HTML
10
+
11
11
  def test_simple_comment
12
12
  parse('<!--content-->') do |e|
13
13
  assert_equal CommentElement.new('content'), e
@@ -37,7 +37,7 @@ module XRayTest
37
37
  end
38
38
 
39
39
  def parse(src, &block)
40
- XRay::HTML::Parser.parse(src, &block)
40
+ Fdlint::Parser::HTML::HtmlParser.parse(src, &block)
41
41
  end
42
42
 
43
43
  end
@@ -1,16 +1,16 @@
1
1
  require_relative '../../helper'
2
2
 
3
- module XRayTest
3
+ module FdlintTest
4
4
  module HTML
5
5
  module Parser
6
6
 
7
7
  class ParseDTDTest < Test::Unit::TestCase
8
-
9
- include XRay::HTML
8
+
9
+ include Fdlint::Parser::HTML
10
10
 
11
11
  def test_parse_html5_dtd
12
12
  parse('<!DOCTYPE html>') do |e|
13
- assert_equal DTDElement.new('html'), e
13
+ assert_equal Document.new(DTDElement.new('html')), e
14
14
  end
15
15
  end
16
16
 
@@ -20,9 +20,9 @@ module XRayTest
20
20
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">)
21
21
 
22
22
  parse(src) do |e|
23
- assert_equal DTDElement.new(%q(html
23
+ assert_equal Document.new(DTDElement.new(%q(html
24
24
  PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
25
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd")), e
25
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"))), e
26
26
  end
27
27
  end
28
28
 
@@ -36,7 +36,7 @@ module XRayTest
36
36
  end
37
37
 
38
38
  def parse(src, &block)
39
- XRay::HTML::Parser.parse(src, &block)
39
+ HtmlParser.parse(src, &block)
40
40
  end
41
41
 
42
42
  end