chemlab 0.4.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +8 -0
  3. data/bin/chemlab +10 -0
  4. data/bin/chemlab-suite +1 -0
  5. data/bin/chemlab-test +1 -0
  6. data/lib/chemlab.rb +27 -17
  7. data/lib/chemlab/attributable.rb +16 -10
  8. data/lib/chemlab/cli/fixtures/new_library/.gitignore +63 -0
  9. data/lib/chemlab/cli/fixtures/new_library/Gemfile +5 -0
  10. data/lib/chemlab/cli/fixtures/new_library/README.md.erb +1 -0
  11. data/lib/chemlab/cli/fixtures/new_library/lib/new_library.rb.erb +7 -0
  12. data/lib/chemlab/cli/fixtures/new_library/lib/page/sample.rb.erb +9 -0
  13. data/lib/chemlab/cli/fixtures/new_library/new_library.gemspec.erb +23 -0
  14. data/lib/chemlab/cli/fixtures/new_library/spec/integration/page/sample_spec.rb.erb +17 -0
  15. data/lib/chemlab/cli/fixtures/new_library/spec/unit/page/sample_spec.rb.erb +19 -0
  16. data/lib/chemlab/cli/generator.rb +46 -0
  17. data/lib/chemlab/cli/generator/templates/page.erb +3 -0
  18. data/lib/chemlab/cli/new_library.rb +62 -0
  19. data/lib/chemlab/cli/stub.erb +66 -0
  20. data/lib/chemlab/cli/stubber.rb +74 -0
  21. data/lib/chemlab/component.rb +78 -8
  22. data/lib/chemlab/configuration.rb +60 -12
  23. data/lib/chemlab/core_ext/string/inflections.rb +25 -0
  24. data/lib/chemlab/element.rb +4 -0
  25. data/lib/chemlab/page.rb +19 -1
  26. data/lib/chemlab/runtime/browser.rb +13 -17
  27. data/lib/chemlab/runtime/env.rb +13 -9
  28. data/lib/chemlab/runtime/logger.rb +16 -13
  29. data/lib/chemlab/version.rb +1 -1
  30. data/lib/tasks/generate.rake +22 -0
  31. data/lib/tasks/generate_stubs.rake +20 -0
  32. data/lib/tasks/help.rake +24 -0
  33. data/lib/tasks/new.rake +19 -0
  34. data/lib/tasks/version.rake +8 -0
  35. metadata +101 -58
  36. data/lib/chemlab/api_fabricator.rb +0 -134
  37. data/lib/chemlab/resource.rb +0 -169
  38. data/lib/chemlab/runtime/api_client.rb +0 -18
  39. data/lib/chemlab/support/api.rb +0 -71
  40. data/lib/chemlab/support/logging.rb +0 -176
  41. data/lib/chemlab/support/repeater.rb +0 -65
  42. data/lib/chemlab/support/waiter.rb +0 -39
@@ -4,18 +4,22 @@ module Chemlab
4
4
  module Runtime
5
5
  # Environment configuration file
6
6
  module Env
7
- module_function
7
+ class << self
8
+ # @return [Boolean] true if debug mode is enabled
9
+ # @example
10
+ # ENV['CHEMLAB_DEBUG'] = 'true'
11
+ # Runtime::Env.debug? #=> true
12
+ def debug?
13
+ enabled?(ENV['CHEMLAB_DEBUG'], default: false)
14
+ end
8
15
 
9
- def debug?
10
- enabled?(ENV['DEBUG'], default: false)
11
- end
12
-
13
- private
16
+ private
14
17
 
15
- def enabled?(value, default: true)
16
- return default if value.nil?
18
+ def enabled?(value, default: true)
19
+ return default if value.nil?
17
20
 
18
- (value =~ /^(false|no|0)$/i) != 0
21
+ (value =~ /^(false|no|n|0)$/i) != 0
22
+ end
19
23
  end
20
24
  end
21
25
  end
@@ -1,23 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'logger'
4
- require 'forwardable'
5
-
6
3
  module Chemlab
7
4
  module Runtime
5
+ # Logger module
8
6
  module Logger
9
- extend SingleForwardable
10
-
11
- def_delegators :logger, :debug, :info, :warn, :error, :fatal, :unknown
7
+ # Log something to a stream
8
+ # @param [Any] obj Any object that responds to #to_s
9
+ # @param [Symbol] type The type of message logged
10
+ # @param [Hash] args Any additional arguments
11
+ # @example
12
+ # log('something', :info) #=> logs INFO :: something, to $stdout
13
+ # log('error', :err) #=> logs ERR :: error, to $stderr
14
+ # log('important', :important, stream: $stderr) #=> logs IMPO :: important, to $stderr
15
+ # log('to file', :info, stream: File.open('file.txt', 'w')) #=> logs INFO :: to file, to the file.txt file
16
+ def log(obj, type = :info, **args)
17
+ raise ArgumentError, "Cannot log #{obj} as it does not respond to to_s!" unless obj.respond_to?(:to_s)
12
18
 
