Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/svn/tests/test_loader.py
Show First 20 Lines • Show All 197 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
_LAST_SNP_REV = { | _LAST_SNP_REV = { | ||||
'snapshot': Snapshot.from_dict({ | 'snapshot': Snapshot.from_dict({ | ||||
'id': GOURMET_FLAG_SNAPSHOT, | 'id': GOURMET_FLAG_SNAPSHOT, | ||||
'branches': {} | 'branches': {} | ||||
}), | }), | ||||
'revision': { | 'revision': { | ||||
Show All 36 Lines | def test_load(self): | ||||
self.assertCountDirectories(0) | self.assertCountDirectories(0) | ||||
self.assertCountRevisions(0) | self.assertCountRevisions(0) | ||||
self.assertCountReleases(0) | self.assertCountReleases(0) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'uneventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'uneventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_FLAG_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_FLAG_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest3(BaseSvnLoaderTest): | class SvnLoaderTest3(BaseSvnLoaderTest): | ||||
"""In this scenario, the dump has been tampered with to modify the | """In this scenario, the dump has been tampered with to modify the | ||||
commit log. This results in a hash divergence which is | commit log. This results in a hash divergence which is | ||||
detected at startup. | detected at startup. | ||||
In effect, that stops the loading and do nothing. | In effect, that stops the loading and do nothing. | ||||
Show All 24 Lines | def test_load(self): | ||||
self.assertCountRevisions(0) | self.assertCountRevisions(0) | ||||
self.assertCountReleases(0) | self.assertCountReleases(0) | ||||
self.assertCountSnapshots(0) | self.assertCountSnapshots(0) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'uneventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'uneventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'partial') | self.assertEqual(self.loader.visit_status(), 'partial') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], None) | self.assertEqual(visit['snapshot'], None) | ||||
self.assertEqual(visit['status'], 'partial') | |||||
class SvnLoaderTest4(BaseSvnLoaderTest): | class SvnLoaderTest4(BaseSvnLoaderTest): | ||||
"""In this scenario, the repository has been updated with new changes. | """In this scenario, the repository has been updated with new changes. | ||||
The loading visit should result in new objects stored and 1 new | The loading visit should result in new objects stored and 1 new | ||||
snapshot. | snapshot. | ||||
""" | """ | ||||
Show All 30 Lines | def test_process_repository(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest5(BaseSvnLoaderTest): | class SvnLoaderTest5(BaseSvnLoaderTest): | ||||
"""Context: | """Context: | ||||
- Repository already injected with successful data | - Repository already injected with successful data | ||||
- New visit from scratch done with successful load | - New visit from scratch done with successful load | ||||
Show All 35 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest6(BaseSvnLoaderTest): | class SvnLoaderTest6(BaseSvnLoaderTest): | ||||
"""Context: | """Context: | ||||
- repository already visited with load successful | - repository already visited with load successful | ||||
- Changes on existing repository | - Changes on existing repository | ||||
- New Visit done with successful new data | - New Visit done with successful new data | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest7(BaseSvnLoaderTest): | class SvnLoaderTest7(BaseSvnLoaderTest): | ||||
"""Context: | """Context: | ||||
- repository already visited with load successful | - repository already visited with load successful | ||||
- Changes on existing repository | - Changes on existing repository | ||||
- New Visit done with successful new data | - New Visit done with successful new data | ||||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest8(BaseSvnLoaderTest): | class SvnLoaderTest8(BaseSvnLoaderTest): | ||||
"""Context: | """Context: | ||||
- Previous visit on existing repository done | - Previous visit on existing repository done | ||||
- Starting the loading from the last unfinished visit | - Starting the loading from the last unfinished visit | ||||
- New objects are created (1 new snapshot) | - New objects are created (1 new snapshot) | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_UPDATES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest9(BaseSvnLoaderTest): | class SvnLoaderTest9(BaseSvnLoaderTest): | ||||
"""Check that a svn repo containing a versioned file with CRLF line | """Check that a svn repo containing a versioned file with CRLF line | ||||
endings with svn:eol-style property set to 'native' (this is a | endings with svn:eol-style property set to 'native' (this is a | ||||
violation of svn specification as the file should have been | violation of svn specification as the file should have been | ||||
stored with LF line endings) can be loaded anyway. | stored with LF line endings) can be loaded anyway. | ||||
Show All 14 Lines | def test_process_repository(self): | ||||
} | } | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], MEDIAWIKI_SNAPSHOT) | self.assertEqual(visit['snapshot'], MEDIAWIKI_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest10(BaseSvnLoaderTest): # noqa | class SvnLoaderTest10(BaseSvnLoaderTest): # noqa | ||||
"""Check that a svn repo containing a versioned file with mixed | """Check that a svn repo containing a versioned file with mixed | ||||
CRLF/LF line endings with svn:eol-style property set to 'native' | CRLF/LF line endings with svn:eol-style property set to 'native' | ||||
(this is a violation of svn specification as mixed line endings | (this is a violation of svn specification as mixed line endings | ||||
for textual content should not be stored when the svn:eol-style | for textual content should not be stored when the svn:eol-style | ||||
property is set) can be loaded anyway. | property is set) can be loaded anyway. | ||||
Show All 16 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], PYANG_SNAPSHOT) | self.assertEqual(visit['snapshot'], PYANG_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest11(BaseSvnLoaderTest): | class SvnLoaderTest11(BaseSvnLoaderTest): | ||||
"""Context: | """Context: | ||||
- Repository with svn:external (which is not deal with for now) | - Repository with svn:external (which is not deal with for now) | ||||
- Visit is partial with as much data loaded as possible | - Visit is partial with as much data loaded as possible | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
# The last revision being the one used later to start back from | # The last revision being the one used later to start back from | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'partial') | self.assertEqual(self.loader.visit_status(), 'partial') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_EXTERNALS_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_EXTERNALS_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'partial') | |||||
class SvnLoaderTest12(BaseSvnLoaderTest): | class SvnLoaderTest12(BaseSvnLoaderTest): | ||||
"""Edge cases: | """Edge cases: | ||||
- first create a file and commit it. | - first create a file and commit it. | ||||
Remove it, then add folder holding the same name, commit. | Remove it, then add folder holding the same name, commit. | ||||
- do the same scenario with symbolic link (instead of file) | - do the same scenario with symbolic link (instead of file) | ||||
▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_EDGE_CASES_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_EDGE_CASES_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTest13(BaseSvnLoaderTest): | class SvnLoaderTest13(BaseSvnLoaderTest): | ||||
"""Edge cases: | """Edge cases: | ||||
- wrong symbolic link | - wrong symbolic link | ||||
- wrong symbolic link with empty space names | - wrong symbolic link with empty space names | ||||
""" | """ | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertRevisionsContain(expected_revisions) | self.assertRevisionsContain(expected_revisions) | ||||
self.assertCountSnapshots(1) | self.assertCountSnapshots(1) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], GOURMET_WRONG_LINKS_SNAPSHOT) | self.assertEqual(visit['snapshot'], GOURMET_WRONG_LINKS_SNAPSHOT) | ||||
self.assertEqual(visit['status'], 'full') | |||||
class SvnLoaderTestFromRemoteDump(SvnLoaderTest, SvnLoaderFromRemoteDump): | class SvnLoaderTestFromRemoteDump(SvnLoaderTest, SvnLoaderFromRemoteDump): | ||||
pass | pass | ||||
class SvnLoaderFromRemoteDumpTest(BaseSvnLoaderTest): | class SvnLoaderFromRemoteDumpTest(BaseSvnLoaderTest): | ||||
""" | """ | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | def test_load(self): | ||||
self.assertSnapshotEqual(expected_snapshot_id, expected_branches) | self.assertSnapshotEqual(expected_snapshot_id, expected_branches) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
visit = self.storage.origin_visit_get_latest(self.repo_url) | visit = self.storage.origin_visit_get_latest(self.repo_url) | ||||
self.assertEqual(visit['snapshot'], | self.assertEqual(visit['snapshot'], | ||||
hashutil.hash_to_bytes(expected_snapshot_id)) | hashutil.hash_to_bytes(expected_snapshot_id)) | ||||
self.assertEqual(visit['status'], 'full') |