sequel 4.49.0 → 5.0.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.
Files changed (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,56 +1,37 @@
1
- require 'rubygems'
2
1
  require 'logger'
3
- require "#{File.dirname(File.dirname(__FILE__))}/sequel_warning.rb"
2
+ require_relative "../sequel_warning"
4
3
 
5
4
  if ENV['COVERAGE']
6
- require File.join(File.dirname(File.expand_path(__FILE__)), "../sequel_coverage")
5
+ require_relative "../sequel_coverage"
7
6
  SimpleCov.sequel_coverage(:group=>%r{lib/sequel/adapters})
8
7
  end
9
8
 
10
- unless Object.const_defined?('Sequel')
11
- $:.unshift(File.join(File.dirname(File.expand_path(__FILE__)), "../../lib/"))
12
- require 'sequel'
13
- end
9
+ $:.unshift(File.join(File.dirname(File.expand_path(__FILE__)), "../../lib/"))
10
+ require_relative "../../lib/sequel"
11
+
14
12
  begin
15
- require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'spec_config.rb')
13
+ require_relative "../spec_config"
16
14
  rescue LoadError
17
15
  end
18
16
 
19
- Sequel.split_symbols = false if ENV['SEQUEL_NO_SPLIT_SYMBOLS']
17
+ Sequel.split_symbols = true if ENV['SEQUEL_SPLIT_SYMBOLS']
20
18
  Sequel::Database.extension :duplicate_column_handler if ENV['SEQUEL_DUPLICATE_COLUMN_HANDLER']
21
19
  Sequel::Database.extension :columns_introspection if ENV['SEQUEL_COLUMNS_INTROSPECTION']
22
20
  Sequel::Model.cache_associations = false if ENV['SEQUEL_NO_CACHE_ASSOCIATIONS']
23
21
  Sequel::Model.plugin :prepared_statements if ENV['SEQUEL_MODEL_PREPARED_STATEMENTS']
24
22
  Sequel::Model.cache_anonymous_models = false
25
23
 
26
- class Sequel::Database
27
- def log_duration(duration, message)
28
- log_info(message)
29
- end
30
- end
31
-
32
- require './spec/guards_helper'
33
-
34
- class Minitest::HooksSpec
35
- def check_sqls
36
- yield unless ENV['SEQUEL_NO_CHECK_SQLS']
37
- end
38
- def self.check_sqls
39
- yield unless ENV['SEQUEL_NO_CHECK_SQLS']
40
- end
41
- end
42
-
43
- IDENTIFIER_MANGLING = !!ENV['SEQUEL_IDENTIFIER_MANGLING'] unless defined?(IDENTIFIER_MANGLING)
24
+ require_relative '../guards_helper'
44
25
 
45
26
  unless defined?(DB)
46
27
  env_var = "SEQUEL_#{SEQUEL_ADAPTER_TEST.to_s.upcase}_URL"
47
28
  env_var = ENV.has_key?(env_var) ? env_var : 'SEQUEL_INTEGRATION_URL'
48
- # SEQUEL5: Remove :identifier_mangling=>false
49
- DB = Sequel.connect(ENV[env_var], :identifier_mangling=>false)
50
- DB.extension(:freeze_datasets) if ENV['SEQUEL_FREEZE_DATASETS']
51
- DB.extension(:identifier_mangling) if IDENTIFIER_MANGLING
29
+ DB = Sequel.connect(ENV[env_var])
52
30
  end
53
31
 
32
+ IDENTIFIER_MANGLING = !!ENV['SEQUEL_IDENTIFIER_MANGLING'] unless defined?(IDENTIFIER_MANGLING)
33
+ DB.extension(:identifier_mangling) if IDENTIFIER_MANGLING
34
+
54
35
  if dch = ENV['SEQUEL_DUPLICATE_COLUMNS_HANDLER']
55
36
  DB.extension :duplicate_columns_handler
56
37
  DB.opts[:on_duplicate_columns] = dch.to_sym unless dch.empty?
@@ -1,72 +1,14 @@
1
1
  SEQUEL_ADAPTER_TEST = :sqlanywhere
2
2
 
3
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
4
-
5
- if DB.table_exists?(:test)
6
- DB.drop_table(:test)
7
- end
3
+ require_relative 'spec_helper'
8
4
 
9
5
  describe "convert_smallint_to_bool" do
10
6
  before do
11
7
  @db = DB
12
8
  @ds = @db[:booltest]
13
- @db.send(:remove_instance_variable, :@convert_smallint_to_bool) if @db.instance_variable_defined?(:@convert_smallint_to_bool)
14
9
  end
15
10
  after do
16
- deprecated do
17
- Sequel::SqlAnywhere.convert_smallint_to_bool = true
18
- end
19
- @db.send(:remove_instance_variable, :@convert_smallint_to_bool) if @db.instance_variable_defined?(:@convert_smallint_to_bool)
20
- end
21
-
22
- # SEQUEL5: Remove
23
- describe "Sequel::SqlAnywhere.convert_smallint_to_bool" do
24
- before do
25
- @db.create_table!(:booltest){column :b, 'smallint'; column :i, 'integer'}
26
- end
27
- after do
28
- @db.drop_table(:booltest)
29
- end
30
-
31
- deprecated "should consider smallint datatypes as boolean if set, but if not, as larger smallints" do
32
- @db.create_table!(:booltest){column :b, 'smallint'; column :i, 'integer'}
33
- @db.schema(:booltest, :reload=>true).first.last[:type].must_equal :boolean
34
- @db.schema(:booltest, :reload=>true).first.last[:db_type].must_match /smallint/i
35
-
36
- Sequel::SqlAnywhere.convert_smallint_to_bool = false
37
- @db.send(:remove_instance_variable, :@convert_smallint_to_bool) if @db.instance_variable_defined?(:@convert_smallint_to_bool)
38
- @db.schema(:booltest, :reload=>true).first.last[:type].must_equal :integer
39
- @db.schema(:booltest, :reload=>true).first.last[:db_type].must_match /smallint/i
40
- end
41
-
42
- it "should return smallints as bools and integers as integers when set" do
43
- @ds.delete
44
- @ds.insert(:b=>true, :i=>10)
45
- @ds.all.must_equal [{:b=>true, :i=>10}]
46
- @ds.delete
47
- @ds.insert(:b=>false, :i=>0)
48
- @ds.all.must_equal [{:b=>false, :i=>0}]
49
- @ds.delete
50
- @ds.insert(:b=>true, :i=>1)
51
- @ds.all.must_equal [{:b=>true, :i=>1}]
52
- end
53
-
54
- deprecated "should return all smallints as integers when unset" do
55
- Sequel::SqlAnywhere.convert_smallint_to_bool = false
56
- @ds.delete
57
- @ds.insert(:b=>true, :i=>10)
58
- @ds.all.must_equal [{:b=>1, :i=>10}]
59
- @ds.delete
60
- @ds.insert(:b=>false, :i=>0)
61
- @ds.all.must_equal [{:b=>0, :i=>0}]
62
-
63
- @ds.delete
64
- @ds.insert(:b=>1, :i=>10)
65
- @ds.all.must_equal [{:b=>1, :i=>10}]
66
- @ds.delete
67
- @ds.insert(:b=>0, :i=>0)
68
- @ds.all.must_equal [{:b=>0, :i=>0}]
69
- end
11
+ @db.convert_smallint_to_bool = true
70
12
  end
71
13
 
72
14
  describe "Database#convert_smallint_to_bool" do
@@ -135,23 +77,6 @@ describe "convert_smallint_to_bool" do
135
77
  @ds.all.must_equal [{:b=>true, :i=>1}]
136
78
  end
137
79
 
138
- deprecated "should return all smallints as integers when unset" do
139
- @ds.convert_smallint_to_bool = false
140
- @ds.delete
141
- @ds.insert(:b=>true, :i=>10)
142
- @ds.all.must_equal [{:b=>1, :i=>10}]
143
- @ds.delete
144
- @ds.insert(:b=>false, :i=>0)
145
- @ds.all.must_equal [{:b=>0, :i=>0}]
146
-
147
- @ds.delete
148
- @ds.insert(:b=>1, :i=>10)
149
- @ds.all.must_equal [{:b=>1, :i=>10}]
150
- @ds.delete
151
- @ds.insert(:b=>0, :i=>0)
152
- @ds.all.must_equal [{:b=>0, :i=>0}]
153
- end
154
-
155
80
  it "should support with_convert_smallint_to_bool for returning modified dataset with setting changed" do
156
81
  @ds = @ds.with_convert_smallint_to_bool(false)
157
82
  @ds.delete
@@ -1,59 +1,17 @@
1
1
  SEQUEL_ADAPTER_TEST = :sqlite
2
2
 
3
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
3
+ require_relative 'spec_helper'
4
4
 
5
5
  describe "An SQLite database" do
6
6
  before do
7
7
  @db = DB
8
- deprecated do
9
- @fk = @db.foreign_keys
10
- end
11
8
  end
12
9
  after do
13
10
  @db.drop_table?(:fk)
14
- deprecated do
15
- @db.auto_vacuum = :none
16
- @db.run 'VACUUM'
17
- @db.foreign_keys = @fk
18
- @db.case_sensitive_like = true
19
- end
20
11
  @db.use_timestamp_timezones = false
21
12
  Sequel.datetime_class = Time
22
13
  end
23
14
 
24
- deprecated "should support getting setting pragma values" do
25
- @db.pragma_set(:auto_vacuum, '0')
26
- @db.run 'VACUUM'
27
- @db.pragma_get(:auto_vacuum).to_s.must_equal '0'
28
- @db.pragma_set(:auto_vacuum, '1')
29
- @db.run 'VACUUM'
30
- @db.pragma_get(:auto_vacuum).to_s.must_equal '1'
31
- @db.pragma_set(:auto_vacuum, '2')
32
- @db.run 'VACUUM'
33
- @db.pragma_get(:auto_vacuum).to_s.must_equal '2'
34
- end
35
-
36
- deprecated "should support getting and setting the auto_vacuum pragma" do
37
- @db.auto_vacuum = :full
38
- @db.run 'VACUUM'
39
- @db.auto_vacuum.must_equal :full
40
- @db.auto_vacuum = :incremental
41
- @db.run 'VACUUM'
42
- @db.auto_vacuum.must_equal :incremental
43
-
44
- proc {@db.auto_vacuum = :invalid}.must_raise(Sequel::Error)
45
- end
46
-
47
- deprecated "should respect case sensitive like false" do
48
- @db.case_sensitive_like = false
49
- @db.get(Sequel.like('a', 'A')).to_s.must_equal '1'
50
- end
51
-
52
- deprecated "should respect case sensitive like true" do
53
- @db.case_sensitive_like = true
54
- @db.get(Sequel.like('a', 'A')).to_s.must_equal '0'
55
- end
56
-
57
15
  it "should support casting to Date by using the date function" do
58
16
  @db.get(Sequel.cast('2012-10-20 11:12:13', Date)).must_equal '2012-10-20'
59
17
  end
@@ -67,28 +25,6 @@ describe "An SQLite database" do
67
25
  @db.sqlite_version.must_be_kind_of(Integer)
68
26
  end
69
27
 
70
- deprecated "should support setting and getting the foreign_keys pragma" do
71
- (@db.sqlite_version >= 30619 ? [true, false] : [nil]).must_include(@db.foreign_keys)
72
- @db.foreign_keys = true
73
- @db.foreign_keys = false
74
- end
75
-
76
- deprecated "should enforce foreign key integrity if foreign_keys pragma is set" do
77
- @db.foreign_keys = true
78
- @db.create_table!(:fk){primary_key :id; foreign_key :parent_id, :fk}
79
- @db[:fk].insert(1, nil)
80
- @db[:fk].insert(2, 1)
81
- @db[:fk].insert(3, 3)
82
- proc{@db[:fk].insert(4, 5)}.must_raise(Sequel::ForeignKeyConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
83
- end if DB.sqlite_version >= 30619
84
-
85
- deprecated "should not enforce foreign key integrity if foreign_keys pragma is unset" do
86
- @db.foreign_keys = false
87
- @db.create_table!(:fk){primary_key :id; foreign_key :parent_id, :fk}
88
- @db[:fk].insert(1, 2)
89
- @db[:fk].all.must_equal [{:id=>1, :parent_id=>2}]
90
- end
91
-
92
28
  it "should support a use_timestamp_timezones setting" do
93
29
  @db.use_timestamp_timezones = true
94
30
  @db.create_table!(:fk){Time :time}
@@ -108,29 +44,7 @@ describe "An SQLite database" do
108
44
  @db.tables.must_include(:fk)
109
45
  end
110
46
 
111
- deprecated "should support getting and setting the synchronous pragma" do
112
- @db.synchronous = :off
113
- @db.synchronous.must_equal :off
114
- @db.synchronous = :normal
115
- @db.synchronous.must_equal :normal
116
- @db.synchronous = :full
117
- @db.synchronous.must_equal :full
118
-
119
- proc {@db.synchronous = :invalid}.must_raise(Sequel::Error)
120
- end
121
-
122
- deprecated "should support getting and setting the temp_store pragma" do
123
- @db.temp_store = :default
124
- @db.temp_store.must_equal :default
125
- @db.temp_store = :file
126
- @db.temp_store.must_equal :file
127
- @db.temp_store = :memory
128
- @db.temp_store.must_equal :memory
129
-
130
- proc {@db.temp_store = :invalid}.must_raise(Sequel::Error)
131
- end
132
-
133
- cspecify "should support timestamps and datetimes and respect datetime_class", [:do], [:jdbc], [:swift] do
47
+ cspecify "should support timestamps and datetimes and respect datetime_class", [:jdbc] do
134
48
  @db.create_table!(:fk){timestamp :t; datetime :d}
135
49
  @db.use_timestamp_timezones = true
136
50
  t1 = Time.at(1)
@@ -312,32 +226,6 @@ describe "An SQLite dataset" do
312
226
  end
313
227
  end
314
228
 
315
- describe "An SQLite dataset AS clause" do
316
- it "should use a string literal for Sequel[:col].as(:alias)" do
317
- DB.literal(Sequel[:c].as(:a)).must_equal "`c` AS 'a'"
318
- end
319
-
320
- it "should use a string literal for Sequel[:table][:col].as(:alias)" do
321
- DB.literal(Sequel[:t][:c].as(:a)).must_equal "`t`.`c` AS 'a'"
322
- end
323
-
324
- it "should use a string literal for :column.as(:alias)" do
325
- DB.literal(Sequel.as(:c, :a)).must_equal "`c` AS 'a'"
326
- end
327
-
328
- it "should use a string literal in the SELECT clause" do
329
- DB[:t].select(Sequel[:c].as(:a)).sql.must_equal "SELECT `c` AS 'a' FROM `t`"
330
- end
331
-
332
- it "should use a string literal in the FROM clause" do
333
- DB[Sequel[:t].as(:a)].sql.must_equal "SELECT * FROM `t` AS 'a'"
334
- end
335
-
336
- it "should use a string literal in the JOIN clause" do
337
- DB[:t].join_table(:natural, :j, nil, :table_alias=>:a).sql.must_equal "SELECT * FROM `t` NATURAL JOIN `j` AS 'a'"
338
- end
339
- end
340
-
341
229
  describe "SQLite::Dataset#delete" do
342
230
  before do
343
231
  DB.create_table! :items do
@@ -619,8 +507,6 @@ describe "A SQLite database" do
619
507
  end
620
508
 
621
509
  it "should choose a temporary table name that isn't already used when dropping or renaming columns" do
622
- sqls = []
623
- @db.loggers << (l=Class.new{%w'info error'.each{|m| define_method(m){|sql| sqls << sql}}}.new)
624
510
  @db.tables.each{|t| @db.drop_table(t) if t.to_s =~ /test3/}
625
511
  @db.create_table :test3 do
626
512
  Integer :h
@@ -636,10 +522,7 @@ describe "A SQLite database" do
636
522
  @db[:test3].columns.must_equal [:h, :i]
637
523
  @db[:test3_backup0].columns.must_equal [:j]
638
524
  @db[:test3_backup1].columns.must_equal [:k]
639
- sqls.clear
640
525
  @db.drop_column(:test3, :i)
641
- sqls.any?{|x| x =~ /\AALTER TABLE.*test3.*RENAME TO.*test3_backup2/}.must_equal true
642
- sqls.any?{|x| x =~ /\AALTER TABLE.*test3.*RENAME TO.*test3_backup[01]/}.must_equal false
643
526
  @db[:test3].columns.must_equal [:h]
644
527
  @db[:test3_backup0].columns.must_equal [:j]
645
528
  @db[:test3_backup1].columns.must_equal [:k]
@@ -648,15 +531,11 @@ describe "A SQLite database" do
648
531
  Integer :l
649
532
  end
650
533
 
651
- sqls.clear
652
534
  @db.rename_column(:test3, :h, :i)
653
- sqls.any?{|x| x =~ /\AALTER TABLE.*test3.*RENAME TO.*test3_backup3/}.must_equal true
654
- sqls.any?{|x| x =~ /\AALTER TABLE.*test3.*RENAME TO.*test3_backup[012]/}.must_equal false
655
535
  @db[:test3].columns.must_equal [:i]
656
536
  @db[:test3_backup0].columns.must_equal [:j]
657
537
  @db[:test3_backup1].columns.must_equal [:k]
658
538
  @db[:test3_backup2].columns.must_equal [:l]
659
- @db.loggers.delete(l)
660
539
  end
661
540
 
662
541
  it "should support add_index" do
@@ -679,34 +558,17 @@ describe "A SQLite database" do
679
558
  end
680
559
 
681
560
  it "should have support for various #transaction modes" do
682
- sqls = []
683
- @db.loggers << Class.new{%w'info error'.each{|m| define_method(m){|sql| sqls << sql}}}.new
684
-
685
- @db.transaction(:mode => :immediate) do
686
- sqls.last.must_equal "BEGIN IMMEDIATE TRANSACTION"
687
- end
688
- @db.transaction(:mode => :exclusive) do
689
- sqls.last.must_equal "BEGIN EXCLUSIVE TRANSACTION"
690
- end
691
- @db.transaction(:mode => :deferred) do
692
- sqls.last.must_equal "BEGIN DEFERRED TRANSACTION"
693
- end
694
- @db.transaction do
695
- sqls.last.must_equal 'BEGIN'
696
- end
561
+ @db.transaction(:mode => :immediate){}
562
+ @db.transaction(:mode => :exclusive){}
563
+ @db.transaction(:mode => :deferred){}
564
+ @db.transaction{}
697
565
 
698
566
  @db.transaction_mode.must_be_nil
699
567
  @db.transaction_mode = :immediate
700
568
  @db.transaction_mode.must_equal :immediate
701
- @db.transaction do
702
- sqls.last.must_equal "BEGIN IMMEDIATE TRANSACTION"
703
- end
704
- @db.transaction(:mode => :exclusive) do
705
- sqls.last.must_equal "BEGIN EXCLUSIVE TRANSACTION"
706
- end
707
-
569
+ @db.transaction{}
570
+ @db.transaction(:mode => :exclusive){}
708
571
  proc {@db.transaction_mode = :invalid}.must_raise(Sequel::Error)
709
-
710
572
  @db.transaction_mode.must_equal :immediate
711
573
  proc {@db.transaction(:mode => :invalid) {}}.must_raise(Sequel::Error)
712
574
  end
@@ -1,4 +1,3 @@
1
- require 'rubygems'
2
1
  require 'rbconfig'
3
2
  require 'yaml'
4
3
 
@@ -16,15 +15,12 @@ else
16
15
  CONN_HASH = {:adapter=>'sqlite', :database=>BIN_SPEC_DB}
17
16
  end
18
17
 
19
- unless Object.const_defined?('Sequel') && Sequel.const_defined?('Model')
20
- $:.unshift(File.join(File.dirname(File.expand_path(__FILE__)), "../../lib/"))
21
- require 'sequel'
22
- end
18
+ require_relative '../lib/sequel'
23
19
 
24
- DB = Sequel.connect("#{CONN_PREFIX}#{BIN_SPEC_DB}")
25
- DB2 = Sequel.connect("#{CONN_PREFIX}#{BIN_SPEC_DB2}")
26
20
  File.delete(BIN_SPEC_DB) if File.file?(BIN_SPEC_DB)
27
21
  File.delete(BIN_SPEC_DB2) if File.file?(BIN_SPEC_DB2)
22
+ DB = Sequel.connect("#{CONN_PREFIX}#{BIN_SPEC_DB}", :test=>false)
23
+ DB2 = Sequel.connect("#{CONN_PREFIX}#{BIN_SPEC_DB2}", :test=>false)
28
24
 
29
25
  require 'minitest/autorun'
30
26
 
@@ -38,16 +34,15 @@ describe "bin/sequel" do
38
34
  after do
39
35
  DB.disconnect
40
36
  DB2.disconnect
41
- File.delete(BIN_SPEC_DB) if File.file?(BIN_SPEC_DB)
42
- File.delete(BIN_SPEC_DB2) if File.file?(BIN_SPEC_DB2)
43
- if File.file?(TMP_FILE)
44
- begin
45
- File.delete(TMP_FILE)
46
- rescue Errno::ENOENT
47
- nil
37
+ [BIN_SPEC_DB, BIN_SPEC_DB2, TMP_FILE, OUTPUT].each do |file|
38
+ if File.file?(file)
39
+ begin
40
+ File.delete(file)
41
+ rescue Errno::ENOENT
42
+ nil
43
+ end
48
44
  end
49
45
  end
50
- File.delete(OUTPUT) if File.file?(OUTPUT)
51
46
  end
52
47
 
53
48
  it "-h should print the help" do
@@ -158,7 +153,7 @@ END
158
153
  end
159
154
 
160
155
  it "-L should load all *.rb files in given directory" do
161
- bin(:args=>'-L ./lib/sequel/connection_pool -c "p [Sequel::SingleConnectionPool, Sequel::ThreadedConnectionPool, Sequel::ShardedSingleConnectionPool, Sequel::ShardedThreadedConnectionPool].length"').must_equal "4\n"
156
+ bin(:args=>'-r ./lib/sequel/extensions/migration -L ./spec/files/integer_migrations -c "p Sequel::Migration.descendants.length"').must_equal "3\n"
162
157
  end
163
158
 
164
159
  it "-m should migrate database up" do