https://www.gramps-project.org/wiki/api.php?action=feedcontributions&user=Jsherring&feedformat=atomGramps - User contributions [en]2024-03-29T04:49:16ZUser contributionsMediaWiki 1.31.3https://www.gramps-project.org/wiki/index.php?title=Testing_Gramps&diff=77843Testing Gramps2020-05-17T12:28:07Z<p>Jsherring: /* Test Automation */ Corrected my misunderstanding :)</p>
<hr />
<div>=Test Automation=<br />
Since 2016 we have test automation on [https://travis-ci.org/github/gramps-project Travis]. Status of all branches is [https://travis-ci.org/github/gramps-project/gramps/branches here].<br />
<br />
Travis configuration is in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
What tests does Travis run? This is determined by the script line in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
nosetest3 runs all modules or folders named *[Tt]est.<br />
<br />
=Test status=<br />
As of Jan 2015 we don't have a record of tests executed, the platforms and environments they were run upon, and what code they covered. The only indirect evidence is available in open bugs, when people care to fill in these details. :-(<br />
<br />
==Possible improvements==<br />
* Unify running all the tests, in- or out- tree<br />
** Try switching the feature tests and non-automated unit tests in test/ from our runner scripts to [https://docs.python.org/library/unittest.html#test-discovery python native unittest discovery mechanism]. <br />
** We have a stale [https://github.com/gramps-project/gramps/blob/master/gramps/test/regrtest.py gramps/test/regrtest.py] runner, notable for logging init. - should we revive that, or maybe integrate into setup.py test runner?<br />
* [https://wiki.python.org/moin/CodeCoverage Coverage analysis]<br />
* [http://docs.python-guide.org/en/latest/scenarios/ci/ Continuous] test status report, coverage, automatic deployment into win/mac/linux VMs (needs server capacity to be hosted online)(I can dream, can't I?){{bug|8294}}<br />
* Automated regression tests for our GUI. The following links look interesting:<br />
** [https://wiki.python.org/moin/PythonTestingToolsTaxonomy#GUI_Testing_Tools Python Wiki:GUI Testing Tools]<br />
** [http://unpythonic.blogspot.co.il/2007/03/unit-testing-pygtk.html Unit Testing PyGTK]<br />
** [http://ldtp.freedesktop.org/wiki/ Cross Platform GUI Test Automation tool]<br />
<br />
=Tests and frameworks used=<br />
== Manual test plan ==<br />
See [https://github.com/gramps-project/gramps/blob/master/TestPlan.txt TestPlan.txt] in gramps toplevel. (I believe this is only done at a major release).<br />
<br />
== Specialized scripts for testing ==<br />
See more specialized scripts in [https://github.com/gramps-project/gramps/tree/master/test test/], status unknown.<br />
<br />
Contents of [https://github.com/gramps-project/gramps/tree/master/test test/] :<br />
* GrampsLogger/<br />
** ErrorReportAssistant_Test.py<br />
** GtkHandler_Test.py<br />
* LosHawlos_bsddbtest.py<br />
* LosHawlos_dbtest.py<br />
* RunAllTests.py<br />
* dates.sh<br />
* det_ancestor_report.sh<br />
* det_descendant_report.sh<br />
* impex.sh<br />
* runtest.sh<br />
* tools.sh<br />
<br />
=== testing of reports ===<br />
==== test/runtest.sh ====<br />
<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/runtest.sh test/runtest.sh]''' - Report test for Gramps: Generate every report in every format. Runs all possible reports using the report cli interface, based on the [[example.gramps]] database. This test is not fully self-contained, in that it depends on various environment settings, such as your locale, your preferred name display formats, and your report options. Last, but not the least, the verification of the resulting reports is entirely manual.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-runtest.sh found-by-runtest.sh]<br />
<br />
===test/impex.sh===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/impex.sh test/impex.sh]''' - Import/export test for Gramps.<br />
<br />
From the file header:<br />
* Import example XML data and create internal Gramps DB<br />
* Open produced Gramps DB, then<br />
** check data for integrity<br />
** output in all formats<br />
* Check resulting XML for well-formedness and validate it against DTD and RelaxNG schema.<br />
* Import every exported file produced if the format is also supported for import, and run a text summary report.<br />
* Diff each report with the summary of the produced example DB.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-impex.sh found-by-impex.sh]<br />
<br />
== Unit testing ==<br />
=== test/RunAllTests.py ===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/RunAllTests.py test/RunAllTests.py]''' - Testing framework for performing a variety of unittests for Gramps. Runs out-of-tree (not in gramps/) testing code, by looking for any test/*_Test.py files and executing the test suites therein. See the current code in test/*_Test.py for example and python standard unittest docs.<br />
<br />
{{man note|Starting with gramps4.x branch|these tests include non-automated unit tests only. The automated unit tests are all under gramps/.}}<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-RunAllTests.py found-by-RunAllTests.py]<br />
<br />
{{man warn|GtkHandler testing code pops up the Gramps error dialog|but this is actually for testing the error reporting itself. Don't be scared by the dialog, it's expected. Your manual work is required to close the dialogs with the "Cancel" button. The relevant tests still pass (unless there's another bug there)...}}<br />
<br />
=== unit tests in the main tree ===<br />
<br />
See [[Unit Test Quickstart]] for detailed running instructions.<br />
<br />
==== using - python setup.py test ====<br />
python setup.py test<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Test<br />
! Status<br />
! Comments<br />
|-<br />
|gramps/cli/test/cli_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/cli/test/user_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(6 test require [[Unit_Test_Quickstart#Mocking_external_dependencies_with_unittest.mock| mocking]] to run)<br />
|-<br />
|gramps/gen/test/config_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/test/constfunc_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(linux only, skipped elsewhere)<br />
|-<br />
|gramps/gen/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|See #{{bug|7013}} for context<br />
|-<br />
|gramps/gen/datehandler/test/datehandler_test.py<br />
|9<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/cursor_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|2 skipped<br />
|-<br />
|gramps/gen/db/test/db_test.py<br />
|6<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/reference_map_test.py<br />
|5<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/date_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(locale-based, OK for en, fails for some other locales)<br />
|-<br />
|gramps/gen/lib/test/grampstype_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/merge_test.py<br />
|201<br />
|bgcolor="#ff8080"| FAIL<br />
|2 failed skipped ({{bug|7027}}- Bug shows resolved)<br />
|-<br />
|gramps/gen/merge/test/merge_ref_test.py<br />
|53<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/callback_test.py<br />
|10<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/keyword_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/place_test.py<br />
|28<br />
|bgcolor="#ff8080"| FAIL<br />
|4 failures (bug #{{bug|7044}} - Bug shows resolved)<br />
|-<br />
|gramps/gui/logger/test/rotate_handler_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gui/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(requires mocking to run)<br />
|-<br />
|gramps/plugins/export/test/exportvcard_test.py<br />
|28<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importvcard_test.py<br />
|66<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importxml_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importgeneweb_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/test/test/gedread_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/test/test/test_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/webapp/grampsdb/view/png.py<br />
|<br />
|<br />
|<br />
|-<br />
|}<br />
<br />
{{man note|Note from Nick Hall|Some of the merge tests are slow because they actually run Gramps from the command line to import and export files.<br><br>Extra packages and add-ons are required to run some of the tests. From memory, you will need the <br />
* Gramps addons<br />
** CliMerge<br />
** ExportRaw<br />
*and the python packages.<br />
** libxml2<br />
** libxslt<br />
** mocking <br />
}}<br />
<br />
==== semi-interactive ====<br />
<br />
There is also semi-interactive testing via __main__ in some code:<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Status<br />
! Comments<br />
|-<br />
|[https://github.com/gramps-project/gramps/tree/master/gramps/gen/relationship.py#l1889 gramps/gen/relationship.py]<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator<br />
|-<br />
|gramps/gen/db/bsddbtxn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/undoredo.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/write.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/lib/styledtext.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/place.py<br />
|bgcolor="#80ff80"| OK<br />
|Done<br />
|-<br />
|gramps/gen/utils/docgen/odstab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/docgen/csvtab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gui/ddtargets.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/widgets/undoablebuffer.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/dialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/validatedmaskedentry.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/progressdialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/statusbar.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/plugins/lib/libsubstkeyword.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/plugins/rel/rel_*.py<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator plugins<br />
|-<br />
|gramps/plugins/tool/phpgedviewconnector.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|}<br />
<br />
=See also=<br />
* [[Unit Test Quickstart]]<br />
* [[Test_date_handlers#TO_CHECK]]<br />
* [[Gramps_Performance#The_Test_Results]]<br />
* [[Test Imports module]]<br />
<br />
[[Category:Developers/Reference]]<br />
[[Category:Developers/Quality Assurance]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Testing_Gramps&diff=77793Testing Gramps2020-05-16T12:29:59Z<p>Jsherring: /* Test Automation */ mention which tests travis runs</p>
<hr />
<div>=Test Automation=<br />
Since 2016 we have test automation on [https://travis-ci.org/github/gramps-project Travis]. Status of all branches is [https://travis-ci.org/github/gramps-project/gramps/branches here].<br />
<br />
Travis configuration is in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
What tests does Travis run? This is determined by the script line in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
nosetest3 runs all modules or folders named *[Tt]est, and <code>$EXCLUDE gramps</code> excludes unit tests in the gramps/ path (although coverage is calculated form this?), leaving Travis to only run tests in the Gramps git test/ path, including test/RunAllTests.py.<br />
<br />
=Test status=<br />
As of Jan 2015 we don't have a record of tests executed, the platforms and environments they were run upon, and what code they covered. The only indirect evidence is available in open bugs, when people care to fill in these details. :-(<br />
<br />
==Possible improvements==<br />
* Unify running all the tests, in- or out- tree<br />
** Try switching the feature tests and non-automated unit tests in test/ from our runner scripts to [https://docs.python.org/library/unittest.html#test-discovery python native unittest discovery mechanism]. <br />
** We have a stale [https://github.com/gramps-project/gramps/blob/master/gramps/test/regrtest.py gramps/test/regrtest.py] runner, notable for logging init. - should we revive that, or maybe integrate into setup.py test runner?<br />
* [https://wiki.python.org/moin/CodeCoverage Coverage analysis]<br />
* [http://docs.python-guide.org/en/latest/scenarios/ci/ Continuous] test status report, coverage, automatic deployment into win/mac/linux VMs (needs server capacity to be hosted online)(I can dream, can't I?){{bug|8294}}<br />
* Automated regression tests for our GUI. The following links look interesting:<br />
** [https://wiki.python.org/moin/PythonTestingToolsTaxonomy#GUI_Testing_Tools Python Wiki:GUI Testing Tools]<br />
** [http://unpythonic.blogspot.co.il/2007/03/unit-testing-pygtk.html Unit Testing PyGTK]<br />
** [http://ldtp.freedesktop.org/wiki/ Cross Platform GUI Test Automation tool]<br />
<br />
=Tests and frameworks used=<br />
== Manual test plan ==<br />
See [https://github.com/gramps-project/gramps/blob/master/TestPlan.txt TestPlan.txt] in gramps toplevel. (I believe this is only done at a major release).<br />
<br />
== Specialized scripts for testing ==<br />
See more specialized scripts in [https://github.com/gramps-project/gramps/tree/master/test test/], status unknown.<br />
<br />
Contents of [https://github.com/gramps-project/gramps/tree/master/test test/] :<br />
* GrampsLogger/<br />
** ErrorReportAssistant_Test.py<br />
** GtkHandler_Test.py<br />
* LosHawlos_bsddbtest.py<br />
* LosHawlos_dbtest.py<br />
* RunAllTests.py<br />
* dates.sh<br />
* det_ancestor_report.sh<br />
* det_descendant_report.sh<br />
* impex.sh<br />
* runtest.sh<br />
* tools.sh<br />
<br />
=== testing of reports ===<br />
==== test/runtest.sh ====<br />
<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/runtest.sh test/runtest.sh]''' - Report test for Gramps: Generate every report in every format. Runs all possible reports using the report cli interface, based on the [[example.gramps]] database. This test is not fully self-contained, in that it depends on various environment settings, such as your locale, your preferred name display formats, and your report options. Last, but not the least, the verification of the resulting reports is entirely manual.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-runtest.sh found-by-runtest.sh]<br />
<br />
===test/impex.sh===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/impex.sh test/impex.sh]''' - Import/export test for Gramps.<br />
<br />
From the file header:<br />
* Import example XML data and create internal Gramps DB<br />
* Open produced Gramps DB, then<br />
** check data for integrity<br />
** output in all formats<br />
* Check resulting XML for well-formedness and validate it against DTD and RelaxNG schema.<br />
* Import every exported file produced if the format is also supported for import, and run a text summary report.<br />
* Diff each report with the summary of the produced example DB.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-impex.sh found-by-impex.sh]<br />
<br />
== Unit testing ==<br />
=== test/RunAllTests.py ===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/RunAllTests.py test/RunAllTests.py]''' - Testing framework for performing a variety of unittests for Gramps. Runs out-of-tree (not in gramps/) testing code, by looking for any test/*_Test.py files and executing the test suites therein. See the current code in test/*_Test.py for example and python standard unittest docs.<br />
<br />
{{man note|Starting with gramps4.x branch|these tests include non-automated unit tests only. The automated unit tests are all under gramps/.}}<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-RunAllTests.py found-by-RunAllTests.py]<br />
<br />
{{man warn|GtkHandler testing code pops up the Gramps error dialog|but this is actually for testing the error reporting itself. Don't be scared by the dialog, it's expected. Your manual work is required to close the dialogs with the "Cancel" button. The relevant tests still pass (unless there's another bug there)...}}<br />
<br />
=== unit tests in the main tree ===<br />
<br />
See [[Unit Test Quickstart]] for detailed running instructions.<br />
<br />
==== using - python setup.py test ====<br />
python setup.py test<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Test<br />
! Status<br />
! Comments<br />
|-<br />
|gramps/cli/test/cli_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/cli/test/user_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(6 test require [[Unit_Test_Quickstart#Mocking_external_dependencies_with_unittest.mock| mocking]] to run)<br />
|-<br />
|gramps/gen/test/config_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/test/constfunc_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(linux only, skipped elsewhere)<br />
|-<br />
|gramps/gen/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|See #{{bug|7013}} for context<br />
|-<br />
|gramps/gen/datehandler/test/datehandler_test.py<br />
|9<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/cursor_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|2 skipped<br />
|-<br />
|gramps/gen/db/test/db_test.py<br />
|6<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/reference_map_test.py<br />
|5<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/date_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(locale-based, OK for en, fails for some other locales)<br />
|-<br />
|gramps/gen/lib/test/grampstype_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/merge_test.py<br />
|201<br />
|bgcolor="#ff8080"| FAIL<br />
|2 failed skipped ({{bug|7027}}- Bug shows resolved)<br />
|-<br />
|gramps/gen/merge/test/merge_ref_test.py<br />
|53<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/callback_test.py<br />
|10<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/keyword_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/place_test.py<br />
|28<br />
|bgcolor="#ff8080"| FAIL<br />
|4 failures (bug #{{bug|7044}} - Bug shows resolved)<br />
|-<br />
|gramps/gui/logger/test/rotate_handler_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gui/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(requires mocking to run)<br />
|-<br />
|gramps/plugins/export/test/exportvcard_test.py<br />
|28<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importvcard_test.py<br />
|66<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importxml_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importgeneweb_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/test/test/gedread_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/test/test/test_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/webapp/grampsdb/view/png.py<br />
|<br />
|<br />
|<br />
|-<br />
|}<br />
<br />
{{man note|Note from Nick Hall|Some of the merge tests are slow because they actually run Gramps from the command line to import and export files.<br><br>Extra packages and add-ons are required to run some of the tests. From memory, you will need the <br />
* Gramps addons<br />
** CliMerge<br />
** ExportRaw<br />
*and the python packages.<br />
** libxml2<br />
** libxslt<br />
** mocking <br />
}}<br />
<br />
==== semi-interactive ====<br />
<br />
There is also semi-interactive testing via __main__ in some code:<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Status<br />
! Comments<br />
|-<br />
|[https://github.com/gramps-project/gramps/tree/master/gramps/gen/relationship.py#l1889 gramps/gen/relationship.py]<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator<br />
|-<br />
|gramps/gen/db/bsddbtxn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/undoredo.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/write.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/lib/styledtext.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/place.py<br />
|bgcolor="#80ff80"| OK<br />
|Done<br />
|-<br />
|gramps/gen/utils/docgen/odstab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/docgen/csvtab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gui/ddtargets.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/widgets/undoablebuffer.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/dialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/validatedmaskedentry.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/progressdialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/statusbar.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/plugins/lib/libsubstkeyword.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/plugins/rel/rel_*.py<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator plugins<br />
|-<br />
|gramps/plugins/tool/phpgedviewconnector.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|}<br />
<br />
=See also=<br />
* [[Unit Test Quickstart]]<br />
* [[Test_date_handlers#TO_CHECK]]<br />
* [[Gramps_Performance#The_Test_Results]]<br />
* [[Test Imports module]]<br />
<br />
[[Category:Developers/Reference]]<br />
[[Category:Developers/Quality Assurance]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Testing_Gramps&diff=77790Testing Gramps2020-05-16T05:10:43Z<p>Jsherring: /* Test Automation */ typo</p>
<hr />
<div>=Test Automation=<br />
Since 2016 we have have test automation on [https://travis-ci.org/github/gramps-project Travis]. Status of all branches is [https://travis-ci.org/github/gramps-project/gramps/branches here].<br />
<br />
Travis configuration is in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
What tests does Travis run? This is determined by the script line in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
=Test status=<br />
As of Jan 2015 we don't have a record of tests executed, the platforms and environments they were run upon, and what code they covered. The only indirect evidence is available in open bugs, when people care to fill in these details. :-(<br />
<br />
==Possible improvements==<br />
* Unify running all the tests, in- or out- tree<br />
** Try switching the feature tests and non-automated unit tests in test/ from our runner scripts to [https://docs.python.org/library/unittest.html#test-discovery python native unittest discovery mechanism]. <br />
** We have a stale [https://github.com/gramps-project/gramps/blob/master/gramps/test/regrtest.py gramps/test/regrtest.py] runner, notable for logging init. - should we revive that, or maybe integrate into setup.py test runner?<br />
* [https://wiki.python.org/moin/CodeCoverage Coverage analysis]<br />
* [http://docs.python-guide.org/en/latest/scenarios/ci/ Continuous] test status report, coverage, automatic deployment into win/mac/linux VMs (needs server capacity to be hosted online)(I can dream, can't I?){{bug|8294}}<br />
* Automated regression tests for our GUI. The following links look interesting:<br />
** [https://wiki.python.org/moin/PythonTestingToolsTaxonomy#GUI_Testing_Tools Python Wiki:GUI Testing Tools]<br />
** [http://unpythonic.blogspot.co.il/2007/03/unit-testing-pygtk.html Unit Testing PyGTK]<br />
** [http://ldtp.freedesktop.org/wiki/ Cross Platform GUI Test Automation tool]<br />
<br />
=Tests and frameworks used=<br />
== Manual test plan ==<br />
See [https://github.com/gramps-project/gramps/blob/master/TestPlan.txt TestPlan.txt] in gramps toplevel. (I believe this is only done at a major release).<br />
<br />
== Specialized scripts for testing ==<br />
See more specialized scripts in [https://github.com/gramps-project/gramps/tree/master/test test/], status unknown.<br />
<br />
Contents of [https://github.com/gramps-project/gramps/tree/master/test test/] :<br />
* GrampsLogger/<br />
** ErrorReportAssistant_Test.py<br />
** GtkHandler_Test.py<br />
* LosHawlos_bsddbtest.py<br />
* LosHawlos_dbtest.py<br />
* RunAllTests.py<br />
* dates.sh<br />
* det_ancestor_report.sh<br />
* det_descendant_report.sh<br />
* impex.sh<br />
* runtest.sh<br />
* tools.sh<br />
<br />
=== testing of reports ===<br />
==== test/runtest.sh ====<br />
<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/runtest.sh test/runtest.sh]''' - Report test for Gramps: Generate every report in every format. Runs all possible reports using the report cli interface, based on the [[example.gramps]] database. This test is not fully self-contained, in that it depends on various environment settings, such as your locale, your preferred name display formats, and your report options. Last, but not the least, the verification of the resulting reports is entirely manual.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-runtest.sh found-by-runtest.sh]<br />
<br />
===test/impex.sh===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/impex.sh test/impex.sh]''' - Import/export test for Gramps.<br />
<br />
From the file header:<br />
* Import example XML data and create internal Gramps DB<br />
* Open produced Gramps DB, then<br />
** check data for integrity<br />
** output in all formats<br />
* Check resulting XML for well-formedness and validate it against DTD and RelaxNG schema.<br />
* Import every exported file produced if the format is also supported for import, and run a text summary report.<br />
* Diff each report with the summary of the produced example DB.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-impex.sh found-by-impex.sh]<br />
<br />
== Unit testing ==<br />
=== test/RunAllTests.py ===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/RunAllTests.py test/RunAllTests.py]''' - Testing framework for performing a variety of unittests for Gramps. Runs out-of-tree (not in gramps/) testing code, by looking for any test/*_Test.py files and executing the test suites therein. See the current code in test/*_Test.py for example and python standard unittest docs.<br />
<br />
{{man note|Starting with gramps4.x branch|these tests include non-automated unit tests only. The automated unit tests are all under gramps/.}}<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-RunAllTests.py found-by-RunAllTests.py]<br />
<br />
{{man warn|GtkHandler testing code pops up the Gramps error dialog|but this is actually for testing the error reporting itself. Don't be scared by the dialog, it's expected. Your manual work is required to close the dialogs with the "Cancel" button. The relevant tests still pass (unless there's another bug there)...}}<br />
<br />
=== unit tests in the main tree ===<br />
<br />
See [[Unit Test Quickstart]] for detailed running instructions.<br />
<br />
==== using - python setup.py test ====<br />
python setup.py test<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Test<br />
! Status<br />
! Comments<br />
|-<br />
|gramps/cli/test/cli_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/cli/test/user_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(6 test require [[Unit_Test_Quickstart#Mocking_external_dependencies_with_unittest.mock| mocking]] to run)<br />
|-<br />
|gramps/gen/test/config_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/test/constfunc_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(linux only, skipped elsewhere)<br />
|-<br />
|gramps/gen/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|See #{{bug|7013}} for context<br />
|-<br />
|gramps/gen/datehandler/test/datehandler_test.py<br />
|9<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/cursor_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|2 skipped<br />
|-<br />
|gramps/gen/db/test/db_test.py<br />
|6<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/reference_map_test.py<br />
|5<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/date_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(locale-based, OK for en, fails for some other locales)<br />
|-<br />
|gramps/gen/lib/test/grampstype_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/merge_test.py<br />
|201<br />
|bgcolor="#ff8080"| FAIL<br />
|2 failed skipped ({{bug|7027}}- Bug shows resolved)<br />
|-<br />
|gramps/gen/merge/test/merge_ref_test.py<br />
|53<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/callback_test.py<br />
|10<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/keyword_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/place_test.py<br />
|28<br />
|bgcolor="#ff8080"| FAIL<br />
|4 failures (bug #{{bug|7044}} - Bug shows resolved)<br />
|-<br />
|gramps/gui/logger/test/rotate_handler_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gui/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(requires mocking to run)<br />
|-<br />
|gramps/plugins/export/test/exportvcard_test.py<br />
|28<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importvcard_test.py<br />
|66<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importxml_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importgeneweb_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/test/test/gedread_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/test/test/test_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/webapp/grampsdb/view/png.py<br />
|<br />
|<br />
|<br />
|-<br />
|}<br />
<br />
{{man note|Note from Nick Hall|Some of the merge tests are slow because they actually run Gramps from the command line to import and export files.<br><br>Extra packages and add-ons are required to run some of the tests. From memory, you will need the <br />
* Gramps addons<br />
** CliMerge<br />
** ExportRaw<br />
*and the python packages.<br />
** libxml2<br />
** libxslt<br />
** mocking <br />
}}<br />
<br />
==== semi-interactive ====<br />
<br />
There is also semi-interactive testing via __main__ in some code:<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Status<br />
! Comments<br />
|-<br />
|[https://github.com/gramps-project/gramps/tree/master/gramps/gen/relationship.py#l1889 gramps/gen/relationship.py]<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator<br />
|-<br />
|gramps/gen/db/bsddbtxn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/undoredo.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/write.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/lib/styledtext.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/place.py<br />
|bgcolor="#80ff80"| OK<br />
|Done<br />
|-<br />
|gramps/gen/utils/docgen/odstab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/docgen/csvtab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gui/ddtargets.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/widgets/undoablebuffer.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/dialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/validatedmaskedentry.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/progressdialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/statusbar.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/plugins/lib/libsubstkeyword.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/plugins/rel/rel_*.py<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator plugins<br />
|-<br />
|gramps/plugins/tool/phpgedviewconnector.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|}<br />
<br />
=See also=<br />
* [[Unit Test Quickstart]]<br />
* [[Test_date_handlers#TO_CHECK]]<br />
* [[Gramps_Performance#The_Test_Results]]<br />
* [[Test Imports module]]<br />
<br />
[[Category:Developers/Reference]]<br />
[[Category:Developers/Quality Assurance]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Testing_Gramps&diff=77789Testing Gramps2020-05-16T05:06:17Z<p>Jsherring: Mention and link Travis</p>
<hr />
<div>=Test Automation=<br />
Since 2016 we have have test automation on [https://travis-ci.org/github/gramps-project Travis]. Status of all branhes is [https://travis-ci.org/github/gramps-project/gramps/branches here].<br />
<br />
Travis configuration is in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
What tests does Travis run? This is determined by the script line in [https://github.com/gramps-project/gramps/blob/master/.travis.yml .travis.yml].<br />
<br />
<br />
<br />
=Test status=<br />
As of Jan 2015 we don't have a record of tests executed, the platforms and environments they were run upon, and what code they covered. The only indirect evidence is available in open bugs, when people care to fill in these details. :-(<br />
<br />
==Possible improvements==<br />
* Unify running all the tests, in- or out- tree<br />
** Try switching the feature tests and non-automated unit tests in test/ from our runner scripts to [https://docs.python.org/library/unittest.html#test-discovery python native unittest discovery mechanism]. <br />
** We have a stale [https://github.com/gramps-project/gramps/blob/master/gramps/test/regrtest.py gramps/test/regrtest.py] runner, notable for logging init. - should we revive that, or maybe integrate into setup.py test runner?<br />
* [https://wiki.python.org/moin/CodeCoverage Coverage analysis]<br />
* [http://docs.python-guide.org/en/latest/scenarios/ci/ Continuous] test status report, coverage, automatic deployment into win/mac/linux VMs (needs server capacity to be hosted online)(I can dream, can't I?){{bug|8294}}<br />
* Automated regression tests for our GUI. The following links look interesting:<br />
** [https://wiki.python.org/moin/PythonTestingToolsTaxonomy#GUI_Testing_Tools Python Wiki:GUI Testing Tools]<br />
** [http://unpythonic.blogspot.co.il/2007/03/unit-testing-pygtk.html Unit Testing PyGTK]<br />
** [http://ldtp.freedesktop.org/wiki/ Cross Platform GUI Test Automation tool]<br />
<br />
=Tests and frameworks used=<br />
== Manual test plan ==<br />
See [https://github.com/gramps-project/gramps/blob/master/TestPlan.txt TestPlan.txt] in gramps toplevel. (I believe this is only done at a major release).<br />
<br />
== Specialized scripts for testing ==<br />
See more specialized scripts in [https://github.com/gramps-project/gramps/tree/master/test test/], status unknown.<br />
<br />
Contents of [https://github.com/gramps-project/gramps/tree/master/test test/] :<br />
* GrampsLogger/<br />
** ErrorReportAssistant_Test.py<br />
** GtkHandler_Test.py<br />
* LosHawlos_bsddbtest.py<br />
* LosHawlos_dbtest.py<br />
* RunAllTests.py<br />
* dates.sh<br />
* det_ancestor_report.sh<br />
* det_descendant_report.sh<br />
* impex.sh<br />
* runtest.sh<br />
* tools.sh<br />
<br />
=== testing of reports ===<br />
==== test/runtest.sh ====<br />
<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/runtest.sh test/runtest.sh]''' - Report test for Gramps: Generate every report in every format. Runs all possible reports using the report cli interface, based on the [[example.gramps]] database. This test is not fully self-contained, in that it depends on various environment settings, such as your locale, your preferred name display formats, and your report options. Last, but not the least, the verification of the resulting reports is entirely manual.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-runtest.sh found-by-runtest.sh]<br />
<br />
===test/impex.sh===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/impex.sh test/impex.sh]''' - Import/export test for Gramps.<br />
<br />
From the file header:<br />
* Import example XML data and create internal Gramps DB<br />
* Open produced Gramps DB, then<br />
** check data for integrity<br />
** output in all formats<br />
* Check resulting XML for well-formedness and validate it against DTD and RelaxNG schema.<br />
* Import every exported file produced if the format is also supported for import, and run a text summary report.<br />
* Diff each report with the summary of the produced example DB.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-impex.sh found-by-impex.sh]<br />
<br />
== Unit testing ==<br />
=== test/RunAllTests.py ===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/RunAllTests.py test/RunAllTests.py]''' - Testing framework for performing a variety of unittests for Gramps. Runs out-of-tree (not in gramps/) testing code, by looking for any test/*_Test.py files and executing the test suites therein. See the current code in test/*_Test.py for example and python standard unittest docs.<br />
<br />
{{man note|Starting with gramps4.x branch|these tests include non-automated unit tests only. The automated unit tests are all under gramps/.}}<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-RunAllTests.py found-by-RunAllTests.py]<br />
<br />
{{man warn|GtkHandler testing code pops up the Gramps error dialog|but this is actually for testing the error reporting itself. Don't be scared by the dialog, it's expected. Your manual work is required to close the dialogs with the "Cancel" button. The relevant tests still pass (unless there's another bug there)...}}<br />
<br />
=== unit tests in the main tree ===<br />
<br />
See [[Unit Test Quickstart]] for detailed running instructions.<br />
<br />
==== using - python setup.py test ====<br />
python setup.py test<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Test<br />
! Status<br />
! Comments<br />
|-<br />
|gramps/cli/test/cli_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/cli/test/user_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(6 test require [[Unit_Test_Quickstart#Mocking_external_dependencies_with_unittest.mock| mocking]] to run)<br />
|-<br />
|gramps/gen/test/config_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/test/constfunc_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(linux only, skipped elsewhere)<br />
|-<br />
|gramps/gen/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|See #{{bug|7013}} for context<br />
|-<br />
|gramps/gen/datehandler/test/datehandler_test.py<br />
|9<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/cursor_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|2 skipped<br />
|-<br />
|gramps/gen/db/test/db_test.py<br />
|6<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/reference_map_test.py<br />
|5<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/date_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(locale-based, OK for en, fails for some other locales)<br />
|-<br />
|gramps/gen/lib/test/grampstype_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/merge_test.py<br />
|201<br />
|bgcolor="#ff8080"| FAIL<br />
|2 failed skipped ({{bug|7027}}- Bug shows resolved)<br />
|-<br />
|gramps/gen/merge/test/merge_ref_test.py<br />
|53<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/callback_test.py<br />
|10<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/keyword_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/place_test.py<br />
|28<br />
|bgcolor="#ff8080"| FAIL<br />
|4 failures (bug #{{bug|7044}} - Bug shows resolved)<br />
|-<br />
|gramps/gui/logger/test/rotate_handler_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gui/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(requires mocking to run)<br />
|-<br />
|gramps/plugins/export/test/exportvcard_test.py<br />
|28<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importvcard_test.py<br />
|66<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importxml_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importgeneweb_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/test/test/gedread_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/test/test/test_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/webapp/grampsdb/view/png.py<br />
|<br />
|<br />
|<br />
|-<br />
|}<br />
<br />
{{man note|Note from Nick Hall|Some of the merge tests are slow because they actually run Gramps from the command line to import and export files.<br><br>Extra packages and add-ons are required to run some of the tests. From memory, you will need the <br />
* Gramps addons<br />
** CliMerge<br />
** ExportRaw<br />
*and the python packages.<br />
** libxml2<br />
** libxslt<br />
** mocking <br />
}}<br />
<br />
==== semi-interactive ====<br />
<br />
There is also semi-interactive testing via __main__ in some code:<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Status<br />
! Comments<br />
|-<br />
|[https://github.com/gramps-project/gramps/tree/master/gramps/gen/relationship.py#l1889 gramps/gen/relationship.py]<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator<br />
|-<br />
|gramps/gen/db/bsddbtxn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/undoredo.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/write.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/lib/styledtext.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/place.py<br />
|bgcolor="#80ff80"| OK<br />
|Done<br />
|-<br />
|gramps/gen/utils/docgen/odstab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/docgen/csvtab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gui/ddtargets.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/widgets/undoablebuffer.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/dialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/validatedmaskedentry.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/progressdialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/statusbar.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/plugins/lib/libsubstkeyword.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/plugins/rel/rel_*.py<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator plugins<br />
|-<br />
|gramps/plugins/tool/phpgedviewconnector.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|}<br />
<br />
=See also=<br />
* [[Unit Test Quickstart]]<br />
* [[Test_date_handlers#TO_CHECK]]<br />
* [[Gramps_Performance#The_Test_Results]]<br />
* [[Test Imports module]]<br />
<br />
[[Category:Developers/Reference]]<br />
[[Category:Developers/Quality Assurance]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Testing_Gramps&diff=77775Testing Gramps2020-05-16T03:10:47Z<p>Jsherring: update sourceforge links to github</p>
<hr />
<div>=Test status=<br />
As of Jan 2015 we don't have a record of tests executed, the platforms and environments they were run upon, and what code they covered. The only indirect evidence is available in open bugs, when people care to fill in these details. :-(<br />
<br />
==Possible improvements==<br />
* Unify running all the tests, in- or out- tree<br />
** Try switching the feature tests and non-automated unit tests in test/ from our runner scripts to [https://docs.python.org/library/unittest.html#test-discovery python native unittest discovery mechanism]. <br />
** We have a stale [https://github.com/gramps-project/gramps/blob/master/gramps/test/regrtest.py gramps/test/regrtest.py] runner, notable for logging init. - should we revive that, or maybe integrate into setup.py test runner?<br />
* [https://wiki.python.org/moin/CodeCoverage Coverage analysis]<br />
* [http://docs.python-guide.org/en/latest/scenarios/ci/ Continuous] test status report, coverage, automatic deployment into win/mac/linux VMs (needs server capacity to be hosted online)(I can dream, can't I?){{bug|8294}}<br />
* Automated regression tests for our GUI. The following links look interesting:<br />
** [https://wiki.python.org/moin/PythonTestingToolsTaxonomy#GUI_Testing_Tools Python Wiki:GUI Testing Tools]<br />
** [http://unpythonic.blogspot.co.il/2007/03/unit-testing-pygtk.html Unit Testing PyGTK]<br />
** [http://ldtp.freedesktop.org/wiki/ Cross Platform GUI Test Automation tool]<br />
<br />
=Tests and frameworks used=<br />
== Manual test plan ==<br />
See [https://github.com/gramps-project/gramps/blob/master/TestPlan.txt TestPlan.txt] in gramps toplevel. (I believe this is only done at a major release (like Gramps version 4.0.0)).<br />
<br />
== Specialized scripts for testing ==<br />
See more specialized scripts in [https://github.com/gramps-project/gramps/tree/master/test test/], status unknown.<br />
<br />
Contents of [https://github.com/gramps-project/gramps/tree/master/test test/] :<br />
* GrampsLogger/<br />
** ErrorReportAssistant_Test.py<br />
** GtkHandler_Test.py<br />
* LosHawlos_bsddbtest.py<br />
* LosHawlos_dbtest.py<br />
* RunAllTests.py<br />
* dates.sh<br />
* det_ancestor_report.sh<br />
* det_descendant_report.sh<br />
* impex.sh<br />
* runtest.sh<br />
* tools.sh<br />
<br />
=== testing of reports ===<br />
==== test/runtest.sh ====<br />
<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/runtest.sh test/runtest.sh]''' - Report test for Gramps: Generate every report in every format. Runs all possible reports using the report cli interface, based on the [[example.gramps]] database. This test is not fully self-contained, in that it depends on various environment settings, such as your locale, your preferred name display formats, and your report options. Last, but not the least, the verification of the resulting reports is entirely manual.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-runtest.sh found-by-runtest.sh]<br />
<br />
===test/impex.sh===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/impex.sh test/impex.sh]''' - Import/export test for Gramps.<br />
<br />
From the file header:<br />
* Import example XML data and create internal Gramps DB<br />
* Open produced Gramps DB, then<br />
** check data for integrity<br />
** output in all formats<br />
* Check resulting XML for well-formedness and validate it against DTD and RelaxNG schema.<br />
* Import every exported file produced if the format is also supported for import, and run a text summary report.<br />
* Diff each report with the summary of the produced example DB.<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-impex.sh found-by-impex.sh]<br />
<br />
== Unit testing ==<br />
=== test/RunAllTests.py ===<br />
'''[https://github.com/gramps-project/gramps/blob/master/test/RunAllTests.py test/RunAllTests.py]''' - Testing framework for performing a variety of unittests for Gramps. Runs out-of-tree (not in gramps/) testing code, by looking for any test/*_Test.py files and executing the test suites therein. See the current code in test/*_Test.py for example and python standard unittest docs.<br />
<br />
{{man note|Starting with gramps4.x branch|these tests include non-automated unit tests only. The automated unit tests are all under gramps/.}}<br />
<br />
Bugs tagged as [http://www.gramps-project.org/bugs/search.php?tag_string=found-by-RunAllTests.py found-by-RunAllTests.py]<br />
<br />
{{man warn|GtkHandler testing code pops up the Gramps error dialog|but this is actually for testing the error reporting itself. Don't be scared by the dialog, it's expected. Your manual work is required to close the dialogs with the "Cancel" button. The relevant tests still pass (unless there's another bug there)...}}<br />
<br />
=== unit tests in the main tree ===<br />
<br />
See [[Unit Test Quickstart]] for detailed running instructions.<br />
<br />
==== using - python setup.py test ====<br />
python setup.py test<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Test<br />
! Status<br />
! Comments<br />
|-<br />
|gramps/cli/test/cli_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/cli/test/user_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(6 test require [[Unit_Test_Quickstart#Mocking_external_dependencies_with_unittest.mock| mocking]] to run)<br />
|-<br />
|gramps/gen/test/config_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/test/constfunc_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(linux only, skipped elsewhere)<br />
|-<br />
|gramps/gen/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|See #{{bug|7013}} for context<br />
|-<br />
|gramps/gen/datehandler/test/datehandler_test.py<br />
|9<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/cursor_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|2 skipped<br />
|-<br />
|gramps/gen/db/test/db_test.py<br />
|6<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/db/test/reference_map_test.py<br />
|5<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/date_test.py<br />
|8<br />
|bgcolor="#80ff80"| OK<br />
|(locale-based, OK for en, fails for some other locales)<br />
|-<br />
|gramps/gen/lib/test/grampstype_test.py<br />
|3<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/lib/test/merge_test.py<br />
|201<br />
|bgcolor="#ff8080"| FAIL<br />
|2 failed skipped ({{bug|7027}}- Bug shows resolved)<br />
|-<br />
|gramps/gen/merge/test/merge_ref_test.py<br />
|53<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/callback_test.py<br />
|10<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/keyword_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gen/utils/test/place_test.py<br />
|28<br />
|bgcolor="#ff8080"| FAIL<br />
|4 failures (bug #{{bug|7044}} - Bug shows resolved)<br />
|-<br />
|gramps/gui/logger/test/rotate_handler_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/gui/test/user_test.py<br />
|1<br />
|bgcolor="#80ff80"| OK<br />
|(requires mocking to run)<br />
|-<br />
|gramps/plugins/export/test/exportvcard_test.py<br />
|28<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importvcard_test.py<br />
|66<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importxml_test.py<br />
|4<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/plugins/importer/test/importgeneweb_test.py<br />
|2<br />
|bgcolor="#80ff80"| OK<br />
|<br />
|-<br />
|gramps/test/test/gedread_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/test/test/test_util_test.py<br />
|<br />
|<br />
|No longer required?<br />
|-<br />
|gramps/webapp/grampsdb/view/png.py<br />
|<br />
|<br />
|<br />
|-<br />
|}<br />
<br />
{{man note|Note from Nick Hall|Some of the merge tests are slow because they actually run Gramps from the command line to import and export files.<br><br>Extra packages and add-ons are required to run some of the tests. From memory, you will need the CliMerge and ExportRaw add-ons, and the libxml2, libxslt and mocking python packages. Some of these may not be available for python3 yet.}}<br />
<br />
==== semi-interactive ====<br />
<br />
There is also semi-interactive testing via __main__ in some code:<br />
<br />
{| class="wikitable sortable"<br />
! File<br />
! Status<br />
! Comments<br />
|-<br />
|[https://github.com/gramps-project/gramps/tree/master/gramps/gen/relationship.py#l1889 gramps/gen/relationship.py]<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator<br />
|-<br />
|gramps/gen/db/bsddbtxn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/undoredo.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/write.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/db/txn.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/lib/styledtext.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/place.py<br />
|bgcolor="#80ff80"| OK<br />
|Done<br />
|-<br />
|gramps/gen/utils/docgen/odstab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gen/utils/docgen/csvtab.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/gui/ddtargets.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/widgets/undoablebuffer.py<br />
|bgcolor="#ff8080"| To Do<br />
|Not worth running?<br />
|-<br />
|gramps/gui/dialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/validatedmaskedentry.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/progressdialog.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/gui/widgets/statusbar.py<br />
|bgcolor="#ff8080"| To Do<br />
|Interactive<br />
|-<br />
|gramps/plugins/lib/libsubstkeyword.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|gramps/plugins/rel/rel_*.py<br />
|bgcolor="#ff8080"| To Do<br />
|Relationship calculator plugins<br />
|-<br />
|gramps/plugins/tool/phpgedviewconnector.py<br />
|bgcolor="#ff8080"| To Do<br />
|<br />
|-<br />
|}<br />
<br />
=See also=<br />
* [[Unit Test Quickstart]]<br />
* [[Test_date_handlers#TO_CHECK]]<br />
* [[Gramps_Performance#The_Test_Results]]<br />
* [[Test Imports module]]<br />
<br />
[[Category:Developers/Reference]]<br />
[[Category:Developers/Quality Assurance]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Addon:Python_Shell_Gramplet&diff=67314Addon:Python Shell Gramplet2018-01-04T14:01:03Z<p>Jsherring: minor typo on my last edit</p>
<hr />
<div>{{Third-party plugin}}<br />
<br />
[[File:PythonGramplet-interactive-shell-example-50.png|thumb|right|450px|Python Gramplet - Interactive shell example output]]<br />
<br />
The Python Gramplet brings up an interactive Python Shell for interpreting python expressions. <br />
<br />
==Options==<br />
You can type most any (single line) Python expression. <br />
<br />
In addition, the environment has been populated with some useful variables, including <br />
*'''self''' - (this Python gramplet)<br />
*'''Date''' - a date object constructor, that can be used for date arithmetic.<br />
*'''db''' - Interact with the Database<br />
*'''dbstate''' - Information about the Database<br />
*'''gc''' - the Python "garbage collector" preloaded with the same flags as the Debug Tool.<br />
*'''uistate''' - Interact with the GUI<br />
<br />
When the Python Gramplet is detached you can select the {{man button|Help}} button to see this page.<br />
<br />
==Examples==<br />
<br />
The '''Date''' entry is a date object constructor, and can be used for date arithmetic. For example, you might be interested in questions like:<br />
<br />
What was the date 56 years before a given date:<br />
<br />
> Date(2007, 12, 31) - 56<br />
1951-12-31<br />
<br />
How old was someone on Sept 3, 1955 who was born on June 7, 1922:<br />
<br />
> Date(1955, 9, 3) - Date(1922, 5, 7)<br />
33 years, 3 months<br />
<br />
When did they turn 21 years old?<br />
<br />
> Date(1922, 5, 7) + 21<br />
1943-05-07<br />
<br />
You can also add years, months, and days:<br />
<br />
> Date(1980) + (0, 0, 25)<br />
1980-01-26<br />
<br />
You can convert one date into another calendar, which returns a new date object:<br />
<br />
> Date(1703, 6, 1).to_calendar("hebrew")<br />
5463-10-17 (Hebrew)<br />
<br />
=== Developers ===<br />
<br />
Another use for this Gramplet is for debugging. This gramplet makes a nice interface to the running Gramps system. You can inspect, and alter the system by entering Python commands. As a simple example, you can:<br />
<br />
> self.clear_text() # clear the text in this window<br />
> self.set_wrap(False) # turn word wrap off<br />
> self.set_wrap(True) # turn word wrap on<br />
<br />
The Python Gramplet also has the Python "garbage collector" preloaded with the same flags as the Debug Tool. To use:<br />
<br />
> gc.collect()<br />
23<br />
> gc.garbage[0]<br />
<cell at 0x9f9089c: function object at 0x9f89dbc><br />
> gc.get_referents(self)<br />
[...]<br />
> gc.get_referrers(self)<br />
[...]<br />
<br />
{{stub}}<br />
You can use the Python Shell to interact with people from your database and test Gramps functions:<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 3.x<br />
| <pre><br />
> person = db.get_person_from_gramps_id("I01284")<br />
> from Utils import probably_alive<br />
> probably_alive(person, db, Date(1776, 7, 4))<br />
</pre><br />
|-<br />
! Gramps 4.x<br />
| <pre><br />
> person = db.get_person_from_gramps_id("I01284")<br />
> from gen.utils.alive import probably_alive<br />
> probably_alive(person, db, Date(1776, 7, 4))<br />
</pre><br />
|}<br />
<br />
You can also interact with the GUI:<br />
<br />
This following returns the Gtk Frame of the first Gramplet in the first column.<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 3.x<br />
| <pre><br />
> uistate.viewmanager.pages<br />
[<DataViews.GrampletView.GrampletView instance at 0xa0bd0ac>, <br />
<DataViews.PersonView.PersonView instance at 0xa8f542c>, <br />
<DataViews.RelationView.RelationshipView instance at 0xa8f562c>, <br />
<DataViews.FamilyList.FamilyListView instance at 0xa8f5f8c>, <br />
<DataViews.PedigreeView.PedigreeView instance at 0xa8fc5cc>, <br />
<DataViews.EventView.EventView instance at 0xa8fc88c>, <br />
<DataViews.SourceView.SourceView instance at 0xa8fcdcc>, <br />
<DataViews.PlaceView.PlaceView instance at 0xa9070ec>, <br />
<DataViews.MediaView.MediaView instance at 0xa9074ac>, <br />
<DataViews.RepositoryView.RepositoryView instance at 0xa9077ac>, <br />
<DataViews.NoteView.NoteView instance at 0xa907d8c>, <br />
<DataViews.GeoView.GeoView instance at 0xa90d0cc>]<br />
> uistate.viewmanager.pages[0]<br />
<DataViews.GrampletView.GrampletView instance at 0xa0bd0ac><br />
> uistate.viewmanager.pages[0].columns[0].get_children()[0].get_children()[0]<br />
</pre><br />
|-<br />
! Gramps 4.x<br />
| <pre><br />
<br />
</pre><br />
|}<br />
<br />
This following returns a reference to a loaded Gramplet object on the Event view - useful when developing Gramplets. Note that the Events view must be navigated first, as main views are lazy loading in Gramps 4.<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 4.x<br />
| <pre><br />
> evtview = uistate.viewmanager.pages[uistate.viewmanager.page_lookup.get((5,0))]<br />
> # list all TabGramplet objects loaded for Events view<br />
> [child.get_title() for child in evtview.bottombar.get_children()]<br />
['Gallery', 'Citations', 'Notes', 'Attributes', 'References', 'Event PlaceTitle Compare Gramplet']<br />
> # get a reference to my custom Gramplet object<br />
> eptcGramplet = evtview.bottombar.get_children()[5].pui<br />
<br />
</pre><br />
|}<br />
<br />
[[Category:Plugins]]<br />
[[Category:Developers/General]]<br />
[[Category:Gramplets]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Addon:Python_Shell_Gramplet&diff=67246Addon:Python Shell Gramplet2018-01-02T21:26:09Z<p>Jsherring: Added example for accessing a Gramplet object in Gramps4</p>
<hr />
<div>{{Third-party plugin}}<br />
<br />
[[File:Python-gramplet-interactive-shell-example-41.png|thumb|right|300px|Python Gramplet - Interactive shell example output]]<br />
<br />
The Python Gramplet brings up an interactive Python Shell for interpreting python expressions. <br />
<br />
==Options==<br />
You can type most any (single line) Python expression. <br />
<br />
In addition, the environment has been populated with some useful variables, including <br />
*'''self''' - (this Python gramplet)<br />
*'''Date''' - a date object constructor, that can be used for date arithmetic.<br />
*'''db''' - Interact with the Database<br />
*'''dbstate''' - Information about the Database<br />
*'''gc''' - the Python "garbage collector" preloaded with the same flags as the Debug Tool.<br />
*'''uistate''' - Interact with the GUI<br />
<br />
When the Python Gramplet is detached you can use select {{man button|Help}} to see this page.<br />
<br />
==Examples==<br />
<br />
The '''Date''' entry is a date object constructor, and can be used for date arithmetic. For example, you might be interested in questions like:<br />
<br />
What was the date 56 years before a given date:<br />
<br />
> Date(2007, 12, 31) - 56<br />
1951-12-31<br />
<br />
How old was someone on Sept 3, 1955 who was born on June 7, 1922:<br />
<br />
> Date(1955, 9, 3) - Date(1922, 5, 7)<br />
33 years, 3 months<br />
<br />
When did they turn 21 years old?<br />
<br />
> Date(1922, 5, 7) + 21<br />
1943-05-07<br />
<br />
You can also add years, months, and days:<br />
<br />
> Date(1980) + (0, 0, 25)<br />
1980-01-26<br />
<br />
You can convert one date into another calendar, which returns a new date object:<br />
<br />
> Date(1703, 6, 1).to_calendar("hebrew")<br />
5463-10-17 (Hebrew)<br />
<br />
=== Developers ===<br />
<br />
Another use for this Gramplet is for debugging. This gramplet makes a nice interface to the running Gramps system. You can inspect, and alter the system by entering Python commands. As a simple example, you can:<br />
<br />
> self.clear_text() # clear the text in this window<br />
> self.set_wrap(False) # turn word wrap off<br />
> self.set_wrap(True) # turn word wrap on<br />
<br />
The Python Gramplet also has the Python "garbage collector" preloaded with the same flags as the Debug Tool. To use:<br />
<br />
> gc.collect()<br />
23<br />
> gc.garbage[0]<br />
<cell at 0x9f9089c: function object at 0x9f89dbc><br />
> gc.get_referents(self)<br />
[...]<br />
> gc.get_referrers(self)<br />
[...]<br />
<br />
{{stub}}<br />
You can use the Python Shell to interact with people from your database and test Gramps functions:<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 3.x<br />
| <pre><br />
> person = db.get_person_from_gramps_id("I01284")<br />
> from Utils import probably_alive<br />
> probably_alive(person, db, Date(1776, 7, 4))<br />
</pre><br />
|-<br />
! Gramps 4.x<br />
| <pre><br />
> person = db.get_person_from_gramps_id("I01284")<br />
> from gen.utils.alive import probably_alive<br />
> probably_alive(person, db, Date(1776, 7, 4))<br />
</pre><br />
|}<br />
<br />
You can also interact with the GUI:<br />
<br />
This following returns the Gtk Frame of the first Gramplet in the first column.<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 3.x<br />
| <pre><br />
> uistate.viewmanager.pages<br />
[<DataViews.GrampletView.GrampletView instance at 0xa0bd0ac>, <br />
<DataViews.PersonView.PersonView instance at 0xa8f542c>, <br />
<DataViews.RelationView.RelationshipView instance at 0xa8f562c>, <br />
<DataViews.FamilyList.FamilyListView instance at 0xa8f5f8c>, <br />
<DataViews.PedigreeView.PedigreeView instance at 0xa8fc5cc>, <br />
<DataViews.EventView.EventView instance at 0xa8fc88c>, <br />
<DataViews.SourceView.SourceView instance at 0xa8fcdcc>, <br />
<DataViews.PlaceView.PlaceView instance at 0xa9070ec>, <br />
<DataViews.MediaView.MediaView instance at 0xa9074ac>, <br />
<DataViews.RepositoryView.RepositoryView instance at 0xa9077ac>, <br />
<DataViews.NoteView.NoteView instance at 0xa907d8c>, <br />
<DataViews.GeoView.GeoView instance at 0xa90d0cc>]<br />
> uistate.viewmanager.pages[0]<br />
<DataViews.GrampletView.GrampletView instance at 0xa0bd0ac><br />
> uistate.viewmanager.pages[0].columns[0].get_children()[0].get_children()[0]<br />
</pre><br />
|-<br />
! Gramps 4.x<br />
| <pre><br />
<br />
</pre><br />
|}<br />
<br />
This following returns a reference to a loaded Gramplet object on the Event view - useful when developing Gramplets. Note that the Events view must be navigated first, as main views are lazy loading in Gramps 4.<br />
<br />
{| border="1" style="border-collapse:collapse"<br />
! Gramps 4.x<br />
| <pre><br />
> evtview = uistate.viewmanager.pages[uistate.viewmanager.page_lookup.get((5,0))]<br />
> # list all TabGramplet objects loaded for Events view<br />
> [child.get_title() for child in evtview.bottombar.get_children()]<br />
['Gallery', 'Citations', 'Notes', 'Attributes', 'References', 'Event PlaceTitle Compare Gramplet']<br />
> get a reference to my custom Gramplet object<br />
> eptcGramplet = evtview.bottombar.get_children()[5].pui<br />
<br />
</pre><br />
|}<br />
<br />
[[Category:Plugins]]<br />
[[Category:Developers/General]]<br />
[[Category:Gramplets]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:Ancestry.com_records_without_citation_(Cambridge_Alumni)&diff=39042Citation examples:Ancestry.com records without citation (Cambridge Alumni)2012-08-29T23:39:33Z<p>Jsherring: /* Repository */</p>
<hr />
<div>Many Ancestry records (eg census) give nice citations, that are easy to copy and paste into Gramps.<br />
<br />
This is an example of a Gramps citation for an Ancestry record without a citation given to us. The important thing is to use sensible values in the Gramps citation Volume/Page text-box that ensure we uniquely identify the record.<br />
<br />
== Event ==<br />
<br />
This is the main Gramps event for this citation, although I will also use the citation for birth and death events.<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Education ||<br />
|- <br />
| Date || 1874-09-24 || <br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || Trinity College, Cambridge, England ||<br />
|- <br />
| Description || Admitted pensioner at Trinity, Cambridge University || This event needs some discription because it is more unusual than our normal census etc records.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
== Source ==<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || Cambridge University Alumni ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
== Repository ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || http://search.ancestry.co.uk/search/db.aspx?dbid=3997&enc=1 || This is not really necessary and is not a standard value, but it is the Ancestry link for this source. This is the Ancestry.com database link, so it is more general than the specific citation).<br />
|}<br />
<br />
== Citation ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Ernest Pemberton. Barnes [post Pemberton-Barnes]; TRINITY 1874 || Ancestry doesn't provide any nice citation information for us so we have to derive it - this seems like sensible detail that should enable any other researcher to find the record from the original source. <br />
|-<br />
| Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|-<br />
| Note || (Type: Transcript)<br />
<br />
Adm. pens. at TRINITY, Sept. 24, 1874. S. of William, of The Hall, Havering, Essex. B. Feb. 12, 1855, at Romford. School, Brighton College (Mr Bigg). Matric. Michs. 1874; B.A. 1879; M.A. 1882. Died Sept. 20, 1920. Brother of Percy P. (1878). (Fox-Davies.)<br />
|<br />
|- <br />
| Data || Key: AncestryLink<br />
Value: http://search.ancestry.co.uk/cgi-bin/sse.dll?db=alumni6&h=96973&indiv=try<br />
| It isn't necessary to set this data attribute.<br />
But Gramps doesn't yet have a repository-specific attribute for this in the citation (only at the source level), so this is one way you could save the Ancestry URL.<br />
|}<br />
<br />
[[Category:Citation Examples]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=39036Citations2012-08-29T21:25:28Z<p>Jsherring: /* Examples */</p>
<hr />
<div><br />
<br />
== Why Cite ==<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
== Guiding Principles ==<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the precise material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record while still being precise. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in your tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
== Sources, Repositories and Citations ==<br />
<br />
== Using Gramps Citations ==<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
== General Style ==<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Title || Yes || One of the most important fields, together with Citation Volume/Page. This should ensure the source can be uniquely identified.<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Name (shared) || Yes || <br />
|-<br />
| Type (shared) || Yes ||<br />
|-<br />
| Media Type (not shared) || Yes ||<br />
|-<br />
| Call number (not shared) || No? || This is a finding aide, to help locate the source within a given repository. (There is no equivalent mechanism to help locate a citation within the repository, which is relevant where the source is multi-volume or electronic.) How to handle web repositories?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Date || ? || Is this intended to be the event date, document publication date or date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Yes || One of the most important fields, together with Source Title. This should ensure that the relevant part within the source can be readily identified.<br />
|+<br />
|Confidence || Yes || Normally just the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
== Citing online evidence ==<br />
<br />
== Examples ==<br />
<br />
* [[Citation examples:Discussion with a relative]]<br />
* [[Citation examples:Family Bible]]<br />
* [[Citation examples:Birth, marriage and death certificates]]<br />
* [[Citation examples:England Census]]<br />
* [[Citation examples:US Census]]<br />
* [[Citation examples:FamilySearch]]<br />
* [[Citation examples:Ancestry.com records]]<br />
* [[Citation examples:Ancestry.com records without citation (Cambridge Alumni)]]<br />
* [[Citation examples:Newspaper clipping]]<br />
* [[Citation examples:Newspaper Archive]]<br />
* [[Citation examples:Multi-volume parish registers]]<br />
* [[Citation examples:Census records spanning pages]]<br />
* [[Citation examples:Census records spanning addresses]]<br />
* [[Citation examples:Imported GEDCOM file]]<br />
* [[Citation examples:Reusing 2nd-hand citations]]<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations|The Ancestry Insider: Book Review: Evidence Explained]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:Ancestry.com_records_without_citation_(Cambridge_Alumni)&diff=39035Citation examples:Ancestry.com records without citation (Cambridge Alumni)2012-08-29T21:24:12Z<p>Jsherring: First draft</p>
<hr />
<div>Many Ancestry records (eg census) give nice citations, that are easy to copy and paste into Gramps.<br />
<br />
This is an example of a Gramps citation for an Ancestry record without a citation given to us. The important thing is to use sensible values in the Gramps citation Volume/Page text-box that ensure we uniquely identify the record.<br />
<br />
== Event ==<br />
<br />
This is the main Gramps event for this citation, although I will also use the citation for birth and death events.<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Education ||<br />
|- <br />
| Date || 1874-09-24 || <br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || Trinity College, Cambridge, England ||<br />
|- <br />
| Description || Admitted pensioner at Trinity, Cambridge University || This event needs some discription because it is more unusual than our normal census etc records.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
== Source ==<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || Cambridge University Alumni ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
== Repository ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || http://search.ancestry.co.uk/search/db.aspx?dbid=3997&enc=1 || This is not really necessary and is not a standard value, but it is the Ancestry link for this source.<br />
|}<br />
<br />
== Citation ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Ernest Pemberton. Barnes [post Pemberton-Barnes]; TRINITY 1874 || Ancestry doesn't provide any nice citation information for us so we have to derive it - this seems like sensible detail that should enable any other researcher to find the record from the original source. <br />
|-<br />
| Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|-<br />
| Note || (Type: Transcript)<br />
<br />
Adm. pens. at TRINITY, Sept. 24, 1874. S. of William, of The Hall, Havering, Essex. B. Feb. 12, 1855, at Romford. School, Brighton College (Mr Bigg). Matric. Michs. 1874; B.A. 1879; M.A. 1882. Died Sept. 20, 1920. Brother of Percy P. (1878). (Fox-Davies.)<br />
|<br />
|- <br />
| Data || Key: AncestryLink<br />
Value: http://search.ancestry.co.uk/cgi-bin/sse.dll?db=alumni6&h=96973&indiv=try<br />
| It isn't necessary to set this data attribute.<br />
But Gramps doesn't yet have a repository-specific attribute for this in the citation (only at the source level), so this is one way you could save the Ancestry URL.<br />
|}<br />
<br />
[[Category:Citation Examples]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38954Citations2012-08-29T09:59:13Z<p>Jsherring: /* Guiding Principles */</p>
<hr />
<div><br />
<br />
== Why Cite ==<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
== Guiding Principles ==<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the precise material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record while still being precise. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in your tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
== Sources, Repositories and Citations ==<br />
<br />
== Using Gramps Citations ==<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
== General Style ==<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Title || Yes || One of the most important fields, together with Citation Volume/Page. This should ensure the source can be uniquely identified.<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Name (shared) || Yes || <br />
|-<br />
| Type (shared) || Yes ||<br />
|-<br />
| Media Type (not shared) || Yes ||<br />
|-<br />
| Call number (not shared) || No? || This is a finding aide, to help locate the source within a given repository. (There is no equivalent mechanism to help locate a citation within the repository, which is relevant where the source is multi-volume or electronic.) How to handle web repositories?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Date || ? || Is this intended to be the event date, document publication date or date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Yes || One of the most important fields, together with Source Title. This should ensure that the relevant part within the source can be readily identified.<br />
|+<br />
|Confidence || Yes || Normally just the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
== Citing online evidence ==<br />
<br />
== Examples ==<br />
<br />
* [[Citation examples:Discussion with a relative]]<br />
* [[Citation examples:Family Bible]]<br />
* [[Citation examples:Birth, marriage and death certificates]]<br />
* [[Citation examples:England Census]]<br />
* [[Citation examples:US Census]]<br />
* [[Citation examples:FamilySearch]]<br />
* [[Citation examples:Ancestry.com records]]<br />
* [[Citation examples:Newspaper clipping]]<br />
* [[Citation examples:Newspaper Archive]]<br />
* [[Citation examples:Multi-volume parish registers]]<br />
* [[Citation examples:Census records spanning pages]]<br />
* [[Citation examples:Census records spanning addresses]]<br />
* [[Citation examples:Imported GEDCOM file]]<br />
* [[Citation examples:Reusing 2nd-hand citations]]<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations|The Ancestry Insider: Book Review: Evidence Explained]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38908Citations2012-08-28T14:56:23Z<p>Jsherring: /* Guiding Principles */</p>
<hr />
<div><br />
<br />
== Why Cite ==<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
== Guiding Principles ==<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the precise material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record while still being precise. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
== Sources, Repositories and Citations ==<br />
<br />
== Using Gramps Citations ==<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
== General Style ==<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Title || Yes || One of the most important fields, together with Citation Volume/Page. This should ensure the source can be uniquely identified.<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Name (shared) || Yes || <br />
|-<br />
| Type (shared) || Yes ||<br />
|-<br />
| Media Type (not shared) || Yes ||<br />
|-<br />
| Call number (not shared) || No? || This is a finding aide, to help locate the source within a given repository. (There is no equivalent mechanism to help locate a citation within the repository, which is relevant where the source is multi-volume or electronic.) How to handle web repositories?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Date || ? || Is this intended to be the event date, document publication date or date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Yes || One of the most important fields, together with Source Title. This should ensure that the relevant part within the source can be readily identified.<br />
|+<br />
|Confidence || Yes || Normally just the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
== Citing online evidence ==<br />
<br />
== Examples ==<br />
<br />
* [[Citation examples:Discussion with a relative]]<br />
* [[Citation examples:Family Bible]]<br />
* [[Citation examples:Birth, marriage and death certificates]]<br />
* [[Citation examples:England Census]]<br />
* [[Citation examples:US Census]]<br />
* [[Citation examples:FamilySearch]]<br />
* [[Citation examples:Ancestry.com records]]<br />
* [[Citation examples:Newspaper clipping]]<br />
* [[Citation examples:Newspaper Archive]]<br />
* [[Citation examples:Multi-volume parish registers]]<br />
* [[Citation examples:Census records spanning pages]]<br />
* [[Citation examples:Census records spanning addresses]]<br />
* [[Citation examples:Imported GEDCOM file]]<br />
* [[Citation examples:Reusing 2nd-hand citations]]<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations|The Ancestry Insider: Book Review: Evidence Explained]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:England_Census&diff=38907Citation examples:England Census2012-08-28T14:32:46Z<p>Jsherring: </p>
<hr />
<div><br />
== Event ==<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Census ||<br />
|- <br />
| Date || 1851-03-30 || Auto-populated by Census gramplet<br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || 13 London Lane, Hackney, Middlesex, England ||<br />
|- <br />
| Description || || I choose to leave most descriptions blank.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
== Source ==<br />
<br />
{| {{Prettytable}}<br />
|+ <br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || 1851 England Census ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
== Repository ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || || Should I put anything here?<br />
|}<br />
<br />
== Citation ==<br />
<br />
{| {{Prettytable}}<br />
|+<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Class: HO107; Piece: 1505; Folio: 9; Page: 10; GSU roll: 87839. || Copied straight from Ancestry.com citation, to keep process simple. This is probably the most important info, and the Ancestry citations for this database have all the required detail.<br />
|+<br />
|Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
[[Category:Citation Examples]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:England_Census&diff=38864Citation examples:England Census2012-08-28T02:17:11Z<p>Jsherring: </p>
<hr />
<div>{| {{Prettytable}}<br />
|+ Event <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Census ||<br />
|- <br />
| Date || 1851-03-30 || Auto-populated by Census gramplet<br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || 13 London Lane, Hackney, Middlesex, England ||<br />
|- <br />
| Description || || I choose to leave most descriptions blank.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
<br />
{| {{Prettytable}}<br />
|+ Source<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || 1851 England Census ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| {{Prettytable}}<br />
|+Repository:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || || Should I put anything here?<br />
|}<br />
<br />
<br />
{| {{Prettytable}}<br />
|+Citation:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Class: HO107; Piece: 1505; Folio: 9; Page: 10; GSU roll: 87839. || Copied straight from Ancestry.com citation, to keep process simple. This is probably the most important info, and the Ancestry citations for this database have all the required detail.<br />
|+<br />
|Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
[[Category:Citation Examples]]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38861Citations2012-08-28T02:11:15Z<p>Jsherring: </p>
<hr />
<div><br />
<br />
== Why Cite ==<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
== Guiding Principles ==<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the precise material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
== Sources, Repositories and Citations ==<br />
<br />
== Using Gramps Citations ==<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
== General Style ==<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Title || Yes || One of the most important fields, together with Citation Volume/Page. This should ensure the source can be uniquely identified.<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Name (shared) || Yes || <br />
|-<br />
| Type (shared) || Yes ||<br />
|-<br />
| Media Type (not shared) || Yes ||<br />
|-<br />
| Call number (not shared) || No? || This is a finding aide, to help locate the source within a given repository. (There is no equivalent mechanism to help locate a citation within the repository, which is relevant where the source is multi-volume or electronic.) How to handle web repositories?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Core Value? !! Comment<br />
|-<br />
| Date || ? || Is this intended to be the event date, document publication date or date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Yes || One of the most important fields, together with Source Title. This should ensure that the relevant part within the source can be readily identified.<br />
|+<br />
|Confidence || Yes || Normally just the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}<br />
<br />
== Citing online evidence ==<br />
<br />
== Examples ==<br />
<br />
* [[Citation examples:Discussion with a relative]]<br />
* [[Citation examples:Family Bible]]<br />
* [[Citation examples:Birth, marriage and death certificates]]<br />
* [[Citation examples:England Census]]<br />
* [[Citation examples:US Census]]<br />
* [[Citation examples:FamilySearch]]<br />
* [[Citation examples:Ancestry.com records]]<br />
* [[Citation examples:Newspaper clipping]]<br />
* [[Citation examples:Newspaper Archive]]<br />
* [[Citation examples:Multi-volume parish registers]]<br />
* [[Citation examples:Census records spanning pages]]<br />
* [[Citation examples:Census records spanning addresses]]<br />
* [[Citation examples:Imported GEDCOM file]]<br />
* [[Citation examples:Reusing 2nd-hand citations]]<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations|The Ancestry Insider: Book Review: Evidence Explained]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:England_Census&diff=38856Citation examples:England Census2012-08-28T01:28:17Z<p>Jsherring: </p>
<hr />
<div>{| border="1"<br />
|+ Event <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Census ||<br />
|- <br />
| Date || 1851-03-30 || Auto-populated by Census gramplet<br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || 13 London Lane, Hackney, Middlesex, England ||<br />
|- <br />
| Description || || I choose to leave most descriptions blank.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || 1851 England Census ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || || Should I put anything here?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Class: HO107; Piece: 1505; Folio: 9; Page: 10; GSU roll: 87839. || Copied straight from Ancestry.com citation, to keep process simple. This is probably the most important info, and the Ancestry citations for this database have all the required detail.<br />
|+<br />
|Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38854Citations2012-08-28T01:12:52Z<p>Jsherring: /* UK Census */</p>
<hr />
<div><br />
<br />
= Why Cite =<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
= Guiding Principles =<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
= Sources, Repositories and Citations =<br />
<br />
= Using Gramps Citations =<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
= General Style =<br />
Core fields<br />
<br />
{| border="1"<br />
|+ Event <br />
|- <br />
| Event Type || asdf<br />
|- <br />
| Date || asdf<br />
|- <br />
| Place || asdf<br />
|- <br />
| Description || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+ Source<br />
|-<br />
| Title || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Repository:<br />
|-<br />
| Name (shared) || asdf<br />
|-<br />
| Type (shared) || asdf<br />
|-<br />
| Media Type (not shared) || asdf<br />
|-<br />
| Call number (not shared) || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Citation:<br />
|-<br />
| Date || asdf<br />
|-<br />
| Volume/Page || asdf<br />
|}<br />
<br />
= Simple Examples =<br />
<br />
== Discussion with a relative ==<br />
<br />
== Family Bible ==<br />
<br />
== Birth, marriage and death certificates ==<br />
<br />
== UK Census ==<br />
<br />
[[Citation examples:England Census]]<br />
<br />
== US Census ==<br />
<br />
== FamilySearch ==<br />
<br />
== Ancestry.com records ==<br />
<br />
= More Examples =<br />
<br />
== Newspaper clipping ==<br />
<br />
== Newspaper Archive ==<br />
<br />
== Multi-volume parish registers ==<br />
<br />
== Census records spanning pages ==<br />
<br />
== Census records spanning addresses ==<br />
<br />
== Ancestry.com user trees ==<br />
<br />
== Imported GEDCOM file ==<br />
<br />
== Reusing 2nd-hand citations ==<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citation_examples:England_Census&diff=38853Citation examples:England Census2012-08-28T01:12:24Z<p>Jsherring: First draft</p>
<hr />
<div>[[Citation examples:England Census]]<br />
<br />
{| border="1"<br />
|+ Event <br />
! Gramps Field !! Value !! Comment<br />
|- <br />
| Event Type || Census ||<br />
|- <br />
| Date || 1851-03-30 || Auto-populated by Census gramplet<br />
|- <br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Place || 13 London Lane, Hackney, Middlesex, England ||<br />
|- <br />
| Description || || I choose to leave most descriptions blank.<br />
|-<br />
| Role (not shared) || Primary || This is the default value<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+ Source<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Title || 1851 England Census ||<br />
|-<br />
| Author || || <br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Abbreviation || ||<br />
|-<br />
| Pub. Info || ||<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Repository:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Name (shared) || Ancestry.co.uk || Should I use "Ancestry.com" as a generic name, or "Ancestry.co.uk", which is the Ancestry site I use?<br />
|-<br />
| Type (shared) || Web site ||<br />
|-<br />
| Media Type (not shared) || Electronic ||<br />
|-<br />
| Call number (not shared) || || Should I put anything here?<br />
|}<br />
<br />
<br />
{| border="1"<br />
|+Citation:<br />
! Gramps Field !! Value !! Comment<br />
|-<br />
| Date || 1851-03-30 || Or should this be the date that I reviewed the source?<br />
|-<br />
| Id || || Let Gramps auto-populate this<br />
|-<br />
| Volume/Page || Class: HO107; Piece: 1505; Folio: 9; Page: 10; GSU roll: 87839. || Copied straight from Ancestry.com citation, to keep process simple. This is probably the most important info, and the Ancestry citations for this database have all the required detail.<br />
|+<br />
|Confidence || Normal || This is the default. You may want to set this to 'Low' or 'Very Low' if you are not sure this is the right family<br />
|}</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38852Citations2012-08-28T00:31:18Z<p>Jsherring: /* General Style */</p>
<hr />
<div><br />
<br />
= Why Cite =<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
= Guiding Principles =<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
= Sources, Repositories and Citations =<br />
<br />
= Using Gramps Citations =<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
= General Style =<br />
Core fields<br />
<br />
{| border="1"<br />
|+ Event <br />
|- <br />
| Event Type || asdf<br />
|- <br />
| Date || asdf<br />
|- <br />
| Place || asdf<br />
|- <br />
| Description || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+ Source<br />
|-<br />
| Title || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Repository:<br />
|-<br />
| Name (shared) || asdf<br />
|-<br />
| Type (shared) || asdf<br />
|-<br />
| Media Type (not shared) || asdf<br />
|-<br />
| Call number (not shared) || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Citation:<br />
|-<br />
| Date || asdf<br />
|-<br />
| Volume/Page || asdf<br />
|}<br />
<br />
= Simple Examples =<br />
<br />
== Discussion with a relative ==<br />
<br />
== Family Bible ==<br />
<br />
== Birth, marriage and death certificates ==<br />
<br />
== UK Census ==<br />
<br />
{| border="1"<br />
|+ Event <br />
|- <br />
| Event Type || asdf<br />
|- <br />
| Date || asdf<br />
|- <br />
| Place || asdf<br />
|- <br />
| Description || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+ Source<br />
|-<br />
| Title || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Repository:<br />
|-<br />
| Name (shared) || asdf<br />
|-<br />
| Type (shared) || asdf<br />
|-<br />
| Media Type (not shared) || asdf<br />
|-<br />
| Call number (not shared) || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Citation:<br />
|-<br />
| Date || asdf<br />
|-<br />
| Volume/Page || asdf<br />
|}<br />
<br />
<!-- <br />
{| <br />
|+ table caption, optional; <br />
|- table row, <br />
! table header cell, optional. Consecutive table headers may be added on same line separated by double marks (!!) or start on new lines, each with its own single mark (!).<br />
| table data cell, required! Consecutive table data cells may be added on same line separated by double marks (||) or start on new lines, each with its own single mark (|).<br />
|}<br />
--><br />
<br />
== US Census ==<br />
<br />
== FamilySearch ==<br />
<br />
== Ancestry.com records ==<br />
<br />
= More Examples =<br />
<br />
== Newspaper clipping ==<br />
<br />
== Newspaper Archive ==<br />
<br />
== Multi-volume parish registers ==<br />
<br />
== Census records spanning pages ==<br />
<br />
== Census records spanning addresses ==<br />
<br />
== Ancestry.com user trees ==<br />
<br />
== Imported GEDCOM file ==<br />
<br />
== Reusing 2nd-hand citations ==<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38851Citations2012-08-28T00:29:57Z<p>Jsherring: /* UK Census */</p>
<hr />
<div><br />
<br />
= Why Cite =<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
= Guiding Principles =<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
= Sources, Repositories and Citations =<br />
<br />
= Using Gramps Citations =<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
= General Style =<br />
''Core fields''<br />
<br />
= Simple Examples =<br />
<br />
== Discussion with a relative ==<br />
<br />
== Family Bible ==<br />
<br />
== Birth, marriage and death certificates ==<br />
<br />
== UK Census ==<br />
<br />
{| border="1"<br />
|+ Event <br />
|- <br />
| Event Type || asdf<br />
|- <br />
| Date || asdf<br />
|- <br />
| Place || asdf<br />
|- <br />
| Description || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+ Source<br />
|-<br />
| Title || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Repository:<br />
|-<br />
| Name (shared) || asdf<br />
|-<br />
| Type (shared) || asdf<br />
|-<br />
| Media Type (not shared) || asdf<br />
|-<br />
| Call number (not shared) || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Citation:<br />
|-<br />
| Date || asdf<br />
|-<br />
| Volume/Page || asdf<br />
|}<br />
<br />
<!-- <br />
{| <br />
|+ table caption, optional; <br />
|- table row, <br />
! table header cell, optional. Consecutive table headers may be added on same line separated by double marks (!!) or start on new lines, each with its own single mark (!).<br />
| table data cell, required! Consecutive table data cells may be added on same line separated by double marks (||) or start on new lines, each with its own single mark (|).<br />
|}<br />
--><br />
<br />
== US Census ==<br />
<br />
== FamilySearch ==<br />
<br />
== Ancestry.com records ==<br />
<br />
= More Examples =<br />
<br />
== Newspaper clipping ==<br />
<br />
== Newspaper Archive ==<br />
<br />
== Multi-volume parish registers ==<br />
<br />
== Census records spanning pages ==<br />
<br />
== Census records spanning addresses ==<br />
<br />
== Ancestry.com user trees ==<br />
<br />
== Imported GEDCOM file ==<br />
<br />
== Reusing 2nd-hand citations ==<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38850Citations2012-08-28T00:28:26Z<p>Jsherring: /* UK Census */ draft table</p>
<hr />
<div><br />
<br />
= Why Cite =<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
= Guiding Principles =<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
= Sources, Repositories and Citations =<br />
<br />
= Using Gramps Citations =<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
= General Style =<br />
''Core fields''<br />
<br />
= Simple Examples =<br />
<br />
== Discussion with a relative ==<br />
<br />
== Family Bible ==<br />
<br />
== Birth, marriage and death certificates ==<br />
<br />
== UK Census ==<br />
<br />
{| border="1"<br />
|+ Event <br />
|- <br />
| Event Type || asdf<br />
|- <br />
| Date || asdf<br />
|- <br />
| Place || asdf<br />
|- <br />
| Description || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+ Source<br />
|-<br />
| Title || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Repository:<br />
|-<br />
| Name (shared) || asdf<br />
|-<br />
| Type (shared) || asdf<br />
|-<br />
| Media Type (not shared) || asdf<br />
|-<br />
| Call number (not shared) || asdf<br />
|}<br />
<br />
{| border="1"<br />
|+Citation:<br />
|-<br />
| Date || asdf<br />
|-<br />
| Volume/Page || asdf<br />
|}<br />
<br />
<!-- <br />
{| <br />
|+ table caption, optional; <br />
|- table row, <br />
! table header cell, optional. Consecutive table headers may be added on same line separated by double marks (!!) or start on new lines, each with its own single mark (!).<br />
| table data cell, required! Consecutive table data cells may be added on same line separated by double marks (||) or start on new lines, each with its own single mark (|).<br />
|}<br />
--!><br />
<br />
== US Census ==<br />
<br />
== FamilySearch ==<br />
<br />
== Ancestry.com records ==<br />
<br />
= More Examples =<br />
<br />
== Newspaper clipping ==<br />
<br />
== Newspaper Archive ==<br />
<br />
== Multi-volume parish registers ==<br />
<br />
== Census records spanning pages ==<br />
<br />
== Census records spanning addresses ==<br />
<br />
== Ancestry.com user trees ==<br />
<br />
== Imported GEDCOM file ==<br />
<br />
== Reusing 2nd-hand citations ==<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations]</div>Jsherringhttps://www.gramps-project.org/wiki/index.php?title=Citations&diff=38849Citations2012-08-28T00:05:34Z<p>Jsherring: Initial draft layout</p>
<hr />
<div><br />
<br />
= Why Cite =<br />
<br />
You just want to explore your family tree, so why bother with all of this academic nonsense, right?<br />
<br />
If you are just using Gramps to draw a quick family tree, then perhaps there is no need to bother with citations.<br />
<br />
But if you want to share your family tree with other people, citations let you record how you know these things, and this record may last longer than you are around to explain.<br />
<br />
Creating detailed citations can be time intensive and may seem to be a distraction from your research, but you will find the investment pays off later.<br />
<br />
A simple family tree can be a little dry, but linking to related documents helps you embellish your family story.<br />
<br />
And if you are like me, you may need a little help remembering how you came to some conclusion some months ago.<br />
<br />
= Guiding Principles =<br />
<br />
In order of importance:<br />
* Citations help provide evidence of the conclusions (or 'facts') in your tree<br />
* A citation should enable another researcher to easily identify the material you are referencing and how you came to some conclusion<br />
* Citations should be as simple as possible to record. Don't waste time on extensive detail if you wont continue to be so thorough.<br />
* Record a citation as soon as you can, before you forget or lose the details<br />
* Adopt a good style early on to avoid rework later - you will probably never bother to fix hundreds of sloppy references<br />
* Provide citations for as much of your tree as you can.<br />
* Record your references in a way that will still be relevant in many years. URLs are useful now but don't last.<br />
* Be consistent in your citations<br />
* Even a short or sloppy citation is better than no citation<br />
* Follow citation style guides if you can. A lot of thought has gone into what to record.<br />
<br />
If you are just starting out with your family tree, then you will probably want to just get started recording people and events in you tree. After a while, start adding citations to your tree. Then before you have gone too far with recording citations, occasionally review your citation style and consider how it might be when your tree is much larger and used by someone else.<br />
<br />
= Sources, Repositories and Citations =<br />
<br />
= Using Gramps Citations =<br />
<br />
''Expand on [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]''<br />
<br />
= General Style =<br />
''Core fields''<br />
<br />
= Simple Examples =<br />
<br />
== Discussion with a relative ==<br />
<br />
== Family Bible ==<br />
<br />
== Birth, marriage and death certificates ==<br />
<br />
== UK Census ==<br />
<br />
Event:<br />
Event Type<br />
Date<br />
Place<br />
Description<br />
<br />
Source:<br />
Title<br />
<br />
Repository:<br />
Name<br />
Type<br />
Media Type<br />
Call number<br />
<br />
Citation:<br />
Date<br />
Volume/Page<br />
<br />
<br />
== US Census ==<br />
<br />
== FamilySearch ==<br />
<br />
== Ancestry.com records ==<br />
<br />
= More Examples =<br />
<br />
== Newspaper clipping ==<br />
<br />
== Newspaper Archive ==<br />
<br />
== Multi-volume parish registers ==<br />
<br />
== Census records spanning pages ==<br />
<br />
== Census records spanning addresses ==<br />
<br />
== Ancestry.com user trees ==<br />
<br />
== Imported GEDCOM file ==<br />
<br />
== Reusing 2nd-hand citations ==<br />
<br />
== See Also ==<br />
* [[Gramps_3.4_Wiki_Manual_-_Main_Window#Citations_Category]]<br />
* [[Sources]]<br />
* [[Repositories_in_GRAMPS]]<br />
* [[GEPS_023:_Storing_data_from_large_sources]]<br />
<br />
== External Links ==<br />
* [http://ancestryinsider.blogspot.com/search/label/citations]</div>Jsherring