fixme 4.1.0 → 6.1.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
- SHA1:
3
- metadata.gz: 542218a87018613a2dc76f20bcdd28b66f40ea6a
4
- data.tar.gz: ed4c8ed714fa465784188e8378aaad038ef06c41
2
+ SHA256:
3
+ metadata.gz: 16e16af88b6b78de4b441bad22260a6ebadc1bc2daaeff1a1244c43b715da874
4
+ data.tar.gz: cdfc448199b5ddeb1ae6f7efd6fb801002b40f994dc78fc63309183f6f347c85
5
5
  SHA512:
6
- metadata.gz: deb1c1a6d45e97291628ed1ad53b3ad590a0f7bbc4c39cba97a62dc7e4c4d65806bbfa509f262a1c9045f42b5a0bce0257852b37fe704d17c73e6b592d22280e
7
- data.tar.gz: 52c1ed22af9e8a1b5b7b1c0ea8b62ba090a6b72f7fffac5f6d8d99fd511abb3bddef0b667b5c742968aca0415c9d6f8e5d666db6e4929d23ffbb3d486ad42801
6
+ metadata.gz: 320d27cacd701df672ec5fb7dcbcb31feb9017fd4e06d294828a94bc4775a566be772806076f5d4c96f2cd23a05092d763648f23179957dd8305c2a25e5b5f3e
7
+ data.tar.gz: 91ed853d3d34ea23789c2f042c1db46c430303fa4ea07b55fae8e25d9602478a40eba6624b8d3a827c99e7c758fd2d045e75d1c452c81433842a6f4ff19b4e90
@@ -0,0 +1,26 @@
1
+ name: Ruby CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ strategy:
15
+ matrix:
16
+ ruby-version: ["3.0", "2.7", "2.6"]
17
+
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - name: Set up Ruby ${{ matrix.ruby-version }}
21
+ uses: ruby/setup-ruby@ae9cb3b565e36682a2c6045e4f664388da4c73aa
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
25
+ - name: Run tests
26
+ run: bundle exec rake
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## 6.1.0
4
+
5
+ * Checks `APP_ENV`, not just `RACK_ENV`, as this is [what Sinatra now encourages using](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md#200--2017-04-10).
6
+
7
+ ## 6.0.0
8
+
9
+ * Require zero-padded month and day, i.e. disallow `2019-1-2`. This enforced consistency makes it easier to grep for an exploded FIXME.
10
+
11
+ ## 5.0.0 and earlier
12
+
13
+ * Please see commit history, or make a pull request to update this file.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  FIXME comments that raise after a certain point in time:
4
4
 
5
- ```
5
+ ```ruby
6
6
  FIXME "2014-07-31: Stop hard-coding currency."
7
7
  currency = "USD"
8
8
  ```
@@ -20,11 +20,9 @@ You may want to use these bad boys next to:
20
20
 
21
21
  For simplicity, the date comparison uses machine-local time (not e.g. the Rails configured time zone).
22
22
 
23
- Protip: make sure it's clear from the exception or from a separate comment just what should be done – sometimes not even the person who wrote the quickfix will remember what you're meant to change.
24
-
25
23
  ### Environment awareness
26
24
 
27
- If `Rails.env` (Ruby on Rails) or `ENV["RACK_ENV"]` (e.g. Sinatra) is present, it will only ever raise in the `"test"` and `"development"` environments. That is, the production app will never raise these exceptions.
25
+ If `Rails.env` (Ruby on Rails), `ENV["APP_ENV"]` or `ENV["RACK_ENV"]` (e.g. Sinatra) is present, it will only ever raise in the `"test"` and `"development"` environments. That is, the production app will never raise these exceptions.
28
26
 
29
27
  ### Do something other than raise
30
28
 
@@ -32,7 +30,7 @@ When these exceptions trigger on your CI server they stop the line, blocking you
32
30
 
33
31
  So you can configure the library to do something other than raise:
34
32
 
35
- ```
33
+ ```ruby
36
34
  # In a Rails project, this might be in config/initializers/fixme.rb
37
35
  Fixme.explode_with do |details|
38
36
  YourOwnCodeOrSomeLibrary.email_developers(details.full_message)
@@ -44,7 +42,7 @@ There's also `details.date`, `details.due_days_ago`, `details.message` and `deta
44
42
 
45
43
  You can call `Fixme.raise_from(details)` to get the default behavior, if you want that under certain conditions:
46
44
 
47
- ```
45
+ ```ruby
48
46
  Fixme.explode_with do |details|
49
47
  if details.due_days_ago > 5
50
48
  Fixme.raise_from(details)
@@ -58,6 +56,11 @@ end
58
56
 
59
57
  If you e.g. don't want your CI server to raise, make it set the environment variable `DISABLE_FIXME_LIB`.
60
58
 
59
+ ### Pro-tips
60
+
61
+ * Make sure it's clear from the exception or from a separate comment just what should be done – sometimes not even the person who wrote the FIXME will remember what you're meant to change.
62
+ * If a FIXME raises right in a class/module, rather than inside a method, there may be follow-on errors (about missing methods and such) since the rest of that file won't execute. Being aware of this can help understand otherwise confusing CI failures.
63
+
61
64
 
62
65
  ## Installation
63
66
 
data/fixme.gemspec CHANGED
@@ -11,13 +11,14 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = %q{Comments that raise after a certain point in time.}
12
12
  spec.homepage = ""
13
13
  spec.license = "MIT"
14
+ spec.metadata = { "rubygems_mfa_required" => "true" }
14
15
 
15
16
  spec.files = `git ls-files -z`.split("\x0")
16
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
19
  spec.require_paths = ["lib"]
19
20
 
20
- spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "bundler"
21
22
  spec.add_development_dependency "rake"
22
23
  spec.add_development_dependency "rspec"
23
24
  spec.add_development_dependency "timecop"
data/lib/fixme/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fixme
2
- VERSION = "4.1.0"
2
+ VERSION = "6.1.1"
3
3
  end
data/lib/fixme.rb CHANGED
@@ -2,7 +2,8 @@ require "fixme/version"
2
2
  require "date"
3
3
 
4
4
  module Fixme
5
- UnfixedError = Class.new(StandardError)
5
+ # We intentionally do NOT inherit from StandardError, because we don't want these errors caught by a blanket "rescue".
6
+ UnfixedError = Class.new(Exception)
6
7
 
7
8
  Details = Struct.new(:full_message, :backtrace, :date, :message) do
8
9
  def due_days_ago
@@ -63,7 +64,11 @@ module Fixme
63
64
  private
64
65
 
65
66
  def framework_env
66
- defined?(Rails) ? Rails.env : ENV["RACK_ENV"]
67
+ if defined?(Rails)
68
+ Rails.env
69
+ else
70
+ ENV["RACK_ENV"] || ENV["APP_ENV"]
71
+ end
67
72
  end
68
73
 
69
74
  def disallow_timecop(&block)
@@ -75,10 +80,10 @@ module Fixme
75
80
  end
76
81
 
77
82
  def parse
78
- match = @date_and_message.match(/\A(\d\d\d\d-\d\d?-\d\d?): (.+)\z/)
83
+ match = @date_and_message.match(/\A(\d\d\d\d-\d\d-\d\d): (.+)\z/)
79
84
 
80
85
  unless match
81
- raise %{FIXME does not follow the "2015-01-01: Foo" format: #{@date_and_message.inspect}}
86
+ raise %{FIXME does not follow the "2015-01-31: Foo" format: #{@date_and_message.inspect}}
82
87
  end
83
88
 
84
89
  raw_date, message = match.captures
data/spec/fixme_spec.rb CHANGED
@@ -29,7 +29,7 @@ describe Fixme, "#FIXME" do
29
29
  it "truncates the backtrace to exclude the library itself" do
30
30
  begin
31
31
  FIXME "2013-12-31: Remove this stuff."
32
- rescue => e
32
+ rescue Fixme::UnfixedError => e
33
33
  expect(e.backtrace.first).to include("fixme_spec.rb:")
34
34
  end
35
35
  end
@@ -41,10 +41,16 @@ describe Fixme, "#FIXME" do
41
41
  }.to raise_error("Fix by 2013-12-31: Remove this: and this.")
42
42
  end
43
43
 
44
- it "complains if the desired format is not adhered to" do
44
+ it "complains if the desired message format is not adhered to" do
45
45
  expect {
46
46
  FIXME "9999-01-01, Learn to: type"
47
- }.to raise_error(%{FIXME does not follow the "2015-01-01: Foo" format: "9999-01-01, Learn to: type"})
47
+ }.to raise_error(%{FIXME does not follow the "2015-01-31: Foo" format: "9999-01-01, Learn to: type"})
48
+ end
49
+
50
+ it "complains if the extended ISO 8601 date format is not adhered to" do
51
+ expect {
52
+ FIXME "9999-01-1: Foo"
53
+ }.to raise_error(%{FIXME does not follow the "2015-01-31: Foo" format: "9999-01-1: Foo"})
48
54
  end
49
55
 
50
56
  it "is available everywhere" do
@@ -55,6 +61,15 @@ describe Fixme, "#FIXME" do
55
61
  }.to raise_error(Fixme::UnfixedError)
