diff options
| author | Douwe Maan <douwe@gitlab.com> | 2017-07-06 13:11:07 +0000 |
|---|---|---|
| committer | Douwe Maan <douwe@gitlab.com> | 2017-07-06 13:11:07 +0000 |
| commit | ec3b10e078de03ac32ef85872d3d1518ef8526d5 (patch) | |
| tree | 032fc483f456228b19587cafbce8d31c9ab5603a /spec/lib | |
| parent | 1bdd295394d115cb88a9b6be7f44851c6e58a491 (diff) | |
| parent | d9435d61218f677395f3b53976a41ac5f361f24b (diff) | |
| download | gitlab-ce-ec3b10e078de03ac32ef85872d3d1518ef8526d5.tar.gz | |
Merge branch '34716-environment-specific-variables-ce' into 'master'
Backports for ee-2112
Closes #34716
See merge request !12671
Diffstat (limited to 'spec/lib')
| -rw-r--r-- | spec/lib/gitlab/sql/glob_spec.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sql/glob_spec.rb b/spec/lib/gitlab/sql/glob_spec.rb new file mode 100644 index 00000000000..451c583310d --- /dev/null +++ b/spec/lib/gitlab/sql/glob_spec.rb @@ -0,0 +1,53 @@ +require 'spec_helper' + +describe Gitlab::SQL::Glob, lib: true do + describe '.to_like' do + it 'matches * as %' do + expect(glob('apple', '*')).to be(true) + expect(glob('apple', 'app*')).to be(true) + expect(glob('apple', 'apple*')).to be(true) + expect(glob('apple', '*pple')).to be(true) + expect(glob('apple', 'ap*le')).to be(true) + + expect(glob('apple', '*a')).to be(false) + expect(glob('apple', 'app*a')).to be(false) + expect(glob('apple', 'ap*l')).to be(false) + end + + it 'matches % literally' do + expect(glob('100%', '100%')).to be(true) + + expect(glob('100%', '%')).to be(false) + end + + it 'matches _ literally' do + expect(glob('^_^', '^_^')).to be(true) + + expect(glob('^A^', '^_^')).to be(false) + end + end + + def glob(string, pattern) + match(string, subject.to_like(quote(pattern))) + end + + def match(string, pattern) + value = query("SELECT #{quote(string)} LIKE #{pattern}") + .rows.flatten.first + + case value + when 't', 1 + true + else + false + end + end + + def query(sql) + ActiveRecord::Base.connection.select_all(sql) + end + + def quote(string) + ActiveRecord::Base.connection.quote(string) + end +end |
