From f6ffa4d6ba01c013e625bca7df8e0ac4b9107bf1 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Wed, 20 Sep 2023 23:10:49 +0200 Subject: [PATCH] test: fix failing tests due to colliding file names (#569) ### Summary of Changes Clear files loaded into workspace by tests in additional places to prevent colliding file names. This does not fully solve the issue yet, but together with the upcoming update to `Langium` it should get rid of it completely. --------- Co-authored-by: megalinter-bot <129584137+megalinter-bot@users.noreply.github.com> --- ...kspaceManager.ts => safe-ds-workspace-manager.ts} | 0 src/language/safe-ds-module.ts | 8 ++++---- ...ger.test.ts => safe-ds-workspace-manager.test.ts} | 9 +++++++-- tests/language/formatting/testFormatting.test.ts | 12 +++++------- tests/language/grammar/testGrammar.test.ts | 9 +++++---- tests/language/scoping/testScoping.test.ts | 8 ++++++-- tests/language/validation/testValidation.test.ts | 8 ++++++-- 7 files changed, 33 insertions(+), 21 deletions(-) rename src/language/builtins/{workspaceManager.ts => safe-ds-workspace-manager.ts} (100%) rename tests/language/builtins/{workspaceManager.test.ts => safe-ds-workspace-manager.test.ts} (83%) diff --git a/src/language/builtins/workspaceManager.ts b/src/language/builtins/safe-ds-workspace-manager.ts similarity index 100% rename from src/language/builtins/workspaceManager.ts rename to src/language/builtins/safe-ds-workspace-manager.ts diff --git a/src/language/safe-ds-module.ts b/src/language/safe-ds-module.ts index a61ff8189..dcf3f38c4 100644 --- a/src/language/safe-ds-module.ts +++ b/src/language/safe-ds-module.ts @@ -10,11 +10,11 @@ import { PartialLangiumServices, } from 'langium'; import { SafeDsGeneratedModule, SafeDsGeneratedSharedModule } from './generated/module.js'; -import { SafeDsValidator, registerValidationChecks } from './validation/safe-ds-validator.js'; +import { registerValidationChecks, SafeDsValidator } from './validation/safe-ds-validator.js'; import { SafeDsFormatter } from './formatting/safe-ds-formatter.js'; -import { SafeDsWorkspaceManager } from './builtins/workspaceManager.js'; -import {SafeDsScopeComputation} from "./scoping/safe-ds-scope-computation.js"; -import {SafeDsScopeProvider} from "./scoping/safe-ds-scope-provider.js"; +import { SafeDsWorkspaceManager } from './builtins/safe-ds-workspace-manager.js'; +import { SafeDsScopeComputation } from './scoping/safe-ds-scope-computation.js'; +import { SafeDsScopeProvider } from './scoping/safe-ds-scope-provider.js'; /** * Declaration of custom services - add your own service classes here. diff --git a/tests/language/builtins/workspaceManager.test.ts b/tests/language/builtins/safe-ds-workspace-manager.test.ts similarity index 83% rename from tests/language/builtins/workspaceManager.test.ts rename to tests/language/builtins/safe-ds-workspace-manager.test.ts index 86643ec9f..37e9a3fc7 100644 --- a/tests/language/builtins/workspaceManager.test.ts +++ b/tests/language/builtins/safe-ds-workspace-manager.test.ts @@ -1,8 +1,9 @@ -import { beforeAll, describe, expect, it } from 'vitest'; -import { listBuiltinsFiles } from '../../../src/language/builtins/workspaceManager.js'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { listBuiltinsFiles } from '../../../src/language/builtins/safe-ds-workspace-manager.js'; import { createSafeDsServices } from '../../../src/language/safe-ds-module.js'; import { getLinkingErrors } from '../../helpers/diagnostics.js'; import { NodeFileSystem } from 'langium/node'; +import { clearDocuments } from 'langium/test'; const services = createSafeDsServices(NodeFileSystem).SafeDs; @@ -11,6 +12,10 @@ describe('SafeDsWorkspaceManager', () => { await services.shared.workspace.WorkspaceManager.initializeWorkspace([]); }); + afterAll(async () => { + await clearDocuments(services); + }); + describe('loadAdditionalDocuments', () => { it.each(['Any', 'Boolean', 'Float', 'Int', 'Nothing', 'Number', 'String'])( 'should be possible to refer to %s', diff --git a/tests/language/formatting/testFormatting.test.ts b/tests/language/formatting/testFormatting.test.ts index 3b9f55f3d..5b5fc4c22 100644 --- a/tests/language/formatting/testFormatting.test.ts +++ b/tests/language/formatting/testFormatting.test.ts @@ -1,6 +1,6 @@ import { createSafeDsServices } from '../../../src/language/safe-ds-module.js'; import { clearDocuments, expectFormatting } from 'langium/test'; -import { describe, it } from 'vitest'; +import { afterEach, describe, it } from 'vitest'; import { EmptyFileSystem } from 'langium'; import { createFormattingTests } from './creator.js'; @@ -8,6 +8,10 @@ const services = createSafeDsServices(EmptyFileSystem).SafeDs; const formatterTests = createFormattingTests(); describe('formatter', async () => { + afterEach(async () => { + await clearDocuments(services); + }); + // Test that the original code is formatted correctly it.each(await formatterTests)('$testName', async (test) => { // Test is invalid @@ -20,9 +24,6 @@ describe('formatter', async () => { before: test.originalCode, after: test.expectedFormattedCode, }); - - // Clear loaded documents to avoid colliding URIs (https://github.com/langium/langium/issues/1146) - await clearDocuments(services); }); // Test that the expected formatted code stays the same when formatted again @@ -37,8 +38,5 @@ describe('formatter', async () => { before: test.expectedFormattedCode, after: test.expectedFormattedCode, }); - - // Clear loaded documents to avoid colliding URIs (https://github.com/langium/langium/issues/1146) - await clearDocuments(services); }); }); diff --git a/tests/language/grammar/testGrammar.test.ts b/tests/language/grammar/testGrammar.test.ts index 80803cb6b..7bc53801c 100644 --- a/tests/language/grammar/testGrammar.test.ts +++ b/tests/language/grammar/testGrammar.test.ts @@ -1,4 +1,4 @@ -import { describe, it } from 'vitest'; +import { afterEach, describe, it } from 'vitest'; import { createSafeDsServices } from '../../../src/language/safe-ds-module.js'; import { AssertionError } from 'assert'; import { NodeFileSystem } from 'langium/node'; @@ -9,6 +9,10 @@ import { getSyntaxErrors } from '../../helpers/diagnostics.js'; const services = createSafeDsServices(NodeFileSystem).SafeDs; describe('grammar', () => { + afterEach(async () => { + await clearDocuments(services); + }); + it.each(createGrammarTests())('$testName', async (test) => { // Test is invalid if (test.error) { @@ -39,8 +43,5 @@ describe('grammar', () => { }); } } - - // Clear loaded documents to avoid colliding URIs (https://github.com/langium/langium/issues/1146) - await clearDocuments(services); }); }); diff --git a/tests/language/scoping/testScoping.test.ts b/tests/language/scoping/testScoping.test.ts index 11aab4776..9505346cb 100644 --- a/tests/language/scoping/testScoping.test.ts +++ b/tests/language/scoping/testScoping.test.ts @@ -1,8 +1,8 @@ -import { describe, it } from 'vitest'; +import { afterEach, describe, it } from 'vitest'; import { createSafeDsServices } from '../../../src/language/safe-ds-module.js'; import { URI } from 'vscode-uri'; import { NodeFileSystem } from 'langium/node'; -import { isRangeEqual } from 'langium/test'; +import { isRangeEqual, clearDocuments } from 'langium/test'; import { AssertionError } from 'assert'; import { isLocationEqual, locationToString } from '../../helpers/location.js'; import { createScopingTests, ExpectedReference } from './creator.js'; @@ -12,6 +12,10 @@ import { Location } from 'vscode-languageserver'; const services = createSafeDsServices(NodeFileSystem).SafeDs; describe('scoping', async () => { + afterEach(async () => { + await clearDocuments(services); + }); + it.each(await createScopingTests())('$testName', async (test) => { // Test is invalid if (test.error) { diff --git a/tests/language/validation/testValidation.test.ts b/tests/language/validation/testValidation.test.ts index 9ffe3fda1..5b19437d2 100644 --- a/tests/language/validation/testValidation.test.ts +++ b/tests/language/validation/testValidation.test.ts @@ -1,16 +1,20 @@ -import { describe, it } from 'vitest'; +import { afterEach, describe, it } from 'vitest'; import { createSafeDsServices } from '../../../src/language/safe-ds-module.js'; import { URI } from 'vscode-uri'; import { NodeFileSystem } from 'langium/node'; import { createValidationTests, ExpectedIssue } from './creator.js'; import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver-types'; import { AssertionError } from 'assert'; -import { isRangeEqual } from 'langium/test'; +import { clearDocuments, isRangeEqual } from 'langium/test'; import { locationToString } from '../../helpers/location.js'; const services = createSafeDsServices(NodeFileSystem).SafeDs; describe('validation', async () => { + afterEach(async () => { + await clearDocuments(services); + }); + it.each(await createValidationTests())('$testName', async (test) => { // Test is invalid if (test.error) {