From 112b745a459a820e8f880f0c12006084fb5f6c04 Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 14 May 2023 21:38:53 +0200 Subject: [PATCH] =?UTF-8?q?Ajuste=20les=20chemins=20d'acc=C3=A8s=20relatif?= =?UTF-8?q?s=20pour=20le=20d=C3=A9bug=20local.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WIP: Adapter la configuration pour la CI/CD. --- .vscode/launch.json | 14 +++++++------- src/build-manifest.js | 4 +--- src/manifest.spec.js | 32 ++++++++++++++------------------ src/package.json | 6 ++---- src/test_images.py | 14 ++------------ 5 files changed, 26 insertions(+), 44 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 64860b4..2c4d49a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,17 +2,17 @@ "version": "0.2.0", "configurations": [ { - "name": "dev-test Valid_set", + "name": "Gen Valid_set", "cwd": "${workspaceFolder}/src", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": [ "run", - "dev-test" + "start" ], "env": { - "ENTRY_FOLDER": "test", + "ENTRY_FOLDER": "${workspaceFolder}/test", "PACKAGE_NAME": "valid_set" }, "skipFiles": [ @@ -20,22 +20,22 @@ ], }, { - "name": "dev-start Valid_set", + "name": "Test Valid_set", "cwd": "${workspaceFolder}/src", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": [ "run", - "dev-start" + "test" ], "env": { - "ENTRY_FOLDER": "test", + "ENTRY_FOLDER": "${workspaceFolder}/test", "PACKAGE_NAME": "valid_set" }, "skipFiles": [ "/**" ], - } + }, ] } \ No newline at end of file diff --git a/src/build-manifest.js b/src/build-manifest.js index 862f8cd..559facc 100644 --- a/src/build-manifest.js +++ b/src/build-manifest.js @@ -6,7 +6,7 @@ const iptc = require("node-iptc"); // find all images const slug = process.env["PACKAGE_NAME"]; const root = process.env["ENTRY_FOLDER"]; -let workingDirectory = path.join("../..", root, slug); +let workingDirectory = path.join(root, slug); // extract metadata from them fs.readdir(workingDirectory, (err, files) => { @@ -22,10 +22,8 @@ fs.readdir(workingDirectory, (err, files) => { // iterate each files files.filter(file => path.extname(file) == '.jpg').forEach(image => { buffer = fs.readFileSync(path.join(workingDirectory, image)); - //if (err) { throw err }; // extract metadata let metadata = iptc(buffer); - // fill object theme.imageFilename ||= metadata.special_instructions + "_*" + path.extname(image); theme.imageCredits ||= metadata.copyright_notice; theme.displayName ||= metadata.headline; diff --git a/src/manifest.spec.js b/src/manifest.spec.js index a026224..2847367 100644 --- a/src/manifest.spec.js +++ b/src/manifest.spec.js @@ -5,12 +5,8 @@ const Ajv = require("ajv").default; const ajv = new Ajv({ allErrors: true }); require("ajv-errors")(ajv); -//let root, slug; -//let workingDirectory = path.join(root, slug); -//console.log(`👷‍♂️ Working with ‘${slug}’ slug.`); - -const themeSchemaFile = "src/test_manifest_job/json_theme_schema.jsonc"; -let wppManifest; +const themeSchemaFile = "json_theme_schema.jsonc"; +let manifest; let validator; let files; let workingDirectory; @@ -21,17 +17,17 @@ function leftOuterJoin(leftArray, rightArray) { }, rightArray); } -function flatReferences(wppManifest) { +function flatReferences(manifest) { allImageIds = [ - wppManifest.dayHighlight, - wppManifest.nightHighlight, - ...wppManifest.dayImageList, - ...wppManifest.nightImageList, - ...(wppManifest.sunsetImageList || []), - ...(wppManifest.sunriseImageList || []) + manifest.dayHighlight, + manifest.nightHighlight, + ...manifest.dayImageList, + ...manifest.nightImageList, + ...(manifest.sunsetImageList || []), + ...(manifest.sunriseImageList || []) ]; return allImageIds.filter(el => el !== undefined).map(el => { - return wppManifest.imageFilename.replace("*", el); + return manifest.imageFilename.replace("*", el); }); } @@ -48,16 +44,16 @@ describe('Mandatory Checks', function () { }); step('Manifest is an existing json file', function () { - wppManifest = JSON.parse(fs.readFileSync(path.join(workingDirectory, "theme.json"), "utf8")); + manifest = JSON.parse(fs.readFileSync(path.join(workingDirectory, "theme.json"), "utf8")); }); step('Manifest passes the schema', function () { - const isValid = validator(wppManifest); + const isValid = validator(manifest); if (!isValid) expect.fail(`\n\t• ${validator.errors.map(el => { return el.message; }).join('\n\t• ')}`); }); step('There are no missing files', function () { - let references = flatReferences(wppManifest); + let references = flatReferences(manifest); references.push("theme.json"); let missings = leftOuterJoin(references, files); expect(missings, @@ -66,7 +62,7 @@ describe('Mandatory Checks', function () { }); step('There are no orphan files', function () { - let references = flatReferences(wppManifest); + let references = flatReferences(manifest); let orphans = leftOuterJoin(files.filter(x => x !== "theme.json"), references); expect(orphans, `The following orphan file${(orphans.length > 1) ? "s are" : " is"} not referenced in this theme.json. Consider removing the file${(orphans.length > 1) ? "s" : ""} or referencing ${(orphans.length > 1) ? "them" : "it"} in the theme.json:\n\t• ${orphans.join('\n\t• ')}\n` diff --git a/src/package.json b/src/package.json index fcd1748..b29a4b3 100644 --- a/src/package.json +++ b/src/package.json @@ -4,10 +4,8 @@ "description": "Generate the manifest file of the project, based on metadata contained in the pictures.", "main": "build-manifest.js", "scripts": { - "dev-start": "", - "start": "", - "dev-test": "mocha --require mocha-steps --colors manifest.spec.js", - "test": "" + "start": "node build-manifest.js", + "test": "mocha --require mocha-steps --colors manifest.spec.js" }, "author": "Simon", "license": "ISC", diff --git a/src/test_images.py b/src/test_images.py index f12b1fa..068b757 100644 --- a/src/test_images.py +++ b/src/test_images.py @@ -1,6 +1,5 @@ import glob from PIL import Image, ImageStat -# from _pytest.outcomes import skip from iteration_utilities import duplicates from pathlib import Path import json @@ -9,12 +8,8 @@ import pytest def validate_brightness_image(working_path, theme_config, high_light, image_list, brightness_way): - # get a dict of all images to scan them image_pattern = theme_config.get("imageFilename") - - # if image_filenames is None: image_filenames = {}.fromkeys(glob.glob(str(Path(working_path, image_pattern)))) - # generate an image statistics for each images for an_imagefile in image_filenames: this_image = Image.open(an_imagefile).convert("L") @@ -32,7 +27,6 @@ def validate_brightness_image(working_path, theme_config, high_light, image_list an_image = image_pattern.replace("*", str(theme_config.get(high_light))) ref_est_file = str(Path(working_path, an_image)) assert actual_est_image == ref_est_file, f"✖ {brightness_way} image is {actual_est_image}, but the {high_light} image is {ref_est_file}." - else: # if not highlight is given in theme.json, we suppose that brightest images are in the daylist ref_est_files = [] @@ -40,7 +34,6 @@ def validate_brightness_image(working_path, theme_config, high_light, image_list an_image = image_pattern.replace('*', str(an_id)) ref_est_files.append(str(Path(working_path, an_image))) assert actual_est_image in ref_est_files, f"✖ {brightness_way} image {actual_est_image} was not found in the '{image_list}' attribute." - # print(f"✔ {brightness_way} image is {actual_est_image}, as expected.") @pytest.fixture @@ -70,11 +63,9 @@ def test_darkest_image(working_path, manifest): def test_image_size(working_path, manifest): image_filename = manifest["imageFilename"].replace("*", str(manifest["dayImageList"][0])) - img = Image.open(Path(working_path, image_filename)) - w, h = img.size + w, h = Image.open(Path(working_path, image_filename)).size assert w >= 1920 and h >= 1080, f"✖ Image size is too small (must be at least 1920×1080, is {w}×{h})" assert w >= h, "✖ Image orientation is portrait (must be landscape or square)" - # print(f"✔ Images are big enough ({w}×{h}) and landscape.") def test_overlapping_images(manifest): jointed_lists = manifest.get("dayImageList") @@ -86,5 +77,4 @@ def test_overlapping_images(manifest): str_dup_refs = [manifest["imageFilename"].replace("*", str(int)) for int in dup_refs] separator = ", " - assert not dup_refs, f"✖ Some images are referenced twice or more times: {separator.join(str_dup_refs)}." - # print("✔ There is no overlapping references of images in the theme.json.") + assert not dup_refs, f"✖ Some images are referenced twice or more: {separator.join(str_dup_refs)}."