-
Notifications
You must be signed in to change notification settings - Fork 1
JavaScript: Add CI configuration for software tests and Dependabot #20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| --- | ||
| name: JavaScript Tests | ||
|
|
||
| on: | ||
| pull_request: ~ | ||
| push: | ||
| branches: [ main ] | ||
|
|
||
| # Allow job to be triggered manually. | ||
| workflow_dispatch: | ||
|
|
||
| # Run job each night after CrateDB nightly has been published. | ||
| schedule: | ||
| - cron: '0 3 * * *' | ||
|
|
||
| # Cancel in-progress jobs when pushing to the same branch. | ||
| concurrency: | ||
| cancel-in-progress: true | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
|
|
||
| # Select JavaScript grammar. | ||
| defaults: | ||
| run: | ||
| working-directory: cratedb_sqlparse_js | ||
|
|
||
| jobs: | ||
|
|
||
| tests: | ||
|
|
||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: ["ubuntu-latest"] | ||
| node-version: ["18", "20", "22"] | ||
|
|
||
| env: | ||
| OS: ${{ matrix.os }} | ||
| NODEJS: ${{ matrix.node-version }} | ||
|
|
||
| # https://docs.github.com/en/actions/using-containerized-services/about-service-containers | ||
| services: | ||
| cratedb: | ||
| image: crate/crate:nightly | ||
| ports: | ||
| - 4200:4200 | ||
| - 5432:5432 | ||
| env: | ||
| CRATE_HEAP_SIZE: 4g | ||
|
|
||
| name: Node.js ${{ matrix.node-version }} on OS ${{ matrix.os }} | ||
| steps: | ||
|
|
||
| - name: Acquire sources | ||
| uses: actions/checkout@v4 | ||
|
|
||
| # https://github.com/actions/setup-python | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: 3.12 | ||
| architecture: x64 | ||
|
|
||
| # https://github.com/actions/setup-node | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: 'npm' | ||
| cache-dependency-path: '**/package-lock.json' | ||
|
|
||
| - name: Generate runtime grammar | ||
| run: | | ||
| cd .. | ||
| pip install --requirement requirements.txt | ||
| python setup_grammar.py javascript | ||
| - name: Set up project | ||
| run: npm install | ||
|
|
||
| - name: Run linter and software tests | ||
| run: npm test | ||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,6 @@ | ||
| [tool.poe.tasks] | ||
|
|
||
| generate = [ | ||
| { cmd = "python setup_grammar.py" }, | ||
| { cmd = "python setup_grammar.py python" }, | ||
| { cmd = "python setup_grammar.py javascript" }, | ||
| ] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -143,10 +143,21 @@ def set_version(target: Antlr4Target, version: str): | |
|
|
||
|
|
||
| if __name__ == '__main__': | ||
| """ | ||
| Invoke the grammar compiler / generator. | ||
|
|
||
| TODO: Converge `version` into command-line argument? | ||
| TODO: Improve efficiency by generating runtime parser for all implemented languages at once. | ||
surister marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| """ | ||
| setup_logging() | ||
| # TODO: Converge into command-line argument? | ||
| input_target = sys.argv[1] | ||
| version = '5.6.4' | ||
| target = Antlr4Target.python | ||
| if input_target.startswith("py"): | ||
surister marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| target = Antlr4Target.python | ||
| elif input_target.startswith("js") or input_target.startswith("java"): | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why run js when using java? why is java an option?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's just a shorthand notation for "javascript".
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ahh, thats why it works when running I'd really prefer to use exact matches... but maybe personal preference.
surister marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| target = Antlr4Target.js | ||
| else: | ||
| raise NotImplementedError(f"Parser generator for target {input_target} not implemented") | ||
| download_cratedb_grammar(version) | ||
| compile_grammar(target) | ||
| patch_lexer(target) | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.