@@ -484,3 +484,35 @@ func TestExportNamespaceValidation(t *testing.T) {
484484 me .Close ()
485485 }
486486}
487+
488+ // TestExportNoData verifies that exporting an empty collection succeeds, but
489+ // fails with --assertExists (from no_data.js).
490+ func TestExportNoData (t * testing.T ) {
491+ testtype .SkipUnlessTestType (t , testtype .IntegrationTestType )
492+ log .SetWriter (io .Discard )
493+
494+ toolOptions , err := testutil .GetToolOptions ()
495+ require .NoError (t , err )
496+ toolOptions .Namespace = & options.Namespace {DB : "test" , Collection : "mongoexport_no_data_test" }
497+
498+ me , err := New (Options {
499+ ToolOptions : toolOptions ,
500+ OutputFormatOptions : & OutputFormatOptions {Type : "json" , JSONFormat : "canonical" },
501+ InputOptions : & InputOptions {},
502+ })
503+ require .NoError (t , err )
504+ defer me .Close ()
505+ var buf bytes.Buffer
506+ _ , err = me .Export (& buf )
507+ assert .NoError (t , err , "export from empty collection should succeed" )
508+
509+ me2 , err := New (Options {
510+ ToolOptions : toolOptions ,
511+ OutputFormatOptions : & OutputFormatOptions {Type : "json" , JSONFormat : "canonical" },
512+ InputOptions : & InputOptions {AssertExists : true },
513+ })
514+ require .NoError (t , err )
515+ defer me2 .Close ()
516+ _ , err = me2 .Export (& buf )
517+ assert .Error (t , err , "export with --assertExists should fail on nonexistent collection" )
518+ }
0 commit comments