forked from extern/bruno
Corrects issue when collection names in imports have slashes
This commit is contained in:
parent
516411b9a2
commit
2c0ccf769c
42
.github/workflows/unit-tests.yml
vendored
42
.github/workflows/unit-tests.yml
vendored
@ -1,29 +1,31 @@
|
|||||||
name: Unit Tests
|
name: Unit Tests
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main ]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [main]
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm i --legacy-peer-deps
|
run: npm i --legacy-peer-deps
|
||||||
- name: Test Package bruno-query
|
- name: Test Package bruno-query
|
||||||
run: npm run test --workspace=packages/bruno-query
|
run: npm run test --workspace=packages/bruno-query
|
||||||
- name: Build Package bruno-query
|
- name: Build Package bruno-query
|
||||||
run: npm run build --workspace=packages/bruno-query
|
run: npm run build --workspace=packages/bruno-query
|
||||||
- name: Test Package bruno-lang
|
- name: Test Package bruno-lang
|
||||||
run: npm run test --workspace=packages/bruno-lang
|
run: npm run test --workspace=packages/bruno-lang
|
||||||
- name: Test Package bruno-schema
|
- name: Test Package bruno-schema
|
||||||
run: npm run test --workspace=packages/bruno-schema
|
run: npm run test --workspace=packages/bruno-schema
|
||||||
- name: Test Package bruno-app
|
- name: Test Package bruno-app
|
||||||
run: npm run test --workspace=packages/bruno-app
|
run: npm run test --workspace=packages/bruno-app
|
||||||
- name: Test Package bruno-js
|
- name: Test Package bruno-js
|
||||||
run: npm run test --workspace=packages/bruno-js
|
run: npm run test --workspace=packages/bruno-js
|
||||||
|
- name: Test Package bruno-electron
|
||||||
|
run: npm run test --workspace=packages/bruno-electron
|
||||||
|
@ -11,7 +11,8 @@ const {
|
|||||||
isDirectory,
|
isDirectory,
|
||||||
browseDirectory,
|
browseDirectory,
|
||||||
createDirectory,
|
createDirectory,
|
||||||
searchForBruFiles
|
searchForBruFiles,
|
||||||
|
sanitizeDirectoryName
|
||||||
} = require('../utils/filesystem');
|
} = require('../utils/filesystem');
|
||||||
const { stringifyJson } = require('../utils/common');
|
const { stringifyJson } = require('../utils/common');
|
||||||
const { openCollectionDialog, openCollection } = require('../app/collections');
|
const { openCollectionDialog, openCollection } = require('../app/collections');
|
||||||
@ -315,7 +316,7 @@ const registerRendererEventHandlers = (mainWindow, watcher, lastOpenedCollection
|
|||||||
|
|
||||||
ipcMain.handle('renderer:import-collection', async (event, collection, collectionLocation) => {
|
ipcMain.handle('renderer:import-collection', async (event, collection, collectionLocation) => {
|
||||||
try {
|
try {
|
||||||
let collectionName = collection.name;
|
let collectionName = sanitizeDirectoryName(collection.name);
|
||||||
let collectionPath = path.join(collectionLocation, collectionName);
|
let collectionPath = path.join(collectionLocation, collectionName);
|
||||||
|
|
||||||
if (fs.existsSync(collectionPath)) {
|
if (fs.existsSync(collectionPath)) {
|
||||||
@ -359,7 +360,7 @@ const registerRendererEventHandlers = (mainWindow, watcher, lastOpenedCollection
|
|||||||
const uid = generateUidBasedOnHash(collectionPath);
|
const uid = generateUidBasedOnHash(collectionPath);
|
||||||
const brunoConfig = {
|
const brunoConfig = {
|
||||||
version: '1',
|
version: '1',
|
||||||
name: collection.name,
|
name: collectionName,
|
||||||
type: 'collection'
|
type: 'collection'
|
||||||
};
|
};
|
||||||
const content = await stringifyJson(brunoConfig);
|
const content = await stringifyJson(brunoConfig);
|
||||||
|
@ -114,6 +114,10 @@ const searchForBruFiles = (dir) => {
|
|||||||
return searchForFiles(dir, '.bru');
|
return searchForFiles(dir, '.bru');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const sanitizeDirectoryName = (name) => {
|
||||||
|
return name.replace(/[<>:"/\\|?*\x00-\x1F]+/g, '-');
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
isValidPathname,
|
isValidPathname,
|
||||||
exists,
|
exists,
|
||||||
@ -127,5 +131,6 @@ module.exports = {
|
|||||||
createDirectory,
|
createDirectory,
|
||||||
browseDirectory,
|
browseDirectory,
|
||||||
searchForFiles,
|
searchForFiles,
|
||||||
searchForBruFiles
|
searchForBruFiles,
|
||||||
|
sanitizeDirectoryName
|
||||||
};
|
};
|
||||||
|
26
packages/bruno-electron/src/utils/filesystem.test.js
Normal file
26
packages/bruno-electron/src/utils/filesystem.test.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
const { sanitizeDirectoryName } = require('./filesystem.js');
|
||||||
|
|
||||||
|
describe('sanitizeDirectoryName', () => {
|
||||||
|
it('should replace invalid characters with hyphens', () => {
|
||||||
|
const input = '<>:"/\\|?*\x00-\x1F';
|
||||||
|
const expectedOutput = '---';
|
||||||
|
expect(sanitizeDirectoryName(input)).toEqual(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not modify valid directory names', () => {
|
||||||
|
const input = 'my-directory';
|
||||||
|
expect(sanitizeDirectoryName(input)).toEqual(input);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should replace multiple invalid characters with a single hyphen', () => {
|
||||||
|
const input = 'my<>invalid?directory';
|
||||||
|
const expectedOutput = 'my-invalid-directory';
|
||||||
|
expect(sanitizeDirectoryName(input)).toEqual(expectedOutput);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle names with slashes', () => {
|
||||||
|
const input = 'my/invalid/directory';
|
||||||
|
const expectedOutput = 'my-invalid-directory';
|
||||||
|
expect(sanitizeDirectoryName(input)).toEqual(expectedOutput);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user