From 7e77e31ad64c3649888eae337e0c984fd9c2ea2a Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 22 Sep 2019 16:13:12 +0900 Subject: Migrate e2e tests to TypeScript --- e2e/lib/clipboard.ts | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 e2e/lib/clipboard.ts (limited to 'e2e/lib/clipboard.ts') diff --git a/e2e/lib/clipboard.ts b/e2e/lib/clipboard.ts new file mode 100644 index 0000000..13d95df --- /dev/null +++ b/e2e/lib/clipboard.ts @@ -0,0 +1,66 @@ +import { spawn } from 'child_process'; + +const readLinux = (): Promise => { + let stdout = '', stderr = ''; + return new Promise((resolve) => { + 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: string): Promise => { + let stderr = ''; + return new Promise((resolve) => { + 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(); + }); +}; + +class UnsupportedError extends Error { + constructor(platform: string) { + super(); + this.message = `Unsupported platform: ${platform}`; + } +} + +const read = () => { + switch (process.platform) { + case 'linux': + return readLinux(); + } + throw new UnsupportedError(process.platform); +} + +const write = (data: string) => { + switch (process.platform) { + case 'linux': + return writeLinux(data); + } + throw new UnsupportedError(process.platform); +} + +export { + read, + write, +}; -- cgit v1.2.3 From ffc20750e99ab2edbfc31748418dc5ecba69039e Mon Sep 17 00:00:00 2001 From: Shin'ya UEOKA Date: Fri, 27 Sep 2019 09:11:33 +0000 Subject: Support clipbard on MacOS --- e2e/lib/clipboard.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'e2e/lib/clipboard.ts') diff --git a/e2e/lib/clipboard.ts b/e2e/lib/clipboard.ts index 13d95df..c1eddbb 100644 --- a/e2e/lib/clipboard.ts +++ b/e2e/lib/clipboard.ts @@ -37,6 +37,43 @@ const writeLinux = (data: string): Promise => { }); }; +const readDarwin = (): Promise => { + let stdout = '', stderr = ''; + return new Promise((resolve) => { + let pbpaste = spawn('pbpaste'); + pbpaste.stdout.on('data', (data) => { + stdout += data; + }); + pbpaste.stderr.on('data', (data) => { + stderr += data; + }); + pbpaste.on('close', (code) => { + if (code !== 0) { + throw new Error(`pbpaste returns ${code}: ${stderr}`) + } + resolve(stdout); + }); + }); +}; + +const writeDarwin = (data: string): Promise => { + let stderr = ''; + return new Promise((resolve) => { + let pbcopy = spawn('pbcopy'); + pbcopy.stderr.on('data', (data) => { + stderr += data; + }); + pbcopy.on('close', (code) => { + if (code !== 0) { + throw new Error(`pbcopy returns ${code}: ${stderr}`) + } + resolve(); + }); + pbcopy.stdin.write(data); + pbcopy.stdin.end(); + }); +}; + class UnsupportedError extends Error { constructor(platform: string) { super(); @@ -48,6 +85,8 @@ const read = () => { switch (process.platform) { case 'linux': return readLinux(); + case 'darwin': + return readDarwin(); } throw new UnsupportedError(process.platform); } @@ -56,6 +95,8 @@ const write = (data: string) => { switch (process.platform) { case 'linux': return writeLinux(data); + case 'darwin': + return writeDarwin(data); } throw new UnsupportedError(process.platform); } -- cgit v1.2.3