Skip to content

Commit 2100c54

Browse files
authored
Merge pull request #252 from Geode-solutions/fix/run-script-name
fix(Local): allow use of executable in path
2 parents 2d16fad + c844eb6 commit 2100c54

File tree

4 files changed

+57
-27
lines changed

4 files changed

+57
-27
lines changed

tests/integration/microservices/back/requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@
55
# pip-compile --output-file=tests/integration/microservices/back/requirements.txt tests/integration/microservices/back/requirements.in
66
#
77

8-
opengeodeweb-back==5.*,>=5.11.1

tests/integration/microservices/viewer/requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@
55
# pip-compile --output-file=tests/integration/microservices/viewer/requirements.txt tests/integration/microservices/viewer/requirements.in
66
#
77

8-
opengeodeweb-viewer==1.*,>=1.11.6rc4

tests/integration/setup.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,16 @@ async function setupIntegrationTests(file_name, geode_object, object_type) {
4242
const microservices_path = path.join("tests", "integration", "microservices")
4343
const project_folder_path = path.join(__dirname, "data", uuidv4())
4444
const upload_folder_path = path.join(__dirname, "data", "uploads")
45-
const back_path = path.join(
46-
executable_path(path.join(microservices_path, "back")),
47-
executable_name("opengeodeweb-back"),
48-
)
49-
const viewer_path = path.join(
50-
executable_path(path.join(microservices_path, "viewer")),
51-
executable_name("opengeodeweb-viewer"),
52-
)
45+
const back_path = executable_path(path.join(microservices_path, "back"))
46+
const back_name = executable_name("opengeodeweb-back")
47+
const viewer_path = executable_path(path.join(microservices_path, "viewer"))
48+
const viewer_name = executable_name("opengeodeweb-viewer")
5349
const [back_port, viewer_port] = await Promise.all([
54-
run_back(back_path, {
50+
run_back(back_name, back_path, {
5551
project_folder_path: project_folder_path,
5652
upload_folder_path: upload_folder_path,
5753
}),
58-
run_viewer(viewer_path, {
54+
run_viewer(viewer_name, viewer_path, {
5955
project_folder_path: project_folder_path,
6056
}),
6157
])

utils/local.js

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,17 @@ function get_available_port() {
5757
})
5858
}
5959

60+
function commandExistsSync(executable_name) {
61+
const envPath = process.env.PATH || ""
62+
return envPath.split(path.delimiter).some((dir) => {
63+
const filePath = path.join(dir, executable_name)
64+
return fs.existsSync(filePath) && fs.statSync(filePath).isFile()
65+
})
66+
}
67+
6068
async function run_script(
61-
command,
69+
executable_name,
70+
executable_path,
6271
args,
6372
expected_response,
6473
timeout_seconds = 30,
@@ -68,6 +77,10 @@ async function run_script(
6877
reject("Timed out after " + timeout_seconds + " seconds")
6978
}, timeout_seconds * 1000)
7079

80+
const command = commandExistsSync(executable_name)
81+
? executable_name
82+
: path.join(executable_path, executable_name)
83+
console.log("run_script", command, args)
7184
const child = child_process.spawn(command, args, {
7285
encoding: "utf8",
7386
shell: true,
@@ -109,7 +122,8 @@ async function run_script(
109122
}
110123

111124
async function run_back(
112-
command,
125+
executable_name,
126+
executable_path,
113127
args = {
114128
project_folder_path,
115129
upload_folder_path: undefined,
@@ -128,22 +142,36 @@ async function run_back(
128142
"--allowed_origin http://localhost:*",
129143
"--timeout " + 0,
130144
]
131-
console.log("run_back", command, back_args)
132-
await run_script(command, back_args, "Serving Flask app")
145+
console.log("run_back", executable_name, executable_path, back_args)
146+
await run_script(
147+
executable_name,
148+
executable_path,
149+
back_args,
150+
"Serving Flask app",
151+
)
133152
resolve(port)
134153
})
135154
}
136155

137-
async function run_viewer(command, args = { project_folder_path }) {
156+
async function run_viewer(
157+
executable_name,
158+
executable_path,
159+
args = { project_folder_path },
160+
) {
138161
return new Promise(async (resolve, reject) => {
139162
const port = await get_available_port()
140163
const viewer_args = [
141164
"--port " + port,
142165
"--data_folder_path " + args.project_folder_path,
143166
"--timeout " + 0,
144167
]
145-
console.log("run_viewer", command, viewer_args)
146-
await run_script(command, viewer_args, "Starting factory")
168+
console.log("run_viewer", executable_name, executable_path, viewer_args)
169+
await run_script(
170+
executable_name,
171+
executable_path,
172+
viewer_args,
173+
"Starting factory",
174+
)
147175
resolve(port)
148176
})
149177
}
@@ -224,19 +252,27 @@ function kill_viewer(viewer_port) {
224252
async function run_browser(
225253
script_name,
226254
microservices_options = {
227-
back: { command, args: { project_folder_path } },
228-
viewer: { command, args: { project_folder_path } },
255+
back: { executable_name, executable_path, args: { project_folder_path } },
256+
viewer: { executable_name, executable_path, args: { project_folder_path } },
229257
},
230258
) {
231259
console.log("microservices_options", microservices_options)
232-
const back_promise = run_back(microservices_options.back.command, {
233-
...microservices_options.back.args,
234-
})
260+
const back_promise = run_back(
261+
microservices_options.back.executable_name,
262+
microservices_options.back.executable_path,
263+
{
264+
...microservices_options.back.args,
265+
},
266+
)
235267
console.log("back_promise", back_promise)
236268

237-
const viewer_promise = run_viewer(microservices_options.viewer.command, {
238-
...microservices_options.viewer.args,
239-
})
269+
const viewer_promise = run_viewer(
270+
microservices_options.viewer.executable_name,
271+
microservices_options.viewer.executable_path,
272+
{
273+
...microservices_options.viewer.args,
274+
},
275+
)
240276
console.log("viewer_promise", viewer_promise)
241277

242278
const [back_port, viewer_port] = await Promise.all([

0 commit comments

Comments
 (0)