Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions test/collections_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
describe "collections" do
collections.each do |collection|
describe "#{collection} collection" do
it "has valid YAML frontmatter" do
error = yaml_syntax_error_for(collections_dir, collection)
assert_nil error, error
end

unless ENV["AUTOCORRECT_RENAMED_REPOS"] == "1"
it "has a valid name" do
assert valid_collection?(collection), invalid_collection_message(collection)
Expand Down
25 changes: 22 additions & 3 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -235,17 +235,36 @@ def valid_uri_scheme?(scheme)
%w[http https].include?(scheme.downcase)
end

def metadata_for(dir, name)
def frontmatter_for(dir, name)
path = File.join(dir, name, "index.md")
return unless File.file?(path)

parts = File.read(path).split("---", 3)
return unless parts.size >= 2

parts[1]
end

def metadata_for(dir, name)
frontmatter = frontmatter_for(dir, name)
return unless frontmatter

begin
YAML.safe_load(frontmatter)
rescue Psych::SyntaxError
nil
Comment thread
ahpook marked this conversation as resolved.
Outdated
end
end

def yaml_syntax_error_for(dir, name)
frontmatter = frontmatter_for(dir, name)
return unless frontmatter

begin
YAML.safe_load(parts[1])
YAML.safe_load(frontmatter)
nil
rescue Psych::SyntaxError => error
flunk "invalid YAML: #{error.message}"
"invalid YAML in #{File.join(dir, name, 'index.md')}: #{error.message}"
end
end

Expand Down
5 changes: 5 additions & 0 deletions test/topics_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

topics.each do |topic|
describe "#{topic} topic" do
it "has valid YAML frontmatter" do
error = yaml_syntax_error_for(topics_dir, topic)
assert_nil error, error
end

it "has a valid name" do
assert valid_topic?(topic), invalid_topic_message(topic)
end
Expand Down