singer 2.1.0 → 2.3.0

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: 61d9abf1b94fa1a0b85d2770ab2f4ec38b81f9a99855054d4eeab41f69ce8e49
4
- data.tar.gz: f4a433fdbfa9bc1b64847936f9033387cdc36d5490a03b497f25b49fa8c5347e
3
+ metadata.gz: 7ddb4f2b6355ce6ebce3856cc7030b20f3338a1af33fd2a01b5e94ed491b89e7
4
+ data.tar.gz: 1a6efcb12834b46b2dc1d8f39673a21d349e2f6d807c7d1775e7d6547e5acba3
5
5
  SHA512:
6
- metadata.gz: ce7559042aaa658bfd03921901218444ea33dbf0406b04654f0b79371c8812fd3bcd6b879176b8670cf7f74db17cc9ee2f84316c94bcd1e06ab6a86f390275e9
7
- data.tar.gz: c5d81b77aabe190a6e6d214857c551753270afda439367b0312df7cf9f3ec11f05030edd468b8327100369b517f3e56fb19760dd22460131f3b5f79be7c71adb
6
+ metadata.gz: 7b306e89c44c9d4ccecf843301178b2d14de488ba0d5949a2dcfa6436af72b67bb6291a8cc829b9cf331458d4c99f0333c9b9b4c93be0c3d727e73239f0bc519
7
+ data.tar.gz: e2765626a12557c2433e5c5b7e06463036b2500c08fcd9ac327f9c7631dc3316f4e79c5d3eb6f008ee72ebfcc2a15018afa2d934c39360b3ed0bb1a6416c40fb
data/lib/singer/paths.rb CHANGED
@@ -18,7 +18,12 @@ module Singer
18
18
  end
19
19
 
20
20
  def self.output_path(...)
21
- File.join(...).gsub(/__([[:alpha:]][[:word:]]+)__/) do |match|
21
+ substitute_variables(File.join(...))
22
+ end
23
+
24
+ # will substitute non-forbidden variables, 2 characters or more
25
+ def self.substitute_variables(path)
26
+ path.gsub(/__([[:alpha:]][[:word:]]*[[:alpha:]])__/) do |match|
22
27
  potential_config = $1.downcase
23
28
 
24
29
  if variable_name_can_be_substituted?(potential_config)
@@ -1,3 +1,3 @@
1
1
  module Singer
2
- VERSION = '2.1.0'.freeze
2
+ VERSION = '2.3.0'.freeze
3
3
  end
@@ -14,7 +14,7 @@ group :test do # for humans
14
14
  end
15
15
 
16
16
  group :test, :ci do
17
- gem 'minitest', '~> 5.23.0' # fivemat double-outputs with newer than this
17
+ gem 'minitest'
18
18
  gem 'mocha'
19
19
  gem 'rack-test'
20
20
  gem 'rake'
@@ -23,6 +23,6 @@ group :test, :ci do
23
23
  end
24
24
 
25
25
  group :ci do # for CI automation
26
- gem 'minitest-junit'
26
+ gem 'minitest-reporters'
27
27
  gem 'simplecov-cobertura'
28
28
  end
@@ -1,3 +1,7 @@
1
- require 'zeitwerk_setup'
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+
5
+ require_relative '../lib/zeitwerk_setup'
2
6
 
3
7
  <%= Singer.configuration.project_name_camelcase %>::Server.run!
@@ -1,14 +1,15 @@
1
1
  require 'minitest_helper'
2
2
 
3
- class TestAutoloading < Minitest::Test
3
+ class AutoloadingTest < Minitest::Test
4
4
  def test_zeitwerk_has_one_loader
5
- refute_empty Zeitwerk::Registry.loaders
6
- assert_equal 1, Zeitwerk::Registry.loaders.size
5
+ loaders = Zeitwerk::Registry.loaders.instance_variable_get(:@loaders)
6
+ refute_empty loaders
7
+ assert_equal 1, loaders.size
7
8
  end
8
9
 
9
10
  # this test is kinda slow, but not as slow as Rack::Test
10
11
  def test_zeitwerk_eager_autoloading_works
11
- loader = Zeitwerk::Registry.loaders.first
12
+ loader = Zeitwerk::Registry.loaders.instance_variable_get(:@loaders).first
12
13
  # loader.log!
13
14
  loader.eager_load(force: true)
14
15
  rescue Zeitwerk::NameError => exc
@@ -1,7 +1,7 @@
1
1
  require 'minitest_helper'
2
2
 
3
3
  # TODO: remove
4
- class TestHello < Minitest::Test
4
+ class HelloTest < Minitest::Test
5
5
  def test_greet_with_a_param_generates_a_greeting_string
