move state change example #44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test Driver | |
| on: | |
| push: | |
| branches: [n_api, master] | |
| pull_request: | |
| branches: [n_api, master] | |
| workflow_dispatch: | |
| jobs: | |
| test-linux: | |
| name: Test Linux - Node ${{ matrix.node }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [20, 22, 24] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Create directory structure | |
| run: mkdir -p node_modules | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: node_modules/msnodesqlv8 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: Install Linux dependencies | |
| run: | | |
| curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc | |
| curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list | |
| sudo apt-get update | |
| sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev gcc-10 g++-10 | |
| echo "CC=gcc-10" >> $GITHUB_ENV | |
| echo "CXX=g++-10" >> $GITHUB_ENV | |
| - name: Run SQL Server | |
| uses: potatoqualitee/mssqlsuite@v1.7 | |
| with: | |
| install: sqlengine, sqlclient | |
| version: 2022 | |
| sa-password: YourStrong!Passw0rd | |
| show-log: true | |
| - name: Create test databases | |
| run: | | |
| # Wait for SQL Server to be ready and create databases | |
| /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -C -Q "CREATE DATABASE [node];" | |
| /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -C -Q "CREATE DATABASE [scratch];" | |
| - name: Install dependencies | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm install | |
| - name: Build TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build | |
| - name: Build test TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build:test | |
| - name: Run tests | |
| working-directory: node_modules/msnodesqlv8 | |
| run: ./node_modules/.bin/env-cmd -e github-linux npm test | |
| timeout-minutes: 30 | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-linux-node${{ matrix.node }} | |
| path: | | |
| node_modules/msnodesqlv8/test-results/ | |
| node_modules/msnodesqlv8/mochawesome-report/ | |
| test-windows: | |
| name: Test Windows - Node ${{ matrix.node }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [20, 22, 24] | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Create directory structure | |
| run: mkdir node_modules | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: node_modules/msnodesqlv8 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: Install SQL Server | |
| uses: potatoqualitee/mssqlsuite@v1.7 | |
| with: | |
| install: sqlengine, sqlclient | |
| version: 2019 | |
| sa-password: Password12 | |
| show-log: true | |
| - name: Create test databases | |
| shell: powershell | |
| run: | | |
| # Wait for SQL Server to be ready | |
| Start-Sleep -Seconds 10 | |
| # Create test databases | |
| sqlcmd -S localhost -U sa -P Password12 -Q "CREATE DATABASE [node];" | |
| sqlcmd -S localhost -U sa -P Password12 -Q "CREATE DATABASE [scratch];" | |
| - name: Install dependencies | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm install | |
| - name: Build TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build | |
| - name: Build test TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build:test | |
| - name: Run tests | |
| working-directory: node_modules/msnodesqlv8 | |
| run: ./node_modules/.bin/env-cmd -e github-windows npm test | |
| timeout-minutes: 30 | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-windows-node${{ matrix.node }} | |
| path: | | |
| node_modules/msnodesqlv8/test-results/ | |
| node_modules/msnodesqlv8/mochawesome-report/ | |
| test-macos: | |
| name: Test macOS - Node ${{ matrix.node }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: [20, 22] | |
| runs-on: macos-latest | |
| steps: | |
| - name: Create directory structure | |
| run: mkdir -p node_modules | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: node_modules/msnodesqlv8 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: Install macOS dependencies | |
| run: | | |
| brew install unixodbc | |
| brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release | |
| brew update | |
| HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18 | |
| - name: Install dependencies | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm install | |
| - name: Build TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build | |
| - name: Build test TypeScript | |
| working-directory: node_modules/msnodesqlv8 | |
| run: npm run build:test | |
| - name: Test module loading (without SQL Server) | |
| working-directory: node_modules/msnodesqlv8 | |
| run: | | |
| echo "Testing basic module loading on macOS..." | |
| echo "Checking directory structure..." | |
| ls -la | |
| ls -la lib/ || echo "lib directory not found" | |
| node -e " | |
| try { | |
| const sql = require('./lib/index.js'); | |
| console.log('✅ Module loaded successfully on macOS'); | |
| console.log('Module exports:', Object.keys(sql)); | |
| } catch (err) { | |
| console.error('❌ Module load failed:', err.message); | |
| console.error('Trying alternative path...'); | |
| try { | |
| const sql2 = require('./'); | |
| console.log('✅ Module loaded via package.json main'); | |
| console.log('Module exports:', Object.keys(sql2)); | |
| } catch (err2) { | |
| console.error('❌ Alternative load failed:', err2.message); | |
| process.exit(1); | |
| } | |
| } | |
| " | |
| - name: Verify macOS build success | |
| working-directory: node_modules/msnodesqlv8 | |
| run: | | |
| echo "✅ macOS build verification completed successfully" | |
| echo " • Module compiles on Apple Silicon" | |
| echo " • Native addon loads without errors" | |
| echo " • All SQL Server exports are available" | |
| echo "" | |
| echo "Note: Full SQL Server testing is done on Linux and Windows platforms" | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-macos-node${{ matrix.node }} | |
| path: | | |
| node_modules/msnodesqlv8/test-results/ | |
| node_modules/msnodesqlv8/mochawesome-report/ |