pgtk 0.12.1 → 0.13.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.
@@ -1,24 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2025 Yegor Bugayenko
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the 'Software'), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in all
13
- # copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- # SOFTWARE.
3
+ # SPDX-FileCopyrightText: Copyright (c) 2019-2025 Yegor Bugayenko
4
+ # SPDX-License-Identifier: MIT
22
5
 
23
6
  require 'minitest/autorun'
24
7
  require 'tmpdir'
@@ -29,7 +12,7 @@ require_relative '../lib/pgtk/liquibase_task'
29
12
 
30
13
  # Liquibase rake task test.
31
14
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
32
- # Copyright:: Copyright (c) 2017-2019 Yegor Bugayenko
15
+ # Copyright:: Copyright (c) 2017-2025 Yegor Bugayenko
33
16
  # License:: MIT
34
17
  class TestLiquibaseTask < Minitest::Test
35
18
  def test_basic
@@ -82,9 +65,9 @@ class TestLiquibaseTask < Minitest::Test
82
65
  t.yaml = { 'pgsql' => {} }
83
66
  t.quiet = true
84
67
  end
85
- ex = assert_raises do
68
+ ex = assert_raises(StandardError) do
86
69
  Rake::Task['lb'].invoke
87
70
  end
88
- assert(ex.message.include?('the-file-doesnt-exist.xml'))
71
+ assert_includes(ex.message, 'the-file-doesnt-exist.xml')
89
72
  end
90
73
  end
@@ -1,24 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2025 Yegor Bugayenko
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the 'Software'), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in all
13
- # copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- # SOFTWARE.
3
+ # SPDX-FileCopyrightText: Copyright (c) 2019-2025 Yegor Bugayenko
4
+ # SPDX-License-Identifier: MIT
22
5
 
23
6
  require 'minitest/autorun'
24
7
  require 'rake'
@@ -28,7 +11,7 @@ require_relative '../lib/pgtk/pgsql_task'
28
11
 
29
12
  # Pgsql rake task test.
30
13
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
31
- # Copyright:: Copyright (c) 2017-2019 Yegor Bugayenko
14
+ # Copyright:: Copyright (c) 2017-2025 Yegor Bugayenko
32
15
  # License:: MIT
33
16
  class TestPgsqlTask < Minitest::Test
34
17
  def test_basic
@@ -69,7 +52,7 @@ class TestPgsqlTask < Minitest::Test
69
52
  Rake::Task['p3'].invoke
70
53
  yaml = YAML.load_file(File.join(dir, 'cfg.yml'))
71
54
  assert(yaml['pgsql']['url'].start_with?('jdbc:postgresql://localhost'))
72
- assert(File.exist?(File.join(dir, 'pgsql.log')))
55
+ assert_path_exists(File.join(dir, 'pgsql.log'))
73
56
  end
74
57
  end
75
58
  end
data/test/test_pool.rb CHANGED
@@ -1,24 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2025 Yegor Bugayenko
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the 'Software'), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in all
13
- # copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- # SOFTWARE.
3
+ # SPDX-FileCopyrightText: Copyright (c) 2019-2025 Yegor Bugayenko
4
+ # SPDX-License-Identifier: MIT
22
5
 
23
6
  require 'loog'
24
7
  require 'minitest/autorun'
@@ -30,17 +13,18 @@ require 'yaml'
30
13
  require_relative '../lib/pgtk/liquibase_task'
31
14
  require_relative '../lib/pgtk/pgsql_task'
32
15
  require_relative '../lib/pgtk/pool'
16
+ require_relative '../lib/pgtk/spy'
33
17
 
34
18
  # Pool test.
35
19
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
36
- # Copyright:: Copyright (c) 2017-2019 Yegor Bugayenko
20
+ # Copyright:: Copyright (c) 2017-2025 Yegor Bugayenko
37
21
  # License:: MIT
38
22
  class TestPool < Minitest::Test
39
23
  def test_reads_version
40
24
  bootstrap do |pool|
41
25
  ver = pool.version
42
26
  assert(ver.start_with?('1'))
43
- assert(!ver.include?(' '))
27
+ refute_includes(ver, ' ')
44
28
  end
45
29
  end
46
30
 
@@ -50,10 +34,23 @@ class TestPool < Minitest::Test
50
34
  'INSERT INTO book (title) VALUES ($1) RETURNING id',
51
35
  ['Elegant Objects']
52
36
  )[0]['id'].to_i
53
- assert(id.positive?)
37
+ assert_predicate(id, :positive?)
54
38
  end
55
39
  end
56
40
 
41
+ def test_with_spy
42
+ queries = []
43
+ bootstrap do |pool|
44
+ pool = Pgtk::Spy.new(pool) { |sql| queries.append(sql) }
45
+ pool.exec(
46
+ ['INSERT INTO book', '(title) VALUES ($1)'],
47
+ ['Elegant Objects']
48
+ )
49
+ end
50
+ assert_equal(1, queries.size)
51
+ assert_equal('INSERT INTO book (title) VALUES ($1)', queries.first)
52
+ end
53
+
57
54
  def test_complex_query