56
62
  end
57
63
 
64
+ it "is not caught by a blanket 'rescue'" do
65
+ expect {
66
+ begin
67
+ FIXME "2000-01-01: Don't be caught."
68
+ rescue
69
+ end
70
+ }.to raise_error(Fixme::UnfixedError)
71
+ end
72
+
58
73
  it "is not fooled by the Timecop gem" do
59
74
  future_date = Date.today + 2
60
75
 
@@ -86,7 +101,31 @@ describe Fixme, "#FIXME" do
86
101
  end
87
102
  end
88
103
 
89
- context "when a Rack environment is detected" do
104
+ context "when an APP_ENV is detected" do
105
+ before do
106
+ stub_env "DISABLE_FIXME_LIB", nil
107
+ end
108
+
109
+ it "raises in the 'test' environment" do
110
+ stub_env "RACK_ENV", nil
111
+ stub_env "APP_ENV", "test"
112
+ expect_to_raise
113
+ end
114
+
115
+ it "raises in the 'development' environment" do
116
+ stub_env "RACK_ENV", nil
117
+ stub_env "APP_ENV", "development"
118
+ expect_to_raise
119
+ end
120
+
121
+ it "does not raise in other environments" do
122
+ stub_env "RACK_ENV", nil
123
+ stub_env "APP_ENV", "production"
124
+ expect_not_to_raise
125
+ end
126
+ end
127
+
128
+ context "when a RACK_ENV is detected" do
90
129
  before do
91
130
  stub_env "DISABLE_FIXME_LIB", nil
92
131
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixme
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrik Nyh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-30 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '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: '1.5'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +73,9 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - ".github/workflows/ci.yml"
76
77
  - ".gitignore"
78
+ - CHANGELOG.md
77
79
  - Gemfile
78
80
  - README.md
79
81
  - Rakefile
@@ -84,7 +86,8 @@ files:
84
86
  homepage: ''
85
87
  licenses:
86
88
  - MIT
87
- metadata: {}
89
+ metadata:
90
+ rubygems_mfa_required: 'true'
88
91
  post_install_message:
89
92
  rdoc_options: []
90
93
  require_paths:
@@ -100,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
103
  - !ruby/object:Gem::Version
101
104
  version: '0'
102
105
  requirements: []
103
- rubyforge_project:
104
- rubygems_version: 2.2.2
106
+ rubygems_version: 3.2.31
105
107
  signing_key:
106
108
  specification_version: 4
107
109
  summary: Comments that raise after a certain point in time.