tiny_tds 3.0.0-x64-mingw32 → 3.2.0-x64-mingw32

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +194 -74
  3. data/CHANGELOG.md +12 -0
  4. data/Gemfile +1 -1
  5. data/README.md +59 -50
  6. data/Rakefile +46 -37
  7. data/VERSION +1 -1
  8. data/ext/tiny_tds/extconf.rb +169 -70
  9. data/ext/tiny_tds/extconsts.rb +3 -4
  10. data/lib/tiny_tds/2.7/tiny_tds.so +0 -0
  11. data/lib/tiny_tds/3.0/tiny_tds.so +0 -0
  12. data/lib/tiny_tds/bin.rb +12 -26
  13. data/lib/tiny_tds/client.rb +38 -42
  14. data/lib/tiny_tds/error.rb +0 -2
  15. data/lib/tiny_tds/gem.rb +5 -9
  16. data/lib/tiny_tds/result.rb +0 -2
  17. data/lib/tiny_tds/version.rb +1 -1
  18. data/lib/tiny_tds.rb +28 -47
  19. data/ports/x64-mingw32/{freetds/1.4.23/bin → bin}/defncopy.exe +0 -0
  20. data/ports/x64-mingw32/bin/libsybdb-5.dll +0 -0
  21. data/ports/x64-mingw32/bin/tsql.exe +0 -0
  22. data/tasks/native_gem.rake +11 -18
  23. data/tasks/package.rake +1 -3
  24. data/tasks/ports.rake +7 -91
  25. data/tasks/test.rake +3 -5
  26. data/test/bin/install-freetds.sh +2 -4
  27. data/test/bin/restore-from-native-gem.ps1 +10 -0
  28. data/test/client_test.rb +106 -112
  29. data/test/gem_test.rb +32 -108
  30. data/test/result_test.rb +208 -221
  31. data/test/schema_test.rb +177 -181
  32. data/test/test_helper.rb +59 -64
  33. data/test/thread_test.rb +22 -31
  34. data/tiny_tds.gemspec +28 -29
  35. metadata +27 -43
  36. data/ports/x64-mingw32/freetds/1.4.23/bin/bsqldb.exe +0 -0
  37. data/ports/x64-mingw32/freetds/1.4.23/bin/datacopy.exe +0 -0
  38. data/ports/x64-mingw32/freetds/1.4.23/bin/freebcp.exe +0 -0
  39. data/ports/x64-mingw32/freetds/1.4.23/bin/libct-4.dll +0 -0
  40. data/ports/x64-mingw32/freetds/1.4.23/bin/libsybdb-5.dll +0 -0
  41. data/ports/x64-mingw32/freetds/1.4.23/bin/osql +0 -393
  42. data/ports/x64-mingw32/freetds/1.4.23/bin/tdspool.exe +0 -0
  43. data/ports/x64-mingw32/freetds/1.4.23/bin/tsql.exe +0 -0
  44. data/ports/x64-mingw32/freetds/1.4.23/lib/libct.dll.a +0 -0
  45. data/ports/x64-mingw32/freetds/1.4.23/lib/libct.la +0 -41
  46. data/ports/x64-mingw32/freetds/1.4.23/lib/libsybdb.dll.a +0 -0
  47. data/ports/x64-mingw32/freetds/1.4.23/lib/libsybdb.la +0 -41
  48. data/ports/x64-mingw32/libiconv/1.17/bin/iconv.exe +0 -0
  49. data/ports/x64-mingw32/libiconv/1.17/bin/libcharset-1.dll +0 -0
  50. data/ports/x64-mingw32/libiconv/1.17/bin/libiconv-2.dll +0 -0
  51. data/ports/x64-mingw32/libiconv/1.17/lib/libcharset.dll.a +0 -0
  52. data/ports/x64-mingw32/libiconv/1.17/lib/libcharset.la +0 -41
  53. data/ports/x64-mingw32/libiconv/1.17/lib/libiconv.dll.a +0 -0
  54. data/ports/x64-mingw32/libiconv/1.17/lib/libiconv.la +0 -41
  55. data/ports/x64-mingw32/openssl/3.4.0/bin/c_rehash +0 -252
  56. data/ports/x64-mingw32/openssl/3.4.0/bin/libcrypto-3-x64.dll +0 -0
  57. data/ports/x64-mingw32/openssl/3.4.0/bin/libssl-3-x64.dll +0 -0
  58. data/ports/x64-mingw32/openssl/3.4.0/bin/openssl.exe +0 -0
  59. data/tasks/ports/freetds.rb +0 -32
  60. data/tasks/ports/libiconv.rb +0 -26
  61. data/tasks/ports/openssl.rb +0 -62
  62. data/tasks/ports/recipe.rb +0 -64
  63. data/test/benchmark/query.rb +0 -77
  64. data/test/benchmark/query_odbc.rb +0 -106
  65. data/test/benchmark/query_tinytds.rb +0 -126
