trackler 2.1.0.7 → 2.1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceOfSquaresCalculatorTest.java +9 -9
- data/tracks/java/exercises/gigasecond/src/test/java/GigasecondTest.java +4 -4
- data/tracks/java/exercises/pangram/src/test/java/PangramCheckerTest.java +10 -10
- data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +12 -12
- data/tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java +4 -4
- data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +11 -11
- data/tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java +8 -8
- data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +1 -1
- data/tracks/perl6/.travis.yml +1 -1
- data/tracks/perl6/exercises/bob/example.yaml +19 -0
- data/tracks/perl6/exercises/clock/clock.t +17 -10
- data/tracks/perl6/exercises/clock/example.yaml +7 -5
- data/tracks/perl6/exercises/grade-school/example.yaml +23 -0
- data/tracks/perl6/exercises/leap/example.yaml +6 -0
- data/tracks/perl6/exercises/phone-number/Example.pm +2 -2
- data/tracks/perl6/exercises/phone-number/PhoneNumber.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/example.yaml +12 -0
- data/tracks/perl6/exercises/phone-number/phone-number.t +100 -85
- data/tracks/perl6/exercises/space-age/Example.pm +13 -15
- data/tracks/ruby/README.md +22 -10
- data/tracks/ruby/{HINTS.md → exercises/accumulate/HINTS.md} +0 -0
- data/tracks/ruby/exercises/accumulate/accumulate_test.rb +0 -1
- data/tracks/ruby/exercises/acronym/.meta/generator/acronym_cases.rb +1 -1
- data/tracks/ruby/exercises/acronym/acronym_test.rb +1 -2
- data/tracks/ruby/exercises/all-your-base/.meta/generator/all_your_base_cases.rb +1 -1
- data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +1 -2
- data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
- data/tracks/ruby/exercises/alphametics/.meta/generator/alphametics_cases.rb +1 -1
- data/tracks/ruby/exercises/alphametics/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/alphametics/alphametics_test.rb +1 -2
- data/tracks/ruby/exercises/anagram/.meta/generator/anagram_cases.rb +1 -1
- data/tracks/ruby/exercises/anagram/anagram_test.rb +1 -2
- data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/beer-song/.meta/generator/beer_song_cases.rb +1 -1
- data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
- data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +0 -1
- data/tracks/ruby/exercises/binary-search/binary_search_test.rb +0 -1
- data/tracks/ruby/exercises/binary/.meta/generator/binary_cases.rb +1 -1
- data/tracks/ruby/exercises/binary/binary_test.rb +1 -2
- data/tracks/ruby/exercises/bob/bob_test.rb +0 -1
- data/tracks/ruby/exercises/bowling/.meta/generator/bowling_cases.rb +1 -1
- data/tracks/ruby/exercises/bowling/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/bowling/bowling_test.rb +1 -2
- data/tracks/ruby/exercises/bracket-push/.meta/generator/bracket_push_cases.rb +1 -1
- data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +1 -2
- data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -1
- data/tracks/ruby/exercises/clock/.meta/generator/clock_cases.rb +1 -1
- data/tracks/ruby/exercises/clock/clock_test.rb +1 -2
- data/tracks/ruby/exercises/connect/.meta/generator/connect_cases.rb +1 -1
- data/tracks/ruby/exercises/connect/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/connect/connect_test.rb +1 -2
- data/tracks/ruby/exercises/crypto-square/crypto_square_test.rb +0 -1
- data/tracks/ruby/exercises/custom-set/.meta/generator/custom_set_cases.rb +1 -1
- data/tracks/ruby/exercises/custom-set/custom_set_test.rb +1 -2
- data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
- data/tracks/ruby/exercises/difference-of-squares/.meta/generator/difference_of_squares_cases.rb +1 -1
- data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +1 -2
- data/tracks/ruby/exercises/dominoes/.meta/generator/dominoes_cases.rb +1 -1
- data/tracks/ruby/exercises/dominoes/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -2
- data/tracks/ruby/exercises/etl/.meta/generator/etl_cases.rb +1 -1
- data/tracks/ruby/exercises/etl/etl_test.rb +1 -2
- data/tracks/ruby/exercises/flatten-array/flatten_array_test.rb +0 -1
- data/tracks/ruby/exercises/food-chain/food_chain_test.rb +0 -1
- data/tracks/ruby/exercises/gigasecond/.meta/generator/gigasecond_cases.rb +1 -1
- data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +1 -2
- data/tracks/ruby/exercises/grade-school/grade_school_test.rb +0 -1
- data/tracks/ruby/exercises/grains/.meta/generator/grains_cases.rb +1 -1
- data/tracks/ruby/exercises/grains/grains_test.rb +1 -2
- data/tracks/ruby/exercises/hamming/.meta/generator/hamming_cases.rb +1 -1
- data/tracks/ruby/exercises/hamming/hamming_test.rb +1 -2
- data/tracks/ruby/exercises/hello-world/.meta/generator/hello_world_cases.rb +1 -1
- data/tracks/ruby/exercises/hello-world/.meta/generator/test_template.erb +1 -1
- data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
- data/tracks/ruby/exercises/hexadecimal/hexadecimal_test.rb +0 -1
- data/tracks/ruby/exercises/house/house_test.rb +0 -1
- data/tracks/ruby/exercises/isogram/.meta/generator/isogram_cases.rb +1 -1
- data/tracks/ruby/exercises/isogram/isogram_test.rb +1 -2
- data/tracks/ruby/exercises/kindergarten-garden/kindergarten_garden_test.rb +0 -1
- data/tracks/ruby/exercises/largest-series-product/.meta/generator/largest_series_product_cases.rb +1 -1
- data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +1 -2
- data/tracks/ruby/exercises/leap/.meta/generator/leap_cases.rb +1 -1
- data/tracks/ruby/exercises/leap/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/leap/leap_test.rb +1 -2
- data/tracks/ruby/exercises/linked-list/linked_list_test.rb +0 -1
- data/tracks/ruby/exercises/list-ops/list_ops_test.rb +0 -1
- data/tracks/ruby/exercises/luhn/.meta/generator/luhn_cases.rb +1 -1
- data/tracks/ruby/exercises/luhn/luhn_test.rb +1 -2
- data/tracks/ruby/exercises/matrix/matrix_test.rb +0 -1
- data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
- data/tracks/ruby/exercises/minesweeper/minesweeper_test.rb +0 -1
- data/tracks/ruby/exercises/nth-prime/.meta/generator/nth_prime_cases.rb +1 -1
- data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +1 -2
- data/tracks/ruby/exercises/nucleotide-count/nucleotide_count_test.rb +0 -1
- data/tracks/ruby/exercises/ocr-numbers/.meta/generator/ocr_numbers_cases.rb +1 -1
- data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
- data/tracks/ruby/exercises/octal/octal_test.rb +0 -1
- data/tracks/ruby/exercises/palindrome-products/palindrome_products_test.rb +0 -1
- data/tracks/ruby/exercises/pangram/.meta/generator/pangram_cases.rb +1 -1
- data/tracks/ruby/exercises/pangram/pangram_test.rb +1 -2
- data/tracks/ruby/exercises/pascals-triangle/pascals_triangle_test.rb +0 -1
- data/tracks/ruby/exercises/perfect-numbers/perfect_numbers_test.rb +0 -1
- data/tracks/ruby/exercises/phone-number/.meta/.version +1 -0
- data/tracks/ruby/exercises/phone-number/.meta/generator/phone_number_cases.rb +7 -0
- data/tracks/ruby/exercises/phone-number/example.rb +21 -37
- data/tracks/ruby/exercises/phone-number/phone_number_test.rb +47 -43
- data/tracks/ruby/exercises/pig-latin/.meta/generator/pig_latin_cases.rb +1 -1
- data/tracks/ruby/exercises/pig-latin/pig_latin_test.rb +1 -2
- data/tracks/ruby/exercises/point-mutations/point_mutations_test.rb +0 -1
- data/tracks/ruby/exercises/poker/poker_test.rb +0 -1
- data/tracks/ruby/exercises/prime-factors/prime_factors_test.rb +0 -1
- data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
- data/tracks/ruby/exercises/proverb/proverb_test.rb +0 -1
- data/tracks/ruby/exercises/pythagorean-triplet/pythagorean_triplet_test.rb +0 -1
- data/tracks/ruby/exercises/queen-attack/.meta/generator/queen_attack_cases.rb +1 -1
- data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +1 -2
- data/tracks/ruby/exercises/rail-fence-cipher/rail_fence_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/raindrops/.meta/generator/raindrops_cases.rb +1 -1
- data/tracks/ruby/exercises/raindrops/raindrops_test.rb +1 -2
- data/tracks/ruby/exercises/rna-transcription/.meta/generator/rna_transcription_cases.rb +1 -1
- data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +1 -2
- data/tracks/ruby/exercises/robot-name/robot_name_test.rb +0 -1
- data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +0 -1
- data/tracks/ruby/exercises/roman-numerals/.meta/generator/roman_numerals_cases.rb +1 -1
- data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +1 -2
- data/tracks/ruby/exercises/run-length-encoding/.meta/generator/run_length_encoding_cases.rb +5 -1
- data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +14 -15
- data/tracks/ruby/exercises/saddle-points/saddle_points_test.rb +0 -1
- data/tracks/ruby/exercises/say/.meta/generator/say_cases.rb +1 -1
- data/tracks/ruby/exercises/say/say_test.rb +1 -2
- data/tracks/ruby/exercises/scale-generator/scale_generator_test.rb +0 -1
- data/tracks/ruby/exercises/scrabble-score/scrabble_score_test.rb +0 -1
- data/tracks/ruby/exercises/secret-handshake/secret_handshake_test.rb +0 -1
- data/tracks/ruby/exercises/series/series_test.rb +0 -1
- data/tracks/ruby/exercises/sieve/.meta/generator/sieve_cases.rb +1 -1
- data/tracks/ruby/exercises/sieve/sieve_test.rb +1 -2
- data/tracks/ruby/exercises/simple-cipher/simple_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/space-age/space_age_test.rb +0 -1
- data/tracks/ruby/exercises/strain/strain_test.rb +0 -1
- data/tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb +0 -1
- data/tracks/ruby/exercises/tournament/.meta/.version +1 -1
- data/tracks/ruby/exercises/tournament/.meta/generator/tournament_cases.rb +1 -1
- data/tracks/ruby/exercises/tournament/example.rb +4 -2
- data/tracks/ruby/exercises/tournament/tournament_test.rb +20 -3
- data/tracks/ruby/exercises/transpose/.meta/generator/transpose_cases.rb +1 -1
- data/tracks/ruby/exercises/transpose/transpose_test.rb +1 -2
- data/tracks/ruby/exercises/triangle/.meta/generator/triangle_cases.rb +1 -1
- data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -2
- data/tracks/ruby/exercises/trinary/trinary_test.rb +0 -1
- data/tracks/ruby/exercises/twelve-days/twelve_days_test.rb +0 -1
- data/tracks/ruby/exercises/two-bucket/.meta/.version +1 -1
- data/tracks/ruby/exercises/two-bucket/.meta/generator/two_bucket_cases.rb +1 -1
- data/tracks/ruby/exercises/two-bucket/example.rb +1 -1
- data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +18 -3
- data/tracks/ruby/exercises/word-count/.meta/generator/word_count_cases.rb +1 -1
- data/tracks/ruby/exercises/word-count/word_count_test.rb +1 -2
- data/tracks/ruby/exercises/wordy/.meta/generator/wordy_cases.rb +1 -1
- data/tracks/ruby/exercises/wordy/wordy_test.rb +1 -2
- data/tracks/ruby/lib/generator/{exercise_cases.rb → exercise_case.rb} +0 -0
- data/tracks/ruby/lib/generator/exercise_case/assertion.rb +2 -1
- data/tracks/ruby/lib/generator/files/track_files.rb +15 -10
- data/tracks/ruby/lib/generator/template_values.rb +4 -2
- data/tracks/ruby/lib/generator/test_template.erb +1 -2
- data/tracks/ruby/lib/tasks/exercise.rb +9 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/generator/test_template.erb +0 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/alpha/{example.rb → .meta/solutions/alpha.rb} +0 -0
- data/tracks/ruby/test/fixtures/xruby/exercises/beta/.meta/generator/beta_cases.rb +1 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/beta/example.tt +0 -1
- data/tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb +0 -1
- data/tracks/ruby/test/generator/exercise_case/assertion_test.rb +6 -0
- data/tracks/ruby/test/generator/{exercise_cases_test.rb → exercise_case_test.rb} +0 -0
- data/tracks/ruby/test/generator/files/track_files_test.rb +14 -18
- data/tracks/ruby/test/generator/template_values_test.rb +2 -0
- data/tracks/ruby/test/tasks/exercise_test.rb +6 -0
- data/tracks/ruby/test/tasks/exercise_tests_runner_legacy_test.rb +64 -0
- data/tracks/ruby/test/tasks/exercise_tests_runner_test.rb +2 -2
- metadata +13 -6
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'transpose'
|
5
4
|
|
6
|
-
# Common test data version: 6dba022
|
5
|
+
# Common test data version: 1.0.0 6dba022
|
7
6
|
class TransposeTest < Minitest::Test
|
8
7
|
def test_empty_string
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'triangle'
|
5
4
|
|
6
|
-
# Common test data version: fa90b35
|
5
|
+
# Common test data version: 1.0.0 fa90b35
|
7
6
|
class TriangleTest < Minitest::Test
|
8
7
|
def test_triangle_is_equilateral_if_all_sides_are_equal
|
9
8
|
# skip
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'two_bucket'
|
5
4
|
|
6
|
-
# Common test data version:
|
5
|
+
# Common test data version: 1.1.0 531486a
|
7
6
|
class TwoBucketTest < Minitest::Test
|
8
7
|
def test_bucket_one_size_3_bucket_two_size_5_goal_1_start_with_bucket_one
|
9
8
|
# skip
|
@@ -37,6 +36,22 @@ class TwoBucketTest < Minitest::Test
|
|
37
36
|
assert_equal 7, two_bucket.other_bucket
|
38
37
|
end
|
39
38
|
|
39
|
+
def test_bucket_one_size_1_bucket_two_size_3_goal_3_start_with_bucket_two
|
40
|
+
skip
|
41
|
+
two_bucket = TwoBucket.new(1, 3, 3, 'two')
|
42
|
+
assert_equal 1, two_bucket.moves
|
43
|
+
assert_equal 'two', two_bucket.goal_bucket
|
44
|
+
assert_equal 0, two_bucket.other_bucket
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_bucket_one_size_2_bucket_two_size_3_goal_3_start_with_bucket_one
|
48
|
+
skip
|
49
|
+
two_bucket = TwoBucket.new(2, 3, 3, 'one')
|
50
|
+
assert_equal 4, two_bucket.moves
|
51
|
+
assert_equal 'two', two_bucket.goal_bucket
|
52
|
+
assert_equal 1, two_bucket.other_bucket
|
53
|
+
end
|
54
|
+
|
40
55
|
# Problems in exercism evolve over time, as we find better ways to ask
|
41
56
|
# questions.
|
42
57
|
# The version number refers to the version of the problem you solved,
|
@@ -56,6 +71,6 @@ class TwoBucketTest < Minitest::Test
|
|
56
71
|
|
57
72
|
def test_bookkeeping
|
58
73
|
skip
|
59
|
-
assert_equal
|
74
|
+
assert_equal 3, BookKeeping::VERSION
|
60
75
|
end
|
61
76
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'word_count'
|
5
4
|
|
6
|
-
# Common test data version: cd26d49
|
5
|
+
# Common test data version: 1.0.0 cd26d49
|
7
6
|
class WordCountTest < Minitest::Test
|
8
7
|
def test_count_one_word
|
9
8
|
# skip
|
File without changes
|
@@ -10,7 +10,8 @@ module Generator
|
|
10
10
|
# e.g.,
|
11
11
|
# assert_equal { "PigLatin.translate(#{input.inspect})" }
|
12
12
|
def assert_equal
|
13
|
-
"assert_equal #{expected.inspect},
|
13
|
+
assertion = expected.nil? ? 'assert_nil' : "assert_equal #{expected.inspect},"
|
14
|
+
"#{assertion} #{yield}"
|
14
15
|
end
|
15
16
|
|
16
17
|
# e.g.,
|
@@ -10,7 +10,7 @@ module Generator
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def example_solution
|
13
|
-
ExampleSolutionFile.new(filename: File.join(exercise_path,
|
13
|
+
ExampleSolutionFile.new(filename: File.join(exercise_path, example_file))
|
14
14
|
end
|
15
15
|
|
16
16
|
def minitest_tests
|
@@ -32,11 +32,8 @@ module Generator
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def tests_template_absolute_filename
|
35
|
-
|
36
|
-
|
37
|
-
when File.exist?(legacy_tests_template_filename) then legacy_tests_template_filename
|
38
|
-
else default_tests_template_filename
|
39
|
-
end
|
35
|
+
File.exist?(track_tests_template_filename) ? track_tests_template_filename :
|
36
|
+
default_tests_template_filename
|
40
37
|
end
|
41
38
|
|
42
39
|
def track_tests_template_filename
|
@@ -47,14 +44,22 @@ module Generator
|
|
47
44
|
File.join(paths.track, 'lib', 'generator', tests_template_filename)
|
48
45
|
end
|
49
46
|
|
50
|
-
def legacy_tests_template_filename
|
51
|
-
File.join(exercise_path, 'example.tt')
|
52
|
-
end
|
53
|
-
|
54
47
|
def tests_template_filename
|
55
48
|
'test_template.erb'
|
56
49
|
end
|
57
50
|
|
51
|
+
def example_file
|
52
|
+
File.exist?(File.join(exercise_path, example_filename)) ? example_filename : legacy_example_filename
|
53
|
+
end
|
54
|
+
|
55
|
+
def example_filename
|
56
|
+
File.join('.meta', 'solutions', "#{exercise_name}.rb")
|
57
|
+
end
|
58
|
+
|
59
|
+
def legacy_example_filename
|
60
|
+
'example.rb'
|
61
|
+
end
|
62
|
+
|
58
63
|
def minitest_tests_filename
|
59
64
|
"#{exercise_name.gsub(/[ -]/, '_')}_test.rb"
|
60
65
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
module Generator
|
2
2
|
# Contains methods accessible to the ERB template
|
3
3
|
class TemplateValues
|
4
|
-
attr_reader :abbreviated_commit_hash, :version, :exercise_name, :test_cases
|
4
|
+
attr_reader :abbreviated_commit_hash, :version, :exercise_name, :test_cases, :canonical_data_version
|
5
5
|
|
6
|
-
def initialize(abbreviated_commit_hash:, version:, exercise_name:, test_cases:)
|
6
|
+
def initialize(abbreviated_commit_hash:, version:, exercise_name:, test_cases:, canonical_data_version: nil)
|
7
7
|
@abbreviated_commit_hash = abbreviated_commit_hash
|
8
8
|
@version = version
|
9
9
|
@exercise_name = exercise_name ? exercise_name.tr('-_', '_') : ''
|
10
10
|
@test_cases = test_cases
|
11
|
+
@canonical_data_version = canonical_data_version
|
11
12
|
end
|
12
13
|
|
13
14
|
def get_binding
|
@@ -23,6 +24,7 @@ module Generator
|
|
23
24
|
def template_values
|
24
25
|
TemplateValues.new(
|
25
26
|
abbreviated_commit_hash: canonical_data.abbreviated_commit_hash,
|
27
|
+
canonical_data_version: canonical_data.version,
|
26
28
|
version: version,
|
27
29
|
exercise_name: exercise_name,
|
28
30
|
test_cases: extract
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative '<%= exercise_name %>'
|
5
4
|
|
6
|
-
# Common test data version: <%= abbreviated_commit_hash %>
|
5
|
+
# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
|
7
6
|
class <%= exercise_name_camel %>Test < Minitest::Test
|
8
7
|
<% test_cases.each do |test_case| %>
|
9
8
|
def <%= test_case.name %>
|
@@ -23,7 +23,7 @@ class Exercise
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def example_file
|
26
|
-
|
26
|
+
File.exist?(example_filename) ? example_filename : legacy_example_filename
|
27
27
|
end
|
28
28
|
|
29
29
|
def testable_example_file
|
@@ -36,6 +36,14 @@ class Exercise
|
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
|
+
def example_filename
|
40
|
+
File.join('.meta', 'solutions', "#{name}.rb")
|
41
|
+
end
|
42
|
+
|
43
|
+
def legacy_example_filename
|
44
|
+
'example.rb'
|
45
|
+
end
|
46
|
+
|
39
47
|
def base_file_name
|
40
48
|
@_base_file_name ||= name.tr('-', '_')
|
41
49
|
end
|
data/tracks/ruby/test/fixtures/xruby/exercises/alpha/{example.rb → .meta/solutions/alpha.rb}
RENAMED
File without changes
|
@@ -21,6 +21,12 @@ module Generator
|
|
21
21
|
assert_equal "assert_equal 2, 4", test_case.assert_equal { 1 + 3 }
|
22
22
|
end
|
23
23
|
|
24
|
+
def test_assert_equal_when_nil
|
25
|
+
test_case = OpenStruct.new(expected: nil)
|
26
|
+
test_case.extend(Assertion)
|
27
|
+
assert_equal "assert_nil 4", test_case.assert_equal { 1 + 3 }
|
28
|
+
end
|
29
|
+
|
24
30
|
def test_raises_error
|
25
31
|
test_case = OpenStruct.new(expected: -1)
|
26
32
|
test_case.extend(Assertion)
|
File without changes
|
@@ -13,7 +13,7 @@ module Generator
|
|
13
13
|
@paths = FixturePaths
|
14
14
|
@exercise_name = 'alpha'
|
15
15
|
end
|
16
|
-
|
16
|
+
attr_accessor :paths, :exercise_name
|
17
17
|
include TrackFiles
|
18
18
|
end
|
19
19
|
|
@@ -24,7 +24,15 @@ module Generator
|
|
24
24
|
|
25
25
|
def test_example_solution
|
26
26
|
subject = TestTrackFiles.new
|
27
|
-
|
27
|
+
expected_filename = FixturePaths.track + '/exercises/alpha/.meta/solutions/alpha.rb'
|
28
|
+
assert_equal expected_filename, subject.example_solution.filename
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_legacy_example_solution
|
32
|
+
subject = TestTrackFiles.new
|
33
|
+
subject.exercise_name = 'beta'
|
34
|
+
expected_filename = FixturePaths.track + '/exercises/beta/example.rb'
|
35
|
+
assert_equal expected_filename, subject.example_solution.filename
|
28
36
|
end
|
29
37
|
|
30
38
|
def test_minitest_tests
|
@@ -38,6 +46,7 @@ module Generator
|
|
38
46
|
assert_equal expected_filename, subject.tests_template.filename
|
39
47
|
end
|
40
48
|
|
49
|
+
|
41
50
|
class TestTrackFilesUseDefault
|
42
51
|
def initialize
|
43
52
|
@paths = FixturePaths
|
@@ -52,21 +61,6 @@ module Generator
|
|
52
61
|
expected_filename = FixturePaths.track + '/lib/generator/test_template.erb'
|
53
62
|
assert_equal expected_filename, subject.tests_template.filename
|
54
63
|
end
|
55
|
-
|
56
|
-
class TestTrackFilesUseLegacy
|
57
|
-
def initialize
|
58
|
-
@paths = FixturePaths
|
59
|
-
@exercise_name = 'beta'
|
60
|
-
end
|
61
|
-
attr_reader :paths, :exercise_name
|
62
|
-
include TrackFiles
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_legacy_tests_template
|
66
|
-
subject = TestTrackFilesUseLegacy.new
|
67
|
-
expected_filename = FixturePaths.track + '/exercises/beta/example.tt'
|
68
|
-
assert_equal expected_filename, subject.tests_template.filename
|
69
|
-
end
|
70
64
|
end
|
71
65
|
|
72
66
|
class TestsVersionFileTest < Minitest::Test
|
@@ -90,7 +84,9 @@ module Generator
|
|
90
84
|
end
|
91
85
|
|
92
86
|
def test_update_version
|
93
|
-
subject = TestExampleSolutionFile.new(
|
87
|
+
subject = TestExampleSolutionFile.new(
|
88
|
+
filename: 'test/fixtures/xruby/exercises/alpha/.meta/solutions/alpha.rb'
|
89
|
+
)
|
94
90
|
assert_match(/VERSION = 2/, subject.update_version(2))
|
95
91
|
end
|
96
92
|
end
|
@@ -57,6 +57,7 @@ module Generator
|
|
57
57
|
def canonical_data
|
58
58
|
mock_canonical_data = Minitest::Mock.new
|
59
59
|
mock_canonical_data.expect :abbreviated_commit_hash, nil
|
60
|
+
mock_canonical_data.expect :version, '1.2.3'
|
60
61
|
mock_canonical_data.expect :to_s, '{"cases":[]}'
|
61
62
|
mock_canonical_data
|
62
63
|
end
|
@@ -82,6 +83,7 @@ module Generator
|
|
82
83
|
def canonical_data
|
83
84
|
mock_canonical_data = Minitest::Mock.new
|
84
85
|
mock_canonical_data.expect :abbreviated_commit_hash, nil
|
86
|
+
mock_canonical_data.expect :version, '1.2.3'
|
85
87
|
mock_canonical_data.expect :to_s, '{"cases":[]}'
|
86
88
|
mock_canonical_data
|
87
89
|
end
|
@@ -31,6 +31,12 @@ class ExerciseTest < Minitest::Test
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_example_file
|
34
|
+
File.stub(:exist?, true) do
|
35
|
+
assert_equal '.meta/solutions/name.rb', Exercise.new('name').example_file
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_legacy_example_file
|
34
40
|
assert_equal 'example.rb', Exercise.new('').example_file
|
35
41
|
end
|
36
42
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class FakeLegacyExercise
|
4
|
+
def name
|
5
|
+
'test'
|
6
|
+
end
|
7
|
+
|
8
|
+
alias :to_s :name
|
9
|
+
|
10
|
+
def directory
|
11
|
+
'test/.'
|
12
|
+
end
|
13
|
+
|
14
|
+
def example_file
|
15
|
+
'example.rb'
|
16
|
+
end
|
17
|
+
|
18
|
+
def testable_example_file
|
19
|
+
'test.rb'
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_file
|
23
|
+
'test_test.rb'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class ExerciseTestsRunnerLegacyTest < Minitest::Test
|
28
|
+
def test_run
|
29
|
+
Dir.stub :mktmpdir, nil, 'dir' do
|
30
|
+
cp_mock = Minitest::Mock.new.expect(:call, nil, ['test/.', 'dir'])
|
31
|
+
|
32
|
+
mv_mock = Minitest::Mock.new.expect(
|
33
|
+
:call,
|
34
|
+
nil,
|
35
|
+
['dir/example.rb', 'dir/test.rb'],
|
36
|
+
)
|
37
|
+
|
38
|
+
ruby_mock = Minitest::Mock.new.expect(
|
39
|
+
:call,
|
40
|
+
nil,
|
41
|
+
['-I lib -r disable_skip.rb dir/test_test.rb -p'],
|
42
|
+
)
|
43
|
+
|
44
|
+
FileUtils.stub :cp_r, cp_mock do
|
45
|
+
FileUtils.stub :mv, mv_mock do
|
46
|
+
runner = ExerciseTestsRunner.new(
|
47
|
+
exercise: FakeLegacyExercise.new,
|
48
|
+
test_options: '-p',
|
49
|
+
)
|
50
|
+
|
51
|
+
runner.stub :ruby, ruby_mock do
|
52
|
+
assert_output "\n\n#{'-'*64}\nrunning tests for: test\n" do
|
53
|
+
runner.run
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
cp_mock.verify
|
58
|
+
mv_mock.verify
|
59
|
+
ruby_mock.verify
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|