diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2455bc..64bef4e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,11 +16,12 @@ on: workflow_dispatch: jobs: - build-and-test: + typescript-build-and-test: name: ${{ matrix.os }}-${{ matrix.node-version }} runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: node-version: [18.x, 20.x, 22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ @@ -37,5 +38,25 @@ jobs: run: npm ci - name: Build run: npm run compile - - name: Run Unit Tests + - name: Run TypeScript Unit Tests run: npm test + + matlab-test: + env: + MATLAB_TEST_ENVIRONMENT: 1 + name: ${{ matrix.matlab-version }}-${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + matlab-version: [R2021b, R2022a, R2022b, R2023a, R2023b, R2024a, latest] + os: [windows-latest, ubuntu-latest, macos-13] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up MATLAB + uses: matlab-actions/setup-matlab@v2.2.0 + with: + release: ${{ matrix.matlab-version }} + - name: Run MATLAB Unit Tests + uses: matlab-actions/run-tests@v2.1.1 diff --git a/matlab/+matlabls/+internal/computeCodeData.p b/matlab/+matlabls/+internal/computeCodeData.p index 5eb7b41..1b1e94b 100644 Binary files a/matlab/+matlabls/+internal/computeCodeData.p and b/matlab/+matlabls/+internal/computeCodeData.p differ diff --git a/tests/matlab/matlabls/handlers/folding/tGetFoldingRanges.m b/tests/matlab/matlabls/handlers/folding/tGetFoldingRanges.m index 301b2ee..8fffa1f 100644 --- a/tests/matlab/matlabls/handlers/folding/tGetFoldingRanges.m +++ b/tests/matlab/matlabls/handlers/folding/tGetFoldingRanges.m @@ -1,6 +1,13 @@ % Copyright 2025 The MathWorks, Inc. classdef tGetFoldingRanges < matlab.unittest.TestCase methods (TestClassSetup) + function isApplicable (testCase) + % Determine if the test should be skipped in the current environment + testCase.assumeTrue(... + ~isMATLABReleaseOlderThan('R2024b'),... + "Code folding only supported in R2024b and later."); + end + function setup (~) % Add function under test to path addpath("../../../../../matlab"); diff --git a/tests/matlab/matlabls/handlers/formatting/tFormatCode.m b/tests/matlab/matlabls/handlers/formatting/tFormatCode.m index 0c1ad86..7df9ca5 100644 --- a/tests/matlab/matlabls/handlers/formatting/tFormatCode.m +++ b/tests/matlab/matlabls/handlers/formatting/tFormatCode.m @@ -5,6 +5,16 @@ end methods (TestClassSetup) + function isApplicable (testCase) + % Determine if the test should be skipped in the current environment + isTestingEnvironment = ~isempty(getenv('MATLAB_TEST_ENVIRONMENT')); + shouldRun = ~(isMATLABReleaseOlderThan('R2024b') && isTestingEnvironment); + + testCase.assumeTrue(... + shouldRun,... + "Document formatting test cannot run prior to 24b in GitHub test environment."); + end + function setup (~) % Add function under test to path addpath("../../../../../matlab"); diff --git a/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m b/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m index b477f25..8133464 100644 --- a/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m +++ b/tests/matlab/matlabls/handlers/indexing/tParseInfoFromDocument.m @@ -36,7 +36,7 @@ function testParsingScriptFile (testCase) testCase.assertEqual(result.references, expectedReferences); expectedSections = { - struct(title = "Create Data", range = toRange(3, 1, 6, 2)),... + struct(title = "Create Data", range = toRange(3, 1, 6, 1)),... struct(title = "Plot", range = toRange(7, 1, 8, 11)) }; diff --git a/tests/matlab/matlabls/handlers/linting/tGetSuppressionEdits.m b/tests/matlab/matlabls/handlers/linting/tGetSuppressionEdits.m index b421334..429268b 100644 --- a/tests/matlab/matlabls/handlers/linting/tGetSuppressionEdits.m +++ b/tests/matlab/matlabls/handlers/linting/tGetSuppressionEdits.m @@ -1,6 +1,13 @@ % Copyright 2025 The MathWorks, Inc. classdef tGetSuppressionEdits < matlab.unittest.TestCase methods (TestClassSetup) + function isApplicable (testCase) + % Determine if the test should be skipped in the current environment + testCase.assumeTrue(... + ~isMATLABReleaseOlderThan('R2022a'),... + "Diagnostic suppression tests require R2022a and later."); + end + function setup (~) % Add function under test to path addpath("../../../../../matlab");