From db3416903e2bb46bdfd26e62f393d1e0b2037613 Mon Sep 17 00:00:00 2001 From: Rhet Turnbull Date: Fri, 27 Dec 2019 16:05:49 -0800 Subject: [PATCH] Fixed bug in PhotosDB.__repr__ and added test for empty database --- osxphotos/photosdb.py | 29 +++-- .../database/DataModelVersion.plist | 18 +++ .../database/RKAlbum_name.skindex | Bin 0 -> 8192 bytes .../database/RKMemory_title.skindex | Bin 0 -> 6144 bytes .../RKVersion_searchIndexText.skindex | Bin 0 -> 6144 bytes .../database/metaSchema.db | Bin 0 -> 49152 bytes .../database/photos.db | Bin 0 -> 1814528 bytes .../database/photos.db-wal | 0 .../private/.metadata_never_index | 0 .../com.apple.Photos/appPrivateData.plist | 25 ++++ .../PhotoAnalysisServicePreferences.plist | 8 ++ .../construction-photosgraph.graphdb | Bin 0 -> 4096 bytes .../construction-photosgraph.graphdb-shm | Bin 0 -> 32768 bytes .../construction-photosgraph.graphdb-wal | 0 .../PhotosGraph/photosgraph-tmp.graphdb | Bin 0 -> 4096 bytes .../PhotosGraph/photosgraph.graphdb | Bin 0 -> 65536 bytes .../PhotosGraph/photosgraph.graphdb-shm | Bin 0 -> 32768 bytes .../PhotosGraph/photosgraph.graphdb-wal | 0 .../resources/.metadata_never_index | 0 .../resources/moments/analysismetadata.plist | 14 +++ .../resources/moments/historicalmarker.plist | 12 ++ .../resources/moments/needsanalysis | 0 .../resources/recovery/Info.plist | 31 +++++ .../recovery/RKAdminData/0000000000.lij | Bin 0 -> 1345 bytes .../resources/recovery/RKAlbum/0000000000.lij | Bin 0 -> 36913 bytes .../recovery/RKCustomSortOrder/0000000000.lij | Bin 0 -> 953 bytes .../recovery/RKFolder/0000000000.lij | Bin 0 -> 5227 bytes .../recovery/RKKeyword/0000000000.lij | Bin 0 -> 896 bytes tests/test_catalina_10_15_1.py | 22 +++- tests/test_empty_library_4_0.py | 108 ++++++++++++++++++ tests/test_export_catalina_10_15_1.py | 2 +- tests/test_mojave_10_14_6.py | 14 +++ tests/test_shared_catalina_10_15_1.py | 2 +- tests/test_shared_mojave_10_14_6.py | 2 +- 34 files changed, 272 insertions(+), 15 deletions(-) create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/DataModelVersion.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKAlbum_name.skindex create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKMemory_title.skindex create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKVersion_searchIndexText.skindex create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/metaSchema.db create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db-wal create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/.metadata_never_index create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.Photos/appPrivateData.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-wal create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph-tmp.graphdb create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-wal create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/.metadata_never_index create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/analysismetadata.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/historicalmarker.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/needsanalysis create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/Info.plist create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAdminData/0000000000.lij create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAlbum/0000000000.lij create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKFolder/0000000000.lij create mode 100644 tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKKeyword/0000000000.lij create mode 100644 tests/test_empty_library_4_0.py diff --git a/osxphotos/photosdb.py b/osxphotos/photosdb.py index d56b4c42..c4a6be88 100644 --- a/osxphotos/photosdb.py +++ b/osxphotos/photosdb.py @@ -57,6 +57,8 @@ class PhotosDB: # Path to the Photos library database file self._dbfile = None + # the actual file with library data which on Photos 5 is Photos.sqlite instead of photos.db + self._dbfile_actual = None # Dict with information about all photos by uuid self._dbphotos = {} # Dict with information about all persons/photos by uuid @@ -115,25 +117,27 @@ class PhotosDB: logging.debug(f"dbfile = {dbfile}") - self._dbfile = dbfile + self._dbfile = self._dbfile_actual = os.path.abspath(dbfile) self._tmp_db = self._copy_db_file(self._dbfile) self._db_version = self._get_db_version() + + # If Photos >= 5, actual data isn't in photos.db but in Photos.sqlite if int(self._db_version) >= int(_PHOTOS_5_VERSION): logging.debug(f"version is {self._db_version}") dbpath = pathlib.Path(self._dbfile).parent dbfile = dbpath / "Photos.sqlite" - logging.debug(f"dbfile = {dbfile}") if not _check_file_exists(dbfile): sys.exit(f"dbfile {dbfile} does not exist") else: - self._dbfile = dbfile - self._tmp_db = self._copy_db_file(self._dbfile) + self._tmp_db = self._copy_db_file(dbfile) + self._dbfile_actual = dbfile + logging.debug( + f"_dbfile = {self._dbfile}, _dbfile_actual = {self._dbfile_actual}" + ) - # TODO: replace os.path with pathlib? - # TODO: clean this up -- library path computed twice library_path = os.path.dirname(os.path.abspath(dbfile)) - (library_path, _) = os.path.split(library_path) + (library_path, _) = os.path.split(library_path) # drop /database from path self._library_path = library_path if int(self._db_version) < int(_PHOTOS_5_VERSION): masters_path = os.path.join(library_path, "Masters") @@ -250,7 +254,7 @@ class PhotosDB: @property def albums(self): """ return list of albums found in photos database """ - + # Could be more than one album with same name # Right now, they are treated as same album and photos are combined from albums with same name @@ -268,7 +272,7 @@ class PhotosDB: def albums_shared(self): """ return list of shared albums found in photos database only valid for Photos 5; on Photos <= 4, prints warning and returns empty list """ - + # Could be more than one album with same name # Right now, they are treated as same album and photos are combined from albums with same name @@ -1119,3 +1123,10 @@ class PhotosDB: def __repr__(self): return f"osxphotos.{self.__class__.__name__}(dbfile='{self.db_path}')" + + # compare two PhotosDB objects for equality + def __eq__(self, other): + if isinstance(other, self.__class__): + return self.__dict__ == other.__dict__ + + return False diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/DataModelVersion.plist b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/DataModelVersion.plist new file mode 100644 index 00000000..bb823f39 --- /dev/null +++ b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/DataModelVersion.plist @@ -0,0 +1,18 @@ + + + + + DatabaseMinorVersion + 1 + DatabaseVersion + 112 + LastOpenMode + 2 + LibrarySchemaVersion + 4025 + MetaSchemaVersion + 2 + createDate + 2019-12-27T23:19:08Z + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKAlbum_name.skindex b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKAlbum_name.skindex new file mode 100644 index 0000000000000000000000000000000000000000..5afcbaebfe2ec6104a7d8289e3528d7ba95828de GIT binary patch literal 8192 zcmeHMUvC>l5TDumbwGd=wTd^H%mqF5=ylxRx0vUVgl1r4g z2CO0{bc1XoCt)V?TJuqxKBtE?q$zz%C-j`o=ouYj^b`0)dIIccx}fjrLasu3C%trQ z^aFiCkD&X6PL=eS&gmOSpJ4=n4m|~M4kIDpbHHbqduZ^$mN6 zY6Vkm{}gLFhm0IwKtYCySuV+K(bsP%XBRV6*FAx#WB>Me$D6yZdcdn7)Bbh*pjb1? z;QvLx{tx=n&D@@5T`;;?EZfI?!^nUyTwhlHavwUYQvWh;#+WkxchO&D-}racyvg6r z75Zj>7S3nxpWmUs=>C!G-vPI;SV%k7quMzvBqm$&EfkRuW}`af28pWmvgxB zw``Sixbe4S6?3@pw`h4O&Z)N^7c!{vwZLu$HJ-ZcWKiR$!*&KWUfOJBP~)S;B7+(a z1#<>9{xO@pHCzXzE1Vh&ZdsNehS2@c^N0O`KM8sk^ZV}oqj5ZmZRWDm3r3Rzhk3^h z_VneWd#|K-?mU}ex?}x!1fbP*KjQrlV>>l@f zK@@kHnucIH$!94^-)qDT|O%&Sgthbq>*~wZr zF%V*Ih0_RFRu(n>+jbT;-aDuYrbu(@yX$6A<9VTwMUCH{ch&j-clj@$zq%mFL(OLi zmypEe-D%Y`i?aLp0G4be<)jfQ-8h(N#O-~Yu+V6TATeO?@bUL^8# z5BxR8;9?4TrST@OVA-`s%}my;rqM| zazP&M>1F*-;!7BjexI*(r>*#{>7kEa^?>VF;J`t@ARcjY9o WQ1e;BfuJp)0d8DLS~`4<5%>#X;3Rec literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKMemory_title.skindex b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/RKMemory_title.skindex new file mode 100644 index 0000000000000000000000000000000000000000..73e4b39ae40e955b74285b38443c97a2fb2a4316 GIT binary patch literal 6144 zcmeI0%}x|S6opUqz=)_g#-Ffo(Jp)e_a+Si6Qes_xY7`32*wGWFp%i3H?U{P1NbOB z3eTb6y;be>3`2}AOq9CG?NfE`PgUKS?yBz1qv11YAZZ0P)QMDFNWEn#80qr;3c+{- zEzlmigodQVN4X-@=}jMB;eG#fjQ1_n^4YjI(N(m~M^k-iHXGb+GbF)xFyql0W}~LP z2YRUuZE2)k?dV8j9qKK;FW`pu;l663Pny^)Y<0HE{+d4Pjb0JEuc3RtR;`bCkLls? zPzMk-Nh;_XdW`XqL^UDLNjai_fNjs*A6?3~?K2pq{6pqc<752^0am6EY)bw6`fw?@ zJDDvXcL&$yrL%WWR;Ek$7W^HwmEW!(fop9r_$Tpqe-UrXocT?=OK4-eT(^zg|J2EE z;rzP(^X)c&#$171fn0(Aumb*kWy`fqB}=YAu0XCpw*vNjC{e>IVH43G9bD}AZ+1H% zyU_My7g!nrRtcMkFi41@Uw=XOq9r{A)?g~{z zzs{fWaz9t#x>kT2;$FNp2DbmdKfL>MF=4zBC2 Kl-K>YD)0ly3`2}AOq9CG?NfE`PgUKS?yBz1qv11YAZZ0P)QMDFNWEn#80qr;3c+{- zEzlmigodQVN4X-@=}jMB;eG#fjQ1_n^4YjI(N(m~M^k-iHXGb+GbF)xFyql0W}~LP z2YRUuZE2)k?dV8j9qKK;FW`pu;l663Pny^)Y<0HE{+d4Pjb0JEuc3RtR;`bCkLls? zPzMk-Nh;_XdW`XqL^UDLNjai_fNjs*A6?3~?K2pq{6pqc<752^0am6EY)bw6`fw?@ zJDDvXcL&$yrL%WWR;Ek$7W^HwmEW!(fop9r_$Tpqe-UrXocT?=OK4-eT(^zg|J2EE z;rzP(^X)c&#$171fn0(Aumb*kWy`fqB}=YAu0XCpw*vNjC{e>IVH43G9bD}AZ+1H% zyU_My7g!nrRtcMkFi41@Uw=XOq9r{A)?g~{z zzs{fWaz9t#x>kT2;$FNp2DbmdKfL>MF=4zBC2 Kl-K>YD)0lyqdb|mH5-LyOS7dEomahObWO17~FXP z&Rlo^g!UBh8n~!|h-pINh`v@F|NKY(^SRse=QHE9d{x+7IeAYUh#(LLQVJnLpF2J` zX;Z(_RD2n<;>*HN-2Qg;n(qzwKZ@~N|05xQ00IagfB*srAbc%c z>qlYK+t~@;J#{M1^vujm{KQnQuys4`9KD!M7E`&H9L}b)-6L=2MXIyoRGO93ueFt> zHMz32Jk|A3`p$>S--vf6*OgOwIh6WLuiT<8wLDWcSt{#CX{YANQs?SK+sYKHX0oBo zOl5_|U*+Uy(4w2KGjyQ7`O@!LNbsj-V^V_ORE#* dbQqogzV3e~jiuFPrV^dXxR&Lza7E=?e*jyew{rjh literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db new file mode 100644 index 0000000000000000000000000000000000000000..106448e8c68b6184439b8c85001134e55e06d3a2 GIT binary patch literal 1814528 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�KZYzzQ*Os>|1h@79Kg*ETej=tHkJ75j~?~w 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⪙bJB&^e4nP3L=)g?(1 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 z + + + + Photos + + CollapsedSidebarSectionIdentifiers + + ExpandedSidebarItemIdentifiers + + TopLevelAlbums + TopLevelSlideshows + + lastKnownItemCounts + + other + 0 + photos + 0 + videos + 0 + + + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist new file mode 100644 index 00000000..049d4380 --- /dev/null +++ b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotoAnalysisServicePreferences.plist @@ -0,0 +1,8 @@ + + + + + PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate + 2019-12-27T23:19:59Z + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb new file mode 100644 index 0000000000000000000000000000000000000000..96fee1ceaea8a2d33cbf0d13d827d241c54e283f GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|<4bMj*xpkj0VN=xUi5^i&#nL81ca tQltFQ5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4FP(E000R52DtzL literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/construction-photosgraph.graphdb-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r37U}9o$P*7lCU|<4bMj*xpkj0VN=xUi5^i&#nL81ca tQltFQ5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4FP(E000R52DtzL literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb new file mode 100644 index 0000000000000000000000000000000000000000..e58047762fee1d43f235f977d14cbf5a04241958 GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/private/com.apple.photoanalysisd/GraphService/PhotosGraph/photosgraph.graphdb-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r3 + + + + PLLanguageAndLocaleKey + en-US:en_US + PLLastGeoProviderIdKey + 7618 + PLLastLocationInfoFormatVer + 12 + PLLastRevGeoForcedProviderOutOfDateCheckVersionKey + 1 + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/historicalmarker.plist b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/historicalmarker.plist new file mode 100644 index 00000000..daa13e7a --- /dev/null +++ b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/historicalmarker.plist @@ -0,0 +1,12 @@ + + + + + LastHistoryRowId + 53 + LibraryBuildTag + F176BAF5-4B7A-4878-83C4-4D4175F299BF + LibrarySchemaVersion + 4025 + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/needsanalysis b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/moments/needsanalysis new file mode 100644 index 00000000..e69de29b diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/Info.plist b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/Info.plist new file mode 100644 index 00000000..a945329e --- /dev/null +++ b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/Info.plist @@ -0,0 +1,31 @@ + + + + + DatabaseMinorVersion + 1 + DatabaseVersion + 112 + HistoricalMarker + + LastHistoryRowId + 53 + LibraryBuildTag + F176BAF5-4B7A-4878-83C4-4D4175F299BF + LibrarySchemaVersion + 4025 + + LibrarySchemaVersion + 4025 + MetaSchemaVersion + 2 + SnapshotComplete + + SnapshotCompletedDate + 2019-12-27T23:19:08Z + SnapshotLastValidated + 2019-12-27T23:19:08Z + SnapshotTables + + + diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAdminData/0000000000.lij b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAdminData/0000000000.lij new file mode 100644 index 0000000000000000000000000000000000000000..a7589e5cd65f1657eb5f6d7dac21f7f59627a2e0 GIT binary patch literal 1345 zcmdUv&ui0Q7{}jqokrb{w_7_HJ?t<%sgR~gO~FGeGFKhdc1<^Q8s8*OXj$5HNvbXE z?#;u%(~g~Yy~q$nrtBh8h6l&!P4-`iXp%Oy6`a@k9^QxN{rS9~_j$gv6hd-MFIzUl zbf~~caP-Vs`rP>oW8)K(I5agKo(xGiB#$bqd0A3{2fpJ?tyByZ z^o;t@vJDf|8^k7sW(`EicKT(>w)%V1CJ+fvJEvOC{b|hxGY@jTtgEY1$r&-s=8B}~ zWvJSzHPtysCKibGvMS*jo#A+EqafyUiG_5N&1n2ao_~TV9Kh6kdat8CzIOOx)!&3E zdM=*I7Gd4k+}dvKy!!OHeQ@**d5v-qcrDVizBzt=`PuD9Cjjaaiku2SP7sy?RVa{# zQ8g;fMPijCoB~be7=?`s8qowkCJU@4umCZJ11^zJWq}iTMTv1dXbQ^;j2h>XY?AOY ze^rPnD)*abEp#k;H#m^Ta2U~O4#iOlWl<3UT1N)jL|bSZwa^aQMc>g6^pm2g2?|qF zU7!J<^NbI;YpJlynLdHDmxz(mk%;#_21|xQbP%C>MO?-seMpU2;pRZn;rMXcy?nj< z=Iws_p!e>-@IYT&9-;q)hf|9d5K}2-swyXH8!Fb!-HVBVKDFB z?|s~FA0GV!OveTD)LG;!*4IJB>MD${7`_Y*i&I}%Tp@D54F~fqgLzLf8qwAVIuf0~ Xl)S#Mcx&lS?vHTByMDjF=Z5nOHOrIJ literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAlbum/0000000000.lij b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKAlbum/0000000000.lij new file mode 100644 index 0000000000000000000000000000000000000000..b53ebafb0fe154d591ebc434c8f178d12d849e1a GIT binary patch literal 36913 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 literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKCustomSortOrder/0000000000.lij new file mode 100644 index 0000000000000000000000000000000000000000..c820792e90cb1e73f79a7e0b2fc389fd299a87ec GIT binary patch literal 953 zcmX@Wz`&4Hkds+lVqkECk%^gwm5rT)lZ%^&my3@-I=?6-waBkDHz~C!G`^&=AT>NU zKP5HCGbJ`TKd&S)GY=?Unwb(DUs4<%pPZAKnpYB)pOlrFTmlk~h|d6;n_pBZ$ig7N zD8Lx&lbKYMSXAkjp93^j+411*l(M|uQ*j~r1wN@|sX2~0Nu{~P0&E;R<70E-_kRt{f5zyd2sL2-c`Zvsr9pcmkV1UJx` zf*cGSqSDIRCKfJk9$r47XpZ59@Zn?x$T54797DTQ!U_sqW^AEb*v=OnQj}Pn0ZBRn z{AeNCjphmTB+?7=#4);ff~5iI2^MUg=*q8(7Z8Fa_TZe%l+@yk{PJP}9W>ueA>f;7 HAm0E01zidr literal 0 HcmV?d00001 diff --git a/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKFolder/0000000000.lij b/tests/Empty-Library-4.0-3461.7.150.photoslibrary/resources/recovery/RKFolder/0000000000.lij new file mode 100644 index 0000000000000000000000000000000000000000..25115d9256af3b6b58ddabbc0470f5933cd95bf5 GIT binary patch literal 5227 zcmeH~O>7%Q6vubQN$XOQjNPQ6X`8f8cStYq`*T%O7)QBo+;>@>B;a6vbzO%kGQi3l0kWaDGHA`_F}nas1V^pbPUHF~Gh z*v>8TrA&|_KW7t-t{RwWmghv7nuwzKkP zKM>_{y6gwfjZTIN}wO02jOWuB1f)9zCt9YG`rL19YB3$F=p3Lgod3ipNYgdc_9gug%lG=ebb z0zF^|oCT901u|d-6u=s|1KtPsz-Qn~@GbZS{0Zw}8$1Hr;W5|^dteL>!4WtLG0eiN zP!*gH1nyB7@Q&UA>g%yv6K}CAf7}01x#?3P3$w-Y;iNC+2j9&+Pch#h{=Ql86M;t9 z(!lIszZam-B^J3ru(hMB@0n-MPhFZx%!}BS0DNUlmC6K(E4x>w?E7+Mo*r+*`nn#r zsY{}`QZ9>Ur%iD;gqyGNawDKRSG0PrIoNWzv-iw}$&1so`pO2m4IAWM=W@e=e*?K~ zesuTrMq`X0eT*CN{(!PADPfRHZZEE$)olY;gAx1CxXOr##5$`(J0?4wge^0ZXoyO(8?L zwof+KR*5}Mkji(nPrmY(UI{o1Hqd2>9$V)xk1JB1y{FW;OqOt7vC+O@>(Q?6r_W3z z=b2PuZy~n8#dg#XQ!7!nU7{F+FH|B%L@iT9rkEFRRzk(B`s7vM7OY{Fpjvv$t91e{ zZ}h7VP(#&tvj{V=2yen$@NM|6Ym-fR^Ir9M6JWeK?eWIQe#m&!xC7qosad#Y;cZ)Z z<%4f3ExhP7b^oX1m~-w#b*@v5UsZ&v=G04Y2CC44dH5oHc?+k$T0N)MF{eJ|Id$d! zUFOu#4xGBq7T{McyVicxrET7gJG@0x*?t@B`EL{er^Nk&Ryr2wMYKE4s-T@&oiCNhtWffJE=PU)f9tap2AvA*sl!j5ur|R^1UkCE& z=*6(K#N5oBN&zOQ2h$3xDvHWHk^_s43W`%JO|&cB%|p_m9&C;abAu??MDbn`(0>zW zErj?3r}q|vymy(t-V4djOeq#%hI%f~*~z!kE7LpJH`t;mEif&|G|MB&5$d_?>q5Li zinUO@Rsi%{|BSf=yfz=?wcGUdT0~i5a$-qlex3je)O!Znj?QkS22p|G?uo8thJkK@ Xs@_ge@3r!sjtGNk&_?kh35gQ`CRzgH literal 0 HcmV?d00001 diff --git a/tests/test_catalina_10_15_1.py b/tests/test_catalina_10_15_1.py index 28147211..a96cc8d9 100644 --- a/tests/test_catalina_10_15_1.py +++ b/tests/test_catalina_10_15_1.py @@ -5,7 +5,7 @@ from osxphotos._constants import _UNKNOWN_PERSON # TODO: put some of this code into a pre-function PHOTOS_DB = "./tests/Test-10.15.1.photoslibrary/database/photos.db" -PHOTOS_DB_PATH = "/Test-10.15.1.photoslibrary/database/Photos.sqlite" +PHOTOS_DB_PATH = "/Test-10.15.1.photoslibrary/database/photos.db" PHOTOS_LIBRARY_PATH = "/Test-10.15.1.photoslibrary" KEYWORDS = [ @@ -737,18 +737,34 @@ def test_export_13(): assert photos[0].export(dest) assert e.type == type(FileNotFoundError()) + def test_eq(): import osxphotos - + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) photos1 = photosdb.photos(uuid=[UUID_DICT["export"]]) photos2 = photosdb.photos(uuid=[UUID_DICT["export"]]) assert photos1[0] == photos2[0] + def test_not_eq(): import osxphotos - + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) photos1 = photosdb.photos(uuid=[UUID_DICT["export"]]) photos2 = photosdb.photos(uuid=[UUID_DICT["missing"]]) assert photos1[0] != photos2[0] + + +def test_photosdb_repr(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + print(repr(photosdb)) + photosdb2 = eval(repr(photosdb)) + + ignore_keys = ["_tmp_db", "_tmp_files"] + assert {k: v for k, v in photosdb.__dict__.items() if k not in ignore_keys} == { + k: v for k, v in photosdb2.__dict__.items() if k not in ignore_keys + } + diff --git a/tests/test_empty_library_4_0.py b/tests/test_empty_library_4_0.py new file mode 100644 index 00000000..837764c5 --- /dev/null +++ b/tests/test_empty_library_4_0.py @@ -0,0 +1,108 @@ +import pytest + +# test empty library + +PHOTOS_DB = "./tests/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db" +PHOTOS_DB_PATH = "/Empty-Library-4.0-3461.7.150.photoslibrary/database/photos.db" +PHOTOS_LIBRARY_PATH = "/Empty-Library-4.0-3461.7.150.photoslibrary" + +KEYWORDS = [] +PERSONS = [] +ALBUMS = [] +KEYWORDS_DICT = {} +PERSONS_DICT = {} +ALBUM_DICT = {} + + +def test_init(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + assert isinstance(photosdb, osxphotos.PhotosDB) + + +def test_db_version(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + assert photosdb.db_version in osxphotos._constants._TESTED_DB_VERSIONS + assert photosdb.db_version == "4025" + + +def test_os_version(): + import osxphotos + + (_, major, _) = osxphotos.utils._get_os_version() + assert major in osxphotos._constants._TESTED_OS_VERSIONS + + +def test_persons(): + import osxphotos + import collections + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + assert photosdb.persons == [] + + +def test_keywords(): + import osxphotos + import collections + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + assert photosdb.keywords == [] + + +def test_albums(): + import osxphotos + import collections + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + assert photosdb.albums == [] + + +def test_keywords_dict(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + keywords = photosdb.keywords_as_dict + assert keywords == {} + + +def test_persons_as_dict(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + persons = photosdb.persons_as_dict + assert persons == {} + + +def test_albums_as_dict(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + albums = photosdb.albums_as_dict + assert albums == {} + + +def test_count(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + photos = photosdb.photos() + assert len(photos) == 0 + + +def test_get_db_path(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + db_path = photosdb.db_path + assert db_path.endswith(PHOTOS_DB_PATH) + + +def test_get_library_path(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + lib_path = photosdb.library_path + assert lib_path.endswith(PHOTOS_LIBRARY_PATH) diff --git a/tests/test_export_catalina_10_15_1.py b/tests/test_export_catalina_10_15_1.py index 594d396f..696cc36e 100644 --- a/tests/test_export_catalina_10_15_1.py +++ b/tests/test_export_catalina_10_15_1.py @@ -6,7 +6,7 @@ from osxphotos.utils import dd_to_dms_str # TODO: put some of this code into a pre-function PHOTOS_DB = "./tests/Test-10.15.1.photoslibrary/database/photos.db" -PHOTOS_DB_PATH = "/Test-10.15.1.photoslibrary/database/Photos.sqlite" +PHOTOS_DB_PATH = "/Test-10.15.1.photoslibrary/database/photos.db" PHOTOS_LIBRARY_PATH = "/Test-10.15.1.photoslibrary" KEYWORDS = [ diff --git a/tests/test_mojave_10_14_6.py b/tests/test_mojave_10_14_6.py index c1a04d56..55fa9955 100644 --- a/tests/test_mojave_10_14_6.py +++ b/tests/test_mojave_10_14_6.py @@ -324,3 +324,17 @@ def test_get_library_path(): photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) lib_path = photosdb.library_path assert lib_path.endswith(PHOTOS_LIBRARY_PATH) + + +def test_photosdb_repr(): + import osxphotos + + photosdb = osxphotos.PhotosDB(dbfile=PHOTOS_DB) + print(repr(photosdb)) + photosdb2 = eval(repr(photosdb)) + + ignore_keys = ["_tmp_db", "_tmp_files"] + assert {k: v for k, v in photosdb.__dict__.items() if k not in ignore_keys} == { + k: v for k, v in photosdb2.__dict__.items() if k not in ignore_keys + } + diff --git a/tests/test_shared_catalina_10_15_1.py b/tests/test_shared_catalina_10_15_1.py index 0e1ba9de..be9d4ffd 100644 --- a/tests/test_shared_catalina_10_15_1.py +++ b/tests/test_shared_catalina_10_15_1.py @@ -4,7 +4,7 @@ import pytest # TODO: put some of this code into a pre-function PHOTOS_DB = "./tests/Test-Shared-10.15.1.photoslibrary/database/photos.db" -PHOTOS_DB_PATH = "/Test-Shared-10.15.1.photoslibrary/database/Photos.sqlite" +PHOTOS_DB_PATH = "/Test-Shared-10.15.1.photoslibrary/database/photos.db" PHOTOS_LIBRARY_PATH = "/Test-Shared-10.15.1.photoslibrary" KEYWORDS = ["portrait"] diff --git a/tests/test_shared_mojave_10_14_6.py b/tests/test_shared_mojave_10_14_6.py index 645ae864..d33aedcc 100644 --- a/tests/test_shared_mojave_10_14_6.py +++ b/tests/test_shared_mojave_10_14_6.py @@ -4,7 +4,7 @@ import pytest # TODO: put some of this code into a pre-function PHOTOS_DB = "./tests/Test-10.14.6.photoslibrary/database/photos.db" -PHOTOS_DB_PATH = "/Test-10.14.6.photoslibrary/database/Photos.sqlite" +PHOTOS_DB_PATH = "/Test-10.14.6.photoslibrary/database/photos.db" PHOTOS_LIBRARY_PATH = "/Test-10.14.6.photoslibrary" ALBUMS = ["Pumpkin Farm", "Test Album", "Test Album (1)"]