smc-get 0.1.0 → 0.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,121 +1,123 @@
1
- #!/usr/bin/env ruby
2
- #Encoding: UTF-8
3
- ################################################################################
4
- # This file is part of smc-get.
5
- # Copyright (C) 2010-2011 Entertaining Software, Inc.
6
- # Copyright (C) 2011 Marvin Gülker
7
- #
8
- # This program is free software: you can redistribute it and/or modify
9
- # it under the terms of the GNU General Public License as published by
10
- # the Free Software Foundation, either version 3 of the License, or
11
- # (at your option) any later version.
12
- #
13
- # This program is distributed in the hope that it will be useful,
14
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- # GNU General Public License for more details.
17
- #
18
- # You should have received a copy of the GNU General Public License
19
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
- ################################################################################
21
-
22
- require "fileutils"
23
- require "test/unit"
24
-
25
- if RUBY_VERSION =~ /^1.9/
26
- require_relative "../lib/smc_get/smc_get"
27
- else #For 1.8 fans
28
- require File.join(File.expand_path(File.dirname(__FILE__)), "..", "smc_get")
29
- end
30
-
31
- class SmcGetCUITest < Test::Unit::TestCase
32
- #Directory from which packages are downloaded for the test.
33
- TEST_REPO = "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
34
- #Directory where we will download everything into. It's "testdir" right in this directory.
35
- TEST_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "testdir")
36
- TEST_PACKAGES_DIR = File.join(TEST_DIR, "packages")
37
- TEST_PACKAGES_MUSIC_DIR = File.join(TEST_PACKAGES_DIR, "contrib-music")
38
- TEST_PACKAGES_GRAPHICS_DIR = File.join(TEST_PACKAGES_DIR, "contrib-graphics")
39
- TEST_PACKAGES_LEVELS_DIR = File.join(TEST_PACKAGES_DIR, "levels")
40
- #Test configuration file's location. Inside the test dir, so we're able to
41
- #delete it together with everything else.
42
- TEST_CONFIG_FILE = File.join(TEST_DIR, "testconf.yml")
43
-
44
- #The configuration file we use for this tests.
45
- TEST_CONFIG =<<CONFIG
46
- ---
47
- data_directory: #{TEST_DIR}
48
- repo_url: "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
49
- CONFIG
50
-
51
- #List of pacakges to install and inspect wheather they
52
- #are correctly installed or not.
53
- TEST_PACKAGES = %w[icy-mountain christmas-2010]
54
- #To test wheather smc-get does know what to do in case of non-existing packages.
55
- TEST_INVALID_PACKAGES = %w[sdhrfg jhjjjj]
56
-
57
- TEST_SEARCH_TERMS = ["icy", "chr.stmas"]
58
- TEST_SEARCH_TERMS_NOT_FOUND = ["dfgd", "^icy$"]
59
-
60
- #The command to run smc-get
61
- SMC_GET = File.join(File.expand_path(File.dirname(__FILE__)), "..", "bin", "smc-get")
62
-
63
- #Test initialization. Write the config file and ensure the directory we
64
- #want to download into is available. Run before EACH test.
65
- def setup
66
- FileUtils.mkdir_p(TEST_DIR)
67
- File.open(TEST_CONFIG_FILE, "w"){|f| f.write(TEST_CONFIG)}
68
- end
69
-
70
- #Cleanup afterwards. Delete our testing directory. Run after EACH test.
71
- def teardown
72
- FileUtils.rm_rf(TEST_DIR)
73
- end
74
-
75
- #Executes <tt>smc-get str</tt> and returns true on success, false
76
- #otherwise. Ensures the test configuration file is loaded.
77
- def smc_get(str)
78
- system("#{SMC_GET} -c #{TEST_CONFIG_FILE} #{str}")
79
- end
80
-
81
- def test_install
82
- TEST_PACKAGES.each do |pkg|
83
- smc_get "install #{pkg}"
84
- assert(File.file?(File.join(TEST_PACKAGES_DIR, "#{pkg}.yml")), "Package file not found: #{pkg}.yml.")
85
- end
86
- TEST_INVALID_PACKAGES.each do |pkg|
87
- assert(!smc_get("install #{pkg}"), "Command completed on invalid packages without error.")
88
- end
89
- end
90
-
91
- def test_uninstall
92
- TEST_PACKAGES.each do |pkg|
93
- assert(!smc_get("uninstall #{pkg}"), "Uninstalled a noninstalled package successfully.")
94
- smc_get "install #{pkg}"
95
- smc_get "uninstall #{pkg}"
96
- assert(!File.exists?(File.join(TEST_PACKAGES_DIR, "#{pkg}.yml")), "Found after uninstalling: #{pkg}.yml")
97
- end
98
- TEST_INVALID_PACKAGES.each do |pkg|
99
- assert(!smc_get("uninstall #{pkg}"), "Uninstalled an invalid package successfully.")
100
- end
101
- end
102
-
103
- def test_getinfo
104
- TEST_PACKAGES.each do |pkg|
105
- assert(smc_get("getinfo #{pkg}"), "Couldn't retrieve info for #{pkg}.")
106
- end
107
- TEST_INVALID_PACKAGES.each do |pkg|
108
- assert(!smc_get("getinfo #{pkg}"), "Retrieved info for broken package sucessfully.")
109
- end
110
- end
111
-
112
- def test_search
113
- TEST_SEARCH_TERMS.each do |query|
114
- assert(smc_get("search #{query}"), "Did not find packages it ought to find.")
115
- end
116
- TEST_SEARCH_TERMS_NOT_FOUND.each do |query|
117
- assert(!smc_get("search #{query}"), "Did find packages for invalid query.")
118
- end
119
- end
120
-
121
- end
1
+ #!/usr/bin/env ruby
2
+ #Encoding: UTF-8
3
+ ################################################################################
4
+ # This file is part of smc-get.
5
+ # Copyright (C) 2010-2011 Entertaining Software, Inc.
6
+ # Copyright (C) 2011 Marvin Gülker
7
+ #
8
+ # This program is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ ################################################################################
21
+
22
+ require "fileutils"
23
+ require "test/unit"
24
+
25
+ if RUBY_VERSION =~ /^1.9/
26
+ require_relative "../lib/smc_get/smc_get"
27
+ else #For 1.8 fans
28
+ require File.join(File.expand_path(File.dirname(__FILE__)), "..", "smc_get")
29
+ end
30
+
31
+ class SmcGetCUITest < Test::Unit::TestCase
32
+ #Directory from which packages are downloaded for the test.
33
+ TEST_REPO = "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
34
+ #Directory where we will download everything into. It's "testdir" right in this directory.
35
+ TEST_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "testdir")
36
+ TEST_PACKAGES_DIR = File.join(TEST_DIR, "packages")
37
+ TEST_PACKAGES_MUSIC_DIR = File.join(TEST_PACKAGES_DIR, "contrib-music")
38
+ TEST_PACKAGES_GRAPHICS_DIR = File.join(TEST_PACKAGES_DIR, "contrib-graphics")
39
+ TEST_PACKAGES_LEVELS_DIR = File.join(TEST_PACKAGES_DIR, "levels")
40
+ #Test configuration file's location. Inside the test dir, so we're able to
41
+ #delete it together with everything else.
42
+ TEST_CONFIG_FILE = File.join(TEST_DIR, "testconf.yml")
43
+
44
+ #The configuration file we use for this tests.
45
+ TEST_CONFIG =<<CONFIG
46
+ ---
47
+ data_directory: #{TEST_DIR}
48
+ repo_url: "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
49
+ CONFIG
50
+
51
+ #List of pacakges to install and inspect wheather they
52
+ #are correctly installed or not.
53
+ TEST_PACKAGES = %w[icy-mountain christmas-2010]
54
+ #To test wheather smc-get does know what to do in case of non-existing packages.
55
+ TEST_INVALID_PACKAGES = %w[sdhrfg jhjjjj]
56
+
57
+ TEST_SEARCH_TERMS = ["icy", "chr.stmas"]
58
+ TEST_SEARCH_TERMS_NOT_FOUND = ["dfgd", "^icy$"]
59
+
60
+ #The command to run smc-get
61
+ SMC_GET = File.join(File.expand_path(File.dirname(__FILE__)), "..", "bin", "smc-get")
62
+
63
+ #Test initialization. Write the config file and ensure the directory we
64
+ #want to download into is available. Run before EACH test.
65
+ def setup
66
+ FileUtils.mkdir_p(TEST_DIR)
67
+ File.open(TEST_CONFIG_FILE, "w"){|f| f.write(TEST_CONFIG)}
68
+ end
69
+
70
+ #Cleanup afterwards. Delete our testing directory. Run after EACH test.
71
+ def teardown
72
+ FileUtils.rm_rf(TEST_DIR)
73
+ end
74
+
75
+ #Executes <tt>smc-get str</tt> and returns true on success, false
76
+ #otherwise. Ensures the test configuration file is loaded.
77
+ def smc_get(str)
78
+ system("#{SMC_GET} -c #{TEST_CONFIG_FILE} #{str}")
79
+ end
80
+
81
+ def test_install
82
+ TEST_PACKAGES.each do |pkg|
83
+ smc_get "install #{pkg}"
84
+ assert(File.file?(File.join(TEST_PACKAGES_DIR, "#{pkg}.yml")), "Package file not found: #{pkg}.yml.")
85
+ end
86
+ TEST_INVALID_PACKAGES.each do |pkg|
87
+ assert(!smc_get("install #{pkg}"), "Command completed on invalid packages without error.")
88
+ end
89
+ end
90
+
91
+ def test_uninstall
92
+ TEST_PACKAGES.each do |pkg|
93
+ assert(!smc_get("uninstall #{pkg}"), "Uninstalled a noninstalled package successfully.")
94
+ smc_get "install #{pkg}"
95
+ smc_get "uninstall #{pkg}"
96
+ assert(!File.exists?(File.join(TEST_PACKAGES_DIR, "#{pkg}.yml")), "Found after uninstalling: #{pkg}.yml")
97
+ end
98
+ TEST_INVALID_PACKAGES.each do |pkg|
99
+ assert(!smc_get("uninstall #{pkg}"), "Uninstalled an invalid package successfully.")
100
+ end
101
+ end
102
+
103
+ def test_getinfo
104
+ TEST_PACKAGES.each do |pkg|
105
+ assert(smc_get("getinfo #{pkg}"), "Couldn't retrieve info for #{pkg}.")
106
+ end
107
+ TEST_INVALID_PACKAGES.each do |pkg|
108
+ assert(!smc_get("getinfo #{pkg}"), "Retrieved info for broken package sucessfully.")
109
+ end
110
+ end
111
+
112
+ def test_search
113
+ TEST_SEARCH_TERMS.each do |query|
114
+ assert(smc_get("search #{query}"), "Did not find packages it ought to find.")
115
+ end
116
+ TEST_SEARCH_TERMS_NOT_FOUND.each do |query|
117
+ assert(!smc_get("search #{query}"), "Did find packages for invalid query.")
118
+ end
119
+ end
120
+
121
+ end
122
+
123
+ # vim:set ts=8 sts=2 sw=2 et: #
@@ -1,170 +1,172 @@
1
- #!/usr/bin/env ruby
2
- #Encoding: UTF-8
3
- ################################################################################
4
- # This file is part of smc-get.
5
- # Copyright (C) 2010-2011 Entertaining Software, Inc.
6
- # Copyright (C) 2011 Marvin Gülker
7
- #
8
- # This program is free software: you can redistribute it and/or modify
9
- # it under the terms of the GNU General Public License as published by
10
- # the Free Software Foundation, either version 3 of the License, or
11
- # (at your option) any later version.
12
- #
13
- # This program is distributed in the hope that it will be useful,
14
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- # GNU General Public License for more details.
17
- #
18
- # You should have received a copy of the GNU General Public License
19
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
- ################################################################################
21
-
22
- require "fileutils"
23
- require "test/unit"
24
-
25
- if RUBY_VERSION =~ /^1.9/
26
- require_relative "../lib/smc_get/smc_get"
27
- else #For 1.8 fans
28
- require File.join(File.expand_path(File.dirname(__FILE__)), "..", "smc_get")
29
- end
30
-
31
- #Test case for SmcGet. If the tests defined here don't fail, everything
32
- #works well.
33
- class SmcGetLibraryTest < Test::Unit::TestCase
34
-
35
- #Directory from which packages are downloaded for the test.
36
- TEST_REPO = "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
37
- #Directory where we will download everything into. It's "testdir" right in this directory.
38
- TEST_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "testdir")
39
- TEST_PACKAGES_DIR = File.join(TEST_DIR, "packages")
40
- TEST_PACKAGES_MUSIC_DIR = File.join(TEST_PACKAGES_DIR, "contrib-music")
41
- TEST_PACKAGES_GRAPHICS_DIR = File.join(TEST_PACKAGES_DIR, "contrib-graphics")
42
- TEST_PACKAGES_LEVELS_DIR = File.join(TEST_PACKAGES_DIR, "levels")
43
- #Test configuration file's location. Inside the test dir, so we're able to
44
- #delete it together with everything else.
45
- TEST_CONFIG_FILE = File.join(TEST_DIR, "testconf.yml")
46
-
47
- #The configuration file we use for this tests.
48
- TEST_CONFIG =<<CONFIG
49
- ---
50
- data-directory: #{TEST_DIR}
51
- CONFIG
52
-
53
- #List of pacakges to install and inspect wheather they
54
- #are correctly installed or not.
55
- TEST_PACKAGES = %w[icy-mountain christmas-2010]
56
- #To test wheather smc-get does know what to do in case of non-existing packages.
57
- TEST_INVALID_PACKAGES = %w[sdhrfg jhjjjj]
58
-
59
- TEST_SEARCH_TERMS = ["icy", /icy/]
60
- TEST_SEARCH_TERMS_NOT_FOUND = ["dfgd", /^nonexistant$/]
61
-
62
- #Test initialization. Write the config file and ensure the directory we
63
- #want to download into is available. Run before EACH test.
64
- def setup
65
- FileUtils.mkdir_p(TEST_DIR)
66
- File.open(TEST_CONFIG_FILE, "w"){|f| f.write(TEST_CONFIG)}
67
- SmcGet.setup(TEST_REPO, TEST_DIR)
68
- end
69
-
70
- #Cleanup afterwards. Delete our testing directory. Run after EACH test.
71
- def teardown
72
- FileUtils.rm_rf(TEST_DIR)
73
- end
74
-
75
- #Tests the library's install routine.
76
- def test_install
77
- TEST_PACKAGES.each do |pkg|
78
- puts "Test installing #{pkg}"
79
- package = SmcGet::Package.new(pkg)
80
- package.install
81
-
82
- assert(package.spec_file.file?, "Package config file for #{pkg} not found.")
83
-
84
- pkg_config = YAML.load_file(package.spec_file.to_s)
85
-
86
- Dir.chdir(TEST_DIR) do
87
- [%w[levels levels], %w[music music/contrib-music], %w[graphics pixmaps/contrib-graphics]].each do |part, dir|
88
- next unless pkg_config.has_key?(part)
89
- pkg_config[part].each do |file|
90
- assert(File.file?(File.join(dir, file)), "File not found after installing: #{file}.")
91
- end
92
- end
93
- end
94
- end
95
-
96
- TEST_INVALID_PACKAGES.each do |pkg|
97
- assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).install}
98
- end
99
- assert_equal(TEST_PACKAGES.count, SmcGet::Package.installed_packages.count)
100
- end
101
-
102
- #def test_incorrect_install
103
- # #Maybe installed twice?
104
- #end
105
-
106
- def test_uninstall
107
- TEST_PACKAGES.each do |pkg|
108
- puts "Test uninstalling #{pkg}"
109
- package = SmcGet::Package.new(pkg)
110
- package.install #We can't uninstall a package that is not installed
111
-
112
- pkg_config = YAML.load_file(package.spec_file)
113
-
114
- package.uninstall
115
- assert(!package.spec_file.exist?, "File found after uninstalling: #{package.spec_file}.")
116
-
117
- Dir.chdir(TEST_DIR) do
118
- [%w[levels levels], %w[music music/contrib-music], %w[graphics pixmaps/contrib-graphics]].each do |part, dir|
119
- next unless pkg_config.has_key?(part)
120
- pkg_config[part].each do |file|
121
- assert(!File.exists?(File.join(dir, file)), "File found after uninstalling: #{file}.")
122
- end
123
- end
124
- end
125
- end
126
-
127
- TEST_INVALID_PACKAGES.each do |pkg|
128
- assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).uninstall}
129
- end
130
- assert_equal(0, SmcGet::Package.installed_packages.count)
131
- end
132
-
133
- def test_getinfo
134
- TEST_PACKAGES.each do |pkg|
135
- puts "Test getting info about #{pkg}"
136
- package = SmcGet::Package.new(pkg)
137
- package.install #We can't check specs from packages not installed
138
-
139
- pkg_config = YAML.load_file(package.spec_file)
140
-
141
- assert_equal(pkg_config, package.getinfo)
142
- end
143
-
144
- TEST_INVALID_PACKAGES.each do |pkg|
145
- assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).getinfo}
146
- end
147
- end
148
-
149
- def test_search
150
- TEST_SEARCH_TERMS.each do |query|
151
- ary = SmcGet::Package.search(query)
152
- pkg = ary[0]
153
- assert_not_equal(0, ary.size)
154
-
155
- pkg.install
156
-
157
- ary = SmcGet::Package.search(query, [:pkgname], true)
158
- assert_not_equal(0, ary.size)
159
-
160
- pkg.uninstall
161
-
162
- ary = SmcGet::Package.search(query, [:pkgname], true)
163
- assert_equal(0, ary.size)
164
- end
165
- TEST_SEARCH_TERMS_NOT_FOUND.each do |query|
166
- assert_equal(0, SmcGet::Package.search(query).size)
167
- end
168
- end
169
-
170
- end
1
+ #!/usr/bin/env ruby
2
+ #Encoding: UTF-8
3
+ ################################################################################
4
+ # This file is part of smc-get.
5
+ # Copyright (C) 2010-2011 Entertaining Software, Inc.
6
+ # Copyright (C) 2011 Marvin Gülker
7
+ #
8
+ # This program is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ ################################################################################
21
+
22
+ require "fileutils"
23
+ require "test/unit"
24
+
25
+ if RUBY_VERSION =~ /^1.9/
26
+ require_relative "../lib/smc_get/smc_get"
27
+ else #For 1.8 fans
28
+ require File.join(File.expand_path(File.dirname(__FILE__)), "..", "smc_get")
29
+ end
30
+
31
+ #Test case for SmcGet. If the tests defined here don't fail, everything
32
+ #works well.
33
+ class SmcGetLibraryTest < Test::Unit::TestCase
34
+
35
+ #Directory from which packages are downloaded for the test.
36
+ TEST_REPO = "https://github.com/Luiji/Secret-Maryo-Chronicles-Contributed-Levels/raw/master/"
37
+ #Directory where we will download everything into. It's "testdir" right in this directory.
38
+ TEST_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "testdir")
39
+ TEST_PACKAGES_DIR = File.join(TEST_DIR, "packages")
40
+ TEST_PACKAGES_MUSIC_DIR = File.join(TEST_PACKAGES_DIR, "contrib-music")
41
+ TEST_PACKAGES_GRAPHICS_DIR = File.join(TEST_PACKAGES_DIR, "contrib-graphics")
42
+ TEST_PACKAGES_LEVELS_DIR = File.join(TEST_PACKAGES_DIR, "levels")
43
+ #Test configuration file's location. Inside the test dir, so we're able to
44
+ #delete it together with everything else.
45
+ TEST_CONFIG_FILE = File.join(TEST_DIR, "testconf.yml")
46
+
47
+ #The configuration file we use for this tests.
48
+ TEST_CONFIG =<<CONFIG
49
+ ---
50
+ data-directory: #{TEST_DIR}
51
+ CONFIG
52
+
53
+ #List of pacakges to install and inspect wheather they
54
+ #are correctly installed or not.
55
+ TEST_PACKAGES = %w[icy-mountain christmas-2010]
56
+ #To test wheather smc-get does know what to do in case of non-existing packages.
57
+ TEST_INVALID_PACKAGES = %w[sdhrfg jhjjjj]
58
+
59
+ TEST_SEARCH_TERMS = ["icy", /icy/]
60
+ TEST_SEARCH_TERMS_NOT_FOUND = ["dfgd", /^nonexistant$/]
61
+
62
+ #Test initialization. Write the config file and ensure the directory we
63
+ #want to download into is available. Run before EACH test.
64
+ def setup
65
+ FileUtils.mkdir_p(TEST_DIR)
66
+ File.open(TEST_CONFIG_FILE, "w"){|f| f.write(TEST_CONFIG)}
67
+ SmcGet.setup(TEST_REPO, TEST_DIR)
68
+ end
69
+
70
+ #Cleanup afterwards. Delete our testing directory. Run after EACH test.
71
+ def teardown
72
+ FileUtils.rm_rf(TEST_DIR)
73
+ end
74
+
75
+ #Tests the library's install routine.
76
+ def test_install
77
+ TEST_PACKAGES.each do |pkg|
78
+ puts "Test installing #{pkg}"
79
+ package = SmcGet::Package.new(pkg)
80
+ package.install
81
+
82
+ assert(package.spec_file.file?, "Package config file for #{pkg} not found.")
83
+
84
+ pkg_config = YAML.load_file(package.spec_file.to_s)
85
+
86
+ Dir.chdir(TEST_DIR) do
87
+ [%w[levels levels], %w[music music/contrib-music], %w[graphics pixmaps/contrib-graphics]].each do |part, dir|
88
+ next unless pkg_config.has_key?(part)
89
+ pkg_config[part].each do |file|
90
+ assert(File.file?(File.join(dir, file)), "File not found after installing: #{file}.")
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ TEST_INVALID_PACKAGES.each do |pkg|
97
+ assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).install}
98
+ end
99
+ assert_equal(TEST_PACKAGES.count, SmcGet::Package.installed_packages.count)
100
+ end
101
+
102
+ #def test_incorrect_install
103
+ # #Maybe installed twice?
104
+ #end
105
+
106
+ def test_uninstall
107
+ TEST_PACKAGES.each do |pkg|
108
+ puts "Test uninstalling #{pkg}"
109
+ package = SmcGet::Package.new(pkg)
110
+ package.install #We can't uninstall a package that is not installed
111
+
112
+ pkg_config = YAML.load_file(package.spec_file)
113
+
114
+ package.uninstall
115
+ assert(!package.spec_file.exist?, "File found after uninstalling: #{package.spec_file}.")
116
+
117
+ Dir.chdir(TEST_DIR) do
118
+ [%w[levels levels], %w[music music/contrib-music], %w[graphics pixmaps/contrib-graphics]].each do |part, dir|
119
+ next unless pkg_config.has_key?(part)
120
+ pkg_config[part].each do |file|
121
+ assert(!File.exists?(File.join(dir, file)), "File found after uninstalling: #{file}.")
122
+ end
123
+ end
124
+ end
125
+ end
126
+
127
+ TEST_INVALID_PACKAGES.each do |pkg|
128
+ assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).uninstall}
129
+ end
130
+ assert_equal(0, SmcGet::Package.installed_packages.count)
131
+ end
132
+
133
+ def test_getinfo
134
+ TEST_PACKAGES.each do |pkg|
135
+ puts "Test getting info about #{pkg}"
136
+ package = SmcGet::Package.new(pkg)
137
+ package.install #We can't check specs from packages not installed
138
+
139
+ pkg_config = YAML.load_file(package.spec_file)
140
+
141
+ assert_equal(pkg_config, package.getinfo)
142
+ end
143
+
144
+ TEST_INVALID_PACKAGES.each do |pkg|
145
+ assert_raises(SmcGet::Errors::NoSuchPackageError){SmcGet::Package.new(pkg).getinfo}
146
+ end
147
+ end
148
+
149
+ def test_search
150
+ TEST_SEARCH_TERMS.each do |query|
151
+ ary = SmcGet::Package.search(query)
152
+ pkg = ary[0]
153
+ assert_not_equal(0, ary.size)
154
+
155
+ pkg.install
156
+
157
+ ary = SmcGet::Package.search(query, [:pkgname], true)
158
+ assert_not_equal(0, ary.size)
159
+
160
+ pkg.uninstall
161
+
162
+ ary = SmcGet::Package.search(query, [:pkgname], true)
163
+ assert_equal(0, ary.size)
164
+ end
165
+ TEST_SEARCH_TERMS_NOT_FOUND.each do |query|
166
+ assert_equal(0, SmcGet::Package.search(query).size)
167
+ end
168
+ end
169
+
170
+ end
171
+
172
+ # vim:set ts=8 sts=2 sw=2 et: #