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 +4 -4
- data/.github/workflows/test.yml +6 -6
- data/.rspec +2 -0
- data/CHANGELOG.md +34 -1
- data/Gemfile +2 -2
- data/Gemfile.lock +17 -10
- data/README.md +28 -50
- data/exe/dumple +7 -0
- data/geordi.gemspec +3 -2
- data/lib/geordi/capistrano_config.rb +13 -4
- data/lib/geordi/chromedriver_updater.rb +7 -7
- data/lib/geordi/cli.rb +6 -6
- data/lib/geordi/commands/branch.rb +12 -0
- data/lib/geordi/commands/commit.rb +1 -1
- data/lib/geordi/commands/cucumber.rb +7 -38
- data/lib/geordi/commands/delete_dumps.rb +1 -1
- data/lib/geordi/commands/docker.rb +7 -1
- data/lib/geordi/commands/drop_databases.rb +0 -2
- data/lib/geordi/commands/dump.rb +3 -0
- data/lib/geordi/commands/remove_executable_flags.rb +2 -1
- data/lib/geordi/commands/rspec.rb +4 -1
- data/lib/geordi/commands/tests.rb +36 -12
- data/lib/geordi/cucumber.rb +4 -100
- data/lib/geordi/db_cleaner.rb +5 -5
- data/lib/geordi/docker.rb +71 -4
- data/lib/geordi/dump_loader.rb +1 -5
- data/lib/geordi/gitpt.rb +156 -70
- data/lib/geordi/interaction.rb +5 -3
- data/lib/geordi/remote.rb +1 -0
- data/lib/geordi/settings.rb +38 -38
- data/lib/geordi/version.rb +1 -1
- metadata +9 -10
- data/exe/launchy_browser +0 -15
- data/lib/geordi/commands/_setup_vnc.rb +0 -64
- data/lib/geordi/commands/firefox.rb +0 -32
- data/lib/geordi/commands/vnc.rb +0 -18
- data/lib/geordi/firefox_for_selenium.rb +0 -200
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57407a29854dbd2b1b1d854d652377db25791fd36353cfdcbd56a2dfbddb5a1d
|
4
|
+
data.tar.gz: 27f83bb707fc85575e348b6f83ce74b86baffe1d224a6fe3794ee19a3ed7ff00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e3cfe2af06cde2485cd95d1e2b48743bc37e7b7987bf5f1f337d60f919de6014c719d472875940c8f8b5b53da1453e0e7f923e28e1b31d671c4a105531f3f78
|
7
|
+
data.tar.gz: 49317f106b384e010f9c7854691f298f9e8909531c956a3a57989d496bb9cc324c9ed388818697d0ca55f8522b2c3ae7af369c774d854049e0b5ed7fd157c8a3
|
data/.github/workflows/test.yml
CHANGED
@@ -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
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
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
geordi (
|
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
|
-
|
65
|
-
|
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.
|
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
|
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
|
85
|
-
|
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
|
-
|
92
|
-
|
93
|
-
|
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
|
-
|
96
|
-
|
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
|
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
|
-
|
29
|
-
|
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}['"](.*?)['"]
|
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
|
-
|
49
|
-
deploy_info << "\n"
|
49
|
+
lines += File.readlines(File.join(root, "config/deploy/#{stage}.rb"))
|
50
50
|
end
|
51
51
|
|
52
|
-
|
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.
|
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.
|
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
|
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
|
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
|
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
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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
|