diff --git a/LICENSE b/LICENSE index e77a2f4ec..c6b5d8fa0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,3 @@ - [The "BSD licence"] Copyright (c) 2017 Kevin Jones (All other contributions) All rights reserved. diff --git a/js/npm/lib/apex-ls.d.ts b/js/npm/lib/apex-ls.d.ts index 0817ef917..afad1a946 100644 --- a/js/npm/lib/apex-ls.d.ts +++ b/js/npm/lib/apex-ls.d.ts @@ -1,13 +1,16 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ declare module "@apexdevtools/apex-ls" { - export class WorkspaceException { - message: string; - } + export class WorkspaceException { + message: string; + } - export class Workspace { - findType(name: string): string[]; - } + export class Workspace { + findType(name: string): string[]; + } - export class Workspaces { - static get(path: string): Workspace; - } + export class Workspaces { + static get(path: string): Workspace; + } } diff --git a/js/npm/snapshots/resolver.js b/js/npm/snapshots/resolver.js index cc9d0c6c6..7cf45e981 100644 --- a/js/npm/snapshots/resolver.js +++ b/js/npm/snapshots/resolver.js @@ -1,14 +1,17 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ module.exports = { - // resolves from test to snapshot path - resolveSnapshotPath: (testPath, snapshotExtension) => - testPath.replace('src/__tests__', 'snapshots') + snapshotExtension, + // resolves from test to snapshot path + resolveSnapshotPath: (testPath, snapshotExtension) => + testPath.replace("src/__tests__", "snapshots") + snapshotExtension, - // resolves from snapshot to test path - resolveTestPath: (snapshotFilePath, snapshotExtension) => - snapshotFilePath - .replace('snapshots', 'src/__tests__') - .slice(0, -snapshotExtension.length), + // resolves from snapshot to test path + resolveTestPath: (snapshotFilePath, snapshotExtension) => + snapshotFilePath + .replace("snapshots", "src/__tests__") + .slice(0, -snapshotExtension.length), - // Example test path, used for preflight consistency check of the implementation above - testPathForConsistencyCheck: 'src/__tests__/example.test.ts', + // Example test path, used for preflight consistency check of the implementation above + testPathForConsistencyCheck: "src/__tests__/example.test.ts", }; diff --git a/js/npm/src/__tests__/WorkspaceTest.ts b/js/npm/src/__tests__/WorkspaceTest.ts index 878006e16..d2d16eefc 100644 --- a/js/npm/src/__tests__/WorkspaceTest.ts +++ b/js/npm/src/__tests__/WorkspaceTest.ts @@ -1,81 +1,95 @@ +/* + Copyright (c) 2019 Kevin Jones, All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + */ import { Workspaces } from "@apexdevtools/apex-ls"; import { vol } from "memfs"; import { patchFs } from "fs-monkey"; test("Bad directory", () => { - try { - Workspaces.get("foo"); - expect(true).toBe(false); - } catch (err) { - expect(err.message).toMatch(/.*No directory at .*/); - } + try { + Workspaces.get("foo"); + expect(true).toBe(false); + } catch (err) { + expect(err.message).toMatch(/.*No directory at .*/); + } }); test("Empty directory", () => { - vol.fromJSON({ "/pkg1/README.md": "" }); - const unpatch = patchFs(vol); - try { - const workspace = Workspaces.get("/pkg1"); - expect(workspace).toBeDefined(); - expect(workspace.findType("Foo")).toEqual([]); - } finally { - unpatch(); - } + vol.fromJSON({ "/pkg1/README.md": "" }); + const unpatch = patchFs(vol); + try { + const workspace = Workspaces.get("/pkg1"); + expect(workspace).toBeDefined(); + expect(workspace.findType("Foo")).toEqual([]); + } finally { + unpatch(); + } }); test("MDAPI Class", () => { - vol.fromJSON({ "/pkg2/classes/Foo.cls": "" }); - const unpatch = patchFs(vol); - try { - const workspace = Workspaces.get("/pkg2"); - expect(workspace).toBeDefined(); - expect(workspace.findType("Foo")).toEqual(["/pkg2/classes/Foo.cls"]); - } finally { - unpatch(); - } + vol.fromJSON({ "/pkg2/classes/Foo.cls": "" }); + const unpatch = patchFs(vol); + try { + const workspace = Workspaces.get("/pkg2"); + expect(workspace).toBeDefined(); + expect(workspace.findType("Foo")).toEqual(["/pkg2/classes/Foo.cls"]); + } finally { + unpatch(); + } }); test("SFDX Bad Project file", () => { - vol.fromJSON({ "/pkg3/sfdx-project.json": "" }); - const unpatch = patchFs(vol); - try { - const workspace = Workspaces.get("/pkg3"); - expect(true).toBe(false); - } catch (err) { - expect(err.message).toMatch( - "Error: line 1: Failed to parse - ujson.IncompleteParseException: exhausted input" - ); - } finally { - unpatch(); - } + vol.fromJSON({ "/pkg3/sfdx-project.json": "" }); + const unpatch = patchFs(vol); + try { + const workspace = Workspaces.get("/pkg3"); + expect(true).toBe(false); + } catch (err) { + expect(err.message).toMatch( + "Error: line 1: Failed to parse - ujson.IncompleteParseException: exhausted input" + ); + } finally { + unpatch(); + } }); test("SFDX without namespace", () => { - vol.fromJSON({ - "/pkg4/sfdx-project.json": '{ "packageDirectories": [{"path": "classes"}]}', - "/pkg4/classes/Foo.cls": "", - }); - const unpatch = patchFs(vol); - try { - const workspace = Workspaces.get("/pkg4"); - expect(workspace).toBeDefined(); - expect(workspace.findType("Foo")).toEqual(["/pkg4/classes/Foo.cls"]); - } finally { - unpatch(); - } + vol.fromJSON({ + "/pkg4/sfdx-project.json": '{ "packageDirectories": [{"path": "classes"}]}', + "/pkg4/classes/Foo.cls": "", + }); + const unpatch = patchFs(vol); + try { + const workspace = Workspaces.get("/pkg4"); + expect(workspace).toBeDefined(); + expect(workspace.findType("Foo")).toEqual(["/pkg4/classes/Foo.cls"]); + } finally { + unpatch(); + } }); test("SFDX with namespace", () => { - vol.fromJSON({ - "/pkg5/sfdx-project.json": '{ "packageDirectories": [{"path": "classes"}], "namespace": "ns001"}', - "/pkg5/classes/Foo.cls": "", - }); - const unpatch = patchFs(vol); - try { - const workspace = Workspaces.get("/pkg5"); - expect(workspace).toBeDefined(); - expect(workspace.findType("ns001.Foo")).toEqual(["/pkg5/classes/Foo.cls"]); - } finally { - unpatch(); - } + vol.fromJSON({ + "/pkg5/sfdx-project.json": + '{ "packageDirectories": [{"path": "classes"}], "namespace": "ns001"}', + "/pkg5/classes/Foo.cls": "", + }); + const unpatch = patchFs(vol); + try { + const workspace = Workspaces.get("/pkg5"); + expect(workspace).toBeDefined(); + expect(workspace.findType("ns001.Foo")).toEqual(["/pkg5/classes/Foo.cls"]); + } finally { + unpatch(); + } }); diff --git a/js/npm/src/__tests__/system/SampleCheckSys.ts b/js/npm/src/__tests__/system/SampleCheckSys.ts index 5c405d4e3..9ae197170 100644 --- a/js/npm/src/__tests__/system/SampleCheckSys.ts +++ b/js/npm/src/__tests__/system/SampleCheckSys.ts @@ -1,168 +1,180 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ import chalk from "chalk"; import { spawnSync } from "child_process"; import { readdirSync, lstatSync } from "fs"; -import { basename, resolve, sep } from "path" +import { basename, resolve, sep } from "path"; -const isCategory = (...cats: string[]) => (str: string) => cats.some(c => str.startsWith(c)); +const isCategory = + (...cats: string[]) => + (str: string) => + cats.some((c) => str.startsWith(c)); const isErrorCat = isCategory("Syntax", "Error", "Missing"); const isWarnCat = isCategory("Warning", "Unused"); const isSyntaxCat = isCategory("Syntax"); // .each runs first before any hooks like beforeAll function getSamples(): string[][] { - if (!process.env.SAMPLES) { - throw new Error("Missing environment variable 'SAMPLES' with path to samples."); - } - const sampleDir = resolve(process.env.SAMPLES); - return readdirSync(sampleDir) - .filter(f => !(/(^|\/)\.[^\/\.]/g).test(f)) // not hidden - .map(f => resolve(sampleDir, f)) // full path - .filter(f => lstatSync(f).isDirectory()) - .map(d => findProjectDir(d)) + if (!process.env.SAMPLES) { + throw new Error( + "Missing environment variable 'SAMPLES' with path to samples." + ); + } + const sampleDir = resolve(process.env.SAMPLES); + return readdirSync(sampleDir) + .filter((f) => !/(^|\/)\.[^\/\.]/g.test(f)) // not hidden + .map((f) => resolve(sampleDir, f)) // full path + .filter((f) => lstatSync(f).isDirectory()) + .map((d) => findProjectDir(d)); } function findProjectDir(wd: string): [string, string] { - // Detects override sfdx-project or descends 1 level into sample - const projName = basename(wd); - return [ - projName, - readdirSync(wd) - .includes("sfdx-project.json") ? wd : resolve(wd, projName) - ]; + // Detects override sfdx-project or descends 1 level into sample + const projName = basename(wd); + return [ + projName, + readdirSync(wd).includes("sfdx-project.json") ? wd : resolve(wd, projName), + ]; } -function printLogs(logs: string[], errLogs: string[], name: string, status: number): void { - const prefix = `[${name}](status: ${status}) check output:`; - if (logs.length) { - console.log(prefix); - console.log( - logs.map(msg => { - if (isErrorCat(msg)) { - return chalk.red(msg); - } else if (isWarnCat(msg)) { - return chalk.yellow(msg); - } - return msg; - }).join("\n") - ); - console.log(); // \n - } else if (errLogs.length) { - console.log(`${prefix} ${chalk.redBright("Exception")}`); - console.log(errLogs); - console.log(); // \n - } else { - console.log( - `${prefix} ${chalk.green("No issues found")}\n` - ); - } +function printLogs( + logs: string[], + errLogs: string[], + name: string, + status: number +): void { + const prefix = `[${name}](status: ${status}) check output:`; + if (logs.length) { + console.log(prefix); + console.log( + logs + .map((msg) => { + if (isErrorCat(msg)) { + return chalk.red(msg); + } else if (isWarnCat(msg)) { + return chalk.yellow(msg); + } + return msg; + }) + .join("\n") + ); + console.log(); // \n + } else if (errLogs.length) { + console.log(`${prefix} ${chalk.redBright("Exception")}`); + console.log(errLogs); + console.log(); // \n + } else { + console.log(`${prefix} ${chalk.green("No issues found")}\n`); + } } function applyMessageFilters(msg: string): string { - if (isSyntaxCat(msg)) { - // Syntax errors can include large list of tokens - // that changes on parser update causing failure - if (msg.length > 250) { - return msg.split(" expecting {", 2)[0]; - } + if (isSyntaxCat(msg)) { + // Syntax errors can include large list of tokens + // that changes on parser update causing failure + if (msg.length > 250) { + return msg.split(" expecting {", 2)[0]; } - if (isWarnCat(msg)) { - // msg for ambiguous flips between the related methods - // need to cut the end off - if (msg.includes("Ambiguous method call")) { - return msg.split(",", 2)[0]; - } + } + if (isWarnCat(msg)) { + // msg for ambiguous flips between the related methods + // need to cut the end off + if (msg.includes("Ambiguous method call")) { + return msg.split(",", 2)[0]; } - return msg; + } + return msg; } function prepareSnapshotLogs(logs: string[], path: string): string[][] { - const headings: number[] = []; + const headings: number[] = []; - const snapLogs = logs.reduce((parsed: string[], log: string) => { - const isHead = log.startsWith(path); + const snapLogs = logs.reduce((parsed: string[], log: string) => { + const isHead = log.startsWith(path); - // Strip unique abs paths - let msg = log.replaceAll(`${path}${sep}`, ""); + // Strip unique abs paths + let msg = log.replaceAll(`${path}${sep}`, ""); - // Modify frequently changing messages - // to make snapshot deterministic - if (!isHead) { - msg = applyMessageFilters(msg); - } + // Modify frequently changing messages + // to make snapshot deterministic + if (!isHead) { + msg = applyMessageFilters(msg); + } - const length = parsed.push(msg); + const length = parsed.push(msg); - // track headings for splitting - isHead && headings.push(length - 1); + // track headings for splitting + isHead && headings.push(length - 1); - return parsed; - }, []); + return parsed; + }, []); - return headings.map((headIdx, ptrIdx) => { - const [head, ...msgs] = snapLogs.slice(headIdx, headings[ptrIdx + 1]); - return [ - head, - // sort to remove message order changes - ...msgs.sort() - ]; - }); + return headings.map((headIdx, ptrIdx) => { + const [head, ...msgs] = snapLogs.slice(headIdx, headings[ptrIdx + 1]); + return [ + head, + // sort to remove message order changes + ...msgs.sort(), + ]; + }); } describe("Check samples", () => { - - // disable jest wrapped logging - const jestConsole = console; - beforeEach(() => { - global.console = require("console"); - }); - afterEach(() => { - global.console = jestConsole; - }); - - test.each(getSamples())("Sample: %s", async (name, path) => { - - const jvmCheck = spawnSync( - "java", - [ - "-cp", - "jvm/target/scala-2.13/*:jvm/target/scala-2.13/apex-ls_2.13-*.jar", - "io.github.apexdevtools.apexls.Main", - "-verbose", - "-nocache", - "-outlinemulti", - path - ], - { - // can only be run from npm dir - cwd: resolve(process.cwd(), "../.."), - timeout: 30000 - } - ); - - // Check it was not cancelled due to timeout - expect(jvmCheck.signal).toBeNull(); - - const status = jvmCheck.status; - const logs: string[] = jvmCheck.stdout - .toString("utf8") - .split("\n") - .filter(l => l); - - // only print exceptions, do not snapshot - const errLogs = jvmCheck.stderr - .toString("utf8") - .split("\n") - .filter(l => l); - - printLogs(logs, errLogs, name, status); - - const result = { - status, - logs: prepareSnapshotLogs(logs, path) - }; - - expect(result).toMatchSnapshot(); - - }, 40000); - + // disable jest wrapped logging + const jestConsole = console; + beforeEach(() => { + global.console = require("console"); + }); + afterEach(() => { + global.console = jestConsole; + }); + + test.each(getSamples())( + "Sample: %s", + async (name, path) => { + const jvmCheck = spawnSync( + "java", + [ + "-cp", + "jvm/target/scala-2.13/*:jvm/target/scala-2.13/apex-ls_2.13-*.jar", + "io.github.apexdevtools.apexls.Main", + "-verbose", + "-nocache", + "-outlinemulti", + path, + ], + { + // can only be run from npm dir + cwd: resolve(process.cwd(), "../.."), + timeout: 30000, + } + ); + + // Check it was not cancelled due to timeout + expect(jvmCheck.signal).toBeNull(); + + const status = jvmCheck.status; + const logs: string[] = jvmCheck.stdout + .toString("utf8") + .split("\n") + .filter((l) => l); + + // only print exceptions, do not snapshot + const errLogs = jvmCheck.stderr + .toString("utf8") + .split("\n") + .filter((l) => l); + + printLogs(logs, errLogs, name, status); + + const result = { + status, + logs: prepareSnapshotLogs(logs, path), + }; + + expect(result).toMatchSnapshot(); + }, + 40000 + ); }); diff --git a/jvm/src/main/scala/com/nawforce/runtime/platform/OutlineParserModifierOps.scala b/jvm/src/main/scala/com/nawforce/runtime/platform/OutlineParserModifierOps.scala index 22c3f138c..32d283e26 100644 --- a/jvm/src/main/scala/com/nawforce/runtime/platform/OutlineParserModifierOps.scala +++ b/jvm/src/main/scala/com/nawforce/runtime/platform/OutlineParserModifierOps.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2023 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.runtime.platform import com.financialforce.types.base.{ diff --git a/jvm/src/test/scala/com/nawforce/apexlink/ParserHelper.scala b/jvm/src/test/scala/com/nawforce/apexlink/ParserHelper.scala index 542b326f8..9c0d141f7 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/ParserHelper.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/ParserHelper.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.apexlink import com.nawforce.apexlink.api.{ANTLRParser, OutlineParserSingleThreaded, ServerOps} diff --git a/jvm/src/test/scala/com/nawforce/apexlink/cst/ConstructorTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/cst/ConstructorTest.scala index dc566309d..1836c2027 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/cst/ConstructorTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/cst/ConstructorTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.apexlink.cst import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/apexlink/cst/InnerInnerTypeTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/cst/InnerInnerTypeTest.scala index 15f1d94b4..6ce926f0d 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/cst/InnerInnerTypeTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/cst/InnerInnerTypeTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.apexlink.cst import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/apexlink/cst/VariablesTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/cst/VariablesTest.scala index a423cc516..d51aa91be 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/cst/VariablesTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/cst/VariablesTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.apexlink.cst import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/apexlink/pkg/CompletionProviderTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/pkg/CompletionProviderTest.scala index 1ad4aef64..02eb66893 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/pkg/CompletionProviderTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/pkg/CompletionProviderTest.scala @@ -1,3 +1,16 @@ +/* + Copyright (c) 2021 Kevin Jones & FinancialForce, All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + */ package com.nawforce.apexlink.pkg import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/apexlink/pkg/DependencyGraphTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/pkg/DependencyGraphTest.scala index 88212a4c2..55ce093ca 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/pkg/DependencyGraphTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/pkg/DependencyGraphTest.scala @@ -1,3 +1,16 @@ +/* + Copyright (c) 2020 Kevin Jones, All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + */ package com.nawforce.apexlink.pkg import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/apexlink/pkg/ReferencesTest.scala b/jvm/src/test/scala/com/nawforce/apexlink/pkg/ReferencesTest.scala index 1474c2c40..cd919344e 100644 --- a/jvm/src/test/scala/com/nawforce/apexlink/pkg/ReferencesTest.scala +++ b/jvm/src/test/scala/com/nawforce/apexlink/pkg/ReferencesTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.apexlink.pkg import com.nawforce.apexlink.TestHelper.CURSOR diff --git a/jvm/src/test/scala/com/nawforce/indexer/MonitorTest.scala b/jvm/src/test/scala/com/nawforce/indexer/MonitorTest.scala index 060a013cc..b55cabf42 100644 --- a/jvm/src/test/scala/com/nawforce/indexer/MonitorTest.scala +++ b/jvm/src/test/scala/com/nawforce/indexer/MonitorTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2023 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.indexer import com.nawforce.apexlink.TestHelper diff --git a/jvm/src/test/scala/com/nawforce/runtime/FileSystemHelper.scala b/jvm/src/test/scala/com/nawforce/runtime/FileSystemHelper.scala index bac09b7f8..cdc2561c2 100644 --- a/jvm/src/test/scala/com/nawforce/runtime/FileSystemHelper.scala +++ b/jvm/src/test/scala/com/nawforce/runtime/FileSystemHelper.scala @@ -1,3 +1,16 @@ +/* + Copyright (c) 2019 Kevin Jones, All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + */ package com.nawforce.runtime import java.nio.file.Files diff --git a/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/SymbolProvider.scala b/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/SymbolProvider.scala index a946a8850..00b801ffd 100644 --- a/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/SymbolProvider.scala +++ b/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/SymbolProvider.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.runtime.sfparser_run import apex.jorje.lsp.ApexLanguageServerLauncher diff --git a/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/compare/TypeIdCollector.scala b/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/compare/TypeIdCollector.scala index 1b3bac7bb..753483654 100644 --- a/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/compare/TypeIdCollector.scala +++ b/jvm/src/test/scala/com/nawforce/runtime/sfparser_run/compare/TypeIdCollector.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.runtime.sfparser_run.compare import com.financialforce.types.base.IdWithLocation diff --git a/jvm/src/test/scala/com/nawforce/runtime/sfparser_test/ResolvedOutputComparisonTest.scala b/jvm/src/test/scala/com/nawforce/runtime/sfparser_test/ResolvedOutputComparisonTest.scala index abafdd3f9..d2610d748 100644 --- a/jvm/src/test/scala/com/nawforce/runtime/sfparser_test/ResolvedOutputComparisonTest.scala +++ b/jvm/src/test/scala/com/nawforce/runtime/sfparser_test/ResolvedOutputComparisonTest.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2022 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.runtime.sfparser_test import com.financialforce.types._ import com.financialforce.types.base.{Annotation, Modifier, TypeRef} diff --git a/shared/src/test/scala/com/nawforce/pkgforce/PathInterpolator.scala b/shared/src/test/scala/com/nawforce/pkgforce/PathInterpolator.scala index b01de681f..2f3e278f9 100644 --- a/shared/src/test/scala/com/nawforce/pkgforce/PathInterpolator.scala +++ b/shared/src/test/scala/com/nawforce/pkgforce/PathInterpolator.scala @@ -1,3 +1,6 @@ +/* + * Copyright (c) 2023 FinancialForce.com, inc. All rights reserved. + */ package com.nawforce.pkgforce import com.nawforce.runtime.platform.{Environment, Path}