Add e2e tests for yank/paste
This commit is contained in:
parent
640ac38fb6
commit
52b13f85ca
3 changed files with 186 additions and 5 deletions
e2e/lib
63
e2e/lib/clipboard.js
Normal file
63
e2e/lib/clipboard.js
Normal file
|
@ -0,0 +1,63 @@
|
|||
'use strict';
|
||||
|
||||
const { spawn } = require('child_process');
|
||||
|
||||
const readLinux = () => {
|
||||
let stdout = '', stderr = '';
|
||||
return new Promise((resolve, reject) => {
|
||||
let xsel = spawn('xsel', ['--clipboard', '--output']);
|
||||
xsel.stdout.on('data', (data) => {
|
||||
stdout += data;
|
||||
});
|
||||
xsel.stderr.on('data', (data) => {
|
||||
stderr += data;
|
||||
});
|
||||
xsel.on('close', (code) => {
|
||||
if (code !== 0) {
|
||||
throw new Error(`xsel returns ${code}: ${stderr}`)
|
||||
}
|
||||
resolve(stdout);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const writeLinux = (data) => {
|
||||
let stdout = '', stderr = '';
|
||||
return new Promise((resolve, reject) => {
|
||||
let xsel = spawn('xsel', ['--clipboard', '--input']);
|
||||
xsel.stderr.on('data', (data) => {
|
||||
stderr += data;
|
||||
});
|
||||
xsel.on('close', (code) => {
|
||||
if (code !== 0) {
|
||||
throw new Error(`xsel returns ${code}: ${stderr}`)
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
xsel.stdin.write(data);
|
||||
xsel.stdin.end();
|
||||
});
|
||||
};
|
||||
|
||||
const unsupported = (os) => {
|
||||
return () => {
|
||||
throw new Error(`Unsupported os: ${os}`);
|
||||
};
|
||||
};
|
||||
|
||||
const detect = () => {
|
||||
switch (process.platform) {
|
||||
case 'linux':
|
||||
return {
|
||||
read: readLinux,
|
||||
write: writeLinux,
|
||||
};
|
||||
default:
|
||||
return {
|
||||
read: unsupported(process.platform),
|
||||
write: unsupported(process.platform),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = detect();
|
Reference in a new issue