5.x tests on windows (#1919)

This commit is contained in:
Abraham Schilling 2020-08-31 22:21:38 +02:00 committed by Juan Picado
parent 8f9467ce3d
commit d981c1d435
17 changed files with 274 additions and 102 deletions

199
.gitattributes vendored Normal file
View File

@ -0,0 +1,199 @@
## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
# text These files should be normalized (i.e. convert CRLF to LF).
# binary These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################
# Auto detect
## Handle line endings automatically for files detected as
## text and leave all files detected as binary untouched.
## This will handle all files NOT defined below.
* text=lf
# Source code
*.bash text eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf
*.coffee text eol=lf
*.css text eol=lf
*.htm text diff=html
*.html text diff=html
*.inc text eol=lf
*.ini text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.less text eol=lf
*.ls text eol=lf
*.map text -diff
*.od text eol=lf
*.onlydata text eol=lf
*.php text diff=php
*.pl text eol=lf
*.ps1 text eol=crlf
*.py text diff=python
*.rb text diff=ruby
*.sass text eol=lf
*.scm text eol=lf
*.scss text diff=css
*.sh text eol=lf
*.sql text eol=lf
*.styl text eol=lf
*.tag text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.xml text eol=lf
*.xhtml text diff=html
# Docker
Dockerfile text eol=lf
# Documentation
*.ipynb text eol=lf
*.markdown text eol=lf
*.md text eol=lf
*.mdwn text eol=lf
*.mdown text eol=lf
*.mkd text eol=lf
*.mkdn text eol=lf
*.mdtxt text eol=lf
*.mdtext text eol=lf
*.txt text eol=lf
AUTHORS text eol=lf
CHANGELOG text eol=lf
CHANGES text eol=lf
CONTRIBUTING text eol=lf
COPYING text eol=lf
copyright text eol=lf
*COPYRIGHT* text eol=lf
INSTALL text eol=lf
license text eol=lf
LICENSE text eol=lf
NEWS text eol=lf
readme text eol=lf
*README* text eol=lf
TODO text eol=lf
# Templates
*.dot text eol=lf
*.ejs text eol=lf
*.haml text eol=lf
*.handlebars text eol=lf
*.hbs text eol=lf
*.hbt text eol=lf
*.jade text eol=lf
*.latte text eol=lf
*.mustache text eol=lf
*.njk text eol=lf
*.phtml text eol=lf
*.tmpl text eol=lf
*.tpl text eol=lf
*.twig text eol=lf
*.vue text eol=lf
# Configs
*.cnf text eol=lf
*.conf text eol=lf
*.config text eol=lf
.editorconfig text eol=lf
.env text eol=lf
.gitattributes text eol=lf
.gitconfig text eol=lf
.htaccess text eol=lf
*.lock text -diff
package-lock.json text -diff
*.toml text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
browserslist text eol=lf
Makefile text eol=lf
makefile text eol=lf
# Heroku
Procfile text eol=lf
# Graphics
*.ai binary
*.bmp binary
*.eps binary
*.gif binary
*.gifv binary
*.ico binary
*.jng binary
*.jp2 binary
*.jpg binary
*.jpeg binary
*.jpx binary
*.jxr binary
*.pdf binary
*.png binary
*.psb binary
*.psd binary
# SVG treated as an asset (binary) by default.
*.svg text eol=lf
# If you want to treat it as binary,
# use the following line instead.
# *.svg binary
*.svgz binary
*.tif binary
*.tiff binary
*.wbmp binary
*.webp binary
# Audio
*.kar binary
*.m4a binary
*.mid binary
*.midi binary
*.mp3 binary
*.ogg binary
*.ra binary
# Video
*.3gpp binary
*.3gp binary
*.as binary
*.asf binary
*.asx binary
*.fla binary
*.flv binary
*.m4v binary
*.mng binary
*.mov binary
*.mp4 binary
*.mpeg binary
*.mpg binary
*.ogv binary
*.swc binary
*.swf binary
*.webm binary
# Archives
*.7z binary
*.gz binary
*.jar binary
*.rar binary
*.tar binary
*.zip binary
# Fonts
*.ttf binary
*.eot binary
*.otf binary
*.woff binary
*.woff2 binary
# Executables
*.exe binary
*.pyc binary
# RC files (like .babelrc or .eslintrc)
*.*rc text eol=lf
# Ignore files (like .npmignore or .gitignore)
*.*ignore text eol=lf

View File

@ -10,7 +10,7 @@ jobs:
# todo: fix yarn global issue, cannot find ng # todo: fix yarn global issue, cannot find ng
# yarn: # yarn:
# name: 'yarn:angular example' # name: 'yarn:angular example'
# runs-on: ubuntu-latest # runs-on: ${{ matrix.os }}
# #
# steps: # steps:
# - uses: actions/checkout@v2.3.3 # - uses: actions/checkout@v2.3.3
@ -43,7 +43,7 @@ jobs:
# ng build --aot # ng build --aot
npm: npm:
name: 'npm:angular example' name: 'npm:angular example'
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v2.3.3
@ -119,7 +119,7 @@ jobs:
# pnpm throws errors worth to check why # pnpm throws errors worth to check why
# pnpm: # pnpm:
# name: 'pnpm:angular example' # name: 'pnpm:angular example'
# runs-on: ubuntu-latest # runs-on: ${{ matrix.os }}
# #
# steps: # steps:
# - uses: actions/checkout@v2.3.3 # - uses: actions/checkout@v2.3.3

View File

@ -9,7 +9,7 @@ name: 'E2E Gatsby.js CLI with verdaccio'
jobs: jobs:
npm: npm:
name: 'npm:gatsby example' name: 'npm:gatsby example'
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v2.3.3

View File

@ -9,7 +9,7 @@ name: 'E2E Jest with verdaccio'
jobs: jobs:
yarn: yarn:
name: 'yarn:jest example' name: 'yarn:jest example'
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v2.3.3
@ -74,7 +74,7 @@ jobs:
yarn jest module.test.js yarn jest module.test.js
npm: npm:
name: 'npm:jest example' name: 'npm:jest example'
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v2.3.3
@ -141,7 +141,7 @@ jobs:
pnpm: pnpm:
name: 'pnpm:jest example' name: 'pnpm:jest example'
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v2.3.3

View File

@ -5,7 +5,7 @@ on:
- cron: '0 4 * * 4' - cron: '0 4 * * 4'
jobs: jobs:
security: security:
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- name: Test for public javascript library vulnerabilities - name: Test for public javascript library vulnerabilities
uses: lirantal/is-website-vulnerable@1.15.10 uses: lirantal/is-website-vulnerable@1.15.10

View File

@ -11,7 +11,7 @@ on:
jobs: jobs:
release: release:
name: Release name: Release
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- name: Use Node (latest) - name: Use Node (latest)

View File

@ -20,7 +20,7 @@ jobs:
# Update package versions from changesets. # Update package versions from changesets.
version: version:
timeout-minutes: 15 timeout-minutes: 15
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
if: github.ref == 'refs/heads/5.x' && github.repository == 'verdaccio/verdaccio' if: github.ref == 'refs/heads/5.x' && github.repository == 'verdaccio/verdaccio'
steps: steps:
- name: checkout code repository - name: checkout code repository

View File

@ -10,14 +10,15 @@ on:
- "website/**" - "website/**"
jobs: jobs:
ci: ci:
name: Node ${{ matrix.node_version }} name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-latest, windows-latest]
node_version: [14] node_version: [14]
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1

View File

@ -15,14 +15,15 @@ on:
jobs: jobs:
ci: ci:
name: Node ${{ matrix.node_version }} name: ${{ matrix.os }} / Node ${{ matrix.node_version }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-latest, windows-latest]
node_version: [10, 12, 14] node_version: [10, 12, 14]
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.1 - uses: actions/checkout@v2.3.1

View File

@ -13,7 +13,7 @@ jobs:
CodeQL-Build: CodeQL-Build:
# CodeQL runs on ubuntu-latest and windows-latest # CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- name: Checkout repository - name: Checkout repository

View File

@ -12,7 +12,7 @@ on:
jobs: jobs:
testDocker: testDocker:
name: Test Docker Build name: Test Docker Build
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2.3.1 - uses: actions/checkout@v2.3.1
- name: Build - name: Build
@ -22,7 +22,7 @@ jobs:
# testVerdaccio: # testVerdaccio:
# name: Test Verdaccio Publish # name: Test Verdaccio Publish
# runs-on: ubuntu-latest # runs-on: ${{ matrix.os }}
# steps: # steps:
# - uses: actions/checkout@v1 # - uses: actions/checkout@v1
# - name: Publish # - name: Publish

View File

@ -14,7 +14,7 @@ on:
jobs: jobs:
testDocker: testDocker:
name: Test Docker Build name: Test Docker Build
runs-on: ubuntu-latest runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- name: Publish to GitHub Registry - name: Publish to GitHub Registry

View File

@ -1,23 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`testing locking readFile read file with options (parse, lock) should to be found to be read it as object 1`] = `
Object {
"name": "assets",
"version": "0.0.1",
}
`;
exports[`testing locking readFile read file with no options should to be found to be read it as object 1`] = `
Object {
"name": "assets",
"version": "0.0.1",
}
`;
exports[`testing locking readFile read file with no options should to be found to be read it as string 1`] = `
"{
\\"name\\": \\"assets\\",
\\"version\\": \\"0.0.1\\"
}
"
`;

View File

@ -51,7 +51,13 @@ describe('testing locking', () => {
test('read file with no options should to be found to be read it as string', (done) => { test('read file with no options should to be found to be read it as string', (done) => {
readFile(getFilePath('package.json'), {}, (error: Error, data: string) => { readFile(getFilePath('package.json'), {}, (error: Error, data: string) => {
expect(error).toBeNull(); expect(error).toBeNull();
expect(data).toMatchSnapshot(); expect(data).toMatchInlineSnapshot(`
"{
\\"name\\": \\"assets\\",
\\"version\\": \\"0.0.1\\"
}
"
`);
done(); done();
}); });
}); });
@ -62,7 +68,12 @@ describe('testing locking', () => {
}; };
readFile(getFilePath('package.json'), options, (error: Error, data: string) => { readFile(getFilePath('package.json'), options, (error: Error, data: string) => {
expect(error).toBeNull(); expect(error).toBeNull();
expect(data).toMatchSnapshot(); expect(data).toMatchInlineSnapshot(`
Object {
"name": "assets",
"version": "0.0.1",
}
`);
done(); done();
}); });
}); });
@ -81,9 +92,8 @@ describe('testing locking', () => {
const options = { const options = {
parse: true, parse: true,
}; };
const errorMessage = process.platform === 'win32' ? 'Unexpected token } in JSON at position 47' : 'Unexpected token } in JSON at position 44';
readFile(getFilePath('wrong.package.json'), options, (error: Error) => { readFile(getFilePath('wrong.package.json'), options, (error: Error) => {
expect(error.message).toEqual(errorMessage); expect(error.message).toMatch(/Unexpected token } in JSON at position \d+/);
done(); done();
}); });
}); });
@ -95,7 +105,12 @@ describe('testing locking', () => {
}; };
readFile(getFilePath('package2.json'), options, (error: Error, data: string) => { readFile(getFilePath('package2.json'), options, (error: Error, data: string) => {
expect(error).toBeNull(); expect(error).toBeNull();
expect(data).toMatchSnapshot(); expect(data).toMatchInlineSnapshot(`
Object {
"name": "assets",
"version": "0.0.1",
}
`);
removeTempFile('package2.json.lock'); removeTempFile('package2.json.lock');
done(); done();
}); });
@ -106,9 +121,8 @@ describe('testing locking', () => {
parse: true, parse: true,
lock: true, lock: true,
}; };
const errorMessage = process.platform === 'win32' ? 'Unexpected token } in JSON at position 47' : 'Unexpected token } in JSON at position 44';
readFile(getFilePath('wrong.package.json'), options, (error: Error) => { readFile(getFilePath('wrong.package.json'), options, (error: Error) => {
expect(error.message).toEqual(errorMessage); expect(error.message).toMatch(/Unexpected token } in JSON at position \d+/);
removeTempFile('wrong.package.json.lock'); removeTempFile('wrong.package.json.lock');
done(); done();
}); });

View File

@ -71,7 +71,7 @@ describe('plugin loader', () => {
}); });
} catch (e) { } catch (e) {
expect(e.message).toMatch('plugin not found'); expect(e.message).toMatch('plugin not found');
expect(e.message).toMatch('/partials/test-plugin-storage/invalid-package'); expect(e.message.replace(/\\/g, '/')).toMatch('/partials/test-plugin-storage/invalid-package');
} }
}); });

View File

@ -27,7 +27,9 @@ const defaultPkg = {
export default function (server, express) { export default function (server, express) {
const listofCalls = [HEADER_TYPE.CONTENT_LENGTH, 'chunked']; const listofCalls = [HEADER_TYPE.CONTENT_LENGTH, 'chunked'];
describe('test send incomplete packages', () => { // FIXME this test causes a process crash on windows and also needs refactoring.
// See https://github.com/verdaccio/verdaccio/pull/1919#issuecomment-681163937
describe.skip('test send incomplete packages', () => {
beforeAll(function () { beforeAll(function () {
express.get('/testexp-incomplete', function (_, res) { express.get('/testexp-incomplete', function (_, res) {
res.send(defaultPkg); res.send(defaultPkg);

View File

@ -16,62 +16,40 @@ exports.onCreateWebpackConfig = ({ stage, actions }) => {
// You can delete this file if you're not using it // You can delete this file if you're not using it
const path = require('path'); const path = require('path');
const docPageTemplate = path.resolve('src/templates/docPage.tsx');
exports.createPages = ({ graphql, actions }) => { exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions; const { createPage } = actions;
return new Promise((resolve, reject) => { const result = await graphql(`
const docPageTemplate = path.resolve('src/templates/docPage.tsx'); query {
resolve( allMarkdownRemark {
graphql( edges {
` node {
query { id
allMarkdownRemark { frontmatter {
edges { title
node {
id
frontmatter {
title
}
html
fileAbsolutePath
}
}
} }
html
fileAbsolutePath
} }
` }
).then((result) => { }
const posts = result.data.allMarkdownRemark.edges; }
posts.forEach(({ node }, index) => { `);
const fileAbsolutePath = node.fileAbsolutePath;
const parsedAbsolutedPath = path.parse(fileAbsolutePath); const posts = result.data.allMarkdownRemark.edges;
if (fileAbsolutePath.match('translated_docs')) {
const pathCrowdin = `${__dirname}/crowdin/master/website/translated_docs/`; posts.forEach(({ node }) => {
const lng = parsedAbsolutedPath.dir.replace(pathCrowdin, ''); const parsedPath = path.parse(node.fileAbsolutePath);
const id = node.id; const id = node.id;
createPage({ const name = parsedPath.name;
path: `docs/${lng}/${parsedAbsolutedPath.name}.html`, const lng = parsedPath.dir.match('translated_docs') ? parsedPath.dir.split('/').pop() : 'en';
component: docPageTemplate,
context: { createPage({
id, path: `docs/${lng}/${name}.html`,
lng, component: docPageTemplate,
}, context: { id, lng },
}); });
} else {
const id = node.id;
const lng = 'en';
createPage({
path: `docs/en/${parsedAbsolutedPath.name}.html`,
component: docPageTemplate,
context: {
id,
lng,
},
});
}
resolve();
});
})
);
}); });
}; };