tldr 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3db38676fc9f10ee01f3332c6dfcafb5dc7c0b5405d9c687d13ba3c5b5be008e
4
- data.tar.gz: 874cbd810ed0ebff0e2bc92bba4d703903c10beb51220817314a9e6528308a01
3
+ metadata.gz: 81e3d6734a718c5abbf80cfb088369d5a6bb89b81fc261020d97e34cbd6903bb
4
+ data.tar.gz: 1c4d0b5a53a948d868556b027f6fd6cdb4b9a96e67b459f0b2bf73e05a251d2f
5
5
  SHA512:
6
- metadata.gz: c79d10782d1d15ba8bd782358ad1b45ecbbc7096542aba5d487fd97822a61163049247a6cff2e050de95226e112653418b5cc656278a0fdf55cd7c5b09ce5ccb
7
- data.tar.gz: 429100174c63d3e9d917ef7a5b4f5ff14f105453c53a854a21369595272507b47e4629bd50edd067a6aaf46986f583f8327b9e4f66555e390440c86cd584c04b
6
+ metadata.gz: df9de67f0609adc2c5e0d2fc44a3bec44dd8a25a4ed0d128b8f1beaad6f45343dc9e5644e8d3b94b5bbe4db919f3becdf2e9a468a6eda0978669018135993d1f
7
+ data.tar.gz: 00e813b4947ef3d9e267e3ea4248def3254829b4b910719ad4cdd258cf809d751d7c5a539d527a708f9ff3471fe45fe24fc342d132f15948a56d7d5a56b38c7e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.8.0]
2
+
3
+ * Add a `--yes-i-know` flag that will suppress the large warning when your test
4
+ suite runs over the 1.8s limit
5
+
1
6
  ## [0.7.0]
2
7
 
3
8
  * Add a `tldt` alias for folks who have another executable named `tldr` on their
data/README.md CHANGED
@@ -123,7 +123,8 @@ Usage: tldr [options] some_tests/**/*.rb some/path.rb:13 ...
123
123
  --no-emoji Disable emoji in the output
124
124
  -v, --verbose Print stack traces for errors
125
125
  --[no-]warnings Print Ruby warnings (Default: true)
