diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 0000000..b8b6223 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,23 @@ +name: Main workflow +on: [push] +jobs: + run: + name: Run + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [ubuntu-latest, windows-latest] + actions: + - name: Set Node.js 10.x + uses: bryanmacfarlane/node-config@master + with: + version: 10.x + + - name: npm install + run: npm install + + - name: Lint + run: npm run format-check + + - name: npm test + run: npm test diff --git a/__tests__/find-ruby.test.ts b/__tests__/find-ruby.test.ts index 44b6ba2..5448905 100644 --- a/__tests__/find-ruby.test.ts +++ b/__tests__/find-ruby.test.ts @@ -6,10 +6,11 @@ import path = require('path'); const toolDir = path.join(__dirname, 'runner', 'tools'); const tempDir = path.join(__dirname, 'runner', 'temp'); +process.env['AGENT_TOOLSDIRECTORY'] = toolDir; process.env['RUNNER_TOOLSDIRECTORY'] = toolDir; process.env['RUNNER_TEMPDIRECTORY'] = tempDir; -import findRubyVersion from '../src/find-ruby'; +import {findRubyVersion} from '../src/installer'; describe('find-ruby', () => { beforeAll(async () => { @@ -26,22 +27,18 @@ describe('find-ruby', () => { } }, 100000); + it('Uses version of ruby installed in cache', async () => { + const rubyDir: string = path.join(toolDir, 'Ruby', '17.0.0', os.arch()); + await io.mkdirP(rubyDir); + fs.writeFileSync(`${rubyDir}.complete`, 'hello'); + // This will throw if it doesn't find it in the cache (because no such version exists) + await findRubyVersion('17.0.0'); + }); + it('findRubyVersion throws if cannot find any version of ruby', async () => { let thrown = false; try { - await findRubyVersion('>= 2.4'); - } catch { - thrown = true; - } - expect(thrown).toBe(true); - }); - - it('findRubyVersion throws version of ruby is not complete', async () => { - let thrown = false; - const rubyDir: string = path.join(toolDir, 'Ruby', '2.4.6', os.arch()); - await io.mkdirP(rubyDir); - try { - await findRubyVersion('>= 2.4'); + await findRubyVersion('9.9.9'); } catch { thrown = true; } @@ -52,8 +49,10 @@ describe('find-ruby', () => { const rubyDir: string = path.join(toolDir, 'Ruby', '2.4.6', os.arch()); await io.mkdirP(rubyDir); fs.writeFileSync(`${rubyDir}.complete`, 'hello'); - await findRubyVersion('>= 2.4'); + await findRubyVersion('2.4.6'); const binDir = path.join(rubyDir, 'bin'); - expect(process.env['PATH']!.startsWith(`${binDir};`)).toBe(true); + console.log(`binDir: ${binDir}`); + console.log(`PATH: ${process.env['PATH']}`); + expect(process.env['PATH']!.startsWith(`${binDir}`)).toBe(true); }); }); diff --git a/action.yml b/action.yml index e8f0082..82ec5f3 100644 --- a/action.yml +++ b/action.yml @@ -8,4 +8,4 @@ inputs: runs: using: 'node12' - main: 'lib/main.js' + main: 'lib/setup-ruby.js' diff --git a/lib/find-ruby.js b/lib/installer.js similarity index 96% rename from lib/find-ruby.js rename to lib/installer.js index 7827b14..f651094 100644 --- a/lib/find-ruby.js +++ b/lib/installer.js @@ -20,7 +20,7 @@ const exec = __importStar(require("@actions/exec")); const tc = __importStar(require("@actions/tool-cache")); const path = __importStar(require("path")); const IS_WINDOWS = process.platform === 'win32'; -function default_1(version) { +function findRubyVersion(version) { return __awaiter(this, void 0, void 0, function* () { const installDir = tc.find('Ruby', version); if (!installDir) { @@ -37,4 +37,4 @@ function default_1(version) { core.addPath(toolPath); }); } -exports.default = default_1; +exports.findRubyVersion = findRubyVersion; diff --git a/lib/main.js b/lib/setup-ruby.js similarity index 83% rename from lib/main.js rename to lib/setup-ruby.js index 5e661a5..cc7f5fd 100644 --- a/lib/main.js +++ b/lib/setup-ruby.js @@ -14,17 +14,14 @@ var __importStar = (this && this.__importStar) || function (mod) { result["default"] = mod; return result; }; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); -const find_ruby_1 = __importDefault(require("./find-ruby")); +const installer_1 = require("./installer"); function run() { return __awaiter(this, void 0, void 0, function* () { try { const version = core.getInput('version'); - yield find_ruby_1.default(version); + yield installer_1.findRubyVersion(version); } catch (error) { core.setFailed(error.message); diff --git a/package-lock.json b/package-lock.json index ca6646d..43be668 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,30 +1,30 @@ { "name": "setup-ruby", - "version": "0.0.1", + "version": "0.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@actions/core": { - "version": "file:../../Users/damccorm/Documents/setup-node/toolkit/actions-core-0.0.0.tgz", + "version": "file:C:/Users/damccorm/Documents/setup-node/toolkit/actions-core-0.0.0.tgz", "integrity": "sha512-58ituSV1rzBMmmsWoFDnrnsT+Wm4kD/u9NgAGbPvZ7rQHWluYtD5bDbIsjDC6rKFuhqytkxDJPsF/TWBdgc/nA==", "requires": { "@actions/exit": "^0.0.0" } }, "@actions/exec": { - "version": "file:../../Users/damccorm/Documents/setup-node/toolkit/actions-exec-0.0.0.tgz", + "version": "file:C:/Users/damccorm/Documents/setup-node/toolkit/actions-exec-0.0.0.tgz", "integrity": "sha512-HHObusC4p1RElxIlrrN0sY/cweBYl+jKm3J/XWHPQZMipgJXB/dkVhUfl4KqH3Vim7oM2KjCGSfn+vTYrqVH3A==" }, "@actions/exit": { - "version": "file:../../Users/damccorm/Documents/setup-node/toolkit/actions-exit-0.0.0.tgz", + "version": "file:C:/Users/damccorm/Documents/setup-node/toolkit/actions-exit-0.0.0.tgz", "integrity": "sha512-vQdxFWM0/AERkC79mQ886SqPmV4joWhrSF7hiSTiJoKkE9eTjrKV5WQtp7SXv6OntrQkKX+ZjgdGpv+0rvJRCw==" }, "@actions/io": { - "version": "file:../../Users/damccorm/Documents/setup-node/toolkit/actions-io-0.0.0.tgz", + "version": "file:C:/Users/damccorm/Documents/setup-node/toolkit/actions-io-0.0.0.tgz", "integrity": "sha512-BArfobXB/b6RjR4i/+P4UcdaqR2tPjEb2WzZf9GdKiSARQn7d301pKOZAqxA+0N11X07Lk46t/txeUBcrCNbeg==" }, "@actions/tool-cache": { - "version": "file:../../Users/damccorm/Documents/setup-node/toolkit/actions-tool-cache-0.0.0.tgz", + "version": "file:C:/Users/damccorm/Documents/setup-node/toolkit/actions-tool-cache-0.0.0.tgz", "integrity": "sha512-NavDg5VFXDfbe9TpFuj+uOHacjg1bT3Wmo3DQuul3gsGRBEXyzhh2MWKnBZs/Zh7FE3prLmIqpbtymafNBFkIA==", "requires": { "@actions/core": "^0.0.0", diff --git a/package.json b/package.json index 1188393..46b339e 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "setup-ruby", - "version": "0.0.1", + "version": "0.0.0", "private": true, "description": "setup ruby action", - "main": "lib/main.js", + "main": "lib/setup-ruby.js", "scripts": { "build": "tsc", "format": "prettier --write **/*.ts", diff --git a/src/find-ruby.ts b/src/installer.ts similarity index 93% rename from src/find-ruby.ts rename to src/installer.ts index 45178bd..f71bf97 100644 --- a/src/find-ruby.ts +++ b/src/installer.ts @@ -5,7 +5,7 @@ import * as path from 'path'; const IS_WINDOWS = process.platform === 'win32'; -export default async function(version: string) { +export async function findRubyVersion(version: string) { const installDir: string | null = tc.find('Ruby', version); if (!installDir) { diff --git a/src/main.ts b/src/setup-ruby.ts similarity index 83% rename from src/main.ts rename to src/setup-ruby.ts index e0d6d08..5d482d3 100644 --- a/src/main.ts +++ b/src/setup-ruby.ts @@ -1,5 +1,5 @@ import * as core from '@actions/core'; -import findRubyVersion from './find-ruby'; +import {findRubyVersion} from './installer'; async function run() { try {