perrette / papers

Command-line tool to manage bibliography (pdfs + bibtex)
MIT License
142 stars 22 forks source link

tests fail on master? #40

Closed boyanpenkov closed 1 year ago

boyanpenkov commented 1 year ago
(python311) → master Work/papers pytest -vv .                                                                               18:37:55
======================================================== test session starts ========================================================
platform linux -- Python 3.11.2, pytest-7.3.1, pluggy-1.0.0 -- /home/boyan/boyanshouse/miniconda3/envs/python311/bin/python3.11
cachedir: .pytest_cache
rootdir: /home/boyan/boyanshouse/Vazhno/Work/papers
plugins: anyio-3.6.2
collected 95 items                                                                                                                  

tests/test_papers.py::TestBibtexFileEntry::test_format_file PASSED                                                            [  1%]
tests/test_papers.py::TestBibtexFileEntry::test_format_files PASSED                                                           [  2%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_file PASSED                                                             [  3%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_files PASSED                                                            [  4%]
tests/test_papers.py::TestSimple::test_doi PASSED                                                                             [  5%]
tests/test_papers.py::TestSimple::test_fetch PASSED                                                                           [  6%]
tests/test_papers.py::TestSimple::test_fetch_scholar PASSED                                                                   [  7%]
tests/test_papers.py::TestInstall::test_local_install PASSED                                                                  [  8%]
tests/test_papers.py::TestAdd::test_add PASSED                                                                                [  9%]
tests/test_papers.py::TestAdd::test_add_rename PASSED                                                                         [ 10%]
tests/test_papers.py::TestAdd::test_add_rename_copy PASSED                                                                    [ 11%]
tests/test_papers.py::TestAdd::test_fails_without_install PASSED                                                              [ 12%]
tests/test_papers.py::TestAdd2::test_add PASSED                                                                               [ 13%]
tests/test_papers.py::TestAdd2::test_add_attachment PASSED                                                                    [ 14%]
tests/test_papers.py::TestAdd2::test_add_rename PASSED                                                                        [ 15%]
tests/test_papers.py::TestAdd2::test_add_rename_copy PASSED                                                                   [ 16%]
tests/test_papers.py::TestAdd2::test_fails_without_install PASSED                                                             [ 17%]
tests/test_papers.py::TestAddBib::test_addbib PASSED                                                                          [ 18%]
tests/test_papers.py::TestAddDir::test_adddir_pdf FAILED                                                                      [ 20%]
tests/test_papers.py::TestAddDir::test_adddir_pdf_cmd FAILED                                                                  [ 21%]
tests/test_papers.py::TestDuplicates::test_anotherkey PASSED                                                                  [ 22%]
tests/test_papers.py::TestDuplicates::test_conflictauthor PASSED                                                              [ 23%]
tests/test_papers.py::TestDuplicates::test_conflictdoi PASSED                                                                 [ 24%]
tests/test_papers.py::TestDuplicates::test_conflictyear PASSED                                                                [ 25%]
tests/test_papers.py::TestDuplicates::test_exactsame PASSED                                                                   [ 26%]
tests/test_papers.py::TestDuplicates::test_missingdoi PASSED                                                                  [ 27%]
tests/test_papers.py::TestDuplicates::test_missingfield PASSED                                                                [ 28%]
tests/test_papers.py::TestDuplicates::test_missingtitauthor PASSED                                                            [ 29%]
tests/test_papers.py::TestDuplicatesExact::test_anotherkey PASSED                                                             [ 30%]
tests/test_papers.py::TestDuplicatesExact::test_conflictauthor PASSED                                                         [ 31%]
tests/test_papers.py::TestDuplicatesExact::test_conflictdoi PASSED                                                            [ 32%]
tests/test_papers.py::TestDuplicatesExact::test_conflictyear PASSED                                                           [ 33%]
tests/test_papers.py::TestDuplicatesExact::test_exactsame PASSED                                                              [ 34%]
tests/test_papers.py::TestDuplicatesExact::test_missingdoi PASSED                                                             [ 35%]
tests/test_papers.py::TestDuplicatesExact::test_missingfield PASSED                                                           [ 36%]
tests/test_papers.py::TestDuplicatesExact::test_missingtitauthor PASSED                                                       [ 37%]
tests/test_papers.py::TestDuplicatesGood::test_anotherkey PASSED                                                              [ 38%]
tests/test_papers.py::TestDuplicatesGood::test_conflictauthor PASSED                                                          [ 40%]
tests/test_papers.py::TestDuplicatesGood::test_conflictdoi PASSED                                                             [ 41%]
tests/test_papers.py::TestDuplicatesGood::test_conflictyear PASSED                                                            [ 42%]
tests/test_papers.py::TestDuplicatesGood::test_exactsame PASSED                                                               [ 43%]
tests/test_papers.py::TestDuplicatesGood::test_missingdoi PASSED                                                              [ 44%]
tests/test_papers.py::TestDuplicatesGood::test_missingfield PASSED                                                            [ 45%]
tests/test_papers.py::TestDuplicatesGood::test_missingtitauthor PASSED                                                        [ 46%]
tests/test_papers.py::TestDuplicatesPartial::test_anotherkey PASSED                                                           [ 47%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictauthor PASSED                                                       [ 48%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictdoi PASSED                                                          [ 49%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictyear PASSED                                                         [ 50%]
tests/test_papers.py::TestDuplicatesPartial::test_exactsame PASSED                                                            [ 51%]
tests/test_papers.py::TestDuplicatesPartial::test_missingdoi PASSED                                                           [ 52%]
tests/test_papers.py::TestDuplicatesPartial::test_missingfield PASSED                                                         [ 53%]
tests/test_papers.py::TestDuplicatesPartial::test_missingtitauthor PASSED                                                     [ 54%]
tests/test_papers.py::TestDuplicatesAdd::test_anotherkey SKIPPED (skip cause does not make sense with add)                    [ 55%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictauthor PASSED                                                           [ 56%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictdoi PASSED                                                              [ 57%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictyear PASSED                                                             [ 58%]
tests/test_papers.py::TestDuplicatesAdd::test_exactsame SKIPPED (skip cause does not make sense with add)                     [ 60%]
tests/test_papers.py::TestDuplicatesAdd::test_missingdoi PASSED                                                               [ 61%]
tests/test_papers.py::TestDuplicatesAdd::test_missingfield PASSED                                                             [ 62%]
tests/test_papers.py::TestDuplicatesAdd::test_missingtitauthor PASSED                                                         [ 63%]
tests/test_papers.py::TestAddResolveDuplicate::test_append PASSED                                                             [ 64%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original PASSED                                     [ 65%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original_but_originalkey PASSED                     [ 66%]
tests/test_papers.py::TestAddResolveDuplicate::test_original_updated_from_conflict PASSED                                     [ 67%]
tests/test_papers.py::TestAddResolveDuplicate::test_overwrite PASSED                                                          [ 68%]
tests/test_papers.py::TestAddResolveDuplicate::test_raises PASSED                                                             [ 69%]
tests/test_papers.py::TestAddResolveDuplicate::test_skip PASSED                                                               [ 70%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_append PASSED                                                      [ 71%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original PASSED                              [ 72%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original_but_originalkey PASSED              [ 73%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_original_updated_from_conflict PASSED                              [ 74%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_overwrite PASSED                                                   [ 75%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_raises PASSED                                                      [ 76%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_skip PASSED                                                        [ 77%]
tests/test_papers.py::TestCheckResolveDuplicate::test_merge PASSED                                                            [ 78%]
tests/test_papers.py::TestCheckResolveDuplicate::test_not_a_duplicate PASSED                                                  [ 80%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_conflict_1 PASSED                                                  [ 81%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_reference_2 PASSED                                                 [ 82%]
tests/test_papers.py::TestCheckResolveDuplicate::test_raises PASSED                                                           [ 83%]
tests/test_papers.py::TestCheckResolveDuplicate::test_skip_check PASSED                                                       [ 84%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_check_raises PASSED                                              [ 85%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_nocheck_raises PASSED                                            [ 86%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_update PASSED                                                    [ 87%]
tests/test_papers.py::TestAddConflict::test_add_miss_doi_merge PASSED                                                         [ 88%]
tests/test_papers.py::TestAddConflict::test_add_miss_field_fails PASSED                                                       [ 89%]
tests/test_papers.py::TestAddConflict::test_add_miss_merge PASSED                                                             [ 90%]
tests/test_papers.py::TestAddConflict::test_add_miss_titauthor_merge PASSED                                                   [ 91%]
tests/test_papers.py::TestAddConflict::test_add_same PASSED                                                                   [ 92%]
tests/test_papers.py::TestAddConflict::test_add_same_but_file PASSED                                                          [ 93%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_fails PASSED                                                     [ 94%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_interactive PASSED                                               [ 95%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_update PASSED                                                    [ 96%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_fails PASSED                                                         [ 97%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_unchecked PASSED                                                     [ 98%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_update_key PASSED                                                    [100%]

============================================================= FAILURES ==============================================================
____________________________________________________ TestAddDir.test_adddir_pdf _____________________________________________________

self = <test_papers.TestAddDir testMethod=test_adddir_pdf>

    def setUp(self):
        self.pdf1, self.doi, self.key1, self.newkey1, self.year, self.bibtex1, self.file_rename1 = prepare_paper()
        self.pdf2, self.si, self.doi, self.key2, self.newkey2, self.year, self.bibtex2, self.file_rename2 = prepare_paper2()
        self.somedir = tempfile.mktemp(prefix='papers.somedir')
        self.subdir = os.path.join(self.somedir, 'subdir')
        os.makedirs(self.somedir)
        os.makedirs(self.subdir)
        shutil.copy(self.pdf1, self.somedir)
        shutil.copy(self.pdf2, self.subdir)
        self.mybib = tempfile.mktemp(prefix='papers.bib')
>       sp.check_call('papers install --local --no-prompt --bibtex {}'.format(self.mybib), shell=True)

tests/test_papers.py:302: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = ('papers install --local --no-prompt --bibtex /tmp/papers.bib8eszhc3e',), kwargs = {'shell': True}, retcode = 2
cmd = 'papers install --local --no-prompt --bibtex /tmp/papers.bib8eszhc3e'

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.

        The arguments are the same as for the call function.  Example:

        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bib8eszhc3e' returned non-zero exit status 2.

../../../miniconda3/envs/python311/lib/python3.11/subprocess.py:413: CalledProcessError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
usage: papers [-h]
              {status,install,add,check,filecheck,list,doi,fetch,extract,undo,git}
              ...
papers: error: unrecognized arguments: --no-prompt
__________________________________________________ TestAddDir.test_adddir_pdf_cmd ___________________________________________________

self = <test_papers.TestAddDir testMethod=test_adddir_pdf_cmd>

    def setUp(self):
        self.pdf1, self.doi, self.key1, self.newkey1, self.year, self.bibtex1, self.file_rename1 = prepare_paper()
        self.pdf2, self.si, self.doi, self.key2, self.newkey2, self.year, self.bibtex2, self.file_rename2 = prepare_paper2()
        self.somedir = tempfile.mktemp(prefix='papers.somedir')
        self.subdir = os.path.join(self.somedir, 'subdir')
        os.makedirs(self.somedir)
        os.makedirs(self.subdir)
        shutil.copy(self.pdf1, self.somedir)
        shutil.copy(self.pdf2, self.subdir)
        self.mybib = tempfile.mktemp(prefix='papers.bib')
>       sp.check_call('papers install --local --no-prompt --bibtex {}'.format(self.mybib), shell=True)

tests/test_papers.py:302: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = ('papers install --local --no-prompt --bibtex /tmp/papers.bib_o_zoa39',), kwargs = {'shell': True}, retcode = 2
cmd = 'papers install --local --no-prompt --bibtex /tmp/papers.bib_o_zoa39'

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.

        The arguments are the same as for the call function.  Example:

        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bib_o_zoa39' returned non-zero exit status 2.

../../../miniconda3/envs/python311/lib/python3.11/subprocess.py:413: CalledProcessError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
usage: papers [-h]
              {status,install,add,check,filecheck,list,doi,fetch,extract,undo,git}
              ...
papers: error: unrecognized arguments: --no-prompt
====================================================== short test summary info ======================================================
FAILED tests/test_papers.py::TestAddDir::test_adddir_pdf - subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bib8eszhc3e' returned non-zero e...
FAILED tests/test_papers.py::TestAddDir::test_adddir_pdf_cmd - subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bib_o_zoa39' returned non-zero e...
============================================= 2 failed, 91 passed, 2 skipped in 19.02s ==============================================
(python311) → master Work/papers                                                                                            18:38:

This is on python 3.11, on master. Is this a blocker for anything?

perrette commented 1 year ago

To me it suggests that you are using an older version. --no-prompt is a command I have added some time ago (I think before our first exchanges actually), and is not related to the python version. I have been making one commit after another, for the better or worse. I will likely stop for a while now. The latest master branch is on pypi. (by the way I now have 3.11 locally and tests run fine)

perrette commented 1 year ago

(I closed, but feel free to keep writing here or reopen in case I was overconfident in its resolution)

boyanpenkov commented 1 year ago

No problem, no problem -- I'm still at the stage of making sure I read and understand what's going on. However, I did pull the revised master, and actually the test success rate went down:

(python311) → master Work/papers pytest -vv .                                                                               18:48:36
======================================================== test session starts ========================================================
platform linux -- Python 3.11.2, pytest-7.3.1, pluggy-1.0.0 -- /home/boyan/boyanshouse/miniconda3/envs/python311/bin/python3.11
cachedir: .pytest_cache
rootdir: /home/boyan/boyanshouse/Vazhno/Work/papers
plugins: anyio-3.6.2
collected 103 items                                                                                                                 

tests/test_papers.py::TestBibtexFileEntry::test_format_file PASSED                                                            [  0%]
tests/test_papers.py::TestBibtexFileEntry::test_format_files PASSED                                                           [  1%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_file PASSED                                                             [  2%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_files PASSED                                                            [  3%]
tests/test_papers.py::TestSimple::test_doi PASSED                                                                             [  4%]
tests/test_papers.py::TestSimple::test_fetch PASSED                                                                           [  5%]
tests/test_papers.py::TestSimple::test_fetch_scholar PASSED                                                                   [  6%]
tests/test_papers.py::TestInstall::test_local_install PASSED                                                                  [  7%]
tests/test_papers.py::TestAdd::test_add PASSED                                                                                [  8%]
tests/test_papers.py::TestAdd::test_add_rename PASSED                                                                         [  9%]
tests/test_papers.py::TestAdd::test_add_rename_copy PASSED                                                                    [ 10%]
tests/test_papers.py::TestAdd::test_fails_without_install PASSED                                                              [ 11%]
tests/test_papers.py::TestAdd2::test_add PASSED                                                                               [ 12%]
tests/test_papers.py::TestAdd2::test_add_attachment PASSED                                                                    [ 13%]
tests/test_papers.py::TestAdd2::test_add_rename PASSED                                                                        [ 14%]
tests/test_papers.py::TestAdd2::test_add_rename_copy PASSED                                                                   [ 15%]
tests/test_papers.py::TestAdd2::test_fails_without_install PASSED                                                             [ 16%]
tests/test_papers.py::TestAddBib::test_addbib PASSED                                                                          [ 17%]
tests/test_papers.py::TestAddDir::test_adddir_pdf FAILED                                                                      [ 18%]
tests/test_papers.py::TestAddDir::test_adddir_pdf_cmd FAILED                                                                  [ 19%]
tests/test_papers.py::TestDuplicatesExact::test_anotherkey PASSED                                                             [ 20%]
tests/test_papers.py::TestDuplicatesExact::test_conflictauthor PASSED                                                         [ 21%]
tests/test_papers.py::TestDuplicatesExact::test_conflictdoi PASSED                                                            [ 22%]
tests/test_papers.py::TestDuplicatesExact::test_conflictyear PASSED                                                           [ 23%]
tests/test_papers.py::TestDuplicatesExact::test_exactsame PASSED                                                              [ 24%]
tests/test_papers.py::TestDuplicatesExact::test_missingdoi PASSED                                                             [ 25%]
tests/test_papers.py::TestDuplicatesExact::test_missingfield PASSED                                                           [ 26%]
tests/test_papers.py::TestDuplicatesExact::test_missingtitauthor PASSED                                                       [ 27%]
tests/test_papers.py::TestDuplicatesGood::test_anotherkey PASSED                                                              [ 28%]
tests/test_papers.py::TestDuplicatesGood::test_conflictauthor PASSED                                                          [ 29%]
tests/test_papers.py::TestDuplicatesGood::test_conflictdoi PASSED                                                             [ 30%]
tests/test_papers.py::TestDuplicatesGood::test_conflictyear PASSED                                                            [ 31%]
tests/test_papers.py::TestDuplicatesGood::test_exactsame PASSED                                                               [ 32%]
tests/test_papers.py::TestDuplicatesGood::test_missingdoi PASSED                                                              [ 33%]
tests/test_papers.py::TestDuplicatesGood::test_missingfield PASSED                                                            [ 33%]
tests/test_papers.py::TestDuplicatesGood::test_missingtitauthor PASSED                                                        [ 34%]
tests/test_papers.py::TestDuplicatesFair::test_anotherkey PASSED                                                              [ 35%]
tests/test_papers.py::TestDuplicatesFair::test_conflictauthor FAILED                                                          [ 36%]
tests/test_papers.py::TestDuplicatesFair::test_conflictdoi PASSED                                                             [ 37%]
tests/test_papers.py::TestDuplicatesFair::test_conflictyear PASSED                                                            [ 38%]
tests/test_papers.py::TestDuplicatesFair::test_exactsame PASSED                                                               [ 39%]
tests/test_papers.py::TestDuplicatesFair::test_missingdoi FAILED                                                              [ 40%]
tests/test_papers.py::TestDuplicatesFair::test_missingfield PASSED                                                            [ 41%]
tests/test_papers.py::TestDuplicatesFair::test_missingtitauthor PASSED                                                        [ 42%]
tests/test_papers.py::TestDuplicatesPartial::test_anotherkey PASSED                                                           [ 43%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictauthor PASSED                                                       [ 44%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictdoi PASSED                                                          [ 45%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictyear PASSED                                                         [ 46%]
tests/test_papers.py::TestDuplicatesPartial::test_exactsame PASSED                                                            [ 47%]
tests/test_papers.py::TestDuplicatesPartial::test_missingdoi PASSED                                                           [ 48%]
tests/test_papers.py::TestDuplicatesPartial::test_missingfield PASSED                                                         [ 49%]
tests/test_papers.py::TestDuplicatesPartial::test_missingtitauthor PASSED                                                     [ 50%]
tests/test_papers.py::TestDuplicates::test_anotherkey PASSED                                                                  [ 51%]
tests/test_papers.py::TestDuplicates::test_conflictauthor FAILED                                                              [ 52%]
tests/test_papers.py::TestDuplicates::test_conflictdoi FAILED                                                                 [ 53%]
tests/test_papers.py::TestDuplicates::test_conflictyear PASSED                                                                [ 54%]
tests/test_papers.py::TestDuplicates::test_exactsame PASSED                                                                   [ 55%]
tests/test_papers.py::TestDuplicates::test_missingdoi PASSED                                                                  [ 56%]
tests/test_papers.py::TestDuplicates::test_missingfield PASSED                                                                [ 57%]
tests/test_papers.py::TestDuplicates::test_missingtitauthor PASSED                                                            [ 58%]
tests/test_papers.py::TestDuplicatesAdd::test_anotherkey SKIPPED (skip cause does not make sense with add)                    [ 59%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictauthor FAILED                                                           [ 60%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictdoi FAILED                                                              [ 61%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictyear PASSED                                                             [ 62%]
tests/test_papers.py::TestDuplicatesAdd::test_exactsame SKIPPED (skip cause does not make sense with add)                     [ 63%]
tests/test_papers.py::TestDuplicatesAdd::test_missingdoi PASSED                                                               [ 64%]
tests/test_papers.py::TestDuplicatesAdd::test_missingfield PASSED                                                             [ 65%]
tests/test_papers.py::TestDuplicatesAdd::test_missingtitauthor PASSED                                                         [ 66%]
tests/test_papers.py::TestAddResolveDuplicate::test_append PASSED                                                             [ 66%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original PASSED                                     [ 67%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original_but_originalkey PASSED                     [ 68%]
tests/test_papers.py::TestAddResolveDuplicate::test_original_updated_from_conflict PASSED                                     [ 69%]
tests/test_papers.py::TestAddResolveDuplicate::test_overwrite PASSED                                                          [ 70%]
tests/test_papers.py::TestAddResolveDuplicate::test_raises PASSED                                                             [ 71%]
tests/test_papers.py::TestAddResolveDuplicate::test_skip PASSED                                                               [ 72%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_append PASSED                                                      [ 73%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original PASSED                              [ 74%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original_but_originalkey PASSED              [ 75%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_original_updated_from_conflict PASSED                              [ 76%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_overwrite PASSED                                                   [ 77%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_raises PASSED                                                      [ 78%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_skip PASSED                                                        [ 79%]
tests/test_papers.py::TestCheckResolveDuplicate::test_merge PASSED                                                            [ 80%]
tests/test_papers.py::TestCheckResolveDuplicate::test_not_a_duplicate PASSED                                                  [ 81%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_conflict_1 PASSED                                                  [ 82%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_reference_2 PASSED                                                 [ 83%]
tests/test_papers.py::TestCheckResolveDuplicate::test_raises PASSED                                                           [ 84%]
tests/test_papers.py::TestCheckResolveDuplicate::test_skip_check PASSED                                                       [ 85%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_check_raises PASSED                                              [ 86%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_nocheck_raises PASSED                                            [ 87%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_update PASSED                                                    [ 88%]
tests/test_papers.py::TestAddConflict::test_add_miss_doi_merge PASSED                                                         [ 89%]
tests/test_papers.py::TestAddConflict::test_add_miss_field_fails PASSED                                                       [ 90%]
tests/test_papers.py::TestAddConflict::test_add_miss_merge PASSED                                                             [ 91%]
tests/test_papers.py::TestAddConflict::test_add_miss_titauthor_merge PASSED                                                   [ 92%]
tests/test_papers.py::TestAddConflict::test_add_same PASSED                                                                   [ 93%]
tests/test_papers.py::TestAddConflict::test_add_same_but_file PASSED                                                          [ 94%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_fails PASSED                                                     [ 95%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_interactive PASSED                                               [ 96%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_update PASSED                                                    [ 97%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_fails PASSED                                                         [ 98%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_unchecked PASSED                                                     [ 99%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_update_key PASSED                                                    [100%]

============================================================= FAILURES ==============================================================
____________________________________________________ TestAddDir.test_adddir_pdf _____________________________________________________

self = <test_papers.TestAddDir testMethod=test_adddir_pdf>

    def setUp(self):
        self.pdf1, self.doi, self.key1, self.newkey1, self.year, self.bibtex1, self.file_rename1 = prepare_paper()
        self.pdf2, self.si, self.doi, self.key2, self.newkey2, self.year, self.bibtex2, self.file_rename2 = prepare_paper2()
        self.somedir = tempfile.mktemp(prefix='papers.somedir')
        self.subdir = os.path.join(self.somedir, 'subdir')
        os.makedirs(self.somedir)
        os.makedirs(self.subdir)
        shutil.copy(self.pdf1, self.somedir)
        shutil.copy(self.pdf2, self.subdir)
        self.mybib = tempfile.mktemp(prefix='papers.bib')
>       sp.check_call('papers install --local --no-prompt --bibtex {}'.format(self.mybib), shell=True)

tests/test_papers.py:302: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = ('papers install --local --no-prompt --bibtex /tmp/papers.biba38d2ubv',), kwargs = {'shell': True}, retcode = 2
cmd = 'papers install --local --no-prompt --bibtex /tmp/papers.biba38d2ubv'

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.

        The arguments are the same as for the call function.  Example:

        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.biba38d2ubv' returned non-zero exit status 2.

../../../miniconda3/envs/python311/lib/python3.11/subprocess.py:413: CalledProcessError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
usage: papers [-h]
              {status,install,add,check,filecheck,list,doi,fetch,extract,undo,git}
              ...
papers: error: unrecognized arguments: --no-prompt
__________________________________________________ TestAddDir.test_adddir_pdf_cmd ___________________________________________________

self = <test_papers.TestAddDir testMethod=test_adddir_pdf_cmd>

    def setUp(self):
        self.pdf1, self.doi, self.key1, self.newkey1, self.year, self.bibtex1, self.file_rename1 = prepare_paper()
        self.pdf2, self.si, self.doi, self.key2, self.newkey2, self.year, self.bibtex2, self.file_rename2 = prepare_paper2()
        self.somedir = tempfile.mktemp(prefix='papers.somedir')
        self.subdir = os.path.join(self.somedir, 'subdir')
        os.makedirs(self.somedir)
        os.makedirs(self.subdir)
        shutil.copy(self.pdf1, self.somedir)
        shutil.copy(self.pdf2, self.subdir)
        self.mybib = tempfile.mktemp(prefix='papers.bib')
>       sp.check_call('papers install --local --no-prompt --bibtex {}'.format(self.mybib), shell=True)

tests/test_papers.py:302: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = ('papers install --local --no-prompt --bibtex /tmp/papers.bibr90s7y7g',), kwargs = {'shell': True}, retcode = 2
cmd = 'papers install --local --no-prompt --bibtex /tmp/papers.bibr90s7y7g'

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.

        The arguments are the same as for the call function.  Example:

        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bibr90s7y7g' returned non-zero exit status 2.

../../../miniconda3/envs/python311/lib/python3.11/subprocess.py:413: CalledProcessError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
usage: papers [-h]
              {status,install,add,check,filecheck,list,doi,fetch,extract,undo,git}
              ...
papers: error: unrecognized arguments: --no-prompt
______________________________________________ TestDuplicatesFair.test_conflictauthor _______________________________________________

self = <test_papers.TestDuplicatesFair testMethod=test_conflictauthor>

    def test_conflictauthor(self):
>       self.assertTrue(self.isduplicate(self.reference, self.conflictauthor))
E       AssertionError: False is not true

tests/test_papers.py:462: AssertionError
________________________________________________ TestDuplicatesFair.test_missingdoi _________________________________________________

self = <test_papers.TestDuplicatesFair testMethod=test_missingdoi>

    def test_missingdoi(self):
>       self.assertFalse(self.isduplicate(self.reference, self.missingdoi))
E       AssertionError: True is not false

tests/test_papers.py:425: AssertionError
________________________________________________ TestDuplicates.test_conflictauthor _________________________________________________

self = <test_papers.TestDuplicates testMethod=test_conflictauthor>

    def test_conflictauthor(self):
>       self.assertTrue(self.isduplicate(self.reference, self.conflictauthor))
E       AssertionError: False is not true

tests/test_papers.py:462: AssertionError
__________________________________________________ TestDuplicates.test_conflictdoi __________________________________________________

self = <test_papers.TestDuplicates testMethod=test_conflictdoi>

    def test_conflictdoi(self):
>       self.assertTrue(self.isduplicate(self.reference, self.conflictdoi))
E       AssertionError: False is not true

tests/test_papers.py:473: AssertionError
_______________________________________________ TestDuplicatesAdd.test_conflictauthor _______________________________________________

self = <test_papers.TestDuplicatesAdd testMethod=test_conflictauthor>

    def test_conflictauthor(self):
>       self.assertTrue(self.isduplicate(self.reference, self.conflictauthor))
E       AssertionError: False is not true

tests/test_papers.py:462: AssertionError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
INFO:papers:bibtex: /tmp/papers.bibcnigwkxz
INFO:papers:filesdir: /home/boyan/boyanshouse/.local/share/papers/files
DEBUG:papers:check duplicates : TRUE
DEBUG:papers:('10.5194/bg-8-515-2011', 'perrette yool quartly popovanear-ubiquity of ice-edge blooms in the arctic') ?= ('10.5194/bg-8-515-2011', 'someoneelsenear-ubiquity of ice-edge blooms in the arctic')
DEBUG:papers:score: 101, target: 102, similarity: FAIR
DEBUG:papers:not a duplicate
DEBUG:papers:check duplicates : FALSE
INFO:papers:key duplicate: perrette_2011
INFO:papers:update key: Perrette_2011 => Perrette_2011b
INFO:papers:save /tmp/papers.bibcnigwkxz
________________________________________________ TestDuplicatesAdd.test_conflictdoi _________________________________________________

self = <test_papers.TestDuplicatesAdd testMethod=test_conflictdoi>

    def test_conflictdoi(self):
>       self.assertTrue(self.isduplicate(self.reference, self.conflictdoi))
E       AssertionError: False is not true

tests/test_papers.py:473: AssertionError
------------------------------------------------------- Captured stderr call --------------------------------------------------------
INFO:papers:bibtex: /tmp/papers.biba7b55wyi
INFO:papers:filesdir: /home/boyan/boyanshouse/.local/share/papers/files
DEBUG:papers:check duplicates : TRUE
DEBUG:papers:('10.5194/bg-8-515-2011', 'perrette yool quartly popovanear-ubiquity of ice-edge blooms in the arctic') ?= ('10.5194/xxx', 'perrette yool quartly popovanear-ubiquity of ice-edge blooms in the arctic')
DEBUG:papers:score: 101, target: 102, similarity: FAIR
DEBUG:papers:not a duplicate
DEBUG:papers:check duplicates : FALSE
INFO:papers:key duplicate: perrette_2011
INFO:papers:update key: Perrette_2011 => Perrette_2011b
INFO:papers:save /tmp/papers.biba7b55wyi
====================================================== short test summary info ======================================================
FAILED tests/test_papers.py::TestAddDir::test_adddir_pdf - subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.biba38d2ubv' returned non-zero e...
FAILED tests/test_papers.py::TestAddDir::test_adddir_pdf_cmd - subprocess.CalledProcessError: Command 'papers install --local --no-prompt --bibtex /tmp/papers.bibr90s7y7g' returned non-zero e...
FAILED tests/test_papers.py::TestDuplicatesFair::test_conflictauthor - AssertionError: False is not true
FAILED tests/test_papers.py::TestDuplicatesFair::test_missingdoi - AssertionError: True is not false
FAILED tests/test_papers.py::TestDuplicates::test_conflictauthor - AssertionError: False is not true
FAILED tests/test_papers.py::TestDuplicates::test_conflictdoi - AssertionError: False is not true
FAILED tests/test_papers.py::TestDuplicatesAdd::test_conflictauthor - AssertionError: False is not true
FAILED tests/test_papers.py::TestDuplicatesAdd::test_conflictdoi - AssertionError: False is not true
============================================= 8 failed, 93 passed, 2 skipped in 14.43s ==============================================

Will keep poking it -- if it all passes on yours, we'll get to the bottom of this eventually...

perrette commented 1 year ago

That's really weird. The --no-prompt issue does make me think you're mixing up versions. You can try pip install . from the cloned repo. Do you run the test with tox ? It creates isolated environments and does not require the pip install above. I'll be off now.

boyanpenkov commented 1 year ago

This was essentially not an issue; I had neglected to pip install -e papers after cloning.

After doing it, I see 101 passes:

(python311) → master Work/papers pytest -vv .                                                                               19:29:51
======================================================== test session starts ========================================================
platform linux -- Python 3.11.2, pytest-7.3.1, pluggy-1.0.0 -- /home/boyan/boyanshouse/miniconda3/envs/python311/bin/python3.11
cachedir: .pytest_cache
rootdir: /home/boyan/boyanshouse/Vazhno/Work/papers
plugins: anyio-3.6.2
collected 103 items                                                                                                                 

tests/test_papers.py::TestBibtexFileEntry::test_format_file PASSED                                                            [  0%]
tests/test_papers.py::TestBibtexFileEntry::test_format_files PASSED                                                           [  1%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_file PASSED                                                             [  2%]
tests/test_papers.py::TestBibtexFileEntry::test_parse_files PASSED                                                            [  3%]
tests/test_papers.py::TestSimple::test_doi PASSED                                                                             [  4%]
tests/test_papers.py::TestSimple::test_fetch PASSED                                                                           [  5%]
tests/test_papers.py::TestSimple::test_fetch_scholar PASSED                                                                   [  6%]
tests/test_papers.py::TestInstall::test_local_install PASSED                                                                  [  7%]
tests/test_papers.py::TestAdd::test_add PASSED                                                                                [  8%]
tests/test_papers.py::TestAdd::test_add_rename PASSED                                                                         [  9%]
tests/test_papers.py::TestAdd::test_add_rename_copy PASSED                                                                    [ 10%]
tests/test_papers.py::TestAdd::test_fails_without_install PASSED                                                              [ 11%]
tests/test_papers.py::TestAdd2::test_add PASSED                                                                               [ 12%]
tests/test_papers.py::TestAdd2::test_add_attachment PASSED                                                                    [ 13%]
tests/test_papers.py::TestAdd2::test_add_rename PASSED                                                                        [ 14%]
tests/test_papers.py::TestAdd2::test_add_rename_copy PASSED                                                                   [ 15%]
tests/test_papers.py::TestAdd2::test_fails_without_install PASSED                                                             [ 16%]
tests/test_papers.py::TestAddBib::test_addbib PASSED                                                                          [ 17%]
tests/test_papers.py::TestAddDir::test_adddir_pdf PASSED                                                                      [ 18%]
tests/test_papers.py::TestAddDir::test_adddir_pdf_cmd PASSED                                                                  [ 19%]
tests/test_papers.py::TestDuplicatesExact::test_anotherkey PASSED                                                             [ 20%]
tests/test_papers.py::TestDuplicatesExact::test_conflictauthor PASSED                                                         [ 21%]
tests/test_papers.py::TestDuplicatesExact::test_conflictdoi PASSED                                                            [ 22%]
tests/test_papers.py::TestDuplicatesExact::test_conflictyear PASSED                                                           [ 23%]
tests/test_papers.py::TestDuplicatesExact::test_exactsame PASSED                                                              [ 24%]
tests/test_papers.py::TestDuplicatesExact::test_missingdoi PASSED                                                             [ 25%]
tests/test_papers.py::TestDuplicatesExact::test_missingfield PASSED                                                           [ 26%]
tests/test_papers.py::TestDuplicatesExact::test_missingtitauthor PASSED                                                       [ 27%]
tests/test_papers.py::TestDuplicatesGood::test_anotherkey PASSED                                                              [ 28%]
tests/test_papers.py::TestDuplicatesGood::test_conflictauthor PASSED                                                          [ 29%]
tests/test_papers.py::TestDuplicatesGood::test_conflictdoi PASSED                                                             [ 30%]
tests/test_papers.py::TestDuplicatesGood::test_conflictyear PASSED                                                            [ 31%]
tests/test_papers.py::TestDuplicatesGood::test_exactsame PASSED                                                               [ 32%]
tests/test_papers.py::TestDuplicatesGood::test_missingdoi PASSED                                                              [ 33%]
tests/test_papers.py::TestDuplicatesGood::test_missingfield PASSED                                                            [ 33%]
tests/test_papers.py::TestDuplicatesGood::test_missingtitauthor PASSED                                                        [ 34%]
tests/test_papers.py::TestDuplicatesFair::test_anotherkey PASSED                                                              [ 35%]
tests/test_papers.py::TestDuplicatesFair::test_conflictauthor PASSED                                                          [ 36%]
tests/test_papers.py::TestDuplicatesFair::test_conflictdoi PASSED                                                             [ 37%]
tests/test_papers.py::TestDuplicatesFair::test_conflictyear PASSED                                                            [ 38%]
tests/test_papers.py::TestDuplicatesFair::test_exactsame PASSED                                                               [ 39%]
tests/test_papers.py::TestDuplicatesFair::test_missingdoi PASSED                                                              [ 40%]
tests/test_papers.py::TestDuplicatesFair::test_missingfield PASSED                                                            [ 41%]
tests/test_papers.py::TestDuplicatesFair::test_missingtitauthor PASSED                                                        [ 42%]
tests/test_papers.py::TestDuplicatesPartial::test_anotherkey PASSED                                                           [ 43%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictauthor PASSED                                                       [ 44%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictdoi PASSED                                                          [ 45%]
tests/test_papers.py::TestDuplicatesPartial::test_conflictyear PASSED                                                         [ 46%]
tests/test_papers.py::TestDuplicatesPartial::test_exactsame PASSED                                                            [ 47%]
tests/test_papers.py::TestDuplicatesPartial::test_missingdoi PASSED                                                           [ 48%]
tests/test_papers.py::TestDuplicatesPartial::test_missingfield PASSED                                                         [ 49%]
tests/test_papers.py::TestDuplicatesPartial::test_missingtitauthor PASSED                                                     [ 50%]
tests/test_papers.py::TestDuplicates::test_anotherkey PASSED                                                                  [ 51%]
tests/test_papers.py::TestDuplicates::test_conflictauthor PASSED                                                              [ 52%]
tests/test_papers.py::TestDuplicates::test_conflictdoi PASSED                                                                 [ 53%]
tests/test_papers.py::TestDuplicates::test_conflictyear PASSED                                                                [ 54%]
tests/test_papers.py::TestDuplicates::test_exactsame PASSED                                                                   [ 55%]
tests/test_papers.py::TestDuplicates::test_missingdoi PASSED                                                                  [ 56%]
tests/test_papers.py::TestDuplicates::test_missingfield PASSED                                                                [ 57%]
tests/test_papers.py::TestDuplicates::test_missingtitauthor PASSED                                                            [ 58%]
tests/test_papers.py::TestDuplicatesAdd::test_anotherkey SKIPPED (skip cause does not make sense with add)                    [ 59%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictauthor PASSED                                                           [ 60%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictdoi PASSED                                                              [ 61%]
tests/test_papers.py::TestDuplicatesAdd::test_conflictyear PASSED                                                             [ 62%]
tests/test_papers.py::TestDuplicatesAdd::test_exactsame SKIPPED (skip cause does not make sense with add)                     [ 63%]
tests/test_papers.py::TestDuplicatesAdd::test_missingdoi PASSED                                                               [ 64%]
tests/test_papers.py::TestDuplicatesAdd::test_missingfield PASSED                                                             [ 65%]
tests/test_papers.py::TestDuplicatesAdd::test_missingtitauthor PASSED                                                         [ 66%]
tests/test_papers.py::TestAddResolveDuplicate::test_append PASSED                                                             [ 66%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original PASSED                                     [ 67%]
tests/test_papers.py::TestAddResolveDuplicate::test_conflict_updated_from_original_but_originalkey PASSED                     [ 68%]
tests/test_papers.py::TestAddResolveDuplicate::test_original_updated_from_conflict PASSED                                     [ 69%]
tests/test_papers.py::TestAddResolveDuplicate::test_overwrite PASSED                                                          [ 70%]
tests/test_papers.py::TestAddResolveDuplicate::test_raises PASSED                                                             [ 71%]
tests/test_papers.py::TestAddResolveDuplicate::test_skip PASSED                                                               [ 72%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_append PASSED                                                      [ 73%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original PASSED                              [ 74%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_conflict_updated_from_original_but_originalkey PASSED              [ 75%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_original_updated_from_conflict PASSED                              [ 76%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_overwrite PASSED                                                   [ 77%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_raises PASSED                                                      [ 78%]
tests/test_papers.py::TestAddResolveDuplicateCommand::test_skip PASSED                                                        [ 79%]
tests/test_papers.py::TestCheckResolveDuplicate::test_merge PASSED                                                            [ 80%]
tests/test_papers.py::TestCheckResolveDuplicate::test_not_a_duplicate PASSED                                                  [ 81%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_conflict_1 PASSED                                                  [ 82%]
tests/test_papers.py::TestCheckResolveDuplicate::test_pick_reference_2 PASSED                                                 [ 83%]
tests/test_papers.py::TestCheckResolveDuplicate::test_raises PASSED                                                           [ 84%]
tests/test_papers.py::TestCheckResolveDuplicate::test_skip_check PASSED                                                       [ 85%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_check_raises PASSED                                              [ 86%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_nocheck_raises PASSED                                            [ 87%]
tests/test_papers.py::TestAddConflict::test_add_conflict_key_update PASSED                                                    [ 88%]
tests/test_papers.py::TestAddConflict::test_add_miss_doi_merge PASSED                                                         [ 89%]
tests/test_papers.py::TestAddConflict::test_add_miss_field_fails PASSED                                                       [ 90%]
tests/test_papers.py::TestAddConflict::test_add_miss_merge PASSED                                                             [ 91%]
tests/test_papers.py::TestAddConflict::test_add_miss_titauthor_merge PASSED                                                   [ 92%]
tests/test_papers.py::TestAddConflict::test_add_same PASSED                                                                   [ 93%]
tests/test_papers.py::TestAddConflict::test_add_same_but_file PASSED                                                          [ 94%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_fails PASSED                                                     [ 95%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_interactive PASSED                                               [ 96%]
tests/test_papers.py::TestAddConflict::test_add_same_but_key_update PASSED                                                    [ 97%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_fails PASSED                                                         [ 98%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_unchecked PASSED                                                     [ 99%]
tests/test_papers.py::TestAddConflict::test_add_same_doi_update_key PASSED                                                    [100%]

========================================================= warnings summary ==========================================================
tests/test_papers.py::TestAddDir::test_adddir_pdf
  /home/boyan/boyanshouse/Vazhno/Work/papers/papers/filename.py:36: ICUWarning: Install 'pyicu' for better text transliteration.
    _names = [slugify(nm) for nm in _names]

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============================================ 101 passed, 2 skipped, 1 warning in 14.81s =============================================

Sorry, folks...