data/test/client_test.rb CHANGED
@@ -1,124 +1,123 @@
1
- # encoding: utf-8
2
- require 'test_helper'
1
+ require "test_helper"
3
2
 
4
3
  class ClientTest < TinyTds::TestCase
5
- describe 'with valid credentials' do
4
+ describe "with valid credentials" do
6
5
  before do
7
6
  @client = new_connection
8
7
  end
9
8
 
10
- it 'must not be closed' do
9
+ it "must not be closed" do
11
10
  assert !@client.closed?
12
11
  assert @client.active?
13
12
  end
14
13
 
15
- it 'allows client connection to be closed' do
14
+ it "allows client connection to be closed" do
16
15
  assert @client.close
17
16
  assert @client.closed?
18
17
  assert !@client.active?
19
18
  assert @client.dead?
20
- action = lambda { @client.execute('SELECT 1 as [one]').each }
19
+ action = lambda { @client.execute("SELECT 1 as [one]").each }
21
20
  assert_raise_tinytds_error(action) do |e|
22
- assert_match %r{closed connection}i, e.message, 'ignore if non-english test run'
21
+ assert_match %r{closed connection}i, e.message, "ignore if non-english test run"
23
22
  end
24
23
  end
25
24
 
26
- it 'has getters for the tds version information (brittle since conf takes precedence)' do
25
+ it "has getters for the tds version information (brittle since conf takes precedence)" do
27
26
  if @client.tds_73?
28
27
  assert_equal 11, @client.tds_version
29
- assert_equal 'DBTDS_7_3 - Microsoft SQL Server 2008', @client.tds_version_info
28
+ assert_equal "DBTDS_7_3 - Microsoft SQL Server 2008", @client.tds_version_info
30
29
  else
31
30
  assert_equal 9, @client.tds_version
32
- assert_equal 'DBTDS_7_1/DBTDS_8_0 - Microsoft SQL Server 2000', @client.tds_version_info
31
+ assert_equal "DBTDS_7_1/DBTDS_8_0 - Microsoft SQL Server 2000", @client.tds_version_info
33
32
  end
34
33
  end
35
34
 
36
- it 'uses UTF-8 client charset/encoding by default' do
37
- assert_equal 'UTF-8', @client.charset
38
- assert_equal Encoding.find('UTF-8'), @client.encoding
35
+ it "uses UTF-8 client charset/encoding by default" do
36
+ assert_equal "UTF-8", @client.charset
37
+ assert_equal Encoding.find("UTF-8"), @client.encoding
39
38
  end
40
39
 
41
- it 'has a #escape method used for quote strings' do
40
+ it "has a #escape method used for quote strings" do
42
41
  assert_equal "''hello''", @client.escape("'hello'")
43
42
  end
44
43
 
45
- ['CP850', 'CP1252', 'ISO-8859-1'].each do |encoding|
44
+ ["CP850", "CP1252", "ISO-8859-1"].each do |encoding|
46
45
  it "allows valid iconv character set - #{encoding}" do
46
+ client = new_connection(encoding: encoding)
47
+ assert_equal encoding, client.charset
48
+ assert_equal Encoding.find(encoding), client.encoding
49
+ ensure
50
+ client&.close
51
+ end
52
+ end
53
+
54
+ unless sqlserver_azure?
55
+ it "must be able to use :host/:port connection" do
56
+ host = ENV["TINYTDS_UNIT_HOST_TEST"] || ENV["TINYTDS_UNIT_HOST"] || "localhost"
57
+ port = ENV["TINYTDS_UNIT_PORT_TEST"] || ENV["TINYTDS_UNIT_PORT"] || 1433
47
58
  begin
