// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. 'use strict'; import chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; import * as component from '../../../common/component'; import { cleanupUnitTest, prepareUnitTest } from '../../../common/utils'; import { LinuxCommands } from '../../../training_service/remote_machine/extends/linuxCommands'; describe('Unit Test for linuxCommands', () => { let linuxCommands: LinuxCommands before(() => { chai.should(); chai.use(chaiAsPromised); prepareUnitTest(); }); after(() => { cleanupUnitTest(); }); beforeEach(() => { linuxCommands = component.get(LinuxCommands); }); afterEach(() => { }); it('joinPath', async () => { chai.expect(linuxCommands.joinPath("/root/", "/first")).to.equal("/root/first"); chai.expect(linuxCommands.joinPath("/root", "first")).to.equal("/root/first"); chai.expect(linuxCommands.joinPath("/root/", "first")).to.equal("/root/first"); chai.expect(linuxCommands.joinPath("root/", "first")).to.equal("root/first"); chai.expect(linuxCommands.joinPath("root/")).to.equal("root/"); chai.expect(linuxCommands.joinPath("root")).to.equal("root"); chai.expect(linuxCommands.joinPath("./root")).to.equal("./root"); chai.expect(linuxCommands.joinPath("")).to.equal("."); chai.expect(linuxCommands.joinPath("..")).to.equal(".."); }) it('createFolder', async () => { chai.expect(linuxCommands.createFolder("test")).to.equal("mkdir -p 'test'"); chai.expect(linuxCommands.createFolder("test", true)).to.equal("umask 0; mkdir -p 'test'"); }) it('allowPermission', async () => { chai.expect(linuxCommands.allowPermission(true, "test", "test1")).to.equal("chmod 777 -R 'test' 'test1'"); chai.expect(linuxCommands.allowPermission(false, "test")).to.equal("chmod 777 'test'"); }) it('removeFolder', async () => { chai.expect(linuxCommands.removeFolder("test")).to.equal("rm -df 'test'"); chai.expect(linuxCommands.removeFolder("test", true)).to.equal("rm -rf 'test'"); chai.expect(linuxCommands.removeFolder("test", true, false)).to.equal("rm -r 'test'"); chai.expect(linuxCommands.removeFolder("test", false, false)).to.equal("rm 'test'"); }) it('removeFiles', async () => { chai.expect(linuxCommands.removeFiles("test", "*.sh")).to.equal("rm 'test/*.sh'"); chai.expect(linuxCommands.removeFiles("test", "")).to.equal("rm 'test'"); }) it('readLastLines', async () => { chai.expect(linuxCommands.readLastLines("test", 3)).to.equal("tail -n 3 'test'"); }) it('isProcessAlive', async () => { chai.expect(linuxCommands.isProcessAliveCommand("test")).to.equal("kill -0 `cat 'test'`"); chai.expect(linuxCommands.isProcessAliveProcessOutput( { exitCode: 0, stdout: "", stderr: "" } )).to.equal(true); chai.expect(linuxCommands.isProcessAliveProcessOutput( { exitCode: 10, stdout: "", stderr: "" } )).to.equal(false); }) it('extractFile', async () => { chai.expect(linuxCommands.extractFile("test.tar", "testfolder")).to.equal("tar -oxzf 'test.tar' -C 'testfolder'"); }) it('executeScript', async () => { chai.expect(linuxCommands.executeScript("test.sh", true)).to.equal("bash 'test.sh'"); chai.expect(linuxCommands.executeScript("test script'\"", false)).to.equal(`bash -c \"test script'\\""`); }) });