geordi 5.3.0 → 6.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 693551524b9b50f70e2daf649cd8184cc197b1576153beaf675ebaae01a88e84
4
- data.tar.gz: 915a4c3e1449f0883e31bd828a850354db26bcdcf57523ffdf28ade6e51bee1e
3
+ metadata.gz: 57407a29854dbd2b1b1d854d652377db25791fd36353cfdcbd56a2dfbddb5a1d
4
+ data.tar.gz: 27f83bb707fc85575e348b6f83ce74b86baffe1d224a6fe3794ee19a3ed7ff00
5
5
  SHA512:
6
- metadata.gz: bcbd43ffb224b54a7ba553c6bbcab6931d06b15df4a5e2e3eb9a93fe019187df47174bb2b61030a54d2408fb80235a1937eae7ff0a0f3c17e58756d3cbfc94b0
7
- data.tar.gz: 03ef92df5d677f51ee70bec10bf035034824980b5c16c15c38e587de5b2a2cf683ddbce64067695e566fc9ee207d26af6f1986d909210b9fda61d9570bb91add
6
+ metadata.gz: 6e3cfe2af06cde2485cd95d1e2b48743bc37e7b7987bf5f1f337d60f919de6014c719d472875940c8f8b5b53da1453e0e7f923e28e1b31d671c4a105531f3f78
7
+ data.tar.gz: 49317f106b384e010f9c7854691f298f9e8909531c956a3a57989d496bb9cc324c9ed388818697d0ca55f8522b2c3ae7af369c774d854049e0b5ed7fd157c8a3
@@ -25,6 +25,8 @@ jobs:
25
25
  gemfile: Gemfile
26
26
  - ruby: 2.7.2
27
27
  gemfile: Gemfile
28
+ - ruby: 3.0.0
29
+ gemfile: Gemfile
28
30
  env:
29
31
  BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
30
32
  steps:
@@ -33,16 +35,14 @@ jobs:
33
35
  uses: ruby/setup-ruby@v1
34
36
  with:
35
37
  ruby-version: "${{ matrix.ruby }}"
36
- - name: Install vncserver
37
- run: |
38
- sudo apt-get update
39
- sudo apt-get install -y tightvncserver
40
- # Fake required password for vncserver
41
- mkdir ~/.vnc && touch ~/.vnc/passwd && chmod 700 ~/.vnc/passwd
42
38
  - name: Bundle
43
39
  run: |
44
40
  gem install bundler:1.17.3
45
41
  bundle install --no-deployment
42
+ - name: Install VNC viewer
43
+ run: |
44
+ sudo apt-get update
45
+ sudo apt-get install -y xtightvncviewer
46
46
  - name: Run tests
47
47
  run: bundle exec rake
48
48
 
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/CHANGELOG.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Changelog
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
-
5
4
  This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
5
 
7
6
  ## Unreleased
@@ -9,6 +8,40 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
9
8
  ### Compatible changes
10
9
  ### Breaking changes
11
10
 