48
- client = new_connection(:encoding => encoding)
49
- assert_equal encoding, client.charset
50
- assert_equal Encoding.find(encoding), client.encoding
59
+ client = new_connection dataserver: nil, host: host, port: port
51
60
  ensure
52
- client.close if client
61
+ client&.close
53
62
  end
54
63
  end
55
64
  end
56
-
57
- it 'must be able to use :host/:port connection' do
58
- host = ENV['TINYTDS_UNIT_HOST_TEST'] || ENV['TINYTDS_UNIT_HOST'] || 'localhost'
59
- port = ENV['TINYTDS_UNIT_PORT_TEST'] || ENV['TINYTDS_UNIT_PORT'] || 1433
60
- begin
61
- client = new_connection dataserver: nil, host: host, port: port
62
- ensure
63
- client.close if client
64
- end
65
- end unless sqlserver_azure?
66
65
  end
67
66
 
68
- describe 'With in-valid options' do
67
+ describe "With in-valid options" do
69
68
  before(:all) do
70
69
  init_toxiproxy
71
70
  end
72
71
 
73
- it 'raises an argument error when no :host given and :dataserver is blank' do
74
- assert_raises(ArgumentError) { new_connection :dataserver => nil, :host => nil }
72
+ it "raises an argument error when no :host given and :dataserver is blank" do
73
+ assert_raises(ArgumentError) { new_connection dataserver: nil, host: nil }
75
74
  end
76
75
 
77
- it 'raises an argument error when no :username is supplied' do
78
- assert_raises(ArgumentError) { TinyTds::Client.new :username => nil }
76
+ it "raises an argument error when no :username is supplied" do
77
+ assert_raises(ArgumentError) { TinyTds::Client.new username: nil }
79
78
  end
80
79
 
81
- it 'raises TinyTds exception with undefined :dataserver' do
82
- options = connection_options :login_timeout => 1, :dataserver => 'DOESNOTEXIST'
80
+ it "raises TinyTds exception with undefined :dataserver" do
81
+ options = connection_options login_timeout: 1, dataserver: "DOESNOTEXIST"
83
82
  action = lambda { new_connection(options) }
84
83
  assert_raise_tinytds_error(action) do |e|
85
84
  # Not sure why tese are different.
86
85
  if ruby_darwin?
87
86
  assert_equal 20009, e.db_error_number
88
87
  assert_equal 9, e.severity
89
- assert_match %r{is unavailable or does not exist}i, e.message, 'ignore if non-english test run'
88
+ assert_match %r{is unavailable or does not exist}i, e.message, "ignore if non-english test run"
90
89
  else
91
90
  assert_equal 20012, e.db_error_number
92
91
  assert_equal 2, e.severity
93
- assert_match %r{server name not found in configuration files}i, e.message, 'ignore if non-english test run'
92
+ assert_match %r{server name not found in configuration files}i, e.message, "ignore if non-english test run"
94
93
  end
95
94
  end
96
95
  assert_new_connections_work
97
96
  end
98
97
 
99
- it 'raises TinyTds exception with long query past :timeout option' do
100
- client = new_connection :timeout => 1
98
+ it "raises TinyTds exception with long query past :timeout option" do
99
+ client = new_connection timeout: 1
101
100
  action = lambda { client.execute("WaitFor Delay '00:00:02'").do }
102
101
  assert_raise_tinytds_error(action) do |e|
103
102
  assert_equal 20003, e.db_error_number
104
103
  assert_equal 6, e.severity
105
- assert_match %r{timed out}i, e.message, 'ignore if non-english test run'
104
+ assert_match %r{timed out}i, e.message, "ignore if non-english test run"
106
105
  end
107
106
  assert_client_works(client)
108
107
  close_client(client)
109
108
  assert_new_connections_work
110
109
  end
111
110
 
112
- it 'must not timeout per sql batch when not under transaction' do
113
- client = new_connection :timeout => 2
111
+ it "must not timeout per sql batch when not under transaction" do
112
+ client = new_connection timeout: 2
114
113
  client.execute("WaitFor Delay '00:00:01'").do
115
114
  client.execute("WaitFor Delay '00:00:01'").do
116
115
  client.execute("WaitFor Delay '00:00:01'").do
117
116
  close_client(client)
118
117
  end
119
118
 
