@@ -506,8 +506,6 @@ impl Crater {
506506 ) ;
507507 workspace. purge_all_build_dirs ( ) ?;
508508 res?;
509-
510- experiment. set_status ( & db, Status :: NeedsReport ) ?;
511509 } else {
512510 bail ! ( "missing experiment {}" , ex. 0 ) ;
513511 }
@@ -522,18 +520,18 @@ impl Crater {
522520 let db = Database :: open ( ) ?;
523521
524522 if let Some ( mut experiment) = Experiment :: get ( & db, & ex. 0 ) ? {
525- // Update the status
526- match ( experiment. status , force) {
527- ( Status :: NeedsReport , _) | ( Status :: ReportFailed , _) | ( _, true ) => {
528- experiment. set_status ( & db, Status :: GeneratingReport ) ?;
529- }
530- ( other, false ) => bail ! (
531- "can't generate the report of an experiment with status {} \
523+ let ( completed, all) = experiment. raw_progress ( & db) ?;
524+ if !force && completed != all {
525+ bail ! (
526+ "can't generate the report of an incomplete experiment: {}/{} results \
532527 (use --force to override)",
533- other
534- ) ,
528+ completed,
529+ all,
530+ ) ;
535531 }
536532
533+ experiment. set_status ( & db, Status :: GeneratingReport ) ?;
534+
537535 let result_db = DatabaseDB :: new ( & db) ;
538536 let res = report:: gen (
539537 & result_db,
@@ -564,18 +562,18 @@ impl Crater {
564562 let db = Database :: open ( ) ?;
565563
566564 if let Some ( mut experiment) = Experiment :: get ( & db, & ex. 0 ) ? {
567- // Update the status
568- match ( experiment. status , force) {
569- ( Status :: NeedsReport , _) | ( Status :: ReportFailed , _) | ( _, true ) => {
570- experiment. set_status ( & db, Status :: GeneratingReport ) ?;
571- }
572- ( other, false ) => bail ! (
573- "can't publish the report of an experiment with status {} \
565+ let ( completed, all) = experiment. raw_progress ( & db) ?;
566+ if !force && completed != all {
567+ bail ! (
568+ "can't publish the report of an incomplete experiment: {}/{} results \
574569 (use --force to override)",
575- other
576- ) ,
570+ completed,
571+ all,
572+ ) ;
577573 }
578574
575+ experiment. set_status ( & db, Status :: GeneratingReport ) ?;
576+
579577 let result_db = DatabaseDB :: new ( & db) ;
580578 let client = report:: get_client_for_bucket ( & s3_prefix. bucket ) ?;
581579
0 commit comments