mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-19 13:00:28 +00:00
png: Add test suite asset download script.
This commit is contained in:
2
core/image/tests/.gitignore
vendored
Normal file
2
core/image/tests/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.zip
|
||||
*.png
|
||||
2
core/image/tests/build.bat
Normal file
2
core/image/tests/build.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
python3 download_assets.py
|
||||
99
core/image/tests/download_assets.py
Normal file
99
core/image/tests/download_assets.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env python3
|
||||
import urllib.request
|
||||
import shutil
|
||||
import sys
|
||||
import os
|
||||
import zipfile
|
||||
|
||||
DOWNLOAD_BASE_PATH = "assets/{}"
|
||||
ASSETS_BASE_URL = "https://raw.githubusercontent.com/Kelimion/compress-odin/master/tests/assets/{}/{}"
|
||||
PNG_IMAGES = [
|
||||
"basi0g01.png", "basi0g02.png", "basi0g04.png", "basi0g08.png", "basi0g16.png", "basi2c08.png",
|
||||
"basi2c16.png", "basi3p01.png", "basi3p02.png", "basi3p04.png", "basi3p08.png", "basi4a08.png",
|
||||
"basi4a16.png", "basi6a08.png", "basi6a16.png", "basn0g01.png", "basn0g02.png", "basn0g04.png",
|
||||
"basn0g08.png", "basn0g16.png", "basn2c08.png", "basn2c16.png", "basn3p01.png", "basn3p02.png",
|
||||
"basn3p04.png", "basn3p08.png", "basn4a08.png", "basn4a16.png", "basn6a08.png", "basn6a16.png",
|
||||
"bgai4a08.png", "bgai4a16.png", "bgan6a08.png", "bgan6a16.png", "bgbn4a08.png", "bggn4a16.png",
|
||||
"bgwn6a08.png", "bgyn6a16.png", "ccwn2c08.png", "ccwn3p08.png", "cdfn2c08.png", "cdhn2c08.png",
|
||||
"cdsn2c08.png", "cdun2c08.png", "ch1n3p04.png", "ch2n3p08.png", "cm0n0g04.png", "cm7n0g04.png",
|
||||
"cm9n0g04.png", "cs3n2c16.png", "cs3n3p08.png", "cs5n2c08.png", "cs5n3p08.png", "cs8n2c08.png",
|
||||
"cs8n3p08.png", "ct0n0g04.png", "ct1n0g04.png", "cten0g04.png", "ctfn0g04.png", "ctgn0g04.png",
|
||||
"cthn0g04.png", "ctjn0g04.png", "ctzn0g04.png", "exif2c08.png", "f00n0g08.png", "f00n2c08.png",
|
||||
"f01n0g08.png", "f01n2c08.png", "f02n0g08.png", "f02n2c08.png", "f03n0g08.png", "f03n2c08.png",
|
||||
"f04n0g08.png", "f04n2c08.png", "f99n0g04.png", "g03n0g16.png", "g03n2c08.png", "g03n3p04.png",
|
||||
"g04n0g16.png", "g04n2c08.png", "g04n3p04.png", "g05n0g16.png", "g05n2c08.png", "g05n3p04.png",
|
||||
"g07n0g16.png", "g07n2c08.png", "g07n3p04.png", "g10n0g16.png", "g10n2c08.png", "g10n3p04.png",
|
||||
"g25n0g16.png", "g25n2c08.png", "g25n3p04.png", "oi1n0g16.png", "oi1n2c16.png", "oi2n0g16.png",
|
||||
"oi2n2c16.png", "oi4n0g16.png", "oi4n2c16.png", "oi9n0g16.png", "oi9n2c16.png", "pp0n2c16.png",
|
||||
"pp0n6a08.png", "ps1n0g08.png", "ps1n2c16.png", "ps2n0g08.png", "ps2n2c16.png", "s01i3p01.png",
|
||||
"s01n3p01.png", "s02i3p01.png", "s02n3p01.png", "s03i3p01.png", "s03n3p01.png", "s04i3p01.png",
|
||||
"s04n3p01.png", "s05i3p02.png", "s05n3p02.png", "s06i3p02.png", "s06n3p02.png", "s07i3p02.png",
|
||||
"s07n3p02.png", "s08i3p02.png", "s08n3p02.png", "s09i3p02.png", "s09n3p02.png", "s32i3p04.png",
|
||||
"s32n3p04.png", "s33i3p04.png", "s33n3p04.png", "s34i3p04.png", "s34n3p04.png", "s35i3p04.png",
|
||||
"s35n3p04.png", "s36i3p04.png", "s36n3p04.png", "s37i3p04.png", "s37n3p04.png", "s38i3p04.png",
|
||||
"s38n3p04.png", "s39i3p04.png", "s39n3p04.png", "s40i3p04.png", "s40n3p04.png", "tbbn0g04.png",
|
||||
"tbbn2c16.png", "tbbn3p08.png", "tbgn2c16.png", "tbgn3p08.png", "tbrn2c08.png", "tbwn0g16.png",
|
||||
"tbwn3p08.png", "tbyn3p08.png", "tm3n3p02.png", "tp0n0g08.png", "tp0n2c08.png", "tp0n3p08.png",
|
||||
"tp1n3p08.png", "xc1n0g08.png", "xc9n2c08.png", "xcrn0g04.png", "xcsn0g01.png", "xd0n2c08.png",
|
||||
"xd3n2c08.png", "xd9n2c08.png", "xdtn0g01.png", "xhdn0g08.png", "xlfn0g04.png", "xs1n0g01.png",
|
||||
"xs2n0g01.png", "xs4n0g01.png", "xs7n0g01.png", "z00n2c08.png", "z03n2c08.png", "z06n2c08.png",
|
||||
"z09n2c08.png",
|
||||
"PngSuite.png", "logo-slim.png",
|
||||
]
|
||||
|
||||
def try_download_file(url, out_file):
|
||||
try:
|
||||
with urllib.request.urlopen(url) as response, open(out_file, 'wb') as of:
|
||||
shutil.copyfileobj(response, of)
|
||||
print("... ", out_file)
|
||||
except urllib.error.HTTPError:
|
||||
print("Could not download", url)
|
||||
return 1
|
||||
|
||||
def try_download_and_unpack_zip(suite):
|
||||
url = ASSETS_BASE_URL.format(suite, "{}.zip".format(suite))
|
||||
out_file = DOWNLOAD_BASE_PATH.format(suite) + "/{}.zip".format(suite)
|
||||
|
||||
print("\tDownloading {} to {}.".format(url, out_file))
|
||||
|
||||
if try_download_file(url, out_file) is not None:
|
||||
print("Could not download ZIP file")
|
||||
return 1
|
||||
|
||||
# Try opening the ZIP file and extracting the test images
|
||||
try:
|
||||
with zipfile.ZipFile(out_file) as z:
|
||||
for file in z.filelist:
|
||||
filename = file.filename
|
||||
assert(filename in PNG_IMAGES)
|
||||
extract_path = DOWNLOAD_BASE_PATH.format(suite)
|
||||
|
||||
print("\t\tExtracting: {}".format(filename))
|
||||
z.extract(file, extract_path)
|
||||
except:
|
||||
print("Could not extract ZIP file")
|
||||
return 2
|
||||
|
||||
|
||||
def main():
|
||||
print("Downloading PNG assets")
|
||||
|
||||
# Make PNG assets path
|
||||
try:
|
||||
path = DOWNLOAD_BASE_PATH.format("PNG")
|
||||
os.makedirs(path)
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
# Try downloading and unpacking the PNG assets
|
||||
r = try_download_and_unpack_zip("PNG")
|
||||
if r is not None:
|
||||
return r
|
||||
|
||||
# We could fall back on downloading the PNG files individually, but it's slow
|
||||
|
||||
print("Done downloading PNG assets")
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user