Skip to content

Commit

Permalink
Test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
buijs-dev committed May 11, 2024
1 parent 24c5b58 commit 5b45cd2
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
8 changes: 7 additions & 1 deletion lib/src/cli/task.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,19 @@ abstract class Task<T> {
/// Execute the task.
Future<TaskResult<T>> execute(Context context) async {
try {
final output = await toBeExecuted(context, _getOptions(context));
final output = await executeOrThrow(context);
return TaskResult(isOk: true, output: output);
} on KlutterException catch (e) {
return TaskResult(isOk: false, message: e.cause);
}
}

/// Execute the task and return instance of [T] or throw
/// [KlutterException] if unsuccessful.
Future<T> executeOrThrow(Context context) async {
return await toBeExecuted(context, _getOptions(context));
}

/// The validated options.
///
/// Returns a map with each option having a value either
Expand Down
38 changes: 16 additions & 22 deletions lib/src/cli/task_project_create.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ import "context.dart";
/// Task
class CreateProject extends Task {
/// Create new Task.
CreateProject({Executor? executor, GetFlutterSDK? getFlutterSDK})
CreateProject(
{Executor? executor,
GetFlutterSDK? getFlutterSDK,
AddLibrary? addLibrary,
ProjectInit? projectInit})
: super(TaskName.create, {
TaskOption.name: const PluginNameOption(),
TaskOption.group: const GroupNameOption(),
Expand All @@ -40,10 +44,14 @@ class CreateProject extends Task {
}) {
_executor = executor ?? Executor();
_getFlutterSDK = getFlutterSDK ?? GetFlutterSDK();
_projectInit = projectInit ?? ProjectInit();
_addLibrary = addLibrary ?? AddLibrary();
}

late final Executor _executor;
late final GetFlutterSDK _getFlutterSDK;
late final ProjectInit _projectInit;
late final AddLibrary _addLibrary;

@override
Future<void> toBeExecuted(
Expand All @@ -59,12 +67,9 @@ class CreateProject extends Task {
final dist = toFlutterDistributionOrThrow(
version: flutterVersion, pathToRoot: pathToRoot);

final result = await _getFlutterSDK.execute(context);
final flutter = result.output
?.resolveFile("flutter/bin/flutter".normalize)
.absolutePath ??
(throw KlutterException(result.message ?? "failed to get flutter sdk"));

final result = await _getFlutterSDK.executeOrThrow(context);
final flutter =
result.resolveFile("flutter/bin/flutter".normalize).absolutePath;
final root = await createFlutterProjectOrThrow(
executor: _executor,
pathToFlutter: flutter,
Expand Down Expand Up @@ -118,27 +123,16 @@ class CreateProject extends Task {
..workingDirectory = exampleFolder
..run();

final initContext = context.copyWith(taskOptions: {
await _projectInit.executeOrThrow(context.copyWith(taskOptions: {
TaskOption.root: root.absolutePath,
TaskOption.bom: bomVersion,
TaskOption.flutter: flutterSDK,
});

final init = await ProjectInit().execute(initContext);
if (!init.isOk) {
throw KlutterException(init.message ?? "project init failed");
}
}));

final addContext = context.copyWith(taskOptions: {
await _addLibrary.executeOrThrow(context.copyWith(taskOptions: {
TaskOption.root: exampleFolder.absolutePath,
TaskOption.lib: name,
});

final addLibrary = await AddLibrary().execute(addContext);
if (!addLibrary.isOk) {
throw KlutterException(
addLibrary.message ?? "adding library to example project failed");
}
}));

exampleFolder
..deleteTestFolder
Expand Down
4 changes: 2 additions & 2 deletions test/src/cli/task_project_create_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void main() {

class NoFlutterSDK extends GetFlutterSDK {
@override
Future<TaskResult<Directory>> execute(Context context) async {
return const TaskResult(isOk: false, message: "BOOM!");
Future<Directory> executeOrThrow(Context context) async {
throw KlutterException("BOOM!");
}
}

0 comments on commit 5b45cd2

Please sign in to comment.