126
- --comment COMMENT No-op comment, used internally for multi-line execution instructions
126
+ --yes-i-know Suppress TLDR report when suite runs over 1.8s
127
+ --comment COMMENT No-op; used for multi-line execution instructions
127
128
  ```
128
129
 
129
130
  After being parsed, all the CLI options are converted into a
@@ -336,12 +337,26 @@ with the `--reporter` command line option. It can be set to any fully-qualified
336
337
  class name that extends from
337
338
  [TLDR::Reporters::Base](/lib/tldr/reporters/base.rb).
338
339
 
340
+ ### I know my tests are over 1.8s, how do I suppress the huge output?
341
+
342
+ Plenty of test suites are over 1.8s and having TLDR repeatedly print out the
343
+ huge summary at the end of each test run can be distracting and make it harder
344
+ to spot test failures. If you know your test suite is too slow, you can simply
345
+ add the `--yes-i-know` flag
346
+
339
347
  ### What about mocking?
340
348
 
341
349
  TLDR is laser-focused on running tests, so it doesn't provide a built-in mocking
342
350
  facility. Might we interest you in a refreshing
343
351
  [mocktail](https://github.com/testdouble/mocktail), instead?
344
352
 
353
+ ### Contributing to TLDR
354
+
355
+ If you want to submit PRs on this repo, please know that the code style is
356
+ [Kirkland-style Ruby](https://mastodon.social/@searls/111137666157318482), where
357
+ method definitions have parentheses omitted but parentheses are generally
358
+ expected for method invocations.
359
+
345
360
  ## Acknowledgements
346
361
 
347
362
  Thanks to [George Sheppard](https://github.com/fuzzmonkey) for freeing up the
@@ -82,7 +82,11 @@ class TLDR
82
82
  options[:warnings] = warnings
83
83
  end
84
84
 
85
- opts.on "--comment COMMENT", String, "No-op comment, used internally for multi-line execution instructions" do
85
+ opts.on CONFLAGS[:yes_i_know], "Suppress TLDR report when suite runs over 1.8s" do
86
+ options[:yes_i_know] = true
87
+ end
88
+
89
+ opts.on "--comment COMMENT", String, "No-op; used for multi-line execution instructions" do
86
90
  # See "--comment" in lib/tldr/reporters/default.rb for an example of how this is used internally
87
91
  end
88
92
  end.parse!(args)
@@ -31,29 +31,31 @@ class TLDR
31
31
  end
32
32
  end
33
33
 
34
- def time_diff start, stop = Process.clock_gettime(Process::CLOCK_MONOTONIC, :microsecond)
35
- ((stop - start) / 1000.0).round
36
- end
37
-
38
34
  def after_tldr planned_tests, wip_tests, test_results
39
35
  stop_time = Process.clock_gettime Process::CLOCK_MONOTONIC, :microsecond
40
36
 
41
37
  @out.print @icons.tldr
42
38
  @err.print "\n\n"
43
- wrap_in_horizontal_rule do
44
- @err.print [
45
- "too long; didn't run!",
46
- "#{@icons.run} Completed #{test_results.size} of #{planned_tests.size} tests (#{((test_results.size.to_f / planned_tests.size) * 100).round}%) before running out of time.",
47
- (<<~WIP.chomp if wip_tests.any?),
48
- #{@icons.wip} #{plural wip_tests.size, "test was", "tests were"} cancelled in progress:
49
- #{wip_tests.map { |wip_test| " #{time_diff(wip_test.start_time, stop_time)}ms - #{describe(wip_test.test)}" }.join("\n")}
50
- WIP
51
- (<<~SLOW.chomp if test_results.any?),
52
- #{@icons.slow} Your #{[10, test_results.size].min} slowest completed tests:
53
- #{test_results.sort_by(&:runtime).last(10).reverse.map { |result| " #{result.runtime}ms - #{describe(result.test)}" }.join("\n")}
54
- SLOW
55
- describe_tests_that_didnt_finish(planned_tests, test_results)
56
- ].compact.join("\n\n")
39
+
40
+ if @config.yes_i_know
41
+ @err.print "🚨 TLDR! Display summary by omitting --yes-i-know"
42
+ else
43
+ wrap_in_horizontal_rule do
44
+ @err.print [
45
+ "too long; didn't run!",
46
+ "#{@icons.run} Completed #{test_results.size} of #{planned_tests.size} tests (#{((test_results.size.to_f / planned_tests.size) * 100).round}%) before running out of time.",
47
+ (<<~WIP.chomp if wip_tests.any?),
48
+ #{@icons.wip} #{plural wip_tests.size, "test was", "tests were"} cancelled in progress:
49
+ #{wip_tests.map { |wip_test| " #{time_diff(wip_test.start_time, stop_time)}ms - #{describe(wip_test.test)}" }.join("\n")}
50
+ WIP
51
+ (<<~SLOW.chomp if test_results.any?),
52
+ #{@icons.slow} Your #{[10, test_results.size].min} slowest completed tests:
53
+ #{test_results.sort_by(&:runtime).last(10).reverse.map { |result| " #{result.runtime}ms - #{describe(result.test)}" }.join("\n")}
54
+ SLOW
55
+ describe_tests_that_didnt_finish(planned_tests, test_results),
56
+ "🙈 Suppress this summary with --yes-i-know"
57
+ ].compact.join("\n\n")
58
+ end
57
59
  end
58
60
 
59
61
  after_suite test_results
@@ -102,6 +104,10 @@ class TLDR
102
104
 
103
105
  private
104
106
 
107
+ def time_diff start, stop = Process.clock_gettime(Process::CLOCK_MONOTONIC, :microsecond)
108
+ ((stop - start) / 1000.0).round
109
+ end
110
+
105
111
  def summarize_failures results
106
112
  failures = results.select { |result| result.failing? }
107
113
  return failures if failures.empty?
@@ -138,7 +144,7 @@ class TLDR
138
144
  rule = @icons.alarm + "=" * 20 + " ABORTED RUN " + "=" * 20 + @icons.alarm
139
145
  @err.print "#{rule}\n\n"
140
146
  yield
141
- @err.print "\n\n#{rule}\n\n"
147
+ @err.print "\n\n#{rule}"
142
148
  end
143
149
 
144
150
  def describe_tests_that_didnt_finish planned_tests, test_results
@@ -150,7 +156,7 @@ class TLDR
150
156
  failed_locators = consolidate failed, exclude: unrun_locators
151
157
  suggested_locators = unrun_locators + [
152
158
  ("--comment \"Also include #{plural failed.size, "test"} that failed:\"" if failed_locators.any?)
153
- ] + failed_locators
159
+ ].compact + failed_locators
154
160
  <<~MSG
155
161
  #{@icons.rock_on} Run the #{plural unrun.size, "test"} that didn't finish:
156
162
  #{tldr_command} #{@config.to_full_args exclude: [:paths]} #{suggested_locators.join(" \\\n ")}
@@ -17,6 +17,7 @@ class TLDR
17
17
  base_path: "--base-path",
18
18
  no_dotfile: "--no-dotfile",
19
19
  warnings: "--[no-]warnings",
20
+ yes_i_know: "--yes-i-know",
20
21
  paths: nil
21
22
  }.freeze
22
23
 
@@ -26,7 +27,7 @@ class TLDR
26
27
  :paths, :seed, :no_helper, :verbose, :reporter,
27
28
  :helper_paths, :load_paths, :parallel, :names, :fail_fast, :no_emoji,
28
29
  :prepend_paths, :no_prepend, :exclude_paths, :exclude_names, :base_path,
29
- :no_dotfile, :warnings,
30
+ :no_dotfile, :warnings, :yes_i_know,
30
31
  # Internal properties
31
32
  :config_intended_for_merge_only, :seed_set_intentionally, :cli_defaults
32
33
  ].freeze
@@ -64,7 +65,8 @@ class TLDR
64
65
  exclude_paths: [],
65
66
  exclude_names: [],
66
67
  base_path: nil,
67
- warnings: true
68
+ warnings: true,
69
+ yes_i_know: false
68
70
  }
69
71
 
70
72
  if cli_defaults
@@ -101,7 +103,7 @@ class TLDR
101
103
  end
102
104
 
103
105
  # Booleans
104
- [:no_helper, :verbose, :fail_fast, :no_emoji, :no_prepend, :warnings].each do |key|
106
+ [:no_helper, :verbose, :fail_fast, :no_emoji, :no_prepend, :warnings, :yes_i_know].each do |key|
105
107
  merged_args[key] = defaults[key] if merged_args[key].nil?
106
108
  end
107
109
 
data/lib/tldr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class TLDR
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tldr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Searls
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-10-03 00:00:00.000000000 Z
12
+ date: 2023-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: super_diff