120
- it 'must not timeout per sql batch when under transaction' do
121
- client = new_connection :timeout => 2
119
+ it "must not timeout per sql batch when under transaction" do
120
+ client = new_connection timeout: 2
122
121
  begin
123
122
  client.execute("BEGIN TRANSACTION").do
124
123
  client.execute("WaitFor Delay '00:00:01'").do
@@ -130,32 +129,30 @@ class ClientTest < TinyTds::TestCase
130
129
  end
131
130
  end
132
131
 
133
- it 'raises TinyTds exception with tcp socket network failure' do
134
- begin
135
- client = new_connection timeout: 2, port: 1234, host: ENV['TOXIPROXY_HOST']
136
- assert_client_works(client)
137
- action = lambda { client.execute("waitfor delay '00:00:05'").do }
132
+ it "raises TinyTds exception with tcp socket network failure" do
133
+ client = new_connection timeout: 2, port: 1234, host: ENV["TOXIPROXY_HOST"]
134
+ assert_client_works(client)
135
+ action = lambda { client.execute("waitfor delay '00:00:05'").do }
138
136
 
139
- # Use toxiproxy to close the TCP socket after 1 second.
140
- # We want TinyTds to execute the statement, hit the timeout configured above, and then not be able to use the network to cancel
141
- # the network connection needs to close after the sql batch is sent and before the timeout above is hit
142
- Toxiproxy[:sqlserver_test].toxic(:slow_close, delay: 1000).apply do
143
- assert_raise_tinytds_error(action) do |e|
144
- assert_equal 20003, e.db_error_number
145
- assert_equal 6, e.severity
146
- assert_match %r{timed out}i, e.message, 'ignore if non-english test run'
147
- end
137
+ # Use toxiproxy to close the TCP socket after 1 second.
138
+ # We want TinyTds to execute the statement, hit the timeout configured above, and then not be able to use the network to cancel
139
+ # the network connection needs to close after the sql batch is sent and before the timeout above is hit
140
+ Toxiproxy[:sqlserver_test].toxic(:slow_close, delay: 1000).apply do
141
+ assert_raise_tinytds_error(action) do |e|
142
+ assert_equal 20003, e.db_error_number
143
+ assert_equal 6, e.severity
144
+ assert_match %r{timed out}i, e.message, "ignore if non-english test run"
148
145
  end
149
- ensure
150
- assert_new_connections_work
151
146
  end
147
+ ensure
148
+ assert_new_connections_work
152
149
  end
153
150
 
154
- it 'raises TinyTds exception with dead connection network failure' do
151
+ it "raises TinyTds exception with dead connection network failure" do
155
152
  skip if ruby_windows?
156
153
 
157
154
  begin
158
- client = new_connection timeout: 2, port: 1234, host: ENV['TOXIPROXY_HOST']
155
+ client = new_connection timeout: 2, port: 1234, host: ENV["TOXIPROXY_HOST"]
159
156
  assert_client_works(client)
160
157
  action = lambda { client.execute("waitfor delay '00:00:05'").do }
161
158
 
@@ -165,8 +162,8 @@ class ClientTest < TinyTds::TestCase
165
162
  Toxiproxy[:sqlserver_test].toxic(:timeout, timeout: 1000).apply do
166
163
  assert_raise_tinytds_error(action) do |e|
167
164
  assert_equal 20047, e.db_error_number
168
- assert_includes [1,9], e.severity
169
- assert_match %r{dead or not enabled}i, e.message, 'ignore if non-english test run'
165
+ assert_includes [1, 9], e.severity
166
+ assert_match %r{dead or not enabled}i, e.message, "ignore if non-english test run"
170
167
  end
171
168
  end
172
169
  ensure
@@ -174,99 +171,96 @@ class ClientTest < TinyTds::TestCase
174
171
  end
175
172
  end
176
173
 
177
- it 'raises TinyTds exception with login timeout' do
178
- begin
179
- action = lambda do
180
- Toxiproxy[:sqlserver_test].toxic(:timeout, timeout: 0).apply do
181
- new_connection login_timeout: 1, port: 1234, host: ENV['TOXIPROXY_HOST']
182
- end
183
- end
184
- assert_raise_tinytds_error(action) do |e|
185
- assert_equal 20003, e.db_error_number
186
- assert_equal 6, e.severity
187
- assert_match %r{timed out}i, e.message, 'ignore if non-english test run'
174
+ it "raises TinyTds exception with login timeout" do
175
+ action = lambda do
176
+ Toxiproxy[:sqlserver_test].toxic(:timeout, timeout: 0).apply do
177
+ new_connection login_timeout: 1, port: 1234, host: ENV["TOXIPROXY_HOST"]
188
178
  end
