Skip to content

Commit e15d63a

Browse files
authored
Merge pull request #580 from Insti/Query_canonical-data_version
Add query for version of canonical data
2 parents 9a73ca5 + 297b384 commit e15d63a

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

lib/generator/files.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
module Generator
44
module Files
5+
def self.read(filename)
6+
File.read(filename) if File.exist?(filename)
7+
end
8+
59
class Readable
610
attr_reader :filename, :repository_root
711
def initialize(filename:, repository_root: nil)
@@ -10,7 +14,7 @@ def initialize(filename:, repository_root: nil)
1014
end
1115

1216
def to_s
13-
File.read(filename) if File.exist?(filename)
17+
Files.read(filename)
1418
end
1519

1620
def abbreviated_commit_hash

lib/generator/files/metadata_files.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ def exercise_metadata_path
1717
end
1818

1919
class CanonicalDataFile < Readable
20+
def version
21+
JSON.parse(to_s)['version'] if to_s
22+
end
2023
end
2124
end
2225
end

test/generator/files/metadata_files_test.rb

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,31 @@ class MetadataFilesTest < Minitest::Test
77
track: 'test/fixtures/xruby'
88
)
99

10-
class TestMetadataFiles
11-
def initialize
12-
@paths = FixturePaths
13-
@exercise_name = 'alpha'
10+
def test_canonical_data
11+
subject = OpenStruct.new(paths: FixturePaths, exercise_name: 'unimportant')
12+
subject.extend(MetadataFiles)
13+
assert_instance_of CanonicalDataFile, subject.canonical_data
14+
end
15+
end
16+
17+
class CanonicalDataFileTest < Minitest::Test
18+
def test_version_for_file_that_does_not_exist
19+
subject = CanonicalDataFile.new(filename: 'nonexistant')
20+
assert_nil subject.version
21+
end
22+
23+
def test_version
24+
subject = CanonicalDataFile.new(filename: 'has version key')
25+
Files.stub(:read, '{"version": "1.2.3"}' ) do
26+
assert_equal "1.2.3", subject.version
1427
end
15-
attr_reader :paths, :exercise_name
16-
include MetadataFiles
1728
end
1829

19-
def test_canonical_data
20-
subject = TestMetadataFiles.new
21-
assert_instance_of CanonicalDataFile, subject.canonical_data
30+
def test_version_not_present
31+
subject = CanonicalDataFile.new(filename: 'no version key')
32+
Files.stub(:read, '{ "json": true }' ) do
33+
assert_nil subject.version
34+
end
2235
end
2336
end
2437
end

test/generator/files_test.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
module Generator
44
module Files
5+
6+
class ReadTest < Minitest::Test
7+
def test_read_existing_file
8+
expected = 'content unimportant'
9+
File.stub(:exist?, true) do
10+
File.stub(:read, expected ) do
11+
assert_equal expected, Files.read('pretend/this/exists')
12+
end
13+
end
14+
end
15+
16+
def test_read_non_existing_file
17+
File.stub(:exist?, false) do
18+
assert_nil Files.read('pretend/this/does/not/exist')
19+
end
20+
end
21+
end
22+
523
class ReadableTest < Minitest::Test
624
def test_abbreviated_commit_hash
725
mock_git_command = Minitest::Mock.new.expect :call, nil, ['path/.git', 'subdir/file']

0 commit comments

Comments
 (0)