ic-mops 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.ts CHANGED
@@ -188,7 +188,12 @@ program
188
188
  .description('Run tests')
189
189
  .option('-r, --reporter <reporter>', 'Choose reporter: verbose, compact, files')
190
190
  .option('-w, --watch', 'Enable watch mode')
191
+ .option('--mode <mode>', 'Test mode: \'interpreter\' or \'wasi\' (default \'interpreter\'')
191
192
  .action(async (filter, options) => {
193
+ if (options.mode && !['interpreter', 'wasi'].includes(options.mode)) {
194
+ console.log(`Unknown --mode value '${options.mode}'. Allowed: interpreter, wasi`);
195
+ process.exit(1);
196
+ }
192
197
  await test(filter, options);
193
198
  });
194
199
 
@@ -1,7 +1,7 @@
1
1
  import path from 'node:path';
2
2
  import fs from 'node:fs';
3
3
  import chalk from 'chalk';
4
- import {checkConfigFile, formatDir, formatGithubDir, parseGithubURL, readConfig} from '../mops.js';
4
+ import {checkConfigFile, formatDir, formatGithubDir, getRootDir, parseGithubURL, readConfig} from '../mops.js';
5
5
  import {VesselConfig, readVesselConfig} from '../vessel.js';
6
6
  import {Config, Dependency} from '../types.js';
7
7
 
@@ -111,10 +111,11 @@ export async function sources({verbose = false} = {}) {
111
111
  }
112
112
 
113
113
  // sources
114
+ let rootDir = getRootDir();
114
115
  return Object.entries(packages).map(([name, pkg]) => {
115
116
  let pkgDir;
116
117
  if (pkg.path) {
117
- pkgDir = path.relative(process.cwd(), path.resolve(pkg.path));
118
+ pkgDir = path.relative(process.cwd(), path.resolve(rootDir, pkg.path));
118
119
  pkgDir = pkgDir.replaceAll('{MOPS_ENV}', process.env.MOPS_ENV || 'local');
119
120
  }
120
121
  else if (pkg.repo) {
@@ -30,7 +30,9 @@ let globConfig = {
30
30
  ignore: ignore,
31
31
  };
32
32
 
33
- export async function test(filter = '', {watch = false, reporter = 'verbose'} = {}) {
33
+ type TestMode = 'interpreter' | 'wasi';
34
+
35
+ export async function test(filter = '', {watch = false, reporter = 'verbose', mode = 'interpreter' as TestMode} = {}) {
34
36
  let rootDir = getRootDir();
35
37
 
36
38
  if (watch) {
@@ -59,7 +61,7 @@ export async function test(filter = '', {watch = false, reporter = 'verbose'} =
59
61
  run();
60
62
  }
61
63
  else {
62
- let passed = await runAll(filter, reporter);
64
+ let passed = await runAll(filter, reporter, mode);
63
65
  if (!passed) {
64
66
  process.exit(1);
65
67
  }
@@ -68,7 +70,7 @@ export async function test(filter = '', {watch = false, reporter = 'verbose'} =
68
70
 
69
71
  let mocPath = process.env.DFX_MOC_PATH;
70
72
 
71
- export async function runAll(filter = '', reporterName = 'verbose') {
73
+ export async function runAll(filter = '', reporterName = 'verbose', mode: TestMode = 'interpreter') {
72
74
  let reporter: Reporter;
73
75
  if (reporterName == 'compact') {
74
76
  reporter = new CompactReporter;
@@ -116,7 +118,7 @@ export async function runAll(filter = '', reporterName = 'verbose') {
116
118
 
117
119
  await parallel(os.cpus().length, files, async (file: string) => {
118
120
  let mmf = new MMF1('store');
119
- let wasiMode = fs.readFileSync(file, 'utf8').startsWith('// @testmode wasi');
121
+ let wasiMode = mode === 'wasi' || fs.readFileSync(file, 'utf8').startsWith('// @testmode wasi');
120
122
 
121
123
  let promise = new Promise<void>((resolve) => {
122
124
  if (!mocPath) {
package/dist/cli.js CHANGED
@@ -169,7 +169,12 @@ program
169
169
  .description('Run tests')
170
170
  .option('-r, --reporter <reporter>', 'Choose reporter: verbose, compact, files')
171
171
  .option('-w, --watch', 'Enable watch mode')
172
+ .option('--mode <mode>', 'Test mode: \'interpreter\' or \'wasi\' (default \'interpreter\'')
172
173
  .action(async (filter, options) => {
174
+ if (options.mode && !['interpreter', 'wasi'].includes(options.mode)) {
175
+ console.log(`Unknown --mode value '${options.mode}'. Allowed: interpreter, wasi`);
176
+ process.exit(1);
177
+ }
173
178
  await test(filter, options);
174
179
  });
175
180
  // template
@@ -1,7 +1,7 @@
1
1
  import path from 'node:path';
2
2
  import fs from 'node:fs';
3
3
  import chalk from 'chalk';
4
- import { checkConfigFile, formatDir, formatGithubDir, parseGithubURL, readConfig } from '../mops.js';
4
+ import { checkConfigFile, formatDir, formatGithubDir, getRootDir, parseGithubURL, readConfig } from '../mops.js';
5
5
  import { readVesselConfig } from '../vessel.js';
6
6
  // TODO: resolve conflicts
7
7
  export async function sources({ verbose = false } = {}) {
@@ -91,10 +91,11 @@ export async function sources({ verbose = false } = {}) {
91
91
  }
92
92
  }
93
93
  // sources
94
+ let rootDir = getRootDir();
94
95
  return Object.entries(packages).map(([name, pkg]) => {
95
96
  let pkgDir;
96
97
  if (pkg.path) {
97
- pkgDir = path.relative(process.cwd(), path.resolve(pkg.path));
98
+ pkgDir = path.relative(process.cwd(), path.resolve(rootDir, pkg.path));
98
99
  pkgDir = pkgDir.replaceAll('{MOPS_ENV}', process.env.MOPS_ENV || 'local');
99
100
  }
100
101
  else if (pkg.repo) {
@@ -1,5 +1,8 @@
1
- export declare function test(filter?: string, { watch, reporter }?: {
1
+ type TestMode = 'interpreter' | 'wasi';
2
+ export declare function test(filter?: string, { watch, reporter, mode }?: {
2
3
  watch?: boolean | undefined;
3
4
  reporter?: string | undefined;
5
+ mode?: TestMode | undefined;
4
6
  }): Promise<void>;
5
- export declare function runAll(filter?: string, reporterName?: string): Promise<boolean | undefined>;
7
+ export declare function runAll(filter?: string, reporterName?: string, mode?: TestMode): Promise<boolean | undefined>;
8
+ export {};
@@ -24,7 +24,7 @@ let globConfig = {
24
24
  nocase: true,
25
25
  ignore: ignore,
26
26
  };
27
- export async function test(filter = '', { watch = false, reporter = 'verbose' } = {}) {
27
+ export async function test(filter = '', { watch = false, reporter = 'verbose', mode = 'interpreter' } = {}) {
28
28
  let rootDir = getRootDir();
29
29
  if (watch) {
30
30
  // todo: run only changed for *.test.mo?
@@ -50,14 +50,14 @@ export async function test(filter = '', { watch = false, reporter = 'verbose' }
50
50
  run();
51
51
  }
52
52
  else {
53
- let passed = await runAll(filter, reporter);
53
+ let passed = await runAll(filter, reporter, mode);
54
54
  if (!passed) {
55
55
  process.exit(1);
56
56
  }
57
57
  }
58
58
  }
59
59
  let mocPath = process.env.DFX_MOC_PATH;
60
- export async function runAll(filter = '', reporterName = 'verbose') {
60
+ export async function runAll(filter = '', reporterName = 'verbose', mode = 'interpreter') {
61
61
  let reporter;
62
62
  if (reporterName == 'compact') {
63
63
  reporter = new CompactReporter;
@@ -99,7 +99,7 @@ export async function runAll(filter = '', reporterName = 'verbose') {
99
99
  fs.mkdirSync(wasmDir, { recursive: true });
100
100
  await parallel(os.cpus().length, files, async (file) => {
101
101
  let mmf = new MMF1('store');
102
- let wasiMode = fs.readFileSync(file, 'utf8').startsWith('// @testmode wasi');
102
+ let wasiMode = mode === 'wasi' || fs.readFileSync(file, 'utf8').startsWith('// @testmode wasi');
103
103
  let promise = new Promise((resolve) => {
104
104
  if (!mocPath) {
105
105
  mocPath = 'moc';
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic-mops",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mops": "dist/cli.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic-mops",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mops": "dist/cli.js"