125
125
self.db.get_manifest_as_string, "a", "1.1")
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):
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"))
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):
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):
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"))
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"))
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):
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"))
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"))
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):
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"))
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"))
160
196
def test_maybe_remove_registered(self):