Skip to content

Commit

Permalink
add wasm option to cli tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Kilian Schulte committed Oct 4, 2024
1 parent 4aa90f2 commit aadcb3a
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 17 deletions.
18 changes: 10 additions & 8 deletions .github/workflows/cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,16 @@ jobs:
strategy:
matrix:
Variant:
- sampn
- vnsnn
- cnsnn
- vanen
- cnnen
- vanns
- sanpn
- cnspn
- sampnj
- vnsnnj
- cnsnnj
- vanenj
- cnnenj
- vannsj
- sanpnj
- cnspnj
- sasnnw
- cnsenw
steps:
- name: Checkout Repository
uses: actions/checkout@v3
Expand Down
6 changes: 3 additions & 3 deletions packages/jaspr_cli/test/commands_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ void main() {

for (var variant in allVariants) {
test(variant.name, tags: variant.tag, () async {
await runner.run('create -v ${variant.options} myapp', dir: dirs.root);
await runner.run('create -v ${variant.createOptions} myapp', dir: dirs.root);

for (var f in variant.files) {
expect(File(p.join(dirs.app().path, f.$1)), f.$2, reason: f.$1);
Expand All @@ -30,7 +30,7 @@ void main() {
// Override jaspr dependencies from path.
await bootstrap(variant, dirs.root());

var serve = await runner.run('serve -v', dir: dirs.app) as RunningCommandResult;
var serve = await runner.run('serve ${variant.runOptions.join(' ')}', dir: dirs.app) as RunningCommandResult;
await Future.delayed(Duration(seconds: 10));

// Wait until server is started.
Expand Down Expand Up @@ -58,7 +58,7 @@ void main() {

await Future.delayed(Duration(seconds: 10));

await runner.run('build -v', dir: dirs.app);
await runner.run('build ${variant.runOptions.join(' ')}', dir: dirs.app);

var outputPath = p.join(dirs.app().path, 'build', 'jaspr');
if (variant.mode == RenderingMode.server) {
Expand Down
51 changes: 45 additions & 6 deletions packages/jaspr_cli/test/variants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@ final allVariants = [
for (var routing in RoutingOption.values)
for (var flutter in FlutterOption.values)
for (var backend in BackendOption.valuesFor(mode))
TestVariant(mode: mode, hydration: hydration, routing: routing, flutter: flutter, backend: backend),
for (var compiler in CompilerOption.values)
TestVariant(
mode: mode,
hydration: hydration,
routing: routing,
flutter: flutter,
backend: backend,
compiler: compiler,
),
];

class TestVariant {
Expand All @@ -18,22 +26,26 @@ class TestVariant {
final RoutingOption routing;
final FlutterOption flutter;
final BackendOption backend;
final CompilerOption compiler;

const TestVariant({
required this.mode,
required this.hydration,
required this.routing,
required this.flutter,
required this.backend,
required this.compiler,
});

String get name =>
'${mode.name}${hydration.option} routing:${routing.option} flutter:${flutter.option} backend:${backend.option}';
'${mode.name}${hydration.option} routing:${routing.option} flutter:${flutter.option} backend:${backend.option} compiler:${compiler.option}';

String get options =>
String get tag => '${mode.tag}${hydration.tag}${routing.tag}${flutter.tag}${backend.tag}${compiler.tag}';

String get createOptions =>
'-m ${mode.name}${hydration.option} -r ${routing.option} -f ${flutter.option} -b ${backend.option}';

String get tag => '${mode.tag}${hydration.tag}${routing.tag}${flutter.tag}${backend.tag}';
List<String> get runOptions => ['-v', if (compiler == CompilerOption.wasm) '--experimental-wasm'];

Set<String> get packages => {
if (routing != RoutingOption.none) 'packages/jaspr_router',
Expand All @@ -45,6 +57,7 @@ class TestVariant {
('pubspec.yaml', fileExists),
('README.md', fileExists),
...mode.files,
...hydration.files,
...routing.files,
...flutter.files,
...backend.files,
Expand All @@ -53,13 +66,15 @@ class TestVariant {
Set<String> get resources => {
'/',
...mode.resources,
...hydration.resources,
...routing.resources,
...flutter.resources,
...backend.resources,
};

Set<(String, Matcher)> get outputs => {
...mode.outputs,
...hydration.outputsFor(compiler),
...routing.outputs,
...flutter.outputs,
...backend.outputs,
Expand Down Expand Up @@ -107,11 +122,20 @@ enum HydrationMode {
auto => {}
};
Set<String> get resources => {};
Set<(String, Matcher)> get outputs => switch (this) {
none => {('main.dart.js', fileExists)},
Set<(String, Matcher)> outputsFor(CompilerOption compiler) => switch (this) {
none => {
('main.dart.js', fileExists),
if (compiler == CompilerOption.wasm) ...{('main.mjs', fileExists), ('main.wasm', fileExists)}
},
auto => {
('main.clients.dart.js', fileExists),
('components/app.client.dart.js', fileExists),
if (compiler == CompilerOption.wasm) ...{
('main.clients.mjs', fileExists),
('main.clients.wasm', fileExists),
('components/app.client.mjs', fileExists),
('components/app.client.wasm', fileExists),
}
},
};
}
Expand Down Expand Up @@ -164,6 +188,7 @@ enum FlutterOption {
embedded => {
('manifest.json', fileExists),
('version.json', fileExists),
('flutter_bootstrap.js', fileExists),
('flutter_service_worker.js', fileExists),
('canvaskit/canvaskit.js', fileExists),
('assets/AssetManifest.json', fileExists),
Expand All @@ -188,3 +213,17 @@ enum BackendOption {
Set<String> get resources => {};
Set<(String, Matcher)> get outputs => {};
}

enum CompilerOption {
js('js'),
wasm('wasm');

const CompilerOption(this.option);
final String option;

String get tag => switch (this) { js => 'j', wasm => 'w' };

Set<(String, Matcher)> get files => {};
Set<String> get resources => {};
Set<(String, Matcher)> get outputs => {};
}

0 comments on commit aadcb3a

Please sign in to comment.