mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-16 03:55:41 +00:00
Add a test framework script to pull down rendered javascript files
- Use the testing framework so we don't need to spin up a server
This commit is contained in:
251
ci/.eslintrc.yml
251
ci/.eslintrc.yml
@ -1,251 +0,0 @@
|
||||
env:
|
||||
commonjs: true
|
||||
es6: true
|
||||
browser: true
|
||||
es2021: true
|
||||
jquery: true
|
||||
extends: 'eslint:recommended'
|
||||
parserOptions:
|
||||
ecmaVersion: 12
|
||||
rules:
|
||||
accessor-pairs: error
|
||||
array-bracket-newline: 'off'
|
||||
array-bracket-spacing:
|
||||
- error
|
||||
- never
|
||||
array-callback-return: error
|
||||
array-element-newline: 'off'
|
||||
arrow-body-style: error
|
||||
arrow-parens:
|
||||
- error
|
||||
- as-needed
|
||||
arrow-spacing: 'off'
|
||||
block-scoped-var: 'off'
|
||||
block-spacing: 'off'
|
||||
brace-style: 'off'
|
||||
camelcase: 'off'
|
||||
capitalized-comments: 'off'
|
||||
class-methods-use-this: error
|
||||
comma-dangle: 'off'
|
||||
comma-spacing: 'off'
|
||||
comma-style:
|
||||
- error
|
||||
- last
|
||||
complexity: 'off'
|
||||
computed-property-spacing:
|
||||
- error
|
||||
- never
|
||||
consistent-return: 'off'
|
||||
consistent-this: 'off'
|
||||
curly: 'off'
|
||||
default-case: 'off'
|
||||
default-case-last: 'off'
|
||||
default-param-last: error
|
||||
dot-location: error
|
||||
dot-notation: 'off'
|
||||
eol-last: 'off'
|
||||
eqeqeq: 'off'
|
||||
func-call-spacing: error
|
||||
func-name-matching: error
|
||||
func-names: 'off'
|
||||
func-style:
|
||||
- error
|
||||
- declaration
|
||||
function-call-argument-newline: 'off'
|
||||
function-paren-newline: 'off'
|
||||
generator-star-spacing: error
|
||||
grouped-accessor-pairs: error
|
||||
guard-for-in: 'off'
|
||||
id-denylist: error
|
||||
id-length: 'off'
|
||||
id-match: error
|
||||
implicit-arrow-linebreak:
|
||||
- error
|
||||
- beside
|
||||
indent: 'off'
|
||||
init-declarations: error
|
||||
jsx-quotes: error
|
||||
key-spacing: 'off'
|
||||
keyword-spacing: 'off'
|
||||
line-comment-position: 'off'
|
||||
linebreak-style:
|
||||
- error
|
||||
- unix
|
||||
lines-around-comment: 'off'
|
||||
lines-between-class-members: error
|
||||
max-classes-per-file: error
|
||||
max-depth: error
|
||||
max-len: 'off'
|
||||
max-lines: 'off'
|
||||
max-lines-per-function: 'off'
|
||||
max-nested-callbacks: error
|
||||
max-params: 'off'
|
||||
max-statements: 'off'
|
||||
max-statements-per-line: 'off'
|
||||
multiline-comment-style: 'off'
|
||||
new-cap: error
|
||||
new-parens: error
|
||||
newline-per-chained-call: 'off'
|
||||
no-alert: 'off'
|
||||
no-array-constructor: 'off'
|
||||
no-await-in-loop: error
|
||||
no-bitwise: error
|
||||
no-caller: error
|
||||
no-confusing-arrow: error
|
||||
no-console: 'off'
|
||||
no-constructor-return: error
|
||||
no-continue: 'off'
|
||||
no-div-regex: error
|
||||
no-duplicate-imports: error
|
||||
no-else-return: 'off'
|
||||
no-empty-function: 'off'
|
||||
no-eq-null: 'off'
|
||||
no-eval: error
|
||||
no-extend-native: error
|
||||
no-extra-bind: error
|
||||
no-extra-label: error
|
||||
no-extra-parens: 'off'
|
||||
no-floating-decimal: error
|
||||
no-implicit-coercion:
|
||||
- error
|
||||
- boolean: false
|
||||
disallowTemplateShorthand: false
|
||||
number: false
|
||||
string: false
|
||||
no-implicit-globals: 'off'
|
||||
no-implied-eval: error
|
||||
no-inline-comments: 'off'
|
||||
no-inner-declarations:
|
||||
- error
|
||||
- functions
|
||||
no-invalid-this: error
|
||||
no-iterator: error
|
||||
no-label-var: error
|
||||
no-labels: error
|
||||
no-lone-blocks: error
|
||||
no-lonely-if: error
|
||||
no-loop-func: 'off'
|
||||
no-loss-of-precision: error
|
||||
no-magic-numbers: 'off'
|
||||
no-mixed-operators:
|
||||
- error
|
||||
- allowSamePrecedence: true
|
||||
no-multi-assign: error
|
||||
no-multi-spaces:
|
||||
- error
|
||||
- ignoreEOLComments: true
|
||||
no-multi-str: error
|
||||
no-multiple-empty-lines: 'off'
|
||||
no-negated-condition: 'off'
|
||||
no-nested-ternary: error
|
||||
no-new: error
|
||||
no-new-func: error
|
||||
no-new-object: error
|
||||
no-new-wrappers: error
|
||||
no-nonoctal-decimal-escape: error
|
||||
no-octal-escape: error
|
||||
no-param-reassign: 'off'
|
||||
no-plusplus: 'off'
|
||||
no-promise-executor-return: error
|
||||
no-proto: error
|
||||
no-restricted-exports: error
|
||||
no-restricted-globals: error
|
||||
no-restricted-imports: error
|
||||
no-restricted-properties: error
|
||||
no-restricted-syntax: error
|
||||
no-return-assign: error
|
||||
no-return-await: error
|
||||
no-script-url: error
|
||||
no-self-compare: error
|
||||
no-sequences: 'off'
|
||||
no-shadow: 'off'
|
||||
no-tabs: error
|
||||
no-template-curly-in-string: error
|
||||
no-ternary: 'off'
|
||||
no-throw-literal: error
|
||||
no-trailing-spaces: 'off'
|
||||
no-undef-init: error
|
||||
no-undefined: 'off'
|
||||
no-underscore-dangle: 'off'
|
||||
no-unmodified-loop-condition: error
|
||||
no-unneeded-ternary: error
|
||||
no-unreachable-loop: error
|
||||
no-unsafe-optional-chaining: error
|
||||
no-unused-expressions: 'off'
|
||||
no-use-before-define: 'off'
|
||||
no-useless-backreference: error
|
||||
no-useless-call: error
|
||||
no-useless-computed-key: error
|
||||
no-useless-concat: error
|
||||
no-useless-constructor: error
|
||||
no-useless-rename: error
|
||||
no-useless-return: error
|
||||
no-var: 'off'
|
||||
no-void: error
|
||||
no-warning-comments: 'off'
|
||||
no-whitespace-before-property: error
|
||||
nonblock-statement-body-position: error
|
||||
object-curly-newline: error
|
||||
object-curly-spacing: 'off'
|
||||
object-property-newline: 'off'
|
||||
object-shorthand: 'off'
|
||||
one-var: 'off'
|
||||
one-var-declaration-per-line: error
|
||||
operator-assignment:
|
||||
- error
|
||||
- always
|
||||
operator-linebreak: error
|
||||
padded-blocks: 'off'
|
||||
padding-line-between-statements: error
|
||||
prefer-arrow-callback: 'off'
|
||||
prefer-const: 'off'
|
||||
prefer-destructuring: 'off'
|
||||
prefer-exponentiation-operator: error
|
||||
prefer-named-capture-group: 'off'
|
||||
prefer-numeric-literals: error
|
||||
prefer-object-spread: error
|
||||
prefer-promise-reject-errors: error
|
||||
prefer-regex-literals: error
|
||||
prefer-rest-params: error
|
||||
prefer-spread: 'off'
|
||||
prefer-template: 'off'
|
||||
quote-props: 'off'
|
||||
quotes: 'off'
|
||||
radix: 'off'
|
||||
require-atomic-updates: error
|
||||
require-await: error
|
||||
require-unicode-regexp: 'off'
|
||||
rest-spread-spacing: error
|
||||
semi: 'off'
|
||||
semi-spacing:
|
||||
- error
|
||||
- after: true
|
||||
before: false
|
||||
semi-style:
|
||||
- error
|
||||
- last
|
||||
sort-imports: error
|
||||
sort-keys: 'off'
|
||||
sort-vars: error
|
||||
space-before-blocks: 'off'
|
||||
space-before-function-paren: 'off'
|
||||
space-in-parens: 'off'
|
||||
space-infix-ops: 'off'
|
||||
space-unary-ops: 'off'
|
||||
spaced-comment: 'off'
|
||||
strict: 'off'
|
||||
switch-colon-spacing: error
|
||||
symbol-description: error
|
||||
template-curly-spacing:
|
||||
- error
|
||||
- never
|
||||
template-tag-spacing: error
|
||||
unicode-bom:
|
||||
- error
|
||||
- never
|
||||
vars-on-top: 'off'
|
||||
wrap-regex: error
|
||||
yield-star-spacing: error
|
||||
yoda:
|
||||
- error
|
||||
- never
|
1
ci/.gitignore
vendored
1
ci/.gitignore
vendored
@ -1 +0,0 @@
|
||||
js_tmp/
|
@ -1,111 +0,0 @@
|
||||
"""
|
||||
Pull 'rendered' copies of the templated JS files down from the InvenTree server.
|
||||
|
||||
These files can then be used for linting and unit testing
|
||||
"""
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
import json
|
||||
import pathlib
|
||||
import argparse
|
||||
import requests
|
||||
from requests.auth import HTTPBasicAuth
|
||||
|
||||
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
js_template_dir = os.path.abspath(os.path.join(here, '..', 'InvenTree', 'templates', 'js'))
|
||||
|
||||
js_tmp_dir = os.path.join(here, 'js_tmp')
|
||||
|
||||
def get_token(server, username, password):
|
||||
|
||||
url = os.path.join(
|
||||
server,
|
||||
'api',
|
||||
'user',
|
||||
'token',
|
||||
)
|
||||
|
||||
auth = HTTPBasicAuth(username, password)
|
||||
|
||||
response = requests.get(url, auth=auth, allow_redirects=False)
|
||||
|
||||
data = json.loads(response.text)
|
||||
|
||||
return data['token']
|
||||
|
||||
|
||||
def download_file(url, filename, token):
|
||||
"""
|
||||
Download a single javascript file
|
||||
"""
|
||||
|
||||
print(f"Downloading '{url}'")
|
||||
|
||||
headers = {
|
||||
'AUTHORIZATION': f'Token {token}'
|
||||
}
|
||||
|
||||
response = requests.get(
|
||||
url,
|
||||
allow_redirects=False,
|
||||
headers=headers
|
||||
)
|
||||
|
||||
output_file = os.path.join(
|
||||
js_tmp_dir,
|
||||
filename,
|
||||
)
|
||||
|
||||
with open(output_file, 'wb') as output:
|
||||
output.write(response.content)
|
||||
|
||||
|
||||
def download_js_files(subdir, url, token):
|
||||
"""
|
||||
Returns a flattened list of all javascript files
|
||||
"""
|
||||
|
||||
d = os.path.join(js_template_dir, subdir)
|
||||
|
||||
files = pathlib.Path(d).rglob('*.js')
|
||||
|
||||
for filename in files:
|
||||
js = os.path.basename(filename)
|
||||
|
||||
js_url = os.path.join(url, js)
|
||||
|
||||
download_file(js_url, js, token)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
parser = argparse.ArgumentParser("Download JavaScript files")
|
||||
|
||||
parser.add_argument('-s', '--server', help='InvenTree server', action='store')
|
||||
parser.add_argument('-u', '--username', help='Username', action='store')
|
||||
parser.add_argument('-p', '--password', help='password', action='store')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not os.path.exists(js_tmp_dir):
|
||||
os.mkdir(js_tmp_dir)
|
||||
|
||||
auth = HTTPBasicAuth(args.username, args.password)
|
||||
|
||||
# Get an auth token from the server
|
||||
token = get_token(args.server, args.username, args.password)
|
||||
|
||||
# Dynamic javascript files
|
||||
dynamic_url = os.path.join(args.server, 'js', 'dynamic')
|
||||
|
||||
download_js_files('dynamic', dynamic_url, token)
|
||||
|
||||
# Translated JS files
|
||||
i18n_url = os.path.join(args.server, 'js', 'i18n')
|
||||
|
||||
download_js_files("translated", i18n_url, token)
|
Reference in New Issue
Block a user