58
55
  bootstrap do |pool|
59
56
  pool.exec(
@@ -72,23 +69,23 @@ class TestPool < Minitest::Test
72
69
  'INSERT INTO book (title) VALUES ($1)',
73
70
  ['Object Thinking']
74
71
  )
75
- assert(log.to_s.include?('INSERT INTO book (title) VALUES ($1)'))
72
+ assert_includes(log.to_s, 'INSERT INTO book (title) VALUES ($1)')
76
73
  end
77
74
  end
78
75
 
79
76
  def test_logs_errors
80
77
  log = Loog::Buffer.new
81
78
  bootstrap(log: log) do |pool|
82
- assert_raises PG::UndefinedTable do
79
+ assert_raises(PG::UndefinedTable) do
83
80
  pool.exec('INSERT INTO tableDoesNotExist (a) VALUES (42)')
84
81
  end
85
- assert(log.to_s.include?('INSERT INTO tableDoesNotExist'))
82
+ assert_includes(log.to_s, 'INSERT INTO tableDoesNotExist')
86
83
  end
87
84
  end
88
85
 
89
86
  def test_transaction
90
87
  bootstrap do |pool|
91
- id = pool.transaction do |t|
88
+ id = Pgtk::Spy.new(pool).transaction do |t|
92
89
  t.exec('DELETE FROM book')
93
90
  t.exec(
94
91
  [
@@ -98,23 +95,23 @@ class TestPool < Minitest::Test
98
95
  ['Object Thinking']
99
96
  )[0]['id'].to_i
100
97
  end
101
- assert(id.positive?)
98
+ assert_predicate(id, :positive?)
102
99
  end
103
100
  end
104
101
 
105
102
  def test_transaction_with_error
106
103
  bootstrap do |pool|
107
104
  pool.exec('DELETE FROM book')
108
- assert(pool.exec('SELECT * FROM book').empty?)
109
- assert_raises do
105
+ assert_empty(pool.exec('SELECT * FROM book'))
106
+ assert_raises(StandardError) do
110
107
  pool.transaction do |t|
111
108
  t.exec('INSERT INTO book (title) VALUES ($1)', ['hey'])
112
109
  t.exec('INSERT INTO book (error_here) VALUES ($1)', ['hey'])
113
110
  end
114
111
  end
115
- assert(pool.exec('SELECT * FROM book').empty?)
112
+ assert_empty(pool.exec('SELECT * FROM book'))
116
113
  pool.exec('INSERT INTO book (title) VALUES ($1)', ['another'])
117
- assert(!pool.exec('SELECT * FROM book').empty?)
114
+ refute_empty(pool.exec('SELECT * FROM book'))
118
115
  end
119
116
  end
120
117
 
@@ -1,26 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
  <!--
3
- (The MIT License)
4
-
5
- Copyright (c) 2019-2025 Yegor Bugayenko
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the 'Software'), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in all
15
- copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
- SOFTWARE.
3
+ * SPDX-FileCopyrightText: Copyright (c) 2019-2025 Yegor Bugayenko
4
+ * SPDX-License-Identifier: MIT
24
5
  -->
25
6
  <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd" logicalFilePath="001-initial-schema.xml">
26
7
  <changeSet id="01" author="yegor256">
@@ -1,26 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
  <!--
3
- (The MIT License)
4
-
5
- Copyright (c) 2019-2025 Yegor Bugayenko
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the 'Software'), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in all
15
- copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
- SOFTWARE.
3
+ * SPDX-FileCopyrightText: Copyright (c) 2019-2025 Yegor Bugayenko
4
+ * SPDX-License-Identifier: MIT
24
5
  -->
25
6
  <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
26
7
  <includeAll path="2019"/>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgtk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-07 00:00:00.000000000 Z
11
+ date: 2025-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
@@ -99,6 +99,7 @@ files:
99
99
  - ".github/workflows/markdown-lint.yml"
100
100
  - ".github/workflows/pdd.yml"
101
101
  - ".github/workflows/rake.yml"
102
+ - ".github/workflows/reuse.yml"
102
103
  - ".github/workflows/xcop.yml"
103
104
  - ".github/workflows/yamllint.yml"
104
105
  - ".gitignore"
@@ -110,13 +111,16 @@ files:
110
111
  - Gemfile
111
112
  - Gemfile.lock
112
113
  - LICENSE.txt
114
+ - LICENSES/MIT.txt
113
115
  - README.md
116
+ - REUSE.toml
114
117
  - Rakefile
115
118
  - cucumber.yml
116
119
  - lib/pgtk.rb
117
120
  - lib/pgtk/liquibase_task.rb
118
121
  - lib/pgtk/pgsql_task.rb
119
122
  - lib/pgtk/pool.rb
123
+ - lib/pgtk/spy.rb
120
124
  - lib/pgtk/version.rb
121
125
  - lib/pgtk/wire.rb
122
126
  - pgtk.gemspec