summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/build
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-01-14 12:12:05 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-01-14 12:48:17 +0100
commitbe764a3a20c7cecce2a047ddd46aff954c33b306 (patch)
tree5486e395de4ce9149666312287967336b3f4c531 /lib/gitlab/ci/build
parent76e578fdfa1d9f52ae4d49d389089f67046f1a3e (diff)
downloadgitlab-ce-be764a3a20c7cecce2a047ddd46aff954c33b306.tar.gz
Minor improvements in build arfifacts browserci/view-build-artifacts
Added also a `Gitlab::Ci::Build::Artifacts::Metadata::ParserError` exception class.
Diffstat (limited to 'lib/gitlab/ci/build')
-rw-r--r--lib/gitlab/ci/build/artifacts/metadata.rb17
-rw-r--r--lib/gitlab/ci/build/artifacts/metadata/entry.rb4
2 files changed, 14 insertions, 7 deletions
diff --git a/lib/gitlab/ci/build/artifacts/metadata.rb b/lib/gitlab/ci/build/artifacts/metadata.rb
index 25ecf27d4e6..1344f5d120b 100644
--- a/lib/gitlab/ci/build/artifacts/metadata.rb
+++ b/lib/gitlab/ci/build/artifacts/metadata.rb
@@ -6,6 +6,8 @@ module Gitlab
module Build
module Artifacts
class Metadata
+ class ParserError < StandardError; end
+
VERSION_PATTERN = /^[\w\s]+(\d+\.\d+\.\d+)/
INVALID_PATH_PATTERN = %r{(^\.?\.?/)|(/\.?\.?/)}
@@ -24,8 +26,13 @@ module Gitlab
gzip do |gz|
read_string(gz) # version
errors = read_string(gz)
- raise StandardError, 'Errors field not found!' unless errors
- JSON.parse(errors)
+ raise ParserError, 'Errors field not found!' unless errors
+
+ begin
+ JSON.parse(errors)
+ rescue JSON::ParserError
+ raise ParserError, 'Invalid errors field!'
+ end
end
end
@@ -56,7 +63,7 @@ module Gitlab
next unless path =~ match_pattern
next if path =~ INVALID_PATH_PATTERN
- entries.store(path, JSON.parse(meta, symbolize_names: true))
+ entries[path] = JSON.parse(meta, symbolize_names: true)
rescue JSON::ParserError, Encoding::CompatibilityError
next
end
@@ -70,11 +77,11 @@ module Gitlab
version_string = read_string(gz)
unless version_string
- raise StandardError, 'Artifacts metadata file empty!'
+ raise ParserError, 'Artifacts metadata file empty!'
end
unless version_string =~ VERSION_PATTERN
- raise StandardError, 'Invalid version!'
+ raise ParserError, 'Invalid version!'
end
version_string.chomp
diff --git a/lib/gitlab/ci/build/artifacts/metadata/entry.rb b/lib/gitlab/ci/build/artifacts/metadata/entry.rb
index 4dae02ce4f7..25b71fc3275 100644
--- a/lib/gitlab/ci/build/artifacts/metadata/entry.rb
+++ b/lib/gitlab/ci/build/artifacts/metadata/entry.rb
@@ -57,7 +57,7 @@ module Gitlab
return @children if @children
child_pattern = %r{^#{Regexp.escape(@path)}[^/]+/?$}
- @children = select_entries { |entry| entry =~ child_pattern }
+ @children = select_entries { |path| path =~ child_pattern }
end
def directories(opts = {})
@@ -110,7 +110,7 @@ module Gitlab
private
def select_entries
- selected = @entries.select { |entry, _metadata| yield entry }
+ selected = @entries.select { |path, _metadata| yield path }
selected.map { |path, _metadata| self.class.new(path, @entries) }
end
end