mirror of
https://github.com/shivammathur/setup-php.git
synced 2024-11-26 21:33:06 +07:00
280 lines
8.7 KiB
JavaScript
280 lines
8.7 KiB
JavaScript
|
var fs = require('fs')
|
||
|
var mockFs = require('mock-fs')
|
||
|
var codecov = require('../lib/codecov')
|
||
|
|
||
|
var isWindows =
|
||
|
process.platform.match(/win32/) || process.platform.match(/win64/)
|
||
|
var pathSeparator = !isWindows ? '/' : '\\'
|
||
|
|
||
|
describe('Codecov', function() {
|
||
|
beforeEach(function() {
|
||
|
try {
|
||
|
fs.unlinkSync('.bowerrc')
|
||
|
} catch (e) {}
|
||
|
})
|
||
|
|
||
|
afterAll(function() {
|
||
|
try {
|
||
|
fs.unlinkSync('.bowerrc')
|
||
|
} catch (e) {}
|
||
|
})
|
||
|
|
||
|
it('can get a token passed via env variable', function() {
|
||
|
jest.setTimeout(10000)
|
||
|
process.env.codecov_token = 'abc123'
|
||
|
expect(codecov.upload({ options: { dump: true } }).query.token).toBe(
|
||
|
'abc123'
|
||
|
)
|
||
|
delete process.env.codecov_token
|
||
|
process.env.CODECOV_TOKEN = 'ABC123'
|
||
|
expect(codecov.upload({ options: { dump: true } }).query.token).toBe(
|
||
|
'ABC123'
|
||
|
)
|
||
|
delete process.env.CODECOV_TOKEN
|
||
|
})
|
||
|
|
||
|
it('can get a token passed in cli', function() {
|
||
|
expect(
|
||
|
codecov.upload({ options: { dump: true, token: 'qwerty' } }).query.token
|
||
|
).toBe('qwerty')
|
||
|
})
|
||
|
|
||
|
it('can read a codecov.yml file', function() {
|
||
|
mockFs({
|
||
|
'codecov.yml': 'codecov:\n token: fake-token',
|
||
|
})
|
||
|
expect(codecov.upload({ options: { dump: true } }).query.token).toBe(
|
||
|
'fake-token'
|
||
|
)
|
||
|
mockFs.restore()
|
||
|
})
|
||
|
it('can read a .codecov.yml file', function() {
|
||
|
mockFs({
|
||
|
'.codecov.yml': 'codecov:\n token: fake-token-dotfile',
|
||
|
})
|
||
|
expect(codecov.upload({ options: { dump: true } }).query.token).toBe(
|
||
|
'fake-token-dotfile'
|
||
|
)
|
||
|
mockFs.restore()
|
||
|
})
|
||
|
it('should have no token if yaml file does not supplied', function() {
|
||
|
mockFs({
|
||
|
'.codecov.yml': 'codecov:\n noconfig: true',
|
||
|
})
|
||
|
expect(codecov.upload({ options: { dump: true } }).query.token).toBe(
|
||
|
undefined
|
||
|
)
|
||
|
mockFs.restore()
|
||
|
})
|
||
|
|
||
|
it('token precedence should be respected', function() {
|
||
|
// options.token || .codecov.yml/codecov.yml file || codecov_token || CODECOV_TOKEN
|
||
|
mockFs({
|
||
|
'.codecov.yml': 'codecov:\n token: fake-token-dotfile',
|
||
|
})
|
||
|
var upload = codecov.upload({ options: { dump: true, token: 'qwerty' } })
|
||
|
expect(upload.query.token).toBe('qwerty')
|
||
|
mockFs.restore()
|
||
|
|
||
|
process.env.codecov_token = 'abc123'
|
||
|
upload = codecov.upload({ options: { dump: true, token: 'qwerty2' } })
|
||
|
expect(upload.query.token).toBe('qwerty2')
|
||
|
delete process.env.codecov_token
|
||
|
|
||
|
process.env.CODECOV_TOKEN = 'ABC123'
|
||
|
upload = codecov.upload({ options: { dump: true, token: 'qwerty3' } })
|
||
|
expect(upload.query.token).toBe('qwerty3')
|
||
|
delete process.env.CODECOV_TOKEN
|
||
|
|
||
|
mockFs({
|
||
|
'.codecov.yml': 'codecov:\n token: fake-token-dotfile',
|
||
|
})
|
||
|
process.env.codecov_token = 'abc123'
|
||
|
upload = codecov.upload({ options: { dump: true } })
|
||
|
expect(upload.query.token).toBe('fake-token-dotfile')
|
||
|
mockFs.restore()
|
||
|
|
||
|
process.env.codecov_token = 'abc123'
|
||
|
process.env.CODECOV_TOKEN = 'ABC123'
|
||
|
upload = codecov.upload({ options: { dump: true } })
|
||
|
expect(upload.query.token).toBe('abc123')
|
||
|
delete process.env.codecov_token
|
||
|
delete process.env.CODECOV_TOKEN
|
||
|
})
|
||
|
|
||
|
it('can auto detect reports', function() {
|
||
|
var res = codecov.upload({ options: { dump: true } })
|
||
|
expect(res.files[0].split(pathSeparator).pop()).toBe('example.coverage.txt')
|
||
|
expect(res.body).toContain('this file is intentionally left blank')
|
||
|
})
|
||
|
|
||
|
it('can specify report in cli', function() {
|
||
|
var res = codecov.upload({
|
||
|
options: {
|
||
|
dump: true,
|
||
|
file: 'test' + pathSeparator + 'example.coverage.txt',
|
||
|
},
|
||
|
})
|
||
|
expect(res.files[0].split(pathSeparator).pop()).toBe('example.coverage.txt')
|
||
|
expect(res.body).toContain('this file is intentionally left blank')
|
||
|
})
|
||
|
|
||
|
it('can specify report in cli fail', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, file: 'notreal.txt' } })
|
||
|
expect(res.debug).toContain('failed: notreal.txt')
|
||
|
})
|
||
|
|
||
|
// it("can detect .bowerrc with directory", function(){
|
||
|
// fs.writeFileSync('.bowerrc', '{"directory": "test"}');
|
||
|
// var res = codecov.upload({options: {dump: true}});
|
||
|
// expect(res.files).toBe([]);
|
||
|
// });
|
||
|
|
||
|
it('can detect .bowerrc without directory', function() {
|
||
|
fs.writeFileSync('.bowerrc', '{"key": "value"}')
|
||
|
var res = codecov.upload({ options: { dump: true } })
|
||
|
expect(res.files[0].split(pathSeparator).pop()).toBe('example.coverage.txt')
|
||
|
expect(res.body).toContain('this file is intentionally left blank')
|
||
|
})
|
||
|
|
||
|
it('can disable search', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, disable: 'search' } })
|
||
|
expect(res.debug).toContain('disabled search')
|
||
|
expect(res.files).toEqual([])
|
||
|
})
|
||
|
|
||
|
it('can disable gcov', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, disable: 'gcov' } })
|
||
|
console.log(res.debug)
|
||
|
expect(res.debug).toContain('disabled gcov')
|
||
|
})
|
||
|
|
||
|
it('can disable detection', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, disable: 'detect' } })
|
||
|
expect(res.debug).toContain('disabled detect')
|
||
|
})
|
||
|
|
||
|
it('can get build from cli args', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, build: 'value' } })
|
||
|
expect(res.query.build).toBe('value')
|
||
|
})
|
||
|
|
||
|
it('can get commit from cli args', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, commit: 'value' } })
|
||
|
expect(res.query.commit).toBe('value')
|
||
|
})
|
||
|
|
||
|
it('can get branch from cli args', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, branch: 'value' } })
|
||
|
expect(res.query.branch).toBe('value')
|
||
|
})
|
||
|
|
||
|
it('can get slug from cli args', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, slug: 'value' } })
|
||
|
expect(res.query.slug).toBe('value')
|
||
|
})
|
||
|
|
||
|
it('can get flags from cli args', function() {
|
||
|
var res = codecov.upload({ options: { dump: true, flags: 'value' } })
|
||
|
expect(res.query.flags).toBe('value')
|
||
|
})
|
||
|
|
||
|
it('can include env in cli', function() {
|
||
|
process.env.HELLO = 'world'
|
||
|
var res = codecov.upload({ options: { dump: true, env: 'HELLO,VAR1' } })
|
||
|
expect(res.body).toContain('HELLO=world\n')
|
||
|
expect(res.body).toContain('VAR1=\n')
|
||
|
delete process.env.HELLO
|
||
|
})
|
||
|
|
||
|
it('can include env in env', function() {
|
||
|
process.env.HELLO = 'world'
|
||
|
process.env.CODECOV_ENV = 'HELLO,VAR1'
|
||
|
var res = codecov.upload({ options: { dump: true, env: 'VAR2' } })
|
||
|
expect(res.body).toContain('HELLO=world\n')
|
||
|
expect(res.body).toContain('VAR1=\n')
|
||
|
expect(res.body).toContain('VAR2=\n')
|
||
|
delete process.env.HELLO
|
||
|
delete process.env.CODECOV_ENV
|
||
|
})
|
||
|
|
||
|
it('can have custom args for gcov', function() {
|
||
|
var res = codecov.upload({
|
||
|
options: {
|
||
|
dump: true,
|
||
|
'gcov-root': 'folder/path',
|
||
|
'gcov-glob': 'ignore/this/folder',
|
||
|
'gcov-exec': 'llvm-gcov',
|
||
|
'gcov-args': '-o',
|
||
|
},
|
||
|
})
|
||
|
if (!isWindows) {
|
||
|
expect(res.debug).toContain(
|
||
|
"find folder/path -type f -name '*.gcno' -not -path 'ignore/this/folder' -exec llvm-gcov -o {} +"
|
||
|
)
|
||
|
} else {
|
||
|
expect(res.debug).toContain(
|
||
|
'for /f "delims=" %g in (\'dir /a-d /b /s *.gcno ^| findstr /i /v ignore/this/folder\') do llvm-gcov -o %g'
|
||
|
)
|
||
|
}
|
||
|
})
|
||
|
|
||
|
it('can read piped reports', function(done) {
|
||
|
var exec = require('child_process').exec
|
||
|
var childProcess = exec(
|
||
|
'cat test/example.coverage.txt | bin/codecov -l --dump --disable=gcov',
|
||
|
function(err, stdout) {
|
||
|
expect(stdout.toString()).toContain('path=piped')
|
||
|
expect(stdout.toString()).toContain(
|
||
|
'this file is intentionally left blank'
|
||
|
)
|
||
|
childProcess.kill()
|
||
|
done()
|
||
|
}
|
||
|
)
|
||
|
})
|
||
|
|
||
|
it('should have the correct version number', function() {
|
||
|
var version = require('../package.json').version
|
||
|
expect(codecov.version).toBe('v' + version)
|
||
|
})
|
||
|
|
||
|
it('Should use codecov.yml via env variable', function() {
|
||
|
var CWD = process.cwd()
|
||
|
expect(
|
||
|
codecov.upload({ options: { dump: true, disable: 'detect' } }).query.yaml
|
||
|
).toBe(CWD + '/codecov.yml')
|
||
|
|
||
|
mockFs({
|
||
|
'foo.yml': '',
|
||
|
})
|
||
|
process.env.codecov_yml = 'foo.yml'
|
||
|
expect(
|
||
|
codecov.upload({ options: { dump: true, disable: 'detect' } }).query.yaml
|
||
|
).toBe(CWD + '/foo.yml')
|
||
|
mockFs.restore()
|
||
|
delete process.env.codecov_yml
|
||
|
|
||
|
mockFs({
|
||
|
'FOO.yml': '',
|
||
|
})
|
||
|
process.env.CODECOV_YML = 'FOO.yml'
|
||
|
expect(
|
||
|
codecov.upload({ options: { dump: true, disable: 'detect' } }).query.yaml
|
||
|
).toBe(CWD + '/FOO.yml')
|
||
|
mockFs.restore()
|
||
|
delete process.env.CODECOV_YML
|
||
|
})
|
||
|
|
||
|
it('can get config from cli args', function() {
|
||
|
mockFs({
|
||
|
'foo.yml': '',
|
||
|
})
|
||
|
var res = codecov.upload({
|
||
|
options: { dump: true, yml: 'foo.yml', disable: 'detect' },
|
||
|
})
|
||
|
expect(res.query.yaml).toBe(process.cwd() + '/foo.yml')
|
||
|
mockFs.restore()
|
||
|
})
|
||
|
})
|