6
6
  assert_equal 'Hello, stranger.', <%= Singer.configuration.project_name_camelcase %>::Hello.greet(:stranger)
7
7
  end
@@ -1,13 +1,13 @@
1
1
  require 'minitest_helper'
2
2
 
3
- class TestServerErrorDumping < Minitest::Test
3
+ class ServerErrorDumpingTest < Minitest::Test
4
4
  def test_dump_errors_backtrace_is_filtered_against_vendor
5
5
  exc = generate_exception_with_realistic_backtrace
6
- assert exc.backtrace.any?{ _1.include?('/vendor/') } # now you see me
6
+ assert(exc.backtrace.any?{ _1.include?('/vendor/') }) # now you see me
7
7
 
8
8
  log = mock()
9
9
  log.expects(:puts).with do |message|
10
- refute message.lines.any?{ _1.include?('/vendor/') } # now you don't
10
+ refute(message.lines.any?{ _1.include?('/vendor/') }) # now you don't
11
11
  end
12
12
 
13
13
  app = <%= Singer.configuration.project_name_camelcase %>::Server.new! # .new! returns real instance without Sinatra::Wrapper
@@ -1,6 +1,6 @@
1
1
  require 'minitest_helper'
2
2
 
3
- class TestServer < Minitest::Test
3
+ class ServerTest < Minitest::Test
4
4
  include Rack::Test::Methods
5
5
 
6
6
  def app
@@ -10,7 +10,7 @@ class TestServer < Minitest::Test
10
10
  def test_top_level_redirects
11
11
  get '/'
12
12
 
13
- assert last_response.redirect?
13
+ assert_predicate last_response, :redirect?
14
14
  assert_match %r{/hello/world$}, last_response.headers['location']
15
15
  end
16
16
 
@@ -3,7 +3,7 @@ require 'minitest/autorun' if File.expand_path($PROGRAM_NAME) == File.expand_pat
3
3
 
4
4
  require_relative '../lib/<%= Singer.configuration.project_name_snakecase %>'
5
5
 
6
- class Test<%= Singer.configuration.project_name_camelcase %> < Minitest::Test
6
+ class <%= Singer.configuration.project_name_camelcase %>Test < Minitest::Test
7
7
  # TEST_INPUT = File.read('input_mini.txt').lines(chomp: true)
8
8
 
9
9
  def setup
@@ -1,4 +1,4 @@
1
- class Test<%= Singer.configuration.project_name_camelcase %> < Minitest::Test
1
+ class <%= Singer.configuration.project_name_camelcase %>Test < Minitest::Test
2
2
  def setup
3
3
  @<%= Singer.configuration.project_name_snakecase %> = <%= Singer.configuration.project_name_camelcase %>.new
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Chludziński
@@ -53,18 +53,18 @@ files:
53
53
  - templates/sinatra_app/lib/__PROJECT_NAME_SNAKECASE__/hello.rb
54
54
  - templates/sinatra_app/lib/__PROJECT_NAME_SNAKECASE__/server.rb
55
55
  - templates/sinatra_app/lib/zeitwerk_setup.rb
56
+ - templates/sinatra_app/test/autoloading_test.rb
57
+ - templates/sinatra_app/test/hello_test.rb
56
58
  - templates/sinatra_app/test/minitest_helper.rb
57
- - templates/sinatra_app/test/server/test_server.rb
58
- - templates/sinatra_app/test/server/test_server_error_dumping.rb
59
- - templates/sinatra_app/test/test_autoloading.rb
60
- - templates/sinatra_app/test/test_hello.rb
59
+ - templates/sinatra_app/test/server/server_error_dumping_test.rb
60
+ - templates/sinatra_app/test/server/server_test.rb
61
61
  - templates/sinatra_app/views/index.haml
62
62
  - templates/sinatra_app/views/layout.haml
63
63
  - templates/sinatra_app/views/style.sass
64
64
  - templates/tdd/Gemfile
65
65
  - templates/tdd/lib/__PROJECT_NAME_SNAKECASE__.rb
66
- - templates/tdd/test/test___PROJECT_NAME_SNAKECASE__.rb
67
- - templates/test/test/test___PROJECT_NAME_SNAKECASE__.rb
66
+ - templates/tdd/test/__PROJECT_NAME_SNAKECASE___test.rb
67
+ - templates/test/test/__PROJECT_NAME_SNAKECASE___test.rb
68
68
  homepage: https://gitlab.com/tanstaafl/singer/
69
69
  licenses:
70
70
  - MIT
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  requirements: []
89
- rubygems_version: 3.6.7
89
+ rubygems_version: 4.0.6
90
90
  specification_version: 4
91
91
  summary: Singer generates code (such as Sinatra apps) from templates.
92
92
  test_files: []