Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.

Commit 85795a5

Browse files
authored
add endpoint scarb test (#71)
1 parent b4e35cc commit 85795a5

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

api/src/controllers/scarb.controller.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,30 @@ export const scarbBuild = async (req, res, next) => {
3030
}
3131
};
3232

33+
export const scarbTest = async (req, res, next) => {
34+
const content = req.body;
35+
const user = req.params.user;
36+
37+
if (Object.keys(content).length == 0) {
38+
return res.status(200).json({ statusCode: 404, message: 'Error body is empty' });
39+
}
40+
41+
const rootDir = process.cwd();
42+
const tempFolder = path.join(rootDir, 'temp');
43+
const destinationFolder = path.join(tempFolder, user);
44+
45+
try {
46+
if (!await existFolder(destinationFolder)) {
47+
await executeScarbNew(user, tempFolder);
48+
}
49+
await replaceCode(destinationFolder, content);
50+
const log = await executeScarbTest(destinationFolder);
51+
return res.status(200).json({ message: log });
52+
} catch (error) {
53+
return next(error);
54+
}
55+
}
56+
3357
async function existFolder(folderName) {
3458
try {
3559
await accessAsync(folderName, fs.constants.F_OK);
@@ -65,3 +89,12 @@ async function executeScarbBuild(destinationFolder) {
6589
throw { statusCode: 404, message: error.stdout };
6690
}
6791
}
92+
93+
async function executeScarbTest(destinationFolder) {
94+
try {
95+
const { stdout } = await util.promisify(exec)(`scarb test`, { cwd: destinationFolder });
96+
return stdout;
97+
} catch (error) {
98+
throw { statusCode: 404, message: error.stdout };
99+
}
100+
}

api/src/routes/scarb.routes.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import Router from "express-promise-router";
22
import {
3-
scarbBuild
3+
scarbBuild,
4+
scarbTest
45
} from "../controllers/scarb.controller.js";
56

67
const router = Router();
78

89
router.post("/scarb/build/:user", scarbBuild);
910

11+
router.post("/scarb/test/:user", scarbTest);
12+
1013
export default router;

0 commit comments

Comments
 (0)