13
- singleton_class.module_eval do
14
- attr_writer :logger
19
+ args[:stream] = type.match?(/(err(or)?|warn(ing)?)/) ? $stderr : $stdout
15
20
 
16
- def logger
17
- @logger ||= ::Logger.new(Runtime::Env.log_destination).tap do |logger|
18
- logger.level = Runtime::Env.debug? ? ::Logger::DEBUG : ::Logger::ERROR
19
- end
20
- end
21
+ prefix = Time.now.strftime('%Y-%m-%d %H:%M:%S / ')
22
+ prefix << type[0..3].upcase << "\t:: " # we only want the prefix to be four chars long
23
+ args[:stream].puts(prefix << obj.to_s)
21
24
  end
22
25
  end
23
26
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Chemlab
4
- VERSION = '0.4.1'
4
+ VERSION = '0.7.2'
5
5
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc <<-DESCRIPTION
4
+ Generate something
5
+
6
+ Arguments: WHAT NAME [ARGS]
7
+ Examples:
8
+ - generate page Login path=/users/sign_in
9
+ Generates a page library
10
+ Notes:
11
+ - [ARGS] will be in form key=value separated by `=`
12
+ DESCRIPTION
13
+ task :generate do |_, args|
14
+ require_relative '../chemlab/cli/generator'
15
+
16
+ raise ArgumentError, 'Please specify what to generate and the name' if args.size < 2
17
+
18
+ what = args.shift
19
+ name = args.shift
20
+
21
+ Chemlab::CLI::Generator.generate(what, name, args)
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :generate do
4
+ desc <<-DESCRIPTION
5
+ Generate page library stubs
6
+
7
+ Arguments: PATH
8
+ Examples:
9
+ - generate:stubs qa/page/login.rb
10
+ Generate stubs for a specific page library
11
+ - generate:stubs qa/page
12
+ Generates stubs for all page libraries in `qa/page`
13
+ DESCRIPTION
14
+ task :stubs do |_, path|
15
+ puts "Doin some stubbin in #{path}"
16
+
17
+ require_relative '../chemlab/cli/stubber'
18
+ Chemlab::CLI::Stubber.stub_all(path)
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'colorize'
4
+
5
+ desc 'Show the help'
6
+ task '--help' do
7
+ usage = +%(Usage: #{$PROGRAM_NAME} TASK\n)
8
+
9
+ Rake.application.tasks.each do |task|
10
+ usage += %(#{task.name.bold}: #{task.comment}\n)
11
+
12
+ next unless task.full_comment && task.full_comment != task.comment
13
+
14
+ # standardize and colorize the description
15
+ full_comment = task.full_comment.gsub(/(Arguments|Examples|Notes):/, '\1:'.underline)
16
+
17
+ # remove the short description and the newlines
18
+ full_comment = full_comment[task.comment.size + 2..]
19
+
20
+ usage += %(#{full_comment}\n\n)
21
+ end
22
+
23
+ $stdout.puts usage
24
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc <<-DESCRIPTION
4
+ Scaffold a new Chemlab Library
5
+
6
+ Arguments: PATH
7
+ Examples:
8
+ - new my-library
9
+ Scaffolds a new Chemlab Library in the `my-library` directory.
10
+ This will fail if the PATH already exists
11
+ DESCRIPTION
12
+ task 'new' do |_, args|
13
+ require_relative '../chemlab/cli/new_library'
14
+
15
+ library = args.first
16
+
17
+ warn "NOTE: Only creating #{library}" if args.size > 1
18
+ Chemlab::CLI::NewLibrary.scaffold(library)
19
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc 'Shows the version'
4
+ task '--version' do
5
+ require_relative '../chemlab/version'
6
+
7
+ $stdout.puts %(#{$PROGRAM_NAME} version #{Chemlab::VERSION})
8
+ end
metadata CHANGED
@@ -1,214 +1,257 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chemlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-11 00:00:00.000000000 Z
11
+ date: 2021-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: debase
14
+ name: climate_control
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.4.1
19
+ version: 1.0.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.4.1
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: faker
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.6'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 1.6.6
33
+ version: 1.10.9
37
34
  type: :development
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '1.6'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 1.6.6
40
+ version: 1.10.9
47
41
  - !ruby/object:Gem::Dependency
48
- name: pry-byebug
42
+ name: pry
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: 3.5.1
47
+ version: 0.14.1
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: 3.5.1
54
+ version: 0.14.1
61
55
  - !ruby/object:Gem::Dependency
62
- name: ruby-debug-ide
56
+ name: rspec
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: 0.7.0
61
+ version: '3.7'
68
62
  type: :development
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
66
  - - "~>"
73
67
  - !ruby/object:Gem::Version
74
- version: 0.7.0
68
+ version: '3.7'
75
69
  - !ruby/object:Gem::Dependency
76
- name: timecop
70
+ name: rspec-parameterized
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
73
  - - "~>"
80
74
  - !ruby/object:Gem::Version
81
- version: 0.9.1
75
+ version: 0.4.2
82
76
  type: :development
83
77
  prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
80
  - - "~>"
87
81
  - !ruby/object:Gem::Version
88
- version: 0.9.1
82
+ version: 0.4.2
89
83
  - !ruby/object:Gem::Dependency
90
- name: rspec
84
+ name: rubocop
91
85
  requirement: !ruby/object:Gem::Requirement
92
86
  requirements:
93
87
  - - "~>"
94
88
  - !ruby/object:Gem::Version
95
- version: '3.7'
89
+ version: 1.14.0
96
90
  type: :development
97
91
  prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
94
  - - "~>"
101
95
  - !ruby/object:Gem::Version
102
- version: '3.7'
96
+ version: 1.14.0
103
97
  - !ruby/object:Gem::Dependency
104
- name: rspec-retry
98
+ name: rubocop-rspec
105
99
  requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
101
  - - "~>"
108
102
  - !ruby/object:Gem::Version
109
- version: 0.6.1
103
+ version: 2.3.0
110
104
  type: :development
111
105
  prerelease: false
112
106
  version_requirements: !ruby/object:Gem::Requirement
113
107
  requirements:
114
108
  - - "~>"
115
109
  - !ruby/object:Gem::Version
116
- version: 0.6.1
110
+ version: 2.3.0
117
111
  - !ruby/object:Gem::Dependency
118
- name: rspec_junit_formatter
112
+ name: yard
119
113
  requirement: !ruby/object:Gem::Requirement
120
114
  requirements:
121
115
  - - "~>"
122
116
  - !ruby/object:Gem::Version
123
- version: 0.4.1
117
+ version: 0.9.26
124
118
  type: :development
125
119
  prerelease: false
126
120
  version_requirements: !ruby/object:Gem::Requirement
127
121
  requirements:
128
122
  - - "~>"
129
123
  - !ruby/object:Gem::Version
130
- version: 0.4.1
124
+ version: 0.9.26
131
125
  - !ruby/object:Gem::Dependency
132
- name: nokogiri
126
+ name: colorize
133
127
  requirement: !ruby/object:Gem::Requirement
134
128
  requirements:
135
129
  - - "~>"
136
130
  - !ruby/object:Gem::Version
137
- version: 1.10.9
138
- type: :development
131
+ version: '0.8'
132
+ type: :runtime
139
133
  prerelease: false
140
134
  version_requirements: !ruby/object:Gem::Requirement
141
135
  requirements:
142
136
  - - "~>"
143
137
  - !ruby/object:Gem::Version
144
- version: 1.10.9
138
+ version: '0.8'
145
139
  - !ruby/object:Gem::Dependency
146
- name: rake
140
+ name: i18n
147
141
  requirement: !ruby/object:Gem::Requirement
148
142
  requirements:
149
143
  - - "~>"
150
144
  - !ruby/object:Gem::Version
151
- version: 12.3.0
145
+ version: '1.8'
152
146
  type: :runtime
153
147
  prerelease: false
154
148
  version_requirements: !ruby/object:Gem::Requirement
155
149
  requirements:
156
150
  - - "~>"
157
151
  - !ruby/object:Gem::Version
158
- version: 12.3.0
152
+ version: '1.8'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '12'
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '14'
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '12'
170
+ - - "<"
171
+ - !ruby/object:Gem::Version
172
+ version: '14'
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: selenium-webdriver
161
175
  requirement: !ruby/object:Gem::Requirement
162
176
  requirements:
163
- - - "~>"
177
+ - - ">="
164
178
  - !ruby/object:Gem::Version
165
- version: '3.12'
179
+ version: '3'
180
+ - - "<"
181
+ - !ruby/object:Gem::Version
182
+ version: '5'
166
183
  type: :runtime
167
184
  prerelease: false
168
185
  version_requirements: !ruby/object:Gem::Requirement
169
186
  requirements:
170
- - - "~>"
187
+ - - ">="
171
188
  - !ruby/object:Gem::Version
172
- version: '3.12'
189
+ version: '3'
190
+ - - "<"
191
+ - !ruby/object:Gem::Version
192
+ version: '5'
173
193
  - !ruby/object:Gem::Dependency
174
194
  name: watir
175
195
  requirement: !ruby/object:Gem::Requirement
176
196
  requirements:
177
- - - "~>"
197
+ - - ">="
178
198
  - !ruby/object:Gem::Version
179
- version: '6.17'
199
+ version: '6'
200
+ - - "<"
201
+ - !ruby/object:Gem::Version
202
+ version: '8'
180
203
  type: :runtime
181
204
  prerelease: false
182
205
  version_requirements: !ruby/object:Gem::Requirement
183
206
  requirements:
184
- - - "~>"
207
+ - - ">="
185
208
  - !ruby/object:Gem::Version
186
- version: '6.17'
209
+ version: '6'
210
+ - - "<"
211
+ - !ruby/object:Gem::Version
212
+ version: '8'
187
213
  description:
188
214
  email:
189
215
  - quality@gitlab.com
190
- executables: []
216
+ executables:
217
+ - chemlab
191
218
  extensions: []
192
219
  extra_rdoc_files: []
193
220
  files:
221
+ - Rakefile
222
+ - bin/chemlab
223
+ - bin/chemlab-suite
224
+ - bin/chemlab-test
194
225
  - lib/chemlab.rb
195
- - lib/chemlab/api_fabricator.rb
196
226
  - lib/chemlab/attributable.rb
227
+ - lib/chemlab/cli/fixtures/new_library/.gitignore
228
+ - lib/chemlab/cli/fixtures/new_library/Gemfile
229
+ - lib/chemlab/cli/fixtures/new_library/README.md.erb
230
+ - lib/chemlab/cli/fixtures/new_library/lib/new_library.rb.erb
231
+ - lib/chemlab/cli/fixtures/new_library/lib/page/sample.rb.erb
232
+ - lib/chemlab/cli/fixtures/new_library/new_library.gemspec.erb
233
+ - lib/chemlab/cli/fixtures/new_library/spec/integration/page/sample_spec.rb.erb
234
+ - lib/chemlab/cli/fixtures/new_library/spec/unit/page/sample_spec.rb.erb
235
+ - lib/chemlab/cli/generator.rb
236
+ - lib/chemlab/cli/generator/templates/page.erb
237
+ - lib/chemlab/cli/new_library.rb
238
+ - lib/chemlab/cli/stub.erb
239
+ - lib/chemlab/cli/stubber.rb
197
240
  - lib/chemlab/component.rb
198
241
  - lib/chemlab/configuration.rb
242
+ - lib/chemlab/core_ext/string/inflections.rb
199
243
  - lib/chemlab/element.rb
200
244
  - lib/chemlab/page.rb
201
- - lib/chemlab/resource.rb
202
- - lib/chemlab/runtime/api_client.rb
203
245
  - lib/chemlab/runtime/browser.rb
204
246
  - lib/chemlab/runtime/env.rb
205
247
  - lib/chemlab/runtime/logger.rb
206
- - lib/chemlab/support/api.rb
207
- - lib/chemlab/support/logging.rb
208
- - lib/chemlab/support/repeater.rb
209
- - lib/chemlab/support/waiter.rb
210
248
  - lib/chemlab/version.rb
211
- homepage: https://about.gitlab.com
249
+ - lib/tasks/generate.rake
250
+ - lib/tasks/generate_stubs.rake
251
+ - lib/tasks/help.rake
252
+ - lib/tasks/new.rake
253
+ - lib/tasks/version.rake
254
+ homepage: https://about.gitlab.com/
212
255
  licenses:
213
256
  - MIT
214
257
  metadata: {}
@@ -220,14 +263,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
263
  requirements:
221
264
  - - ">="
222
265
  - !ruby/object:Gem::Version
223
- version: '0'
266
+ version: 2.7.2
224
267
  required_rubygems_version: !ruby/object:Gem::Requirement
225
268
  requirements:
226
269
  - - ">="
227
270
  - !ruby/object:Gem::Version
228
271
  version: '0'
229
272
  requirements: []
230
- rubygems_version: 3.0.6
273
+ rubygems_version: 3.1.4
231
274
  signing_key:
232
275
  specification_version: 4
233
276
  summary: Automation framework built by GitLab, for the world.