fdlint 0.2.0.pre → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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