diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-17 12:06:48 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-17 12:06:48 +0200 |
commit | d9ca84015c04d8836c09c3ebb70a8240262b60e8 (patch) | |
tree | 2a67fb3dec879e29ecb8592c14acf7674e238227 | |
parent | a9bd16bd0a44332133d0f9fd859d9ffaba9e262f (diff) | |
download | gitlab-ce-d9ca84015c04d8836c09c3ebb70a8240262b60e8.tar.gz |
Add first custom validator for new ci config
This follows a standard `ActiveModel` pattern of creating a custom
validators. We use `ActiveModel::EachValidator` here that reuses methods
provided by `LegacyValidationHelpers`.
We will remove `LegacyValidationHelpers` on some point in the future, at
the later stages of CI configuration refactoring. It may be possible
to rewrite custom validators to use format like:
`validates :config, array_of: String`
-rw-r--r-- | lib/gitlab/ci/config/node/script.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/validator.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/validators.rb | 19 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb | 0 |
4 files changed, 21 insertions, 9 deletions
diff --git a/lib/gitlab/ci/config/node/script.rb b/lib/gitlab/ci/config/node/script.rb index 44490096f28..c044f5c5e71 100644 --- a/lib/gitlab/ci/config/node/script.rb +++ b/lib/gitlab/ci/config/node/script.rb @@ -14,15 +14,7 @@ module Gitlab include Validatable validations do - include LegacyValidationHelpers - - validate :array_of_strings - - def array_of_strings - unless validate_array_of_strings(self.config) - errors.add(:config, 'should be an array of strings') - end - end + validates :config, array_of_strings: true end def value diff --git a/lib/gitlab/ci/config/node/validator.rb b/lib/gitlab/ci/config/node/validator.rb index 2454cc6d957..02edc9219c3 100644 --- a/lib/gitlab/ci/config/node/validator.rb +++ b/lib/gitlab/ci/config/node/validator.rb @@ -4,6 +4,7 @@ module Gitlab module Node class Validator < SimpleDelegator include ActiveModel::Validations + include Node::Validators def initialize(node) super(node) diff --git a/lib/gitlab/ci/config/node/validators.rb b/lib/gitlab/ci/config/node/validators.rb new file mode 100644 index 00000000000..36d48394a8c --- /dev/null +++ b/lib/gitlab/ci/config/node/validators.rb @@ -0,0 +1,19 @@ +module Gitlab + module Ci + class Config + module Node + module Validators + class ArrayOfStringsValidator < ActiveModel::EachValidator + include LegacyValidationHelpers + + def validate_each(record, attribute, value) + unless validate_array_of_strings(value) + record.errors.add(attribute, 'should be an array of strings') + end + end + end + end + end + end + end +end diff --git a/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb b/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/spec/lib/gitlab/ci/config/node/validators/array_of_strings_validator_spec.rb |