11
+
12
+ ## 6.1.0 2021-07-15
13
+
14
+ ### Compatible changes
15
+ * Improve parsing of Capistrano files ([#162](https://github.com/makandra/geordi/issues/162))
16
+ * `geordi tests` now takes test files as arguments and passes them to either RSpec or Cucumber ([#152](https://github.com/makandra/geordi/issues/152))
17
+
18
+
19
+ ## 6.0.0 2021-06-02
20
+
21
+ ### Compatible changes
22
+ * `geordi commit` will continue even if one of the given projects is inaccessible. It will only fail if no stories could be found at all.
23
+
24
+ ### Breaking changes
25
+ * Removed VNC test browser support for integration tests – Headless Chrome has
26
+ matured and is almost a drop-in replacement. Also, key binding issues have
27
+ increased with VNC and recent Linux.
28
+ * Please use a headless Chrome setup <https://makandracards.com/makandra/492109-capybara-running-tests-with-headless-chrome>.
29
+ * You might also want to get rid of your local VNC server `sudo apt remove tightvncserver`.
30
+ * Removed support for serial execution of scenarios tagged with @solo. Serial
31
+ execution is not needed with Headless Chrome, as Headless instances cannot
32
+ interfere (like, stealing focus).
33
+
34
+
35
+ ## 5.4.0 2021-02-01
36
+
37
+ ### Compatible changes
38
+ * Add `geordi branch` command that checks out a feature branch based on a story from Pivotal Tracker
39
+ * Faster MySQL dumping with [`--single-transaction` and `--quick`](https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction)
40
+ * Allow pivotal tracker ids in the global config file
41
+ * Fix missing require for `Fileutils` in the dump load command (#145)
42
+ * Document `PARALLEL_TEST_PROCESSORS`
43
+
44
+
12
45
  ## 5.3.0 2021-02-01
13
46
 
14
47
  ### Compatible changes
data/Gemfile CHANGED
@@ -5,9 +5,9 @@ gemspec
5
5
 
6
6
  gem 'aruba', '< 1' # Drops support for Ruby 2.2-
7
7
  gem 'rake', '< 13' # Drops support for Ruby 2.1
8
- gem 'rspec-mocks'
8
+ gem 'rspec'
9
9
  gem 'highline'
10
10
  gem 'parallel_tests'
11
11
  gem 'launchy'
12
- gem 'pry'
12
+ gem 'byebug'
13
13
  gem 'tracker_api'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- geordi (5.3.0)
4
+ geordi (6.0.1)
5
5
  thor (~> 1)
6
6
 
7
7
  GEM
@@ -22,9 +22,9 @@ GEM
22
22
  thread_safe (~> 0.3, >= 0.3.1)
23
23
  backports (3.18.2)
24
24
  builder (3.2.4)
25
+ byebug (10.0.2)
25
26
  childprocess (1.0.1)
26
27
  rake (< 13.0)
27
- coderay (1.1.3)
28
28
  coercible (1.0.0)
29
29
  descendants_tracker (~> 0.0.1)
30
30
  contracts (0.16.0)
@@ -61,27 +61,34 @@ GEM
61
61
  ice_nine (0.11.2)
62
62
  launchy (2.4.3)
63
63
  addressable (~> 2.3)
64
- method_source (1.0.0)
65
- mimemagic (0.3.5)
64
+ mimemagic (0.3.9)
65
+ nokogiri (~> 1)
66
+ rake
67
+ mini_portile2 (2.4.0)
66
68
  multi_json (1.15.0)
67
69
  multi_test (0.1.2)
68
70
  multipart-post (2.1.1)
71
+ nokogiri (1.9.1)
72
+ mini_portile2 (~> 2.4.0)
69
73
  parallel (1.19.2)
70
74
  parallel_tests (2.32.0)
71
75
  parallel
72
- pry (0.13.1)
73
- coderay (~> 1.1)
74
- method_source (~> 1.0)
75
76
  public_suffix (3.1.1)
76
77
  rake (12.3.3)
77
78
  representable (3.0.4)
78
79
  declarative (< 0.1.0)
79
80
  declarative-option (< 0.2.0)
80
81
  uber (< 0.2.0)
82
+ rspec (3.10.0)
83
+ rspec-core (~> 3.10.0)
84
+ rspec-expectations (~> 3.10.0)
85
+ rspec-mocks (~> 3.10.0)
86
+ rspec-core (3.10.1)
87
+ rspec-support (~> 3.10.0)
81
88
  rspec-expectations (3.10.0)
82
89
  diff-lcs (>= 1.2.0, < 2.0)
83
90
  rspec-support (~> 3.10.0)
84
- rspec-mocks (3.10.0)
91
+ rspec-mocks (3.10.2)
85
92
  diff-lcs (>= 1.2.0, < 2.0)
86
93
  rspec-support (~> 3.10.0)
87
94
  rspec-support (3.10.0)
@@ -109,13 +116,13 @@ PLATFORMS
109
116
 
110
117
  DEPENDENCIES
111
118
  aruba (< 1)
119
+ byebug
112
120
  geordi!
113
121
  highline
114
122
  launchy
115
123
  parallel_tests
116
- pry
117
124
  rake (< 13)
118
- rspec-mocks
125
+ rspec
119
126
  tracker_api
120
127
 
121
128
  BUNDLED WITH
data/README.md CHANGED
@@ -25,6 +25,15 @@ You can always run `geordi help <command>` to quickly look up command help.
25
25
  Enable the given virtual host, disabling all others.
26
26
 
27
27
 
28
+ ### `geordi branch`
29
+ Check out a feature branch based on a story from Pivotal Tracker.
30
+
31
+ Example: `geordi branch`
32
+
33
+ On the first execution we ask for your Pivotal Tracker API token. It will be
34
+ stored in `~/.config/geordi/global.yml`.
35
+
36
+
28
37
  ### `geordi capistrano COMMAND`
29
38
  Run a capistrano command on all deploy targets.
30
39
 
@@ -81,24 +90,15 @@ Run Cucumber features.
81
90
 
82
91
  Example: `geordi cucumber features/authentication_feature:3`
83
92
 
84
- Runs Cucumber with `bundle exec`, using parallel tests, with a VNC session
85
- holding Selenium test browsers, support for using a dedicated testing browser
86
- and beta support for re-running failed scenarios.
87
-
88
- - *@solo:* Generally, features are run in parallel. However, scenarios tagged
89
- with @solo are excluded from the parallel run and executed sequentially instead.
93
+ Runs Cucumber with `bundle exec`, using parallel tests and with support for
94
+ re-running failed scenarios.
90
95
 
91
- - *Debugging:* In some cases, the dot-printing Cucumber formatter swallows
92
- errors. In case a feature fails without an error message, try running it with
93
- `--debug` or `-d`.
96
+ Any unknown option will be passed through to Cucumber, e.g. `--format=pretty`.
97
+ Make sure to connect option and value with an equals sign, i.e. have each option
98
+ a contiguous string.
94
99
 
95
- - *Options:* Any unknown option will be passed through to Cucumber,
96
- e.g. `--format=pretty`. Make sure to connect option and value with an equals
97
- sign, i.e. have each option a contiguous string.
98
-
99
- - *VNC:* By default, test browsers will run in a VNC session. When using a
100
- headless test browser anyway, you can disable VNC by setting `use_vnc: false`
101
- in `.geordi.yml` in the project root.
100
+ In order to limit processes in a parallel run, you can set an environment
101
+ variable like this: `PARALLEL_TEST_PROCESSORS=6 geordi cucumber`
102
102
 
103
103
  **Options**
104
104
  - `-m, [--modified], [--no-modified]`: Run all modified features
@@ -176,6 +176,7 @@ There are three subcommands:
176
176
 
177
177
  - `geordi docker vnc`
178
178
  Opens a VNC viewer to connect to the VNC server in the container.
179
+ Append `--setup` to be guided through the setup of VNC viewer.
179
180
 
180
181
 
181
182
  ### `geordi drop-databases`
@@ -223,19 +224,6 @@ Loading a dump into one of multiple local databases is not supported yet.
223
224
  - `-d, [--database=NAME]`: Database name, if there are multiple databases
224
225
 
225
226
 
226
- ### `geordi firefox COMMAND`
227
- Run a command with VNC and test browser set up (alias: chrome).
228
-
229
- Example: `geordi firefox b cucumber` or `geordi firefox --setup 24.0`
230
-
231
- Useful when you need Firefox for Selenium or the VNC set up, but can't use the
232
- `geordi cucumber` command. This command is aliased `chrome` for users running
233
- Selenium in Chrome.
234
-
235
- **Options**
236
- - `[--setup=FIREFOX_VERSION]`: Install a special test runner Firefox with the given version
237
-
238
-
239
227
  ### `geordi help [COMMAND]`
240
228
  Describe available commands or one specific command.
241
229
 
@@ -281,7 +269,10 @@ Run RSpec.
281
269
 
282
270
  Example: `geordi rspec spec/models/user_spec.rb:13`
283
271
 
284
- Runs RSpec with RSpec 1/2 support, parallel_tests detection and `bundle exec`.
272
+ Runs RSpec with version 1/2 support, parallel_tests detection and `bundle exec`.
273
+
274
+ In order to limit processes in a parallel run, you can set an environment
275
+ variable like this: `PARALLEL_TEST_PROCESSORS=6 geordi rspec`
285
276
 
286
277
 
287
278
  ### `geordi security-update [STEP]`
@@ -351,9 +342,15 @@ servers. When passed a number, directly connects to the selected server.
351
342
  - `-s, [--select-server=[SERVER_NUMBER]]`: Select a server to connect to
352
343
 
353
344
 
354
- ### `geordi tests`
345
+ ### `geordi tests [FILES]`
355
346
  Run all employed tests.
356
347
 
348
+ When running `geordi tests` without any arguments, all unit tests, rspec specs
349
+ and cucumber features will be run.
350
+
351
+ When passing arguments, Geordi will forward them to either `rspec` or `cucumber`,
352
+ depending on what the first argument indicates.
353
+
357
354
 
358
355
  ### `geordi unit`
359
356
  Run Test::Unit.
@@ -374,18 +371,6 @@ Performs: `git pull`, `bundle install` (if necessary) and migrates (if applicabl
374
371
  ### `geordi version`
375
372
  Print the current version of geordi.
376
373
 
377
-
378
- ### `geordi vnc`
379
- Show the hidden VNC window.
380
-
381
- Example: `geordi vnc` or `geordi vnc --setup`
382
-
383
- Launch a VNC session to the hidden screen where `geordi cucumber` runs Selenium
384
- tests.
385
-
386
- **Options**
387
- - `[--setup], [--no-setup]`: Guide through the setup of VNC
388
-
389
374
  b
390
375
  ---
391
376
 
@@ -409,13 +394,6 @@ Stores a timestamped database dump for the given Rails environment in `~/dumps`:
409
394
  - `--compress`: After dumping, run gzip to compress the dump in place
410
395
 
411
396
 
412
- launchy_browser
413
- ---------------
414
-
415
- Used by the `geordi cucumber` command. Makes launchy open pages in the user's
416
- browser, as opposed to opening it within the VNC window.
417
-
418
-
419
397
  Contributing
420
398
  ============
421
399
 
data/exe/dumple CHANGED
@@ -78,6 +78,13 @@ begin
78
78
  command << " -p\"#{config['password']}\""
79
79
  command << " #{config['database']}"
80
80
  command << " -r #{dump_path}"
81
+ # Using a transaction to allow concurrent request while creating a dump.
82
+ # This works only reliable for InnoDB tables.
83
+ # More details: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction
84
+ command << ' --single-transaction'
85
+ # Disable buffering in memory to avoid a memory overflow for large tables
86
+ # More details https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_quick
87
+ command << ' --quick'
81
88
  if port
82
89
  command << " -h#{host || '127.0.0.1'} -P#{port}"
83
90
  else
data/geordi.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency 'thor', '~> 1'
27
27
 
28
- #spec.post_install_message = <<-ATTENTION
29
- #ATTENTION
28
+ spec.post_install_message = <<-ATTENTION
29
+ Support for sequential running of integration tests tagged with @solo has been dropped.
30
+ ATTENTION
30
31
  end
@@ -11,7 +11,7 @@ module Geordi
11
11
 
12
12
  def user(server)
13
13
  cap2user = deploy_info[/^\s*set\s*:user,\s*['"](.*?)['"]/, 1]
14
- cap2user || deploy_info[/^\s*server\s*['"]#{server}['"],.*user.{1,4}['"](.*?)['"]/m, 1]
14
+ cap2user || deploy_info[/^\s*server\s*['"]#{server}['"],.*user.{1,4}['"](.*?)['"]/, 1]
15
15
  end
16
16
 
17
17
  def servers
@@ -42,14 +42,23 @@ module Geordi
42
42
  attr_accessor :deploy_info, :stage
43
43
 
44
44
  def load_deploy_info
45
+ lines = []
45
46
  self.deploy_info = ''
46
47
 
47
48
  if stage
48
- deploy_info << File.read(File.join(root, "config/deploy/#{stage}.rb"))
49
- deploy_info << "\n"
49
+ lines += File.readlines(File.join(root, "config/deploy/#{stage}.rb"))
50
50
  end
51
51
 
52
- deploy_info << File.read(File.join(root, 'config/deploy.rb'))
52
+ lines += File.readlines(File.join(root, 'config/deploy.rb'))
53
+
54
+ lines.each do |line|
55
+ next if line =~ /^\s*#/ # Omit comment lines
56
+ line.chomp! if line =~ /[\\,]\s*$/ # Join wrapped lines
57
+
58
+ deploy_info << line
59
+ end
60
+
61
+ deploy_info
53
62
  end
54
63
 
55
64
  def find_project_root!
@@ -10,7 +10,7 @@ module Geordi
10
10
  chromedriver_version = determine_chromedriver_version
11
11
 
12
12
  if skip_update?(chrome_version, chromedriver_version)
13
- Interaction.note("No update required, you are using for both executables the same version #{chrome_version}!") unless options[:quiet_if_matching]
13
+ Interaction.success "No update required: both Chrome and chromedriver are on v#{chrome_version}!" unless options[:quiet_if_matching]
14
14
  else
15
15
  chromedriver_zip = download_chromedriver(chrome_version)
16
16
  unzip(chromedriver_zip, File.expand_path('~/bin'))
@@ -18,7 +18,7 @@ module Geordi
18
18
  chromedriver_zip.unlink
19
19
 
20
20
  # We need to determine the version again, as it could be nil in case no chromedriver was installed before
21
- Interaction.note "Chromedriver updated to version #{determine_chromedriver_version}"
21
+ Interaction.success "Chromedriver updated to v#{determine_chromedriver_version}."
22
22
  end
23
23
  end
24
24
 
@@ -31,7 +31,7 @@ module Geordi
31
31
  end
32
32
 
33
33
  if !status.success? || chrome_version.nil?
34
- Interaction.fail('Could not determine the current Google Chrome version')
34
+ Interaction.fail('Could not determine the version of Google Chrome.')
35
35
  else
36
36
  chrome_version.to_i
37
37
  end
@@ -46,7 +46,7 @@ module Geordi
46
46
  end
47
47
 
48
48
  if !status.success? || chromedriver_version.nil?
49
- Interaction.fail('Could not determine the current chromedriver version')
49
+ Interaction.fail('Could not determine the version of chromedriver.')
50
50
  else
51
51
  chromedriver_version.to_i
52
52
  end
@@ -68,7 +68,7 @@ module Geordi
68
68
 
69
69
  file
70
70
  else
71
- Interaction.fail("Could not download chromedriver version #{latest_version}")
71
+ Interaction.fail("Could not download chromedriver v#{latest_version}.")
72
72
  end
73
73
  end
74
74
 
@@ -79,7 +79,7 @@ module Geordi
79
79
  if response.is_a?(Net::HTTPSuccess)
80
80
  response.body.to_s
81
81
  else
82
- Interaction.fail("Could not find the latest version for Google Chrome version #{chrome_version}")
82
+ Interaction.fail("Could not download the chromedriver v#{chrome_version}.")
83
83
  end
84
84
  end
85
85
 
@@ -87,7 +87,7 @@ module Geordi
87
87
  _stdout_str, _error_str, status = Open3.capture3('unzip', '-d', output_dir, '-o', zip.path)
88
88
 
89
89
  unless status.success?
90
- Interaction.fail("Could not unzip #{zip.path}")
90
+ Interaction.fail("Could not unzip #{zip.path}.")
91
91
  end
92
92
  end
93
93
  end
data/lib/geordi/cli.rb CHANGED
@@ -15,12 +15,12 @@ module Geordi
15
15
  class_eval File.read(file), file
16
16
  end
17
17
 
18
- private
19
-
20
- # fix weird implementation of #invoke
21
- def invoke_geordi(name, *args)
22
- options = args.last.is_a?(Hash) ? args.pop : {}
23
- invoke(name, args, options)
18
+ no_commands do
19
+ # fix weird implementation of #invoke
20
+ def invoke_geordi(name, *args)
21
+ options = args.last.is_a?(Hash) ? args.pop : {}
22
+ invoke(name, args, options)
23
+ end
24
24
  end
25
25
 
26
26
  end