@@ -15,10 +15,17 @@ def valid_name
1515 'valid_name'
1616 end
1717
18- def valid_url
19- 'http ://github. com'
18+ def valid_url ( ext = 'rb' )
19+ "https ://raw.githubusercontent. com/ruby/ruby/master/benchmark/irb_color. #{ ext } "
2020 end
2121
22+ def valid_ruby
23+ <<~RUBY
24+ def msdasd
25+ puts 54544
26+ end
27+ RUBY
28+ end
2229 test '#validate! @name presence, uniqueness and allowed characters' do
2330 bench = new_bench ( '' )
2431 bench . validate!
@@ -30,9 +37,10 @@ def valid_url
3037 repo_id : 77
3138 )
3239
40+ Net ::HTTP . stubs ( :get ) . returns ( valid_ruby )
3341 bench = new_bench ( 'taken_name' , valid_url , 'asdasd' )
3442 bench . validate!
35- assert_includes bench . errors , err ( 'name_already_taken' )
43+ assert_includes bench . errors , err ( 'name_already_taken' , names : 'taken_name' )
3644
3745 bench = new_bench ( '/invalid name' , valid_url , 'dads' )
3846 bench . validate!
@@ -55,6 +63,7 @@ def valid_url
5563 assert_includes bench . errors , err ( 'missing_sha' )
5664
5765 bench = new_bench ( valid_name , valid_url , 'doesntexist' )
66+ Net ::HTTP . stubs ( :get ) . returns ( valid_ruby )
5867 VCR . use_cassette ( 'github ruby doesntexist' ) do
5968 bench . validate!
6069 end
@@ -63,6 +72,7 @@ def valid_url
6372
6473 test '#validate! when everything is valid' do
6574 bench = new_bench ( valid_name , valid_url , '6ffef8d459' )
75+ Net ::HTTP . stubs ( :get ) . returns ( valid_ruby )
6676 VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
6777 bench . validate!
6878 end
@@ -73,6 +83,7 @@ def valid_url
7383
7484 test "#validate! @sha2 existence on github only if it's given" do
7585 bench = new_bench ( valid_name , valid_url , '6ffef8d459' , 'doesntexist' )
86+ Net ::HTTP . stubs ( :get ) . returns ( valid_ruby )
7687 VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
7788 VCR . use_cassette ( 'github ruby doesntexist' ) do
7889 bench . validate!
@@ -83,6 +94,7 @@ def valid_url
8394
8495 test '#validate! allows 2 shas' do
8596 bench = new_bench ( valid_name , valid_url , '6ffef8d459' , 'fe0ddf0e58' )
97+ Net ::HTTP . stubs ( :get ) . returns ( valid_ruby )
8698 VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
8799 VCR . use_cassette ( 'github ruby fe0ddf0e58' ) do
88100 bench . validate!
@@ -96,4 +108,68 @@ def valid_url
96108 second_commit_date = bench . commits . second . commit . committer . date
97109 assert first_commit_date < second_commit_date
98110 end
111+
112+ test '#validate! yaml file and benchmark names inside of it are validated' do
113+ yaml = <<~YAML
114+ prelude: |
115+ str1 = [*"a".."z",*"0".."9"].join("")
116+ str10 = str1 * 10
117+ str100 = str10 * 10
118+ str1000 = str100 * 10
119+ benchmark:
120+ upcase-1: str1.upcase
121+ upcase-10: str10.upcase
122+ upcase-100: str100.upcase
123+ upcase-1000: str1000.upcase
124+ YAML
125+ Net ::HTTP . stubs ( :get ) . returns ( yaml )
126+ bench = new_bench ( valid_name , valid_url ( 'yml' ) , '6ffef8d459' )
127+ VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
128+ bench . validate!
129+ end
130+ expected = %w{ upcase-1 upcase-10 upcase-100 upcase-1000 }
131+ assert bench . valid?
132+ assert_equal bench . names . size , expected . size
133+ expected . each { |e | assert_includes bench . names , e }
134+ end
135+
136+ test '#validate! yaml syntax and benchmark-driver format' do
137+ yaml = <<~YAML
138+ prelude: |
139+ str1 = [*"a".."z",*"0".."9"].join("")
140+ str10 = str1 * 10
141+ str100 = str10 * 10
142+ str1000 = str100 * 10
143+ YAML
144+ Net ::HTTP . stubs ( :get ) . returns ( yaml )
145+ bench = new_bench ( valid_name , valid_url ( 'yml' ) , '6ffef8d459' )
146+ VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
147+ bench . validate!
148+ end
149+ assert_not bench . valid?
150+ assert_includes bench . errors , err ( 'yaml_file_without_benchmarks' )
151+
152+ yaml = 'asddsf: weads:'
153+ Net ::HTTP . stubs ( :get ) . returns ( yaml )
154+ bench = new_bench ( valid_name , valid_url ( 'yml' ) , '6ffef8d459' )
155+ VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
156+ bench . validate!
157+ end
158+ assert_not bench . valid?
159+ assert_includes bench . errors , err ( 'invalid_yaml' )
160+ end
161+
162+ test '#validate! ruby code' do
163+ bad_ruby = <<~RUBY
164+ def txxsr(
165+ [1,2,].each do
166+ RUBY
167+ Net ::HTTP . stubs ( :get ) . returns ( bad_ruby )
168+ bench = new_bench ( valid_name , valid_url , '6ffef8d459' )
169+ VCR . use_cassette ( 'github ruby 6ffef8d459' ) do
170+ bench . validate!
171+ end
172+ assert_not bench . valid?
173+ assert_includes bench . errors . map ( &:strip ) , err ( 'invalid_ruby_code' , lines : bad_ruby ) . strip
174+ end
99175end
0 commit comments