Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/package/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"svelte": "^5.35.5",
"svelte-preprocess": "^6.0.0",
"typescript": "^5.3.3",
"uvu": "^0.5.6"
"vitest": "catalog:"
},
"peerDependencies": {
"svelte": "^3.44.0 || ^4.0.0 || ^5.0.0-next.1"
Expand All @@ -50,7 +50,7 @@
"check": "tsc",
"check:all": "tsc && pnpm -r --filter=\"./**\" check",
"format": "pnpm lint --write",
"test": "uvu test \"^index.js$\""
"test": "vitest run"
},
"exports": {
"./package.json": "./package.json"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {};
1 change: 1 addition & 0 deletions packages/package/test/fixtures/assets/svelte.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {};
1 change: 1 addition & 0 deletions packages/package/test/fixtures/javascript/svelte.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {};
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import { join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';

import prettier from 'prettier';
import { test } from 'uvu';
import * as assert from 'uvu/assert';
import { test, expect } from 'vitest';

import { build, watch } from '../src/index.js';
import { load_config } from '../src/config.js';
Expand Down Expand Up @@ -40,13 +39,13 @@ async function test_make_package(path, options) {
const expected_files = walk(ewd, true);
const actual_files = walk(output, true);

assert.equal(actual_files, expected_files);
expect(actual_files).toEqual(expected_files);

const extensions = ['.json', '.svelte', '.ts', 'js', '.map'];
for (const file of actual_files) {
const pathname = join(output, file);
if (fs.statSync(pathname).isDirectory()) continue;
assert.ok(expected_files.includes(file), `Did not expect ${file} in ${path}`);
expect(expected_files.includes(file), `Did not expect ${file} in ${path}`).toBeTruthy();

const expected = fs.readFileSync(join(ewd, file));
const actual = fs.readFileSync(join(output, file));
Expand All @@ -55,9 +54,9 @@ async function test_make_package(path, options) {
if (extensions.some((ext) => pathname.endsWith(ext))) {
const expected_content = await format(file, expected.toString('utf-8'));
const actual_content = await format(file, actual.toString('utf-8'));
assert.fixture(actual_content, expected_content, err_msg);
expect(actual_content, err_msg).toBe(expected_content);
} else {
assert.ok(expected.equals(actual), err_msg);
expect(expected.equals(actual)).toBeTruthy();
}
}
}
Expand Down Expand Up @@ -95,26 +94,24 @@ for (const dir of fs.readdirSync(join(__dirname, 'errors'))) {

try {
await build({ cwd, input, output, types: true, config });
assert.unreachable('Must not pass build');
throw new Error('Must not pass build');
} catch (/** @type {any} */ error) {
assert.instance(error, Error);
expect(error).toBeInstanceOf(Error);
switch (dir) {
case 'no-lib-folder':
assert.match(
error.message.replace(/\\/g, '/'),
expect(error.message.replace(/\\/g, '/')).toMatch(
'test/errors/no-lib-folder/src/lib does not exist'
);
break;
// TODO: non-existent tsconfig passes without error
// it detects tsconfig in packages/kit instead and creates package folder
// in packages/kit/package, not sure how to handle and test this yet
// case 'no-tsconfig':
// assert.match(error.message, 'Failed to locate tsconfig or jsconfig');
// expect(error.message).toMatch('Failed to locate tsconfig or jsconfig');
// break;

default:
assert.unreachable('All error test must be handled');
break;
throw new Error('All error test must be handled');
}
} finally {
rimraf(output);
Expand Down Expand Up @@ -191,7 +188,7 @@ if (!process.env.CI) {

/** @param {string} file */
function compare(file) {
assert.equal(read(`package/${file}`), read(`expected/${file}`));
expect(read(`package/${file}`)).toEqual(read(`expected/${file}`));
}

/** @param {string} file */
Expand Down Expand Up @@ -253,19 +250,18 @@ if (!process.env.CI) {
remove('src/lib/b.ts');
remove('src/lib/post-error.svelte');
}
});
}, 30_000);
}

/**
* @param {string[]} actual
* @param {string[]} expected
*/
function has_warnings(actual, expected) {
assert.equal(actual.length, expected.length);
assert.equal(
actual.filter((warning) => expected.some((str) => warning.startsWith(str))).length,
expected.length
);
expect(actual.length).toEqual(expected.length);
expect(
actual.filter((warning) => expected.some((str) => warning.startsWith(str))).length
).toEqual(expected.length);
}

test('validates package (1)', () => {
Expand Down Expand Up @@ -320,7 +316,7 @@ test('validates package (all ok 1)', () => {
peerDependencies: { svelte: '^3.55.0' }
});

assert.equal(warnings.length, 0);
expect(warnings.length).toEqual(0);
});

test('validates package (all ok 2)', () => {
Expand All @@ -338,7 +334,5 @@ test('validates package (all ok 2)', () => {
svelte: './dist/C.svelte'
});

assert.equal(warnings.length, 0);
expect(warnings.length).toEqual(0);
});

test.run();
2 changes: 1 addition & 1 deletion packages/package/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
"moduleResolution": "node16",
"allowSyntheticDefaultImports": true
},
"include": ["*.js", "src/**/*", "test/index.js"]
"include": ["*.js", "src/**/*", "test/index.spec.js"]
}
30 changes: 3 additions & 27 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading