@@ -527,10 +527,11 @@ def test_publish_assets_npm_exists(npm_dist, runner, mocker):
527
527
def wrapped (cmd , ** kwargs ):
528
528
nonlocal called
529
529
if cmd .startswith ("npm publish --dry-run" ):
530
- err = CalledProcessError (1 , "foo" )
531
- err .stderr = "EPUBLISHCONFLICT" .encode ("UTF-8" )
532
530
called += 1
533
- raise err
531
+ if called == 0 :
532
+ err = CalledProcessError (1 , "foo" )
533
+ err .stderr = "EPUBLISHCONFLICT" .encode ("UTF-8" )
534
+ raise err
534
535
535
536
mock_run = mocker .patch ("jupyter_releaser.util.run" , wraps = wrapped )
536
537
@@ -549,6 +550,36 @@ def wrapped(cmd, **kwargs):
549
550
assert called == 3 , called
550
551
551
552
553
+ def test_publish_assets_npm_all_exists (npm_dist , runner , mocker ):
554
+ dist_dir = npm_dist / util .CHECKOUT_NAME / "dist"
555
+ called = 0
556
+
557
+ def wrapped (cmd , ** kwargs ):
558
+ nonlocal called
559
+ if cmd .startswith ("npm publish --dry-run" ):
560
+ called += 1
561
+ err = CalledProcessError (1 , "foo" )
562
+ err .stderr = "previously published versions" .encode ("UTF-8" )
563
+ raise err
564
+
565
+ mocker .patch ("jupyter_releaser.util.run" , wraps = wrapped )
566
+
567
+ with pytest .raises (ValueError ):
568
+ runner (
569
+ [
570
+ "publish-assets" ,
571
+ "--npm-token" ,
572
+ "abc" ,
573
+ "--npm-cmd" ,
574
+ "npm publish --dry-run" ,
575
+ "--dist-dir" ,
576
+ dist_dir ,
577
+ ]
578
+ )
579
+
580
+ assert called == 3 , called
581
+
582
+
552
583
def test_publish_release (npm_dist , runner , mocker , open_mock ):
553
584
open_mock .side_effect = [MockHTTPResponse ([REPO_DATA ]), MockHTTPResponse ()]
554
585
dist_dir = npm_dist / util .CHECKOUT_NAME / "dist"
0 commit comments