Move project save post-commit planning to app core
This commit is contained in:
@@ -1530,7 +1530,7 @@ if(TARGET pano_cli)
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path D:/Paint/projects/demo.ppi)
|
||||
set_tests_properties(pano_cli_plan_canvas_project_save_target_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"dataDirectory\":\"D:/Paint/data\".*\"targetPath\":\"D:/Paint/projects/demo.ppi\".*\"fileName\":\"demo\".*\"temporaryPath\":\"D:/Paint/data/demo.tmp.ppi\".*\"timelapsePath\":\"D:/Paint/data/demo.pptl\".*\"writePlan\":\\{\"action\":\"write-direct-to-target\",\"targetExists\":false,\"usesTemporary\":false,\"writePath\":\"D:/Paint/projects/demo.ppi\",\"fallbackDirectOnTemporaryOpenFailure\":false\\}.*\"commitPlan\":\\{\"saved\":true,\"usedTemporary\":false,\"targetRemoved\":false,\"temporaryRenamed\":false,\"targetMayBeMissing\":false,\"message\":\"project saved to target\"\\}")
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"dataDirectory\":\"D:/Paint/data\".*\"targetPath\":\"D:/Paint/projects/demo.ppi\".*\"fileName\":\"demo\".*\"temporaryPath\":\"D:/Paint/data/demo.tmp.ppi\".*\"timelapsePath\":\"D:/Paint/data/demo.pptl\".*\"writePlan\":\\{\"action\":\"write-direct-to-target\",\"targetExists\":false,\"usesTemporary\":false,\"writePath\":\"D:/Paint/projects/demo.ppi\",\"fallbackDirectOnTemporaryOpenFailure\":false\\}.*\"commitPlan\":\\{\"saved\":true,\"usedTemporary\":false,\"targetRemoved\":false,\"temporaryRenamed\":false,\"targetMayBeMissing\":false,\"message\":\"project saved to target\"\\}.*\"postCommitPlan\":\\{\"marksDocumentClean\":true,\"marksNewDocumentCommitted\":true,\"savesTimelapseSidecar\":false,\"flushesPlatformStorage\":true,\"dismissesProgressUi\":false,\"updatesTitle\":true\\}")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_project_save_target_backslash_smoke
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path "D:\\Paint\\projects\\demo.ppi")
|
||||
@@ -1539,10 +1539,10 @@ if(TARGET pano_cli)
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"fileName\":\"demo\".*\"temporaryPath\":\"D:/Paint/data/demo.tmp.ppi\".*\"timelapsePath\":\"D:/Paint/data/demo.pptl\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_project_save_target_existing_smoke
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path D:/Paint/projects/demo.ppi --target-exists)
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path D:/Paint/projects/demo.ppi --target-exists --encoder --progress)
|
||||
set_tests_properties(pano_cli_plan_canvas_project_save_target_existing_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"targetPath\":\"D:/Paint/projects/demo.ppi\".*\"writePlan\":\\{\"action\":\"write-temporary-then-swap\",\"targetExists\":true,\"usesTemporary\":true,\"writePath\":\"D:/Paint/data/demo.tmp.ppi\",\"fallbackDirectOnTemporaryOpenFailure\":true\\}.*\"commitPlan\":\\{\"saved\":true,\"usedTemporary\":true,\"targetRemoved\":true,\"temporaryRenamed\":true,\"targetMayBeMissing\":false,\"message\":\"temporary project swapped successfully\"\\}")
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"targetPath\":\"D:/Paint/projects/demo.ppi\".*\"writePlan\":\\{\"action\":\"write-temporary-then-swap\",\"targetExists\":true,\"usesTemporary\":true,\"writePath\":\"D:/Paint/data/demo.tmp.ppi\",\"fallbackDirectOnTemporaryOpenFailure\":true\\}.*\"commitPlan\":\\{\"saved\":true,\"usedTemporary\":true,\"targetRemoved\":true,\"temporaryRenamed\":true,\"targetMayBeMissing\":false,\"message\":\"temporary project swapped successfully\"\\}.*\"postCommitPlan\":\\{\"marksDocumentClean\":true,\"marksNewDocumentCommitted\":true,\"savesTimelapseSidecar\":true,\"flushesPlatformStorage\":true,\"dismissesProgressUi\":true,\"updatesTitle\":true\\}")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_project_save_target_remove_failure_smoke
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path D:/Paint/projects/demo.ppi --target-exists --remove-fails)
|
||||
@@ -1554,7 +1554,7 @@ if(TARGET pano_cli)
|
||||
COMMAND pano_cli plan-canvas-project-save-target --data-dir D:/Paint/data --path D:/Paint/projects/demo.ppi --target-exists --rename-fails)
|
||||
set_tests_properties(pano_cli_plan_canvas_project_save_target_rename_failure_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast;fuzz"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"commitPlan\":\\{\"saved\":false,\"usedTemporary\":true,\"targetRemoved\":true,\"temporaryRenamed\":false,\"targetMayBeMissing\":true,\"message\":\"temporary project not swapped after original removal\"\\}")
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-project-save-target\".*\"commitPlan\":\\{\"saved\":false,\"usedTemporary\":true,\"targetRemoved\":true,\"temporaryRenamed\":false,\"targetMayBeMissing\":true,\"message\":\"temporary project not swapped after original removal\"\\}.*\"postCommitPlan\":\\{\"marksDocumentClean\":false,\"marksNewDocumentCommitted\":false,\"savesTimelapseSidecar\":false,\"flushesPlatformStorage\":false,\"dismissesProgressUi\":false,\"updatesTitle\":true\\}")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_project_save_target_rejects_empty_path
|
||||
COMMAND pano_cli plan-canvas-project-save-target --path "")
|
||||
|
||||
@@ -425,6 +425,57 @@ void project_save_commit_plan_flags_missing_target_after_rename_failure(pp::test
|
||||
PP_EXPECT(harness, plan.log_message == "temporary project not swapped after original removal");
|
||||
}
|
||||
|
||||
void project_save_post_commit_plan_records_success_side_effects(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_canvas_project_save_post_commit(
|
||||
pp::app::DocumentCanvasProjectSavePostCommitInput {
|
||||
.save_succeeded = true,
|
||||
.timelapse_encoder_available = true,
|
||||
.progress_ui_visible = true,
|
||||
});
|
||||
|
||||
PP_EXPECT(harness, plan.marks_document_clean);
|
||||
PP_EXPECT(harness, plan.marks_new_document_committed);
|
||||
PP_EXPECT(harness, plan.saves_timelapse_sidecar);
|
||||
PP_EXPECT(harness, plan.flushes_platform_storage);
|
||||
PP_EXPECT(harness, plan.dismisses_progress_ui);
|
||||
PP_EXPECT(harness, plan.updates_title);
|
||||
}
|
||||
|
||||
void project_save_post_commit_plan_skips_timelapse_without_encoder(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_canvas_project_save_post_commit(
|
||||
pp::app::DocumentCanvasProjectSavePostCommitInput {
|
||||
.save_succeeded = true,
|
||||
.timelapse_encoder_available = false,
|
||||
.progress_ui_visible = false,
|
||||
});
|
||||
|
||||
PP_EXPECT(harness, plan.marks_document_clean);
|
||||
PP_EXPECT(harness, plan.marks_new_document_committed);
|
||||
PP_EXPECT(harness, !plan.saves_timelapse_sidecar);
|
||||
PP_EXPECT(harness, plan.flushes_platform_storage);
|
||||
PP_EXPECT(harness, !plan.dismisses_progress_ui);
|
||||
PP_EXPECT(harness, plan.updates_title);
|
||||
}
|
||||
|
||||
void project_save_post_commit_plan_preserves_state_after_failure(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_canvas_project_save_post_commit(
|
||||
pp::app::DocumentCanvasProjectSavePostCommitInput {
|
||||
.save_succeeded = false,
|
||||
.timelapse_encoder_available = true,
|
||||
.progress_ui_visible = true,
|
||||
});
|
||||
|
||||
PP_EXPECT(harness, !plan.marks_document_clean);
|
||||
PP_EXPECT(harness, !plan.marks_new_document_committed);
|
||||
PP_EXPECT(harness, !plan.saves_timelapse_sidecar);
|
||||
PP_EXPECT(harness, !plan.flushes_platform_storage);
|
||||
PP_EXPECT(harness, plan.dismisses_progress_ui);
|
||||
PP_EXPECT(harness, plan.updates_title);
|
||||
}
|
||||
|
||||
void snapshot_plan_rejects_invalid_canvas_state(pp::tests::Harness& harness)
|
||||
{
|
||||
const std::uint32_t frames[] { 100U };
|
||||
@@ -616,6 +667,9 @@ int main()
|
||||
harness.run("project save commit plan succeeds for temporary swap", project_save_commit_plan_succeeds_for_temporary_swap);
|
||||
harness.run("project save commit plan fails when target remove fails", project_save_commit_plan_fails_when_target_remove_fails);
|
||||
harness.run("project save commit plan flags missing target after rename failure", project_save_commit_plan_flags_missing_target_after_rename_failure);
|
||||
harness.run("project save post commit plan records success side effects", project_save_post_commit_plan_records_success_side_effects);
|
||||
harness.run("project save post commit plan skips timelapse without encoder", project_save_post_commit_plan_skips_timelapse_without_encoder);
|
||||
harness.run("project save post commit plan preserves state after failure", project_save_post_commit_plan_preserves_state_after_failure);
|
||||
harness.run("snapshot plan rejects invalid canvas state", snapshot_plan_rejects_invalid_canvas_state);
|
||||
harness.run("clear plan records legacy canvas effects", clear_plan_records_legacy_canvas_effects);
|
||||
harness.run("clear plan noops without canvas", clear_plan_noops_without_canvas);
|
||||
|
||||
Reference in New Issue
Block a user