~jamesodhunt/click/add-utf8-test

« back to all changes in this revision

Viewing changes to click/tests/test_database.py

  • Committer: CI bot
  • Author(s): Colin Watson
  • Date: 2014-06-04 08:37:11 UTC
  • mfrom: (425.1.27 devel)
  • Revision ID: ps-jenkins@lists.canonical.com-20140604083711-vhokegged7r0g044
Click 0.4.24: Add 14.10 framework to "click chroot"; fix getpwnam caching; handle renaming of upstart-app-launch to ubuntu-app-launch. Fixes: 1323998

Show diffs side-by-side

added added

removed removed

Lines of Context:
125
125
            self.db.get_manifest_as_string, "a", "1.1")
126
126
 
127
127
    def test_app_running(self):
128
 
        with self.run_in_subprocess("g_spawn_sync") as (enter, preloads):
 
128
        with self.run_in_subprocess(
 
129
                "click_find_on_path", "g_spawn_sync",
 
130
                ) as (enter, preloads):
129
131
            enter()
 
132
            preloads["click_find_on_path"].return_value = True
130
133
            preloads["g_spawn_sync"].side_effect = partial(
131
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 0})
 
134
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 0})
132
135
            self.assertTrue(self.db.app_running("foo", "bar", "1.0"))
133
136
            self.assertEqual(
134
 
                [[b"upstart-app-pid", b"foo_bar_1.0"]], self.spawn_calls)
 
137
                [[b"ubuntu-app-pid", b"foo_bar_1.0"]], self.spawn_calls)
135
138
            preloads["g_spawn_sync"].side_effect = partial(
136
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 1 << 8})
 
139
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 1 << 8})
137
140
            self.assertFalse(self.db.app_running("foo", "bar", "1.0"))
138
141
 
139
 
    def test_any_app_running(self):
140
 
        with self.run_in_subprocess(
141
 
                "click_find_on_path", "g_spawn_sync",
142
 
                ) as (enter, preloads):
143
 
            enter()
144
 
            manifest_path = os.path.join(
145
 
                self.temp_dir, "a", "1.0", ".click", "info", "a.manifest")
146
 
            with mkfile(manifest_path) as manifest:
147
 
                json.dump({"hooks": {"a-app": {}}}, manifest)
 
142
    def test_any_app_running_ubuntu_app_pid(self):
 
143
        with self.run_in_subprocess(
 
144
                "click_find_on_path", "g_spawn_sync",
 
145
                ) as (enter, preloads):
 
146
            enter()
 
147
            manifest_path = os.path.join(
 
148
                self.temp_dir, "a", "1.0", ".click", "info", "a.manifest")
 
149
            with mkfile(manifest_path) as manifest:
 
150
                json.dump({"hooks": {"a-app": {}}}, manifest)
 
151
            preloads["click_find_on_path"].side_effect = (
 
152
                lambda command: command == b"ubuntu-app-pid")
 
153
            preloads["g_spawn_sync"].side_effect = partial(
 
154
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 0})
 
155
            self.assertTrue(self.db.any_app_running("a", "1.0"))
 
156
            self.assertEqual(
 
157
                [[b"ubuntu-app-pid", b"a_a-app_1.0"]], self.spawn_calls)
 
158
            preloads["g_spawn_sync"].side_effect = partial(
 
159
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 1 << 8})
 
160
            self.assertFalse(self.db.any_app_running("a", "1.0"))
 
161
 
 
162
    def test_any_app_running_upstart_app_pid(self):
 
163
        with self.run_in_subprocess(
 
164
                "click_find_on_path", "g_spawn_sync",
 
165
                ) as (enter, preloads):
 
166
            enter()
 
167
            manifest_path = os.path.join(
 
168
                self.temp_dir, "a", "1.0", ".click", "info", "a.manifest")
 
169
            with mkfile(manifest_path) as manifest:
 
170
                json.dump({"hooks": {"a-app": {}}}, manifest)
 
171
            preloads["click_find_on_path"].side_effect = (
 
172
                lambda command: command == b"upstart-app-pid")
148
173
            preloads["g_spawn_sync"].side_effect = partial(
149
174
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 0})
 
175
            self.assertTrue(self.db.any_app_running("a", "1.0"))
 
176
            self.assertEqual(
 
177
                [[b"upstart-app-pid", b"a_a-app_1.0"]], self.spawn_calls)
 
178
            preloads["g_spawn_sync"].side_effect = partial(
 
179
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 1 << 8})
 
180
            self.assertFalse(self.db.any_app_running("a", "1.0"))
 
181
 
 
182
    def test_any_app_running_no_app_pid_command(self):
 
183
        with self.run_in_subprocess(
 
184
                "click_find_on_path", "g_spawn_sync",
 
185
                ) as (enter, preloads):
 
186
            enter()
 
187
            manifest_path = os.path.join(
 
188
                self.temp_dir, "a", "1.0", ".click", "info", "a.manifest")
 
189
            with mkfile(manifest_path) as manifest:
 
190
                json.dump({"hooks": {"a-app": {}}}, manifest)
150
191
            preloads["click_find_on_path"].return_value = False
151
 
            self.assertFalse(self.db.any_app_running("a", "1.0"))
152
 
            preloads["click_find_on_path"].return_value = True
153
 
            self.assertTrue(self.db.any_app_running("a", "1.0"))
154
 
            self.assertEqual(
155
 
                [[b"upstart-app-pid", b"a_a-app_1.0"]], self.spawn_calls)
156
192
            preloads["g_spawn_sync"].side_effect = partial(
157
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 1 << 8})
 
193
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 0})
158
194
            self.assertFalse(self.db.any_app_running("a", "1.0"))
159
195
 
160
196
    def test_maybe_remove_registered(self):
172
208
            os.makedirs(os.path.dirname(user_path))
173
209
            os.symlink(version_path, user_path)
174
210
            preloads["g_spawn_sync"].side_effect = partial(
175
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 0})
 
211
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 0})
176
212
            preloads["click_find_on_path"].return_value = True
177
213
            self.db.maybe_remove("a", "1.0")
178
214
            self.assertTrue(os.path.exists(version_path))
189
225
            with mkfile(manifest_path) as manifest:
190
226
                json.dump({"hooks": {"a-app": {}}}, manifest)
191
227
            preloads["g_spawn_sync"].side_effect = partial(
192
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 0})
 
228
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 0})
193
229
            preloads["click_find_on_path"].return_value = True
194
230
            self.db.maybe_remove("a", "1.0")
195
231
            gcinuse_path = os.path.join(
216
252
            current_path = os.path.join(self.temp_dir, "a", "current")
217
253
            os.symlink("1.0", current_path)
218
254
            preloads["g_spawn_sync"].side_effect = partial(
219
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 1 << 8})
 
255
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 1 << 8})
220
256
            preloads["click_find_on_path"].return_value = True
221
257
            self.db.maybe_remove("a", "1.0")
222
258
            gcinuse_path = os.path.join(
254
290
            os.makedirs(os.path.dirname(b_gcinuse_path))
255
291
            os.symlink(b_path, b_gcinuse_path)
256
292
            preloads["g_spawn_sync"].side_effect = partial(
257
 
                self.g_spawn_sync_side_effect, {b"upstart-app-pid": 1 << 8})
 
293
                self.g_spawn_sync_side_effect, {b"ubuntu-app-pid": 1 << 8})
258
294
            preloads["click_find_on_path"].return_value = True
259
295
            self.db.gc()
260
296
            self.assertTrue(os.path.exists(a_path))