mssql 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,48 @@
1
+ require 'test/unit'
2
+ require 'minitest/unit'
3
+ require 'pp'
4
+
5
+ $: << File.join(File.dirname(__FILE__), "../lib")
6
+ require 'mssql'
7
+
8
+ class MiniTest::Unit::TestCase
9
+
10
+ def load_fixture(file_name)
11
+ YAML.load(File.open("test/fixtures/#{file_name}.yml"))
12
+ end
13
+
14
+ def assert_string(value)
15
+ assert_not_nil value
16
+ assert value.kind_of?(String)
17
+ end
18
+
19
+ def assert_int(value)
20
+ assert_not_nil value
21
+ assert value.kind_of?(Fixnum)
22
+ end
23
+
24
+ def assert_time(value)
25
+ assert_not_nil value
26
+ assert value.kind_of?(Time)
27
+ end
28
+
29
+ def assert_in_range(range, value)
30
+ assert range.include?(value.to_i)
31
+ end
32
+
33
+ def assert_time(expected, actual, message = nil)
34
+ assert_equal expected, actual.strftime("%Y-%m-%d %H:%M"), message
35
+ end
36
+
37
+ def assert_same_hash(expected, actual)
38
+ compare_hashes expected, actual
39
+ compare_hashes actual, expected
40
+ end
41
+
42
+ def compare_hashes(h1, h2)
43
+ h1.each_pair do |key, value|
44
+ assert_equal value, (h2[key.to_sym] || h2[key.to_s])
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,68 @@
1
+ require 'minitest/unit'
2
+ require 'pp'
3
+
4
+ class TestInputOuput < MiniTest::Unit::TestCase
5
+
6
+ def test_all
7
+ input_files.each do |input_file_name|
8
+ @input_file_name = input_file_name
9
+ @actual = execute
10
+ write_expected unless File.exists?(expected_file)
11
+ write_actual
12
+ @expected = expected_content
13
+ unless @actual == @expected
14
+ `opendiff #{expected_file} #{actual_file}`
15
+ end
16
+ assert @actual == @expected, "#{actual_file} differs from #{expected_file}"
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def write_expected
23
+ print "!! writing expected file #{expected_file}\n"
24
+ print @actual
25
+ print "\n"
26
+ File.open(expected_file, "w+") do |f|
27
+ f.puts @actual
28
+ end
29
+ end
30
+
31
+ def write_actual
32
+ File.open(actual_file, "w+") do |f|
33
+ f.puts @actual
34
+ end
35
+ end
36
+
37
+ def expected_content
38
+ File.read expected_file
39
+ end
40
+
41
+ def base_name
42
+ File.join app_root, "test/in_out", @input_file_name.gsub(".sql", "")
43
+ end
44
+
45
+ def expected_file
46
+ base_name + ".expected"
47
+ end
48
+
49
+ def actual_file
50
+ base_name + ".actual"
51
+ end
52
+
53
+ def input_files
54
+ Dir.chdir app_root
55
+ Dir.chdir "./test/in_out"
56
+ Dir.glob("*.sql")
57
+ end
58
+
59
+ def execute
60
+ Dir.chdir app_root
61
+ `bin/mssql.rb -c test -i test/in_out/#{@input_file_name}`
62
+ end
63
+
64
+ def app_root
65
+ @app_root ||= File.join(File.absolute_path(File.dirname(__FILE__)), "..")
66
+ end
67
+
68
+ end
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*
2
+ $: << File.join(File.dirname(__FILE__))
3
+ require 'test_helper'
4
+
5
+ class TestTable < MiniTest::Unit::TestCase
6
+
7
+ def test_one_table
8
+ to = TableOutput.new([:id, :pero, :zdero], [[1, 'abc', 123], [10, 'defg', 'nesto']])
9
+ output = "
10
+ +----+------+-------+
11
+ | id | pero | zdero |
12
+ +----+------+-------+
13
+ | 1 | abc | 123 |
14
+ | 10 | defg | nesto |
15
+ +----+------+-------+
16
+ 2 rows affected
17
+ "
18
+ assert_equal output, to.to_s
19
+ end
20
+
21
+ def test_mb_chars
22
+ assert_equal 20, "Sv.Martin pod Okicom".length
23
+ assert_equal 20, "SV.martin pod Okićžš".scan(/./mu).size
24
+ end
25
+
26
+ end
data/todo ADDED
@@ -0,0 +1,20 @@
1
+ ## todos
2
+
3
+ * .find ponuda.modemi is not working properly (because of .)
4
+ * move/or link emacs configuration to the project
5
+ * sample .mssql file
6
+ * create table script, instead of explain (or keep both options somehow)
7
+ * json, html output
8
+ * pipe to to other Ruby application
9
+ * command can be in any line
10
+ * tiny tds extensioins
11
+ * line number for error
12
+
13
+ * detect dead db process and reconnect
14
+ * format dates
15
+ * commands
16
+ explain
17
+ find
18
+ show tables
19
+ show columns
20
+
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mssql
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Igor Anic
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-04 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: tiny_tds
16
+ requirement: &70113705960100 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.5.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70113705960100
25
+ - !ruby/object:Gem::Dependency
26
+ name: hashie
27
+ requirement: &70113705959580 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70113705959580
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: &70113705959120 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 3.1.1
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70113705959120
47
+ description: mssql server command line tool
48
+ email:
49
+ - ianic@minus5.hr
50
+ executables:
51
+ - mssql
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - .autotest
56
+ - .gitignore
57
+ - .rbenv-version
58
+ - Gemfile
59
+ - LICENSE
60
+ - README.md
61
+ - Rakefile
62
+ - bin/mssql
63
+ - emacs/sql-ms.el
64
+ - lib/command.rb
65
+ - lib/command_parser.rb
66
+ - lib/connection.rb
67
+ - lib/controller.rb
68
+ - lib/mssql.rb
69
+ - lib/params_parser.rb
70
+ - lib/query_output.rb
71
+ - lib/simple_update.in
72
+ - lib/simple_update.sql
73
+ - lib/table_output.rb
74
+ - lib/version.rb
75
+ - mssql.gemspec
76
+ - test/in_out/authors.actual
77
+ - test/in_out/authors.expected
78
+ - test/in_out/authors.sql
79
+ - test/in_out/authors_update.actual
80
+ - test/in_out/authors_update.expected
81
+ - test/in_out/authors_update.sql
82
+ - test/in_out/sp_help.actual
83
+ - test/in_out/sp_help.expected
84
+ - test/in_out/sp_help.sql
85
+ - test/test_command_parser.rb
86
+ - test/test_connection.rb
87
+ - test/test_helper.rb
88
+ - test/test_input_output.rb
89
+ - test/test_table.rb
90
+ - todo
91
+ homepage: http://www.minus5.hr
92
+ licenses: []
93
+ post_install_message:
94
+ rdoc_options: []
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubyforge_project:
111
+ rubygems_version: 1.8.10
112
+ signing_key:
113
+ specification_version: 3
114
+ summary: Command line tool for connecting to Microsoft Sql Server from Mac or Linux.
115
+ test_files:
116
+ - test/in_out/authors.actual
117
+ - test/in_out/authors.expected
118
+ - test/in_out/authors.sql
119
+ - test/in_out/authors_update.actual
120
+ - test/in_out/authors_update.expected
121
+ - test/in_out/authors_update.sql
122
+ - test/in_out/sp_help.actual
123
+ - test/in_out/sp_help.expected
124
+ - test/in_out/sp_help.sql
125
+ - test/test_command_parser.rb
126
+ - test/test_connection.rb
127
+ - test/test_helper.rb
128
+ - test/test_input_output.rb
129
+ - test/test_table.rb