189
- ensure
190
- assert_new_connections_work
191
179
  end
180
+ assert_raise_tinytds_error(action) do |e|
181
+ assert_equal 20003, e.db_error_number
182
+ assert_equal 6, e.severity
183
+ assert_match %r{timed out}i, e.message, "ignore if non-english test run"
184
+ end
185
+ ensure
186
+ assert_new_connections_work
192
187
  end
193
188
 
194
- it 'raises TinyTds exception with wrong :username' do
195
- skip if ENV['CI'] && sqlserver_azure? # Some issue with db_error_number.
196
- options = connection_options :username => 'willnotwork'
189
+ it "raises TinyTds exception with wrong :username" do
190
+ skip if ENV["CI"] && sqlserver_azure? # Some issue with db_error_number.
191
+ options = connection_options username: "willnotwork"
197
192
  action = lambda { new_connection(options) }
198
193
  assert_raise_tinytds_error(action) do |e|
199
194
  assert_equal 18456, e.db_error_number
200
195
  assert_equal 14, e.severity
201
- assert_match %r{login failed}i, e.message, 'ignore if non-english test run'
196
+ assert_match %r{login failed}i, e.message, "ignore if non-english test run"
202
197
  end
203
198
  assert_new_connections_work
204
199
  end
205
-
206
200
  end
207
201
 
208
- describe '#parse_username' do
202
+ describe "#parse_username" do
209
203
  let(:client) { @client = new_connection }
210
204
 
211
- it 'returns username if azure is not true' do
205
+ it "returns username if azure is not true" do
212
206
  _(
213
- client.send(:parse_username, username: 'user@abc123.database.windows.net')
214
- ).must_equal 'user@abc123.database.windows.net'
207
+ client.send(:parse_username, username: "user@abc123.database.windows.net")
208
+ ).must_equal "user@abc123.database.windows.net"
215
209
  end
216
210
 
217
- it 'returns short username if azure is true' do
211
+ it "returns short username if azure is true" do
218
212
  _(
219
213
  client.send(
220
214
  :parse_username,
221
- username: 'user@abc123.database.windows.net',
222
- host: 'abc123.database.windows.net',
223
- azure: true
215
+ username: "user@abc123.database.windows.net",
216
+ host: "abc123.database.windows.net",
217
+ azure: true
224
218
  )
225
- ).must_equal 'user@abc123'
219
+ ).must_equal "user@abc123"
226
220
  end
227
221
 
228
- it 'returns full username if azure is false' do
222
+ it "returns full username if azure is false" do
229
223
  _(
230
224
  client.send(
231
225
  :parse_username,
232
- username: 'user@abc123.database.windows.net',
233
- host: 'abc123.database.windows.net',
234
- azure: false
226
+ username: "user@abc123.database.windows.net",
227
+ host: "abc123.database.windows.net",
228
+ azure: false
235
229
  )
236
- ).must_equal 'user@abc123.database.windows.net'
230
+ ).must_equal "user@abc123.database.windows.net"
237
231
  end
238
232
 
239
- it 'returns short username if passed and azure is true' do
233
+ it "returns short username if passed and azure is true" do
240
234
  _(
241
235
  client.send(
242
236
  :parse_username,
243
- username: 'user@abc123',
244
- host: 'abc123.database.windows.net',
245
- azure: true
237
+ username: "user@abc123",
238
+ host: "abc123.database.windows.net",
239
+ azure: true
246
240
  )
247
- ).must_equal 'user@abc123'
241
+ ).must_equal "user@abc123"
248
242
  end
249
243
 
250
- it 'returns username with servername if passed and azure is true' do
244
+ it "returns username with servername if passed and azure is true" do
251
245
  _(
252
246
  client.send(
253
247
  :parse_username,
254
- username: 'user',
255
- host: 'abc123.database.windows.net',
256
- azure: true
248
+ username: "user",
249
+ host: "abc123.database.windows.net",
250
+ azure: true
257
251
  )
258
- ).must_equal 'user@abc123'
252
+ ).must_equal "user@abc123"
259
253
  end
260
254
 
261
- it 'returns username with servername if passed and azure is false' do
255
+ it "returns username with servername if passed and azure is false" do
262
256
  _(
263
257
  client.send(
264
258
  :parse_username,
265
- username: 'user',
266
- host: 'abc123.database.windows.net',
267
- azure: false
259
+ username: "user",
260
+ host: "abc123.database.windows.net",
261
+ azure: false
268
262
  )
269
- ).must_equal 'user'
263
+ ).must_equal "user"
270
264
  end
271
265
  end
272
266
  end
data/test/gem_test.rb CHANGED
@@ -1,67 +1,65 @@
1
- # encoding: utf-8
2
- require 'test_helper'
3
- require 'tiny_tds/gem'
1
+ require "test_helper"
2
+ require "tiny_tds/gem"
4
3
 
5
- class GemTest < MiniTest::Spec
6
- gem_root ||= File.expand_path '../..', __FILE__
4
+ class GemTest < Minitest::Spec
5
+ gem_root ||= File.expand_path "../..", __FILE__
7
6
 
8
7
  describe TinyTds::Gem do
9
-
10
8
  # We're going to muck with some system globals so lets make sure
11
9
  # they get set back later
12
- original_platform = RbConfig::CONFIG['arch']
10
+ original_platform = RbConfig::CONFIG["arch"]
13
11
  original_pwd = Dir.pwd
14
12
 
15
13
  after do
16
- RbConfig::CONFIG['arch'] = original_platform
14
+ RbConfig::CONFIG["arch"] = original_platform
17
15
  Dir.chdir original_pwd
18
16
  end
19
17
 
20
- describe '#root_path' do
18
+ describe "#root_path" do
21
19
  let(:root_path) { TinyTds::Gem.root_path }
22
20
 
23
- it 'should be the root path' do
21
+ it "should be the root path" do
24
22
  _(root_path).must_equal gem_root
25
23
  end
26
24
 
27
- it 'should be the root path no matter the cwd' do
28
- Dir.chdir '/'
25
+ it "should be the root path no matter the cwd" do
26
+ Dir.chdir "/"
29
27
 
30
28
  _(root_path).must_equal gem_root
31
29
  end
32
30
  end
33
31
 
34
- describe '#ports_root_path' do
32
+ describe "#ports_root_path" do
35
33
  let(:ports_root_path) { TinyTds::Gem.ports_root_path }
36
34
 
37
- it 'should be the ports path' do
38
- _(ports_root_path).must_equal File.join(gem_root,'ports')
35
+ it "should be the ports path" do
36
+ _(ports_root_path).must_equal File.join(gem_root, "ports")
39
37
  end
40
38
 
41
- it 'should be the ports path no matter the cwd' do
42
- Dir.chdir '/'
39
+ it "should be the ports path no matter the cwd" do
40
+ Dir.chdir "/"
43
41
 
44
- _(ports_root_path).must_equal File.join(gem_root,'ports')
42
+ _(ports_root_path).must_equal File.join(gem_root, "ports")
45
43
  end
46
44
  end
47
45
 
48
- describe '#ports_bin_paths' do
46
+ describe "#ports_bin_paths" do
49
47
  let(:ports_bin_paths) { TinyTds::Gem.ports_bin_paths }
50
48
 
51
- describe 'when the ports directories exist' do
49
+ describe "when the ports directories exist" do
52
50
  let(:fake_bin_paths) do
53
- ports_host_root = File.join(gem_root, 'ports', 'fake-host-with-dirs')
51
+ ports_host_root = File.join(gem_root, "ports", "fake-host-with-dirs")
54
52
  [
55
- File.join('a','bin'),
56
- File.join('a','inner','bin'),
57
- File.join('b','bin')
53
+ File.join("a", "bin"),
54
+ File.join("a", "inner", "bin"),
55
+ File.join("b", "bin")
58
56
  ].map do |p|
59
57
  File.join(ports_host_root, p)
60
58
  end
61
59
  end
62
60
 
63
61
  before do
64
- RbConfig::CONFIG['arch'] = 'fake-host-with-dirs'
62
+ RbConfig::CONFIG["arch"] = "fake-host-with-dirs"
65
63
  fake_bin_paths.each do |path|
66
64
  FileUtils.mkdir_p(path)
67
65
  end
@@ -69,108 +67,34 @@ class GemTest < MiniTest::Spec
69
67
 
70
68
  after do
71
69
  FileUtils.remove_entry_secure(
72
- File.join(gem_root, 'ports', 'fake-host-with-dirs'), true
70
+ File.join(gem_root, "ports", "fake-host-with-dirs"), true
73
71
  )
74
72
  end
75
73
 
76
- it 'should return all the bin directories' do
74
+ it "should return all the bin directories" do
77
75
  _(ports_bin_paths.sort).must_equal fake_bin_paths.sort
78
76
  end
79
77
 
80
- it 'should return all the bin directories regardless of cwd' do
81
- Dir.chdir '/'
78
+ it "should return all the bin directories regardless of cwd" do
79
+ Dir.chdir "/"
82
80
  _(ports_bin_paths.sort).must_equal fake_bin_paths.sort
83
81
  end
84
82
  end
85
83
 
86
- describe 'when the ports directories are missing' do
84
+ describe "when the ports directories are missing" do
87
85
  before do
88
- RbConfig::CONFIG['arch'] = 'fake-host-without-dirs'
86
+ RbConfig::CONFIG["arch"] = "fake-host-without-dirs"
89
87
  end
90
88
 
91
- it 'should return no directories' do
89
+ it "should return no directories" do
92
90
  _(ports_bin_paths).must_be_empty
93
91
  end
94
92
 
95
- it 'should return no directories regardless of cwd' do
96
- Dir.chdir '/'
93
+ it "should return no directories regardless of cwd" do
94
+ Dir.chdir "/"
97
95
  _(ports_bin_paths).must_be_empty
98
96
  end
99
97
  end
100
98
  end
101
-
102
- describe '#ports_lib_paths' do
103
- let(:ports_lib_paths) { TinyTds::Gem.ports_lib_paths }
104
-
105
- describe 'when the ports directories exist' do
106
- let(:fake_lib_paths) do
107
- ports_host_root = File.join(gem_root, 'ports', 'fake-host-with-dirs')
108
- [
109
- File.join('a','lib'),
110
- File.join('a','inner','lib'),
111
- File.join('b','lib')
112
- ].map do |p|
113
- File.join(ports_host_root, p)
114
- end
115
- end
116
-
117
- before do
118
- RbConfig::CONFIG['arch'] = 'fake-host-with-dirs'
119
- fake_lib_paths.each do |path|
120
- FileUtils.mkdir_p(path)
121
- end
122
- end
123
-
124
- after do
125
- FileUtils.remove_entry_secure(
126
- File.join(gem_root, 'ports', 'fake-host-with-dirs'), true
127
- )
128
- end
129
-
130
- it 'should return all the lib directories' do
131
- _(ports_lib_paths.sort).must_equal fake_lib_paths.sort
132
- end
133
-
134
- it 'should return all the lib directories regardless of cwd' do
135
- Dir.chdir '/'
136
- _(ports_lib_paths.sort).must_equal fake_lib_paths.sort
137
- end
138
- end
139
-
140
- describe 'when the ports directories are missing' do
141
- before do
142
- RbConfig::CONFIG['arch'] = 'fake-host-without-dirs'
143
- end
144
-
145
-
146
- it 'should return no directories' do
147
- _(ports_lib_paths).must_be_empty
148
- end
149
-
150
- it 'should return no directories regardless of cwd' do
151
- Dir.chdir '/'
152
- _(ports_lib_paths).must_be_empty
153
- end
154
- end
155
- end
156
-
157
- describe '#ports_host' do
158
- {
159
- 'x64-mingw-ucrt' => 'x64-mingw-ucrt',
160
- 'x64-mingw32' => 'x64-mingw32',
161
- 'x86_64-linux' => 'x86_64-linux',
162
- }.each do |host,expected|
163
- describe "on a #{host} architecture" do
164
- before do
165
- RbConfig::CONFIG['arch'] = host
166
- end
167
-
168
- it "should return a #{expected} ports host" do
169
- _(TinyTds::Gem.ports_host).must_equal expected
170
- end
171
- end
172
- end
173
- end
174
99
  end
175
100
  end
176
-