starscope 1.1.2 → 1.2.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.
data/test/unit/test_db.rb DELETED
@@ -1,136 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'tempfile'
3
-
4
- describe StarScope::DB do
5
-
6
- def validate(db)
7
- files = db.instance_eval('@meta[:files]')
8
- files.keys.must_include GOLANG_SAMPLE
9
- files.keys.must_include RUBY_SAMPLE
10
- files[GOLANG_SAMPLE][:last_updated].must_equal File.mtime(GOLANG_SAMPLE).to_i
11
- files[RUBY_SAMPLE][:last_updated].must_equal File.mtime(RUBY_SAMPLE).to_i
12
-
13
- tbls = db.instance_eval('@tables')
14
- defs = tbls[:defs].map {|x| x[:name][-1]}
15
- assert defs.include? :DB
16
- assert defs.include? :NoTableError
17
- assert defs.include? :load
18
- assert defs.include? :update
19
- assert defs.include? :files_from_path
20
- assert defs.include? :single_var
21
- assert defs.include? :single_const
22
- end
23
-
24
- before do
25
- @db = StarScope::DB.new(:quiet)
26
- end
27
-
28
- it "must raise on invalid tables" do
29
- proc {@db.dump_table(:foo)}.must_raise StarScope::DB::NoTableError
30
- end
31
-
32
- it "must add paths" do
33
- paths = [GOLANG_SAMPLE, "#{FIXTURES}/**/*"]
34
- @db.add_paths(paths)
35
- @db.instance_eval('@meta[:paths]').must_equal paths
36
- validate(@db)
37
- end
38
-
39
- it "must add excludes" do
40
- paths = [GOLANG_SAMPLE, "#{FIXTURES}/**/*"]
41
- @db.add_paths(paths)
42
- @db.add_excludes(["#{FIXTURES}/**"])
43
- files = @db.instance_eval('@meta[:files]').keys
44
- files.wont_include RUBY_SAMPLE
45
- files.wont_include GOLANG_SAMPLE
46
- tbls = @db.instance_eval('@tables')
47
- tbls[:defs].must_be_empty
48
- tbls[:end].must_be_empty
49
- end
50
-
51
- it "must pick up new files in old paths" do
52
- @db.instance_eval("@meta[:paths] = [\"#{FIXTURES}/**/*\"]")
53
- @db.update
54
- validate(@db)
55
- end
56
-
57
- it "must remove old files in existing paths" do
58
- @db.instance_eval("@meta[:paths] = [\"#{FIXTURES}/**/*\"]")
59
- @db.instance_eval("@meta[:files] = {\"#{FIXTURES}/foo\" => {:last_updated=>1}}")
60
- @db.update
61
- @db.instance_eval("@meta[:files]").keys.wont_include "#{FIXTURES}/foo"
62
- end
63
-
64
- it "must update stale existing files" do
65
- @db.instance_eval("@meta[:paths] = [\"#{FIXTURES}/**/*\"]")
66
- @db.instance_eval("@meta[:files] = {\"#{GOLANG_SAMPLE}\" => {:last_updated=>1}}")
67
- @db.instance_eval("@tables[:defs] = [{:file => \"#{GOLANG_SAMPLE}\"}]")
68
- @db.update
69
- validate(@db)
70
- end
71
-
72
- it "must load an old DB file" do
73
- @db.load("#{FIXTURES}/db_old.json.gz")
74
- @db.instance_eval('@meta[:paths]').must_equal ["#{FIXTURES}/**/*"]
75
- validate(@db)
76
- end
77
-
78
- it "must round-trip a database" do
79
- file = Tempfile.new('starscope_test')
80
- begin
81
- @db.add_paths(["#{FIXTURES}"])
82
- @db.save(file.path)
83
- tmp = StarScope::DB.new(:quiet)
84
- tmp.load(file.path)
85
- validate(tmp)
86
- ensure
87
- file.close
88
- file.unlink
89
- end
90
- end
91
-
92
- it "must export to ctags" do
93
- file = Tempfile.new('starscope_test')
94
- begin
95
- @db.add_paths(["#{FIXTURES}"])
96
- @db.export_ctags(file)
97
- file.rewind
98
- lines = file.lines.to_a
99
- lines.must_include "NoTableError\t#{FIXTURES}/sample_ruby.rb\t/^ class NoTableError < StandardError; end$/;\"\tkind:c\tlanguage:Ruby\n"
100
- ensure
101
- file.close
102
- file.unlink
103
- end
104
- end
105
-
106
- it "must export to cscope" do
107
- file = Tempfile.new('starscope_test')
108
- begin
109
- @db.add_paths(["#{FIXTURES}"])
110
- @db.export_cscope(file)
111
- file.rewind
112
- lines = file.lines.to_a
113
-
114
- lines.must_include "\t@#{FIXTURES}/sample_golang.go\n"
115
- lines.must_include "\tgSunday\n"
116
- lines.must_include "\t`add_file\n"
117
- lines.must_include "\t}}\n"
118
- lines.must_include "13 class \n"
119
-
120
- lines.wont_include "= [\n"
121
- lines.wont_include "4 LANGS = [\n"
122
- lines.wont_include "116 tmpdb[entry[:file]][entry[:line_no]] ||= []\n"
123
- ensure
124
- file.close
125
- file.unlink
126
- end
127
- end
128
-
129
- it "must run queries" do
130
- @db.add_paths(["#{FIXTURES}"])
131
- @db.query(:calls, "abc").must_equal []
132
- @db.query(:defs, "xyz").must_equal []
133
- @db.query(:calls, "add_file").length.must_equal 3
134
- end
135
-
136
- end
@@ -1,80 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- class TestGolang < Minitest::Test
4
- def setup
5
- @db = {}
6
- StarScope::Lang::Go.extract(GOLANG_SAMPLE) do |tbl, name, args|
7
- @db[tbl] ||= []
8
- @db[tbl] << StarScope::Record.build(GOLANG_SAMPLE, name, args)
9
- end
10
- end
11
-
12
- def test_recognition
13
- assert StarScope::Lang::Go.match_file(GOLANG_SAMPLE)
14
- refute StarScope::Lang::Go.match_file(RUBY_SAMPLE)
15
- refute StarScope::Lang::Go.match_file(EMPTY_FILE)
16
- end
17
-
18
- def test_defs
19
- assert @db.keys.include? :defs
20
- defs = @db[:defs].map {|x| x[:name][-1]}
21
- assert defs.include? :a
22
- assert defs.include? :b
23
- assert defs.include? :c
24
- assert defs.include? :ttt
25
- assert defs.include? :main
26
- assert defs.include? :v1
27
- assert defs.include? :v2
28
- assert defs.include? :Sunday
29
- assert defs.include? :Monday
30
- assert defs.include? :single_var
31
- assert defs.include? :single_const
32
-
33
- refute defs.include? :"0x00"
34
- refute defs.include? :"0x01"
35
- refute defs.include? :"0x02"
36
- refute defs.include? :"0x03"
37
- end
38
-
39
- def test_ends
40
- assert @db.keys.include? :end
41
- assert @db[:end].count == 7
42
- end
43
-
44
- def test_function_calls
45
- assert @db.keys.include? :calls
46
- calls = @db[:calls].group_by {|x| x[:name][-1]}
47
- assert calls.keys.include? :a
48
- assert calls.keys.include? :b
49
- assert calls.keys.include? :c
50
- assert calls.keys.include? :ttt
51
- assert calls.keys.include? :Errorf
52
- assert calls[:a].count == 3
53
- assert calls[:b].count == 4
54
- assert calls[:c].count == 4
55
- assert calls[:ttt].count == 2
56
- assert calls[:Errorf].count == 1
57
- end
58
-
59
- def test_variable_assigns
60
- assert @db.keys.include? :assigns
61
- assigns = @db[:assigns].group_by {|x| x[:name][-1]}
62
- assert assigns.keys.include? :x
63
- assert assigns.keys.include? :y
64
- assert assigns.keys.include? :z
65
- assert assigns.keys.include? :n
66
- assert assigns.keys.include? :m
67
- assert assigns.keys.include? :msg
68
- assert assigns[:x].count == 2
69
- assert assigns[:y].count == 1
70
- assert assigns[:z].count == 1
71
- assert assigns[:n].count == 1
72
- assert assigns[:m].count == 2
73
- end
74
-
75
- def test_imports
76
- assert @db.keys.include? :imports
77
- imports = @db[:imports].group_by {|x| x[:name][-1]}
78
- assert imports.keys.include? :fmt
79
- end
80
- end
@@ -1,35 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- describe StarScope::Record do
4
-
5
- it "must symbolize compound name" do
6
- rec = StarScope::Record.build(:foo, ["a", :b], {})
7
- rec[:name].must_equal [:a, :b]
8
- end
9
-
10
- it "must symbolize and array-wrap simple name" do
11
- rec = StarScope::Record.build(:foo, "a", {})
12
- rec[:name].must_equal [:a]
13
- end
14
-
15
- it "must read correct line from file" do
16
-
17
- # we interleave the files here to test the cache
18
-
19
- rec = StarScope::Record.build(GOLANG_SAMPLE, :a, {:line_no => 1})
20
- rec[:line].must_equal "package main"
21
-
22
- rec = StarScope::Record.build(GOLANG_SAMPLE, :a, {:line_no => 71})
23
- rec[:line].must_equal "\tfmt.Println(t)"
24
-
25
- rec = StarScope::Record.build(RUBY_SAMPLE, :a, {:line_no => 1})
26
- rec[:line].must_equal "require 'date'"
27
-
28
- rec = StarScope::Record.build(RUBY_SAMPLE, :a, {:line_no => 164})
29
- rec[:line].must_equal "end"
30
-
31
- rec = StarScope::Record.build(GOLANG_SAMPLE, :a, {:line_no => 44})
32
- rec[:line].must_equal "}"
33
- end
34
-
35
- end
@@ -1,60 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- class TestRuby < Minitest::Test
4
- def setup
5
- @db = {}
6
- StarScope::Lang::Ruby.extract(RUBY_SAMPLE) do |tbl, name, args|
7
- @db[tbl] ||= []
8
- @db[tbl] << StarScope::Record.build(RUBY_SAMPLE, name, args)
9
- end
10
- end
11
-
12
- def test_recognition
13
- assert StarScope::Lang::Ruby.match_file(RUBY_SAMPLE)
14
- assert StarScope::Lang::Ruby.match_file('bin/starscope')
15
- refute StarScope::Lang::Ruby.match_file(GOLANG_SAMPLE)
16
- refute StarScope::Lang::Ruby.match_file(EMPTY_FILE)
17
- end
18
-
19
- def test_function_defs
20
- assert @db.keys.include? :defs
21
- defs = @db[:defs].map {|x| x[:name][-1]}
22
- assert defs.include? :DB
23
- assert defs.include? :NoTableError
24
- assert defs.include? :load
25
- assert defs.include? :update
26
- assert defs.include? :files_from_path
27
- end
28
-
29
- def test_constant_defs
30
- assert @db[:defs].map {|x| x[:name][-1]}.include? :PBAR_FORMAT
31
- end
32
-
33
- def test_ends
34
- assert @db.keys.include? :end
35
- assert @db[:end].count == 13
36
- end
37
-
38
- def test_function_calls
39
- assert @db.keys.include? :calls
40
- calls = @db[:calls].group_by {|x| x[:name][-1]}
41
- assert calls.keys.include? :add_file
42
- assert calls.keys.include? :each
43
- assert calls[:add_file].count == 3
44
- assert calls[:each].count == 8
45
- end
46
-
47
- def test_variable_assigns
48
- assert @db.keys.include? :assigns
49
- assigns = @db[:assigns].group_by {|x| x[:name][-1]}
50
- assert assigns.keys.include? :pbar
51
- assert assigns.keys.include? :PBAR_FORMAT
52
- assert assigns.keys.include? :foo
53
- assert assigns[:pbar].count == 2
54
- assert assigns[:PBAR_FORMAT].count == 1
55
- assert assigns[:foo].count == 1
56
-
57
- refute assigns.keys.include? "=".to_sym
58
- refute assigns.keys.include? "<".to_sym
59
- end
60
- end