From dd792d43705b861bf171207313b46e081048257f Mon Sep 17 00:00:00 2001 From: achmad Date: Thu, 14 May 2026 09:08:06 +0700 Subject: [PATCH] feat: add source tests for all wrapper sources --- internal/sourcetest/logs/.gitkeep | 0 internal/sourcetest/sourcetest.go | 73 +++++ scripts/test-sources.sh | 272 ++++++++++++++++++ sources/all/comicsvalley/comicsvalley_test.go | 9 + sources/all/coomer/coomer_test.go | 9 + sources/all/elitebabes/elitebabes_test.go | 9 + sources/all/femjoyhunter/femjoyhunter_test.go | 9 + sources/all/ftvhunter/ftvhunter_test.go | 9 + sources/all/hentaihand/hentaihand_test.go | 9 + sources/all/hniscantrad/hniscantrad_test.go | 9 + sources/all/joymiihub/joymiihub_test.go | 9 + sources/all/kemono/kemono_test.go | 9 + sources/all/mangacrazy/mangacrazy_test.go | 9 + sources/all/mangataro/mangataro_test.go | 9 + sources/all/metarthunter/metarthunter_test.go | 9 + .../all/playmatehunter/playmatehunter_test.go | 9 + sources/all/xarthunter/xarthunter_test.go | 9 + sources/en/aquamanga/aquamanga_test.go | 9 + sources/en/arcrelight/arcrelight_test.go | 9 + sources/en/arenascans/arenascans_test.go | 9 + sources/en/artlapsa/artlapsa_test.go | 9 + .../en/assortedscans/assortedscans_test.go | 9 + sources/en/baektoons/baektoons_test.go | 9 + sources/en/bakkin/bakkin_test.go | 9 + sources/en/beehentai/beehentai_test.go | 9 + sources/en/boratscans/boratscans_test.go | 9 + sources/en/boxmanhwa/boxmanhwa_test.go | 9 + sources/en/bunmanga/bunmanga_test.go | 9 + sources/en/cocomic/cocomic_test.go | 9 + sources/en/comicsland/comicsland_test.go | 9 + sources/en/crowscans/crowscans_test.go | 9 + .../en/cucumbermanga/cucumbermanga_test.go | 9 + .../en/dankefurslesen/dankefurslesen_test.go | 9 + .../en/decadencescans/decadencescans_test.go | 9 + sources/en/divascans/divascans_test.go | 9 + sources/en/eightmuses/eightmuses_test.go | 9 + sources/en/elftoon/elftoon_test.go | 9 + sources/en/epicmanga/epicmanga_test.go | 9 + sources/en/erisscans/erisscans_test.go | 9 + sources/en/ero18x/ero18x_test.go | 9 + sources/en/evilflowers/evilflowers_test.go | 9 + sources/en/fablescans/fablescans_test.go | 9 + sources/en/gakamangas/gakamangas_test.go | 9 + .../galaxydegenscans/galaxydegenscans_test.go | 9 + sources/en/guya/guya_test.go | 9 + sources/en/hachirumi/hachirumi_test.go | 9 + sources/en/hentai4free/hentai4free_test.go | 9 + sources/en/hijalascans/hijalascans_test.go | 9 + sources/en/jinmangas/jinmangas_test.go | 9 + sources/en/kaizenscan/kaizenscan_test.go | 9 + sources/en/kaliscancom/kaliscancom_test.go | 9 + sources/en/kaliscanio/kaliscanio_test.go | 9 + sources/en/kaliscanme/kaliscanme_test.go | 9 + sources/en/kewnscans/kewnscans_test.go | 9 + sources/en/kingofshojo/kingofshojo_test.go | 9 + sources/en/kissmangain/kissmangain_test.go | 9 + sources/en/kunmanga/kunmanga_test.go | 9 + .../en/lhtranslation/lhtranslation_test.go | 9 + sources/en/linkmanga/linkmanga_test.go | 9 + sources/en/lunatoons/lunatoons_test.go | 9 + sources/en/manga18x/manga18x_test.go | 9 + sources/en/mangabuddy/mangabuddy_test.go | 9 + sources/en/mangabuddyme/mangabuddyme_test.go | 9 + sources/en/mangacute/mangacute_test.go | 9 + sources/en/mangafab/mangafab_test.go | 9 + sources/en/mangaforest/mangaforest_test.go | 9 + sources/en/mangafoxfun/mangafoxfun_test.go | 9 + sources/en/mangagg/mangagg_test.go | 9 + sources/en/mangahe/mangahe_test.go | 9 + sources/en/mangahentai/mangahentai_test.go | 9 + sources/en/mangahereonl/mangahereonl_test.go | 9 + sources/en/mangahubio/mangahubio_test.go | 9 + .../mangakakalotfun/mangakakalotfun_test.go | 9 + sources/en/mangamonk/mangamonk_test.go | 9 + sources/en/manganel/manganel_test.go | 9 + .../en/mangaonlinefun/mangaonlinefun_test.go | 9 + .../en/mangapandaonl/mangapandaonl_test.go | 9 + .../mangareadersite/mangareadersite_test.go | 9 + sources/en/mangasaga/mangasaga_test.go | 9 + sources/en/mangaspin/mangaspin_test.go | 9 + sources/en/mangatoday/mangatoday_test.go | 9 + sources/en/mangaxyz/mangaxyz_test.go | 9 + sources/en/manhuanow/manhuanow_test.go | 9 + sources/en/manhuasite/manhuasite_test.go | 9 + sources/en/manhwalover/manhwalover_test.go | 9 + sources/en/manhwareads/manhwareads_test.go | 9 + sources/en/manhwatop/manhwatop_test.go | 9 + sources/en/manhwax/manhwax_test.go | 9 + sources/en/mgjinx/mgjinx_test.go | 9 + sources/en/mistscans/mistscans_test.go | 9 + .../monochromescans/monochromescans_test.go | 9 + sources/en/necroscans/necroscans_test.go | 9 + sources/en/nyanukafe/nyanukafe_test.go | 9 + sources/en/nyxscans/nyxscans_test.go | 9 + sources/en/octopusmanga/octopusmanga_test.go | 9 + sources/en/onemangaco/onemangaco_test.go | 9 + sources/en/onemangainfo/onemangainfo_test.go | 9 + sources/en/orionscans/orionscans_test.go | 9 + sources/en/pawmanga/pawmanga_test.go | 9 + sources/en/ravenscans/ravenscans_test.go | 9 + ...attackontitanshingekinokyojinmanga_test.go | 9 + .../readberserkmanga/readberserkmanga_test.go | 9 + .../readblackclovermangaonline_test.go | 9 + ...unoheroacademiamyheroacademiamanga_test.go | 9 + .../readchainsawmanmangaonline_test.go | 9 + .../readfairytailedenszeromangaonline_test.go | 9 + .../readhaikyuumangaonline_test.go | 9 + .../readjujutsukaisenmangaonline_test.go | 9 + .../readkingdommangaonline_test.go | 9 + ...atsunotaizai7deadlysinsmangaonline_test.go | 9 + ...eadnarutoborutosamurai8mangaonline_test.go | 9 + .../readonepiecemangaonline_test.go | 9 + .../readonepunchmanmangaonlinetwo_test.go | 9 + .../readsololevelingmangamanhwaonline_test.go | 9 + ...dtokyoghoulretokyoghoulmangaonline_test.go | 9 + sources/en/renascans/renascans_test.go | 9 + sources/en/ritharscans/ritharscans_test.go | 9 + .../en/rosesquadscans/rosesquadscans_test.go | 9 + sources/en/ryumanga/ryumanga_test.go | 9 + sources/en/sanascans/sanascans_test.go | 9 + sources/en/sirenscans/sirenscans_test.go | 9 + .../sleepytranslations_test.go | 9 + .../tcbscansunoriginal_test.go | 9 + sources/en/toonilyme/toonilyme_test.go | 9 + sources/en/toonitube/toonitube_test.go | 9 + sources/en/topmanhua/topmanhua_test.go | 9 + sources/en/vanillascans/vanillascans_test.go | 9 + sources/en/yaoihub/yaoihub_test.go | 9 + 128 files changed, 1470 insertions(+) create mode 100644 internal/sourcetest/logs/.gitkeep create mode 100644 internal/sourcetest/sourcetest.go create mode 100755 scripts/test-sources.sh create mode 100644 sources/all/comicsvalley/comicsvalley_test.go create mode 100644 sources/all/coomer/coomer_test.go create mode 100644 sources/all/elitebabes/elitebabes_test.go create mode 100644 sources/all/femjoyhunter/femjoyhunter_test.go create mode 100644 sources/all/ftvhunter/ftvhunter_test.go create mode 100644 sources/all/hentaihand/hentaihand_test.go create mode 100644 sources/all/hniscantrad/hniscantrad_test.go create mode 100644 sources/all/joymiihub/joymiihub_test.go create mode 100644 sources/all/kemono/kemono_test.go create mode 100644 sources/all/mangacrazy/mangacrazy_test.go create mode 100644 sources/all/mangataro/mangataro_test.go create mode 100644 sources/all/metarthunter/metarthunter_test.go create mode 100644 sources/all/playmatehunter/playmatehunter_test.go create mode 100644 sources/all/xarthunter/xarthunter_test.go create mode 100644 sources/en/aquamanga/aquamanga_test.go create mode 100644 sources/en/arcrelight/arcrelight_test.go create mode 100644 sources/en/arenascans/arenascans_test.go create mode 100644 sources/en/artlapsa/artlapsa_test.go create mode 100644 sources/en/assortedscans/assortedscans_test.go create mode 100644 sources/en/baektoons/baektoons_test.go create mode 100644 sources/en/bakkin/bakkin_test.go create mode 100644 sources/en/beehentai/beehentai_test.go create mode 100644 sources/en/boratscans/boratscans_test.go create mode 100644 sources/en/boxmanhwa/boxmanhwa_test.go create mode 100644 sources/en/bunmanga/bunmanga_test.go create mode 100644 sources/en/cocomic/cocomic_test.go create mode 100644 sources/en/comicsland/comicsland_test.go create mode 100644 sources/en/crowscans/crowscans_test.go create mode 100644 sources/en/cucumbermanga/cucumbermanga_test.go create mode 100644 sources/en/dankefurslesen/dankefurslesen_test.go create mode 100644 sources/en/decadencescans/decadencescans_test.go create mode 100644 sources/en/divascans/divascans_test.go create mode 100644 sources/en/eightmuses/eightmuses_test.go create mode 100644 sources/en/elftoon/elftoon_test.go create mode 100644 sources/en/epicmanga/epicmanga_test.go create mode 100644 sources/en/erisscans/erisscans_test.go create mode 100644 sources/en/ero18x/ero18x_test.go create mode 100644 sources/en/evilflowers/evilflowers_test.go create mode 100644 sources/en/fablescans/fablescans_test.go create mode 100644 sources/en/gakamangas/gakamangas_test.go create mode 100644 sources/en/galaxydegenscans/galaxydegenscans_test.go create mode 100644 sources/en/guya/guya_test.go create mode 100644 sources/en/hachirumi/hachirumi_test.go create mode 100644 sources/en/hentai4free/hentai4free_test.go create mode 100644 sources/en/hijalascans/hijalascans_test.go create mode 100644 sources/en/jinmangas/jinmangas_test.go create mode 100644 sources/en/kaizenscan/kaizenscan_test.go create mode 100644 sources/en/kaliscancom/kaliscancom_test.go create mode 100644 sources/en/kaliscanio/kaliscanio_test.go create mode 100644 sources/en/kaliscanme/kaliscanme_test.go create mode 100644 sources/en/kewnscans/kewnscans_test.go create mode 100644 sources/en/kingofshojo/kingofshojo_test.go create mode 100644 sources/en/kissmangain/kissmangain_test.go create mode 100644 sources/en/kunmanga/kunmanga_test.go create mode 100644 sources/en/lhtranslation/lhtranslation_test.go create mode 100644 sources/en/linkmanga/linkmanga_test.go create mode 100644 sources/en/lunatoons/lunatoons_test.go create mode 100644 sources/en/manga18x/manga18x_test.go create mode 100644 sources/en/mangabuddy/mangabuddy_test.go create mode 100644 sources/en/mangabuddyme/mangabuddyme_test.go create mode 100644 sources/en/mangacute/mangacute_test.go create mode 100644 sources/en/mangafab/mangafab_test.go create mode 100644 sources/en/mangaforest/mangaforest_test.go create mode 100644 sources/en/mangafoxfun/mangafoxfun_test.go create mode 100644 sources/en/mangagg/mangagg_test.go create mode 100644 sources/en/mangahe/mangahe_test.go create mode 100644 sources/en/mangahentai/mangahentai_test.go create mode 100644 sources/en/mangahereonl/mangahereonl_test.go create mode 100644 sources/en/mangahubio/mangahubio_test.go create mode 100644 sources/en/mangakakalotfun/mangakakalotfun_test.go create mode 100644 sources/en/mangamonk/mangamonk_test.go create mode 100644 sources/en/manganel/manganel_test.go create mode 100644 sources/en/mangaonlinefun/mangaonlinefun_test.go create mode 100644 sources/en/mangapandaonl/mangapandaonl_test.go create mode 100644 sources/en/mangareadersite/mangareadersite_test.go create mode 100644 sources/en/mangasaga/mangasaga_test.go create mode 100644 sources/en/mangaspin/mangaspin_test.go create mode 100644 sources/en/mangatoday/mangatoday_test.go create mode 100644 sources/en/mangaxyz/mangaxyz_test.go create mode 100644 sources/en/manhuanow/manhuanow_test.go create mode 100644 sources/en/manhuasite/manhuasite_test.go create mode 100644 sources/en/manhwalover/manhwalover_test.go create mode 100644 sources/en/manhwareads/manhwareads_test.go create mode 100644 sources/en/manhwatop/manhwatop_test.go create mode 100644 sources/en/manhwax/manhwax_test.go create mode 100644 sources/en/mgjinx/mgjinx_test.go create mode 100644 sources/en/mistscans/mistscans_test.go create mode 100644 sources/en/monochromescans/monochromescans_test.go create mode 100644 sources/en/necroscans/necroscans_test.go create mode 100644 sources/en/nyanukafe/nyanukafe_test.go create mode 100644 sources/en/nyxscans/nyxscans_test.go create mode 100644 sources/en/octopusmanga/octopusmanga_test.go create mode 100644 sources/en/onemangaco/onemangaco_test.go create mode 100644 sources/en/onemangainfo/onemangainfo_test.go create mode 100644 sources/en/orionscans/orionscans_test.go create mode 100644 sources/en/pawmanga/pawmanga_test.go create mode 100644 sources/en/ravenscans/ravenscans_test.go create mode 100644 sources/en/readattackontitanshingekinokyojinmanga/readattackontitanshingekinokyojinmanga_test.go create mode 100644 sources/en/readberserkmanga/readberserkmanga_test.go create mode 100644 sources/en/readblackclovermangaonline/readblackclovermangaonline_test.go create mode 100644 sources/en/readbokunoheroacademiamyheroacademiamanga/readbokunoheroacademiamyheroacademiamanga_test.go create mode 100644 sources/en/readchainsawmanmangaonline/readchainsawmanmangaonline_test.go create mode 100644 sources/en/readfairytailedenszeromangaonline/readfairytailedenszeromangaonline_test.go create mode 100644 sources/en/readhaikyuumangaonline/readhaikyuumangaonline_test.go create mode 100644 sources/en/readjujutsukaisenmangaonline/readjujutsukaisenmangaonline_test.go create mode 100644 sources/en/readkingdommangaonline/readkingdommangaonline_test.go create mode 100644 sources/en/readnanatsunotaizai7deadlysinsmangaonline/readnanatsunotaizai7deadlysinsmangaonline_test.go create mode 100644 sources/en/readnarutoborutosamurai8mangaonline/readnarutoborutosamurai8mangaonline_test.go create mode 100644 sources/en/readonepiecemangaonline/readonepiecemangaonline_test.go create mode 100644 sources/en/readonepunchmanmangaonlinetwo/readonepunchmanmangaonlinetwo_test.go create mode 100644 sources/en/readsololevelingmangamanhwaonline/readsololevelingmangamanhwaonline_test.go create mode 100644 sources/en/readtokyoghoulretokyoghoulmangaonline/readtokyoghoulretokyoghoulmangaonline_test.go create mode 100644 sources/en/renascans/renascans_test.go create mode 100644 sources/en/ritharscans/ritharscans_test.go create mode 100644 sources/en/rosesquadscans/rosesquadscans_test.go create mode 100644 sources/en/ryumanga/ryumanga_test.go create mode 100644 sources/en/sanascans/sanascans_test.go create mode 100644 sources/en/sirenscans/sirenscans_test.go create mode 100644 sources/en/sleepytranslations/sleepytranslations_test.go create mode 100644 sources/en/tcbscansunoriginal/tcbscansunoriginal_test.go create mode 100644 sources/en/toonilyme/toonilyme_test.go create mode 100644 sources/en/toonitube/toonitube_test.go create mode 100644 sources/en/topmanhua/topmanhua_test.go create mode 100644 sources/en/vanillascans/vanillascans_test.go create mode 100644 sources/en/yaoihub/yaoihub_test.go diff --git a/internal/sourcetest/logs/.gitkeep b/internal/sourcetest/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/internal/sourcetest/sourcetest.go b/internal/sourcetest/sourcetest.go new file mode 100644 index 0000000..23e2887 --- /dev/null +++ b/internal/sourcetest/sourcetest.go @@ -0,0 +1,73 @@ +// Package sourcetest provides shared smoke-test helpers for catalogue sources. +// Config checks (Name, Lang, ID) always run. Network calls are skipped under -short. +package sourcetest + +import ( + "testing" + + "goyomi/internal/source" +) + +// Run verifies source metadata and, unless -short is set, calls GetPopularManga +// and GetLatestUpdates (when supported) against the live site. +func Run(t *testing.T, s source.CatalogueSource, wantName, wantLang string) { + t.Helper() + + if s == nil { + t.Fatal("source is nil") + } + + if got := s.Name(); got != wantName { + t.Errorf("Name() = %q, want %q", got, wantName) + } + if got := s.Lang(); got != wantLang { + t.Errorf("Lang() = %q, want %q", got, wantLang) + } + if s.ID() == 0 { + t.Error("ID() == 0") + } + + if testing.Short() { + return + } + + t.Run("GetPopularManga", func(t *testing.T) { + page, err := s.GetPopularManga(1) + if err != nil { + t.Fatalf("GetPopularManga(1): %v", err) + } + if len(page.Mangas) == 0 { + t.Fatal("GetPopularManga returned 0 results") + } + for i, m := range page.Mangas { + if m.Title == "" { + t.Errorf("manga[%d].Title is empty", i) + } + if m.URL == "" { + t.Errorf("manga[%d].URL is empty", i) + } + } + }) + + if !s.SupportsLatest() { + return + } + + t.Run("GetLatestUpdates", func(t *testing.T) { + page, err := s.GetLatestUpdates(1) + if err != nil { + t.Fatalf("GetLatestUpdates(1): %v", err) + } + if len(page.Mangas) == 0 { + t.Fatal("GetLatestUpdates returned 0 results") + } + for i, m := range page.Mangas { + if m.Title == "" { + t.Errorf("manga[%d].Title is empty", i) + } + if m.URL == "" { + t.Errorf("manga[%d].URL is empty", i) + } + } + }) +} diff --git a/scripts/test-sources.sh b/scripts/test-sources.sh new file mode 100755 index 0000000..d158d64 --- /dev/null +++ b/scripts/test-sources.sh @@ -0,0 +1,272 @@ +#!/usr/bin/env bash +# test-sources.sh — run source integration tests inside the compose network. +# +# Usage: +# ./scripts/test-sources.sh # run all source packages +# ./scripts/test-sources.sh ./sources/en/... # run specific packages +# ./scripts/test-sources.sh -short # metadata-only, no network calls +# +# Environment: +# PARALLELISM number of packages to test in parallel (default: 4) +# PKG_TIMEOUT per-package timeout (default: 120s) + +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +NETWORK="goyomi_goyomi_dev" +FLARESOLVERR_SERVICE="goyomi-flaresolverr-1" +COMPOSE_FILE="$REPO_ROOT/compose.yml" +GO_IMAGE="golang:1.26" +PARALLELISM="${PARALLELISM:-4}" +PKG_TIMEOUT="${PKG_TIMEOUT:-120s}" +LOGS_DIR="$REPO_ROOT/internal/sourcetest/logs" +RUN_TIMESTAMP="$(date '+%Y-%m-%dT%H-%M-%S')" +SUMMARY_LOG="$LOGS_DIR/$RUN_TIMESTAMP.log" + +# --- helpers ----------------------------------------------------------------- + +info() { printf '\033[1;34m[info]\033[0m %s\n' "$*"; } +ok() { printf '\033[1;32m[ok]\033[0m %s\n' "$*"; } +warn() { printf '\033[1;33m[warn]\033[0m %s\n' "$*"; } +die() { printf '\033[1;31m[error]\033[0m %s\n' "$*" >&2; exit 1; } + +# --- write Python helpers to temp files -------------------------------------- + +PRINTER_PY="$(mktemp /tmp/goyomi-printer-XXXXXX.py)" +SUMMARY_PY="$(mktemp /tmp/goyomi-summary-XXXXXX.py)" +JSON_LOG="$(mktemp /tmp/goyomi-test-XXXXXX.json)" +trap 'rm -f "$PRINTER_PY" "$SUMMARY_PY" "$JSON_LOG"' EXIT + +# Live streaming printer: reads JSON events from stdin, pretty-prints to terminal, +# and saves all events to the log file for the summary step. +cat > "$PRINTER_PY" << 'PYEOF' +import sys, json + +log_path = sys.argv[1] + +RESET = '\033[0m' +GREEN = '\033[1;32m' +RED = '\033[1;31m' +YELLOW = '\033[1;33m' +GRAY = '\033[0;37m' + +with open(log_path, 'w') as log_file: + for raw in sys.stdin: + raw = raw.rstrip() + log_file.write(raw + '\n') + log_file.flush() + + try: + ev = json.loads(raw) + except json.JSONDecodeError: + print(raw, flush=True) + continue + + action = ev.get('Action', '') + pkg = ev.get('Package', '') + test = ev.get('Test', '') + output = ev.get('Output', '').rstrip() + short = pkg.split('/')[-1] if pkg else '' + + if action == 'output': + skip_prefixes = ('=== RUN', '=== PAUSE', '=== CONT', '--- PASS', '--- FAIL', 'ok ') + skip_exact = {'PASS', 'FAIL', ''} + if output and output not in skip_exact and not any(output.startswith(p) for p in skip_prefixes): + print(f'{GRAY}{output}{RESET}', flush=True) + elif action == 'pass' and not test: + elapsed = ev.get('Elapsed', 0) + print(f'{GREEN}PASS{RESET} {short:<45} ({elapsed:.2f}s)', flush=True) + elif action == 'fail' and not test: + elapsed = ev.get('Elapsed', 0) + print(f'{RED}FAIL{RESET} {short:<45} ({elapsed:.2f}s)', flush=True) + elif action == 'skip' and not test: + print(f'{YELLOW}SKIP{RESET} {short}', flush=True) +PYEOF + +# Summary parser: reads the saved JSON log, prints pass/fail counts to terminal, +# and writes a plain-text copy to the summary log file. +# argv: +cat > "$SUMMARY_PY" << 'PYEOF' +import sys, json, re + +json_path = sys.argv[1] +summary_path = sys.argv[2] + +RESET = '\033[0m' +GREEN = '\033[1;32m' +RED = '\033[1;31m' +BOLD = '\033[1m' + +passed = [] +failed = {} +cur_sub = {} +pkg_errs = {} + +with open(json_path) as f: + for raw in f: + try: + ev = json.loads(raw) + except: + continue + + action = ev.get('Action', '') + pkg = ev.get('Package', '') + test = ev.get('Test', '') + output = ev.get('Output', '').rstrip() + + if action == 'run' and test and '/' in test: + cur_sub[pkg] = test.split('/', 1)[1] + + elif action == 'output' and test: + m = re.match(r'^\s+\S+\.go:\d+:\s+(.*)', output) + if m: + subtest = cur_sub.get(pkg, test.split('/', 1)[1] if '/' in test else test) + pkg_errs.setdefault(pkg, {}).setdefault(subtest, []).append(m.group(1).strip()) + + elif action == 'pass' and not test: + passed.append(pkg) + + elif action == 'fail' and not test: + failed[pkg] = pkg_errs.get(pkg, {}) + +total = len(passed) + len(failed) + +# Build plain-text lines (no ANSI codes) for the log file +plain_lines = [] +plain_lines.append('') +plain_lines.append('=' * 60) +plain_lines.append(' TEST SUMMARY') +plain_lines.append('=' * 60) +plain_lines.append(f' Packages tested : {total}') +plain_lines.append(f' Passed : {len(passed)}') +plain_lines.append(f' Failed : {len(failed)}') + +if failed: + plain_lines.append('') + plain_lines.append('Failed packages:') + for pkg in sorted(failed): + short = pkg.split('/')[-1] + subtests = failed[pkg] + if subtests: + for subtest, errors in subtests.items(): + reason = '; '.join(errors) if errors else '(no message captured)' + plain_lines.append(f' ✗ {short} [{subtest}] {reason}') + else: + plain_lines.append(f' ✗ {short} (build error or panic)') + +plain_lines.append('') +if not failed: + plain_lines.append(f'All {total} packages passed.') +else: + plain_lines.append(f'{len(failed)} package(s) failed.') +plain_lines.append('') + +# Print to terminal with colours +colour = { + 'Passed': GREEN, 'Failed': RED, + 'Failed packages:': RED, + 'All': GREEN, +} +for line in plain_lines: + if line.startswith(' Passed'): + print(f' {GREEN}Passed{RESET}' + line[9:], flush=True) + elif line.startswith(' Failed :'): + print(f' {RED}Failed{RESET} :' + line[19:], flush=True) + elif line.startswith('Failed packages:'): + print(f'{RED}Failed packages:{RESET}', flush=True) + elif line.startswith(' ✗'): + print(f' {RED}✗{RESET}' + line[3:], flush=True) + elif line.startswith('All') and 'passed' in line: + print(f'{GREEN}{line}{RESET}', flush=True) + elif line.startswith('='): + print(BOLD + line + RESET, flush=True) + elif line.strip() == 'TEST SUMMARY': + print(BOLD + line + RESET, flush=True) + else: + print(line, flush=True) + +# Write plain text to summary log file +with open(summary_path, 'w') as f: + f.write('\n'.join(plain_lines) + '\n') + if failed: + f.write('\nPassed packages:\n') + for pkg in sorted(passed): + f.write(f' ✓ {pkg.split("/")[-1]}\n') +PYEOF + +# --- check docker daemon ----------------------------------------------------- + +if ! docker info > /dev/null 2>&1; then + die "Docker daemon is not running. Start OrbStack (or Docker Desktop) first." +fi +ok "Docker daemon is running" + +# --- ensure flaresolverr is up ----------------------------------------------- + +if docker inspect "$FLARESOLVERR_SERVICE" --format '{{.State.Running}}' 2>/dev/null | grep -q true; then + ok "FlareSolverr container is already running" +else + info "Starting FlareSolverr via docker compose..." + docker compose -f "$COMPOSE_FILE" up -d flaresolverr + for i in $(seq 1 20); do + if docker inspect "$FLARESOLVERR_SERVICE" --format '{{.State.Running}}' 2>/dev/null | grep -q true; then + ok "FlareSolverr is up"; break + fi + sleep 2 + if [ "$i" -eq 20 ]; then + die "FlareSolverr did not start in time" + fi + done +fi + +# --- ensure network exists --------------------------------------------------- + +if ! docker network inspect "$NETWORK" > /dev/null 2>&1; then + die "Docker network '$NETWORK' not found. Run 'docker compose up -d' first." +fi +ok "Network $NETWORK exists" + +# --- resolve packages to test ------------------------------------------------ + +SHORT_FLAG="" +if [ $# -eq 0 ]; then + PACKAGES="./sources/en/... ./sources/all/..." +elif [ "$1" = "-short" ]; then + PACKAGES="./sources/en/... ./sources/all/..." + SHORT_FLAG="-short" + shift +else + PACKAGES="$*" +fi + +info "Packages : $PACKAGES" +info "Parallel : $PARALLELISM" +info "Timeout : $PKG_TIMEOUT" +[ -n "$SHORT_FLAG" ] && info "Mode : short (metadata only)" || info "Mode : full (live network)" + +# --- run tests --------------------------------------------------------------- + +info "Running tests..." +echo + +set +e +docker run --rm \ + --network "$NETWORK" \ + -e FLARESOLVERR_URL=http://flaresolverr:8191 \ + -v "$REPO_ROOT":/workspace \ + -v goyomi_go_mod_cache:/go/pkg/mod \ + -v goyomi_go_build_cache:/root/.cache/go-build \ + -w /workspace \ + "$GO_IMAGE" \ + go test -json -count=1 -p "$PARALLELISM" -timeout "$PKG_TIMEOUT" $SHORT_FLAG $PACKAGES \ + | python3 -u "$PRINTER_PY" "$JSON_LOG" +EXIT_CODE=$? +set -e + +# --- print summary ----------------------------------------------------------- + +mkdir -p "$LOGS_DIR" +python3 "$SUMMARY_PY" "$JSON_LOG" "$SUMMARY_LOG" +info "Summary log written to internal/sourcetest/logs/$RUN_TIMESTAMP.log" + +exit $EXIT_CODE diff --git a/sources/all/comicsvalley/comicsvalley_test.go b/sources/all/comicsvalley/comicsvalley_test.go new file mode 100644 index 0000000..71104c6 --- /dev/null +++ b/sources/all/comicsvalley/comicsvalley_test.go @@ -0,0 +1,9 @@ +package comicsvalley + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Comics Valley", "all") } diff --git a/sources/all/coomer/coomer_test.go b/sources/all/coomer/coomer_test.go new file mode 100644 index 0000000..e4e697b --- /dev/null +++ b/sources/all/coomer/coomer_test.go @@ -0,0 +1,9 @@ +package coomer + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Coomer", "all") } diff --git a/sources/all/elitebabes/elitebabes_test.go b/sources/all/elitebabes/elitebabes_test.go new file mode 100644 index 0000000..7a39965 --- /dev/null +++ b/sources/all/elitebabes/elitebabes_test.go @@ -0,0 +1,9 @@ +package elitebabes + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Elite Babes", "all") } diff --git a/sources/all/femjoyhunter/femjoyhunter_test.go b/sources/all/femjoyhunter/femjoyhunter_test.go new file mode 100644 index 0000000..001cb1a --- /dev/null +++ b/sources/all/femjoyhunter/femjoyhunter_test.go @@ -0,0 +1,9 @@ +package femjoyhunter + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Femjoy Hunter", "all") } diff --git a/sources/all/ftvhunter/ftvhunter_test.go b/sources/all/ftvhunter/ftvhunter_test.go new file mode 100644 index 0000000..9ac4938 --- /dev/null +++ b/sources/all/ftvhunter/ftvhunter_test.go @@ -0,0 +1,9 @@ +package ftvhunter + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "FTV Hunter", "all") } diff --git a/sources/all/hentaihand/hentaihand_test.go b/sources/all/hentaihand/hentaihand_test.go new file mode 100644 index 0000000..8415b8f --- /dev/null +++ b/sources/all/hentaihand/hentaihand_test.go @@ -0,0 +1,9 @@ +package hentaihand + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "HentaiHand", "all") } diff --git a/sources/all/hniscantrad/hniscantrad_test.go b/sources/all/hniscantrad/hniscantrad_test.go new file mode 100644 index 0000000..29181ae --- /dev/null +++ b/sources/all/hniscantrad/hniscantrad_test.go @@ -0,0 +1,9 @@ +package hniscantrad + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "HNI-Scantrad", "all") } diff --git a/sources/all/joymiihub/joymiihub_test.go b/sources/all/joymiihub/joymiihub_test.go new file mode 100644 index 0000000..dc2bcad --- /dev/null +++ b/sources/all/joymiihub/joymiihub_test.go @@ -0,0 +1,9 @@ +package joymiihub + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Joymii Hub", "all") } diff --git a/sources/all/kemono/kemono_test.go b/sources/all/kemono/kemono_test.go new file mode 100644 index 0000000..eba3ec5 --- /dev/null +++ b/sources/all/kemono/kemono_test.go @@ -0,0 +1,9 @@ +package kemono + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Kemono", "all") } diff --git a/sources/all/mangacrazy/mangacrazy_test.go b/sources/all/mangacrazy/mangacrazy_test.go new file mode 100644 index 0000000..738749a --- /dev/null +++ b/sources/all/mangacrazy/mangacrazy_test.go @@ -0,0 +1,9 @@ +package mangacrazy + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaCrazy", "all") } diff --git a/sources/all/mangataro/mangataro_test.go b/sources/all/mangataro/mangataro_test.go new file mode 100644 index 0000000..3d8dcca --- /dev/null +++ b/sources/all/mangataro/mangataro_test.go @@ -0,0 +1,9 @@ +package mangataro + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaTaro", "en") } diff --git a/sources/all/metarthunter/metarthunter_test.go b/sources/all/metarthunter/metarthunter_test.go new file mode 100644 index 0000000..a401416 --- /dev/null +++ b/sources/all/metarthunter/metarthunter_test.go @@ -0,0 +1,9 @@ +package metarthunter + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Metart Hunter", "all") } diff --git a/sources/all/playmatehunter/playmatehunter_test.go b/sources/all/playmatehunter/playmatehunter_test.go new file mode 100644 index 0000000..a34814b --- /dev/null +++ b/sources/all/playmatehunter/playmatehunter_test.go @@ -0,0 +1,9 @@ +package playmatehunter + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Playmate Hunter", "all") } diff --git a/sources/all/xarthunter/xarthunter_test.go b/sources/all/xarthunter/xarthunter_test.go new file mode 100644 index 0000000..5a80ce5 --- /dev/null +++ b/sources/all/xarthunter/xarthunter_test.go @@ -0,0 +1,9 @@ +package xarthunter + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "XArt Hunter", "all") } diff --git a/sources/en/aquamanga/aquamanga_test.go b/sources/en/aquamanga/aquamanga_test.go new file mode 100644 index 0000000..ba5a8fe --- /dev/null +++ b/sources/en/aquamanga/aquamanga_test.go @@ -0,0 +1,9 @@ +package aquamanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Aqua Manga", "en") } diff --git a/sources/en/arcrelight/arcrelight_test.go b/sources/en/arcrelight/arcrelight_test.go new file mode 100644 index 0000000..ad9fa4f --- /dev/null +++ b/sources/en/arcrelight/arcrelight_test.go @@ -0,0 +1,9 @@ +package arcrelight + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Arc-Relight", "en") } diff --git a/sources/en/arenascans/arenascans_test.go b/sources/en/arenascans/arenascans_test.go new file mode 100644 index 0000000..1d427c4 --- /dev/null +++ b/sources/en/arenascans/arenascans_test.go @@ -0,0 +1,9 @@ +package arenascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Arena Scans", "en") } diff --git a/sources/en/artlapsa/artlapsa_test.go b/sources/en/artlapsa/artlapsa_test.go new file mode 100644 index 0000000..5ddf1c7 --- /dev/null +++ b/sources/en/artlapsa/artlapsa_test.go @@ -0,0 +1,9 @@ +package artlapsa + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Art Lapsa", "en") } diff --git a/sources/en/assortedscans/assortedscans_test.go b/sources/en/assortedscans/assortedscans_test.go new file mode 100644 index 0000000..0bf9b42 --- /dev/null +++ b/sources/en/assortedscans/assortedscans_test.go @@ -0,0 +1,9 @@ +package assortedscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Assorted Scans", "en") } diff --git a/sources/en/baektoons/baektoons_test.go b/sources/en/baektoons/baektoons_test.go new file mode 100644 index 0000000..584f1e8 --- /dev/null +++ b/sources/en/baektoons/baektoons_test.go @@ -0,0 +1,9 @@ +package baektoons + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Baek Toons", "en") } diff --git a/sources/en/bakkin/bakkin_test.go b/sources/en/bakkin/bakkin_test.go new file mode 100644 index 0000000..f055957 --- /dev/null +++ b/sources/en/bakkin/bakkin_test.go @@ -0,0 +1,9 @@ +package bakkin + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Bakkin", "en") } diff --git a/sources/en/beehentai/beehentai_test.go b/sources/en/beehentai/beehentai_test.go new file mode 100644 index 0000000..b1b134f --- /dev/null +++ b/sources/en/beehentai/beehentai_test.go @@ -0,0 +1,9 @@ +package beehentai + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "BeeHentai", "en") } diff --git a/sources/en/boratscans/boratscans_test.go b/sources/en/boratscans/boratscans_test.go new file mode 100644 index 0000000..b2f90cd --- /dev/null +++ b/sources/en/boratscans/boratscans_test.go @@ -0,0 +1,9 @@ +package boratscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Borat Scans", "en") } diff --git a/sources/en/boxmanhwa/boxmanhwa_test.go b/sources/en/boxmanhwa/boxmanhwa_test.go new file mode 100644 index 0000000..75b4621 --- /dev/null +++ b/sources/en/boxmanhwa/boxmanhwa_test.go @@ -0,0 +1,9 @@ +package boxmanhwa + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "BoxManhwa", "en") } diff --git a/sources/en/bunmanga/bunmanga_test.go b/sources/en/bunmanga/bunmanga_test.go new file mode 100644 index 0000000..72088fa --- /dev/null +++ b/sources/en/bunmanga/bunmanga_test.go @@ -0,0 +1,9 @@ +package bunmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Bun Manga", "en") } diff --git a/sources/en/cocomic/cocomic_test.go b/sources/en/cocomic/cocomic_test.go new file mode 100644 index 0000000..5860a9a --- /dev/null +++ b/sources/en/cocomic/cocomic_test.go @@ -0,0 +1,9 @@ +package cocomic + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Cocomic", "en") } diff --git a/sources/en/comicsland/comicsland_test.go b/sources/en/comicsland/comicsland_test.go new file mode 100644 index 0000000..99da76c --- /dev/null +++ b/sources/en/comicsland/comicsland_test.go @@ -0,0 +1,9 @@ +package comicsland + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Comics Land", "en") } diff --git a/sources/en/crowscans/crowscans_test.go b/sources/en/crowscans/crowscans_test.go new file mode 100644 index 0000000..6e67d4d --- /dev/null +++ b/sources/en/crowscans/crowscans_test.go @@ -0,0 +1,9 @@ +package crowscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Crow Scans", "en") } diff --git a/sources/en/cucumbermanga/cucumbermanga_test.go b/sources/en/cucumbermanga/cucumbermanga_test.go new file mode 100644 index 0000000..a6102b8 --- /dev/null +++ b/sources/en/cucumbermanga/cucumbermanga_test.go @@ -0,0 +1,9 @@ +package cucumbermanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Cucumber Manga", "en") } diff --git a/sources/en/dankefurslesen/dankefurslesen_test.go b/sources/en/dankefurslesen/dankefurslesen_test.go new file mode 100644 index 0000000..7fe0e78 --- /dev/null +++ b/sources/en/dankefurslesen/dankefurslesen_test.go @@ -0,0 +1,9 @@ +package dankefurslesen + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Danke fürs Lesen", "en") } diff --git a/sources/en/decadencescans/decadencescans_test.go b/sources/en/decadencescans/decadencescans_test.go new file mode 100644 index 0000000..db41060 --- /dev/null +++ b/sources/en/decadencescans/decadencescans_test.go @@ -0,0 +1,9 @@ +package decadencescans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Decadence Scans", "en") } diff --git a/sources/en/divascans/divascans_test.go b/sources/en/divascans/divascans_test.go new file mode 100644 index 0000000..0ce8de2 --- /dev/null +++ b/sources/en/divascans/divascans_test.go @@ -0,0 +1,9 @@ +package divascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Diva Scans", "en") } diff --git a/sources/en/eightmuses/eightmuses_test.go b/sources/en/eightmuses/eightmuses_test.go new file mode 100644 index 0000000..2be8683 --- /dev/null +++ b/sources/en/eightmuses/eightmuses_test.go @@ -0,0 +1,9 @@ +package eightmuses + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "8Muses", "en") } diff --git a/sources/en/elftoon/elftoon_test.go b/sources/en/elftoon/elftoon_test.go new file mode 100644 index 0000000..6a6c4f4 --- /dev/null +++ b/sources/en/elftoon/elftoon_test.go @@ -0,0 +1,9 @@ +package elftoon + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Elf Toon", "en") } diff --git a/sources/en/epicmanga/epicmanga_test.go b/sources/en/epicmanga/epicmanga_test.go new file mode 100644 index 0000000..f99d050 --- /dev/null +++ b/sources/en/epicmanga/epicmanga_test.go @@ -0,0 +1,9 @@ +package epicmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "EpicManga", "en") } diff --git a/sources/en/erisscans/erisscans_test.go b/sources/en/erisscans/erisscans_test.go new file mode 100644 index 0000000..d502454 --- /dev/null +++ b/sources/en/erisscans/erisscans_test.go @@ -0,0 +1,9 @@ +package erisscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Eris Scans", "en") } diff --git a/sources/en/ero18x/ero18x_test.go b/sources/en/ero18x/ero18x_test.go new file mode 100644 index 0000000..1aa5303 --- /dev/null +++ b/sources/en/ero18x/ero18x_test.go @@ -0,0 +1,9 @@ +package ero18x + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Ero18x", "en") } diff --git a/sources/en/evilflowers/evilflowers_test.go b/sources/en/evilflowers/evilflowers_test.go new file mode 100644 index 0000000..7a15101 --- /dev/null +++ b/sources/en/evilflowers/evilflowers_test.go @@ -0,0 +1,9 @@ +package evilflowers + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Evil Flowers", "en") } diff --git a/sources/en/fablescans/fablescans_test.go b/sources/en/fablescans/fablescans_test.go new file mode 100644 index 0000000..2e31e1c --- /dev/null +++ b/sources/en/fablescans/fablescans_test.go @@ -0,0 +1,9 @@ +package fablescans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Fable Scans", "en") } diff --git a/sources/en/gakamangas/gakamangas_test.go b/sources/en/gakamangas/gakamangas_test.go new file mode 100644 index 0000000..ab54948 --- /dev/null +++ b/sources/en/gakamangas/gakamangas_test.go @@ -0,0 +1,9 @@ +package gakamangas + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "GakaMangas", "en") } diff --git a/sources/en/galaxydegenscans/galaxydegenscans_test.go b/sources/en/galaxydegenscans/galaxydegenscans_test.go new file mode 100644 index 0000000..e30a98c --- /dev/null +++ b/sources/en/galaxydegenscans/galaxydegenscans_test.go @@ -0,0 +1,9 @@ +package galaxydegenscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "GalaxyDegenScans", "en") } diff --git a/sources/en/guya/guya_test.go b/sources/en/guya/guya_test.go new file mode 100644 index 0000000..5b08878 --- /dev/null +++ b/sources/en/guya/guya_test.go @@ -0,0 +1,9 @@ +package guya + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Guya", "en") } diff --git a/sources/en/hachirumi/hachirumi_test.go b/sources/en/hachirumi/hachirumi_test.go new file mode 100644 index 0000000..71e386f --- /dev/null +++ b/sources/en/hachirumi/hachirumi_test.go @@ -0,0 +1,9 @@ +package hachirumi + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Hachirumi", "en") } diff --git a/sources/en/hentai4free/hentai4free_test.go b/sources/en/hentai4free/hentai4free_test.go new file mode 100644 index 0000000..72c3409 --- /dev/null +++ b/sources/en/hentai4free/hentai4free_test.go @@ -0,0 +1,9 @@ +package hentai4free + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Hentai4Free", "en") } diff --git a/sources/en/hijalascans/hijalascans_test.go b/sources/en/hijalascans/hijalascans_test.go new file mode 100644 index 0000000..fb80cd8 --- /dev/null +++ b/sources/en/hijalascans/hijalascans_test.go @@ -0,0 +1,9 @@ +package hijalascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Hijala Scans", "en") } diff --git a/sources/en/jinmangas/jinmangas_test.go b/sources/en/jinmangas/jinmangas_test.go new file mode 100644 index 0000000..de03df1 --- /dev/null +++ b/sources/en/jinmangas/jinmangas_test.go @@ -0,0 +1,9 @@ +package jinmangas + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Jinmangas", "en") } diff --git a/sources/en/kaizenscan/kaizenscan_test.go b/sources/en/kaizenscan/kaizenscan_test.go new file mode 100644 index 0000000..961d4f2 --- /dev/null +++ b/sources/en/kaizenscan/kaizenscan_test.go @@ -0,0 +1,9 @@ +package kaizenscan + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Kaizen Scan", "en") } diff --git a/sources/en/kaliscancom/kaliscancom_test.go b/sources/en/kaliscancom/kaliscancom_test.go new file mode 100644 index 0000000..e09db8d --- /dev/null +++ b/sources/en/kaliscancom/kaliscancom_test.go @@ -0,0 +1,9 @@ +package kaliscancom + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "KaliScan.com", "en") } diff --git a/sources/en/kaliscanio/kaliscanio_test.go b/sources/en/kaliscanio/kaliscanio_test.go new file mode 100644 index 0000000..d9ed7a9 --- /dev/null +++ b/sources/en/kaliscanio/kaliscanio_test.go @@ -0,0 +1,9 @@ +package kaliscanio + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "KaliScan.io", "en") } diff --git a/sources/en/kaliscanme/kaliscanme_test.go b/sources/en/kaliscanme/kaliscanme_test.go new file mode 100644 index 0000000..d45faf1 --- /dev/null +++ b/sources/en/kaliscanme/kaliscanme_test.go @@ -0,0 +1,9 @@ +package kaliscanme + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "KaliScan.me", "en") } diff --git a/sources/en/kewnscans/kewnscans_test.go b/sources/en/kewnscans/kewnscans_test.go new file mode 100644 index 0000000..07c209a --- /dev/null +++ b/sources/en/kewnscans/kewnscans_test.go @@ -0,0 +1,9 @@ +package kewnscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Kewn Scans", "en") } diff --git a/sources/en/kingofshojo/kingofshojo_test.go b/sources/en/kingofshojo/kingofshojo_test.go new file mode 100644 index 0000000..1d9bc34 --- /dev/null +++ b/sources/en/kingofshojo/kingofshojo_test.go @@ -0,0 +1,9 @@ +package kingofshojo + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "King of Shojo", "en") } diff --git a/sources/en/kissmangain/kissmangain_test.go b/sources/en/kissmangain/kissmangain_test.go new file mode 100644 index 0000000..e97c826 --- /dev/null +++ b/sources/en/kissmangain/kissmangain_test.go @@ -0,0 +1,9 @@ +package kissmangain + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Kissmanga.in", "en") } diff --git a/sources/en/kunmanga/kunmanga_test.go b/sources/en/kunmanga/kunmanga_test.go new file mode 100644 index 0000000..0e88a02 --- /dev/null +++ b/sources/en/kunmanga/kunmanga_test.go @@ -0,0 +1,9 @@ +package kunmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Kun Manga", "en") } diff --git a/sources/en/lhtranslation/lhtranslation_test.go b/sources/en/lhtranslation/lhtranslation_test.go new file mode 100644 index 0000000..6a33aa4 --- /dev/null +++ b/sources/en/lhtranslation/lhtranslation_test.go @@ -0,0 +1,9 @@ +package lhtranslation + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "LHTranslation", "en") } diff --git a/sources/en/linkmanga/linkmanga_test.go b/sources/en/linkmanga/linkmanga_test.go new file mode 100644 index 0000000..6dd127c --- /dev/null +++ b/sources/en/linkmanga/linkmanga_test.go @@ -0,0 +1,9 @@ +package linkmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "LinkManga", "en") } diff --git a/sources/en/lunatoons/lunatoons_test.go b/sources/en/lunatoons/lunatoons_test.go new file mode 100644 index 0000000..0b5b3b3 --- /dev/null +++ b/sources/en/lunatoons/lunatoons_test.go @@ -0,0 +1,9 @@ +package lunatoons + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Luna Toons", "en") } diff --git a/sources/en/manga18x/manga18x_test.go b/sources/en/manga18x/manga18x_test.go new file mode 100644 index 0000000..4c46efc --- /dev/null +++ b/sources/en/manga18x/manga18x_test.go @@ -0,0 +1,9 @@ +package manga18x + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manga 18x", "en") } diff --git a/sources/en/mangabuddy/mangabuddy_test.go b/sources/en/mangabuddy/mangabuddy_test.go new file mode 100644 index 0000000..973c8fc --- /dev/null +++ b/sources/en/mangabuddy/mangabuddy_test.go @@ -0,0 +1,9 @@ +package mangabuddy + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaBuddy", "en") } diff --git a/sources/en/mangabuddyme/mangabuddyme_test.go b/sources/en/mangabuddyme/mangabuddyme_test.go new file mode 100644 index 0000000..6f8627f --- /dev/null +++ b/sources/en/mangabuddyme/mangabuddyme_test.go @@ -0,0 +1,9 @@ +package mangabuddyme + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaBuddy.me", "en") } diff --git a/sources/en/mangacute/mangacute_test.go b/sources/en/mangacute/mangacute_test.go new file mode 100644 index 0000000..4308a04 --- /dev/null +++ b/sources/en/mangacute/mangacute_test.go @@ -0,0 +1,9 @@ +package mangacute + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaCute", "en") } diff --git a/sources/en/mangafab/mangafab_test.go b/sources/en/mangafab/mangafab_test.go new file mode 100644 index 0000000..4890781 --- /dev/null +++ b/sources/en/mangafab/mangafab_test.go @@ -0,0 +1,9 @@ +package mangafab + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaFab", "en") } diff --git a/sources/en/mangaforest/mangaforest_test.go b/sources/en/mangaforest/mangaforest_test.go new file mode 100644 index 0000000..da67059 --- /dev/null +++ b/sources/en/mangaforest/mangaforest_test.go @@ -0,0 +1,9 @@ +package mangaforest + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaForest", "en") } diff --git a/sources/en/mangafoxfun/mangafoxfun_test.go b/sources/en/mangafoxfun/mangafoxfun_test.go new file mode 100644 index 0000000..0cdffe1 --- /dev/null +++ b/sources/en/mangafoxfun/mangafoxfun_test.go @@ -0,0 +1,9 @@ +package mangafoxfun + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaFox.fun", "en") } diff --git a/sources/en/mangagg/mangagg_test.go b/sources/en/mangagg/mangagg_test.go new file mode 100644 index 0000000..e3f5e69 --- /dev/null +++ b/sources/en/mangagg/mangagg_test.go @@ -0,0 +1,9 @@ +package mangagg + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaGG", "en") } diff --git a/sources/en/mangahe/mangahe_test.go b/sources/en/mangahe/mangahe_test.go new file mode 100644 index 0000000..e00ee5d --- /dev/null +++ b/sources/en/mangahe/mangahe_test.go @@ -0,0 +1,9 @@ +package mangahe + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaHe", "en") } diff --git a/sources/en/mangahentai/mangahentai_test.go b/sources/en/mangahentai/mangahentai_test.go new file mode 100644 index 0000000..6577951 --- /dev/null +++ b/sources/en/mangahentai/mangahentai_test.go @@ -0,0 +1,9 @@ +package mangahentai + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manga Hentai", "en") } diff --git a/sources/en/mangahereonl/mangahereonl_test.go b/sources/en/mangahereonl/mangahereonl_test.go new file mode 100644 index 0000000..9d03898 --- /dev/null +++ b/sources/en/mangahereonl/mangahereonl_test.go @@ -0,0 +1,9 @@ +package mangahereonl + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaHere.onl", "en") } diff --git a/sources/en/mangahubio/mangahubio_test.go b/sources/en/mangahubio/mangahubio_test.go new file mode 100644 index 0000000..8dbf92a --- /dev/null +++ b/sources/en/mangahubio/mangahubio_test.go @@ -0,0 +1,9 @@ +package mangahubio + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaHub", "en") } diff --git a/sources/en/mangakakalotfun/mangakakalotfun_test.go b/sources/en/mangakakalotfun/mangakakalotfun_test.go new file mode 100644 index 0000000..63e5c0a --- /dev/null +++ b/sources/en/mangakakalotfun/mangakakalotfun_test.go @@ -0,0 +1,9 @@ +package mangakakalotfun + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Mangakakalot.fun", "en") } diff --git a/sources/en/mangamonk/mangamonk_test.go b/sources/en/mangamonk/mangamonk_test.go new file mode 100644 index 0000000..201eee3 --- /dev/null +++ b/sources/en/mangamonk/mangamonk_test.go @@ -0,0 +1,9 @@ +package mangamonk + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaMonk", "en") } diff --git a/sources/en/manganel/manganel_test.go b/sources/en/manganel/manganel_test.go new file mode 100644 index 0000000..9f7eac1 --- /dev/null +++ b/sources/en/manganel/manganel_test.go @@ -0,0 +1,9 @@ +package manganel + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaNel", "en") } diff --git a/sources/en/mangaonlinefun/mangaonlinefun_test.go b/sources/en/mangaonlinefun/mangaonlinefun_test.go new file mode 100644 index 0000000..027fae4 --- /dev/null +++ b/sources/en/mangaonlinefun/mangaonlinefun_test.go @@ -0,0 +1,9 @@ +package mangaonlinefun + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaOnline.fun", "en") } diff --git a/sources/en/mangapandaonl/mangapandaonl_test.go b/sources/en/mangapandaonl/mangapandaonl_test.go new file mode 100644 index 0000000..5bee37c --- /dev/null +++ b/sources/en/mangapandaonl/mangapandaonl_test.go @@ -0,0 +1,9 @@ +package mangapandaonl + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaPanda.onl", "en") } diff --git a/sources/en/mangareadersite/mangareadersite_test.go b/sources/en/mangareadersite/mangareadersite_test.go new file mode 100644 index 0000000..831c58d --- /dev/null +++ b/sources/en/mangareadersite/mangareadersite_test.go @@ -0,0 +1,9 @@ +package mangareadersite + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaReader.site", "en") } diff --git a/sources/en/mangasaga/mangasaga_test.go b/sources/en/mangasaga/mangasaga_test.go new file mode 100644 index 0000000..b3e19ee --- /dev/null +++ b/sources/en/mangasaga/mangasaga_test.go @@ -0,0 +1,9 @@ +package mangasaga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaSaga", "en") } diff --git a/sources/en/mangaspin/mangaspin_test.go b/sources/en/mangaspin/mangaspin_test.go new file mode 100644 index 0000000..3693005 --- /dev/null +++ b/sources/en/mangaspin/mangaspin_test.go @@ -0,0 +1,9 @@ +package mangaspin + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaSpin", "en") } diff --git a/sources/en/mangatoday/mangatoday_test.go b/sources/en/mangatoday/mangatoday_test.go new file mode 100644 index 0000000..deb7a47 --- /dev/null +++ b/sources/en/mangatoday/mangatoday_test.go @@ -0,0 +1,9 @@ +package mangatoday + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaToday", "en") } diff --git a/sources/en/mangaxyz/mangaxyz_test.go b/sources/en/mangaxyz/mangaxyz_test.go new file mode 100644 index 0000000..c9da2bf --- /dev/null +++ b/sources/en/mangaxyz/mangaxyz_test.go @@ -0,0 +1,9 @@ +package mangaxyz + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MangaXYZ", "en") } diff --git a/sources/en/manhuanow/manhuanow_test.go b/sources/en/manhuanow/manhuanow_test.go new file mode 100644 index 0000000..a535ef2 --- /dev/null +++ b/sources/en/manhuanow/manhuanow_test.go @@ -0,0 +1,9 @@ +package manhuanow + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "ManhuaNow", "en") } diff --git a/sources/en/manhuasite/manhuasite_test.go b/sources/en/manhuasite/manhuasite_test.go new file mode 100644 index 0000000..beceeaf --- /dev/null +++ b/sources/en/manhuasite/manhuasite_test.go @@ -0,0 +1,9 @@ +package manhuasite + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "ManhuaSite", "en") } diff --git a/sources/en/manhwalover/manhwalover_test.go b/sources/en/manhwalover/manhwalover_test.go new file mode 100644 index 0000000..4f306ce --- /dev/null +++ b/sources/en/manhwalover/manhwalover_test.go @@ -0,0 +1,9 @@ +package manhwalover + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manhwalover", "en") } diff --git a/sources/en/manhwareads/manhwareads_test.go b/sources/en/manhwareads/manhwareads_test.go new file mode 100644 index 0000000..6ad7d53 --- /dev/null +++ b/sources/en/manhwareads/manhwareads_test.go @@ -0,0 +1,9 @@ +package manhwareads + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manhwa Reads", "en") } diff --git a/sources/en/manhwatop/manhwatop_test.go b/sources/en/manhwatop/manhwatop_test.go new file mode 100644 index 0000000..11ab615 --- /dev/null +++ b/sources/en/manhwatop/manhwatop_test.go @@ -0,0 +1,9 @@ +package manhwatop + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manhwatop", "en") } diff --git a/sources/en/manhwax/manhwax_test.go b/sources/en/manhwax/manhwax_test.go new file mode 100644 index 0000000..da25841 --- /dev/null +++ b/sources/en/manhwax/manhwax_test.go @@ -0,0 +1,9 @@ +package manhwax + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Manhwax", "en") } diff --git a/sources/en/mgjinx/mgjinx_test.go b/sources/en/mgjinx/mgjinx_test.go new file mode 100644 index 0000000..3321b70 --- /dev/null +++ b/sources/en/mgjinx/mgjinx_test.go @@ -0,0 +1,9 @@ +package mgjinx + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "MGJinx", "en") } diff --git a/sources/en/mistscans/mistscans_test.go b/sources/en/mistscans/mistscans_test.go new file mode 100644 index 0000000..d82b35e --- /dev/null +++ b/sources/en/mistscans/mistscans_test.go @@ -0,0 +1,9 @@ +package mistscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Mist Scans", "en") } diff --git a/sources/en/monochromescans/monochromescans_test.go b/sources/en/monochromescans/monochromescans_test.go new file mode 100644 index 0000000..2fd2643 --- /dev/null +++ b/sources/en/monochromescans/monochromescans_test.go @@ -0,0 +1,9 @@ +package monochromescans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Monochrome Scans", "en") } diff --git a/sources/en/necroscans/necroscans_test.go b/sources/en/necroscans/necroscans_test.go new file mode 100644 index 0000000..baf74c8 --- /dev/null +++ b/sources/en/necroscans/necroscans_test.go @@ -0,0 +1,9 @@ +package necroscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Necro Scans", "en") } diff --git a/sources/en/nyanukafe/nyanukafe_test.go b/sources/en/nyanukafe/nyanukafe_test.go new file mode 100644 index 0000000..a055837 --- /dev/null +++ b/sources/en/nyanukafe/nyanukafe_test.go @@ -0,0 +1,9 @@ +package nyanukafe + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Nyanu Kafe", "en") } diff --git a/sources/en/nyxscans/nyxscans_test.go b/sources/en/nyxscans/nyxscans_test.go new file mode 100644 index 0000000..5a213ab --- /dev/null +++ b/sources/en/nyxscans/nyxscans_test.go @@ -0,0 +1,9 @@ +package nyxscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Nyx Scans", "en") } diff --git a/sources/en/octopusmanga/octopusmanga_test.go b/sources/en/octopusmanga/octopusmanga_test.go new file mode 100644 index 0000000..bab676f --- /dev/null +++ b/sources/en/octopusmanga/octopusmanga_test.go @@ -0,0 +1,9 @@ +package octopusmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "OctopusManga", "en") } diff --git a/sources/en/onemangaco/onemangaco_test.go b/sources/en/onemangaco/onemangaco_test.go new file mode 100644 index 0000000..2035b9e --- /dev/null +++ b/sources/en/onemangaco/onemangaco_test.go @@ -0,0 +1,9 @@ +package onemangaco + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "1Manga.co", "en") } diff --git a/sources/en/onemangainfo/onemangainfo_test.go b/sources/en/onemangainfo/onemangainfo_test.go new file mode 100644 index 0000000..5f081af --- /dev/null +++ b/sources/en/onemangainfo/onemangainfo_test.go @@ -0,0 +1,9 @@ +package onemangainfo + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "OneManga.info", "en") } diff --git a/sources/en/orionscans/orionscans_test.go b/sources/en/orionscans/orionscans_test.go new file mode 100644 index 0000000..7f5fc25 --- /dev/null +++ b/sources/en/orionscans/orionscans_test.go @@ -0,0 +1,9 @@ +package orionscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Orion Scans", "en") } diff --git a/sources/en/pawmanga/pawmanga_test.go b/sources/en/pawmanga/pawmanga_test.go new file mode 100644 index 0000000..c614c2d --- /dev/null +++ b/sources/en/pawmanga/pawmanga_test.go @@ -0,0 +1,9 @@ +package pawmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Paw Manga", "en") } diff --git a/sources/en/ravenscans/ravenscans_test.go b/sources/en/ravenscans/ravenscans_test.go new file mode 100644 index 0000000..877af29 --- /dev/null +++ b/sources/en/ravenscans/ravenscans_test.go @@ -0,0 +1,9 @@ +package ravenscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Raven Scans", "en") } diff --git a/sources/en/readattackontitanshingekinokyojinmanga/readattackontitanshingekinokyojinmanga_test.go b/sources/en/readattackontitanshingekinokyojinmanga/readattackontitanshingekinokyojinmanga_test.go new file mode 100644 index 0000000..cca83ce --- /dev/null +++ b/sources/en/readattackontitanshingekinokyojinmanga/readattackontitanshingekinokyojinmanga_test.go @@ -0,0 +1,9 @@ +package readattackontitanshingekinokyojinmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Attack on Titan Shingeki no Kyojin Manga", "en") } diff --git a/sources/en/readberserkmanga/readberserkmanga_test.go b/sources/en/readberserkmanga/readberserkmanga_test.go new file mode 100644 index 0000000..dd54809 --- /dev/null +++ b/sources/en/readberserkmanga/readberserkmanga_test.go @@ -0,0 +1,9 @@ +package readberserkmanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Berserk Manga", "en") } diff --git a/sources/en/readblackclovermangaonline/readblackclovermangaonline_test.go b/sources/en/readblackclovermangaonline/readblackclovermangaonline_test.go new file mode 100644 index 0000000..b2ace66 --- /dev/null +++ b/sources/en/readblackclovermangaonline/readblackclovermangaonline_test.go @@ -0,0 +1,9 @@ +package readblackclovermangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Black Clover Manga Online", "en") } diff --git a/sources/en/readbokunoheroacademiamyheroacademiamanga/readbokunoheroacademiamyheroacademiamanga_test.go b/sources/en/readbokunoheroacademiamyheroacademiamanga/readbokunoheroacademiamyheroacademiamanga_test.go new file mode 100644 index 0000000..9933cb9 --- /dev/null +++ b/sources/en/readbokunoheroacademiamyheroacademiamanga/readbokunoheroacademiamyheroacademiamanga_test.go @@ -0,0 +1,9 @@ +package readbokunoheroacademiamyheroacademiamanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Boku no Hero Academia My Hero Academia Manga", "en") } diff --git a/sources/en/readchainsawmanmangaonline/readchainsawmanmangaonline_test.go b/sources/en/readchainsawmanmangaonline/readchainsawmanmangaonline_test.go new file mode 100644 index 0000000..cb99fd0 --- /dev/null +++ b/sources/en/readchainsawmanmangaonline/readchainsawmanmangaonline_test.go @@ -0,0 +1,9 @@ +package readchainsawmanmangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Chainsaw Man Manga Online", "en") } diff --git a/sources/en/readfairytailedenszeromangaonline/readfairytailedenszeromangaonline_test.go b/sources/en/readfairytailedenszeromangaonline/readfairytailedenszeromangaonline_test.go new file mode 100644 index 0000000..f425080 --- /dev/null +++ b/sources/en/readfairytailedenszeromangaonline/readfairytailedenszeromangaonline_test.go @@ -0,0 +1,9 @@ +package readfairytailedenszeromangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Fairy Tail & Edens Zero Manga Online", "en") } diff --git a/sources/en/readhaikyuumangaonline/readhaikyuumangaonline_test.go b/sources/en/readhaikyuumangaonline/readhaikyuumangaonline_test.go new file mode 100644 index 0000000..e36ce5e --- /dev/null +++ b/sources/en/readhaikyuumangaonline/readhaikyuumangaonline_test.go @@ -0,0 +1,9 @@ +package readhaikyuumangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Haikyuu!! Manga Online", "en") } diff --git a/sources/en/readjujutsukaisenmangaonline/readjujutsukaisenmangaonline_test.go b/sources/en/readjujutsukaisenmangaonline/readjujutsukaisenmangaonline_test.go new file mode 100644 index 0000000..891d2f6 --- /dev/null +++ b/sources/en/readjujutsukaisenmangaonline/readjujutsukaisenmangaonline_test.go @@ -0,0 +1,9 @@ +package readjujutsukaisenmangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Jujutsu Kaisen Manga Online", "en") } diff --git a/sources/en/readkingdommangaonline/readkingdommangaonline_test.go b/sources/en/readkingdommangaonline/readkingdommangaonline_test.go new file mode 100644 index 0000000..f1c7597 --- /dev/null +++ b/sources/en/readkingdommangaonline/readkingdommangaonline_test.go @@ -0,0 +1,9 @@ +package readkingdommangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Kingdom Manga Online", "en") } diff --git a/sources/en/readnanatsunotaizai7deadlysinsmangaonline/readnanatsunotaizai7deadlysinsmangaonline_test.go b/sources/en/readnanatsunotaizai7deadlysinsmangaonline/readnanatsunotaizai7deadlysinsmangaonline_test.go new file mode 100644 index 0000000..d33fef7 --- /dev/null +++ b/sources/en/readnanatsunotaizai7deadlysinsmangaonline/readnanatsunotaizai7deadlysinsmangaonline_test.go @@ -0,0 +1,9 @@ +package readnanatsunotaizai7deadlysinsmangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Nanatsu no Taizai 7 Deadly Sins Manga Online", "en") } diff --git a/sources/en/readnarutoborutosamurai8mangaonline/readnarutoborutosamurai8mangaonline_test.go b/sources/en/readnarutoborutosamurai8mangaonline/readnarutoborutosamurai8mangaonline_test.go new file mode 100644 index 0000000..a7c0efd --- /dev/null +++ b/sources/en/readnarutoborutosamurai8mangaonline/readnarutoborutosamurai8mangaonline_test.go @@ -0,0 +1,9 @@ +package readnarutoborutosamurai8mangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Naruto Boruto Samurai 8 Manga Online", "en") } diff --git a/sources/en/readonepiecemangaonline/readonepiecemangaonline_test.go b/sources/en/readonepiecemangaonline/readonepiecemangaonline_test.go new file mode 100644 index 0000000..6b72a83 --- /dev/null +++ b/sources/en/readonepiecemangaonline/readonepiecemangaonline_test.go @@ -0,0 +1,9 @@ +package readonepiecemangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read One Piece Manga Online", "en") } diff --git a/sources/en/readonepunchmanmangaonlinetwo/readonepunchmanmangaonlinetwo_test.go b/sources/en/readonepunchmanmangaonlinetwo/readonepunchmanmangaonlinetwo_test.go new file mode 100644 index 0000000..e010d68 --- /dev/null +++ b/sources/en/readonepunchmanmangaonlinetwo/readonepunchmanmangaonlinetwo_test.go @@ -0,0 +1,9 @@ +package readonepunchmanmangaonlinetwo + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read One-Punch Man Manga Online", "en") } diff --git a/sources/en/readsololevelingmangamanhwaonline/readsololevelingmangamanhwaonline_test.go b/sources/en/readsololevelingmangamanhwaonline/readsololevelingmangamanhwaonline_test.go new file mode 100644 index 0000000..6ffd8ea --- /dev/null +++ b/sources/en/readsololevelingmangamanhwaonline/readsololevelingmangamanhwaonline_test.go @@ -0,0 +1,9 @@ +package readsololevelingmangamanhwaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Solo Leveling Manga Manhwa Online", "en") } diff --git a/sources/en/readtokyoghoulretokyoghoulmangaonline/readtokyoghoulretokyoghoulmangaonline_test.go b/sources/en/readtokyoghoulretokyoghoulmangaonline/readtokyoghoulretokyoghoulmangaonline_test.go new file mode 100644 index 0000000..3884f00 --- /dev/null +++ b/sources/en/readtokyoghoulretokyoghoulmangaonline/readtokyoghoulretokyoghoulmangaonline_test.go @@ -0,0 +1,9 @@ +package readtokyoghoulretokyoghoulmangaonline + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Read Tokyo Ghoul Re & Tokyo Ghoul Manga Online", "en") } diff --git a/sources/en/renascans/renascans_test.go b/sources/en/renascans/renascans_test.go new file mode 100644 index 0000000..52bf404 --- /dev/null +++ b/sources/en/renascans/renascans_test.go @@ -0,0 +1,9 @@ +package renascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Renascans", "en") } diff --git a/sources/en/ritharscans/ritharscans_test.go b/sources/en/ritharscans/ritharscans_test.go new file mode 100644 index 0000000..6354298 --- /dev/null +++ b/sources/en/ritharscans/ritharscans_test.go @@ -0,0 +1,9 @@ +package ritharscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "RitharScans", "en") } diff --git a/sources/en/rosesquadscans/rosesquadscans_test.go b/sources/en/rosesquadscans/rosesquadscans_test.go new file mode 100644 index 0000000..8f3d091 --- /dev/null +++ b/sources/en/rosesquadscans/rosesquadscans_test.go @@ -0,0 +1,9 @@ +package rosesquadscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Rose Squad Scans", "en") } diff --git a/sources/en/ryumanga/ryumanga_test.go b/sources/en/ryumanga/ryumanga_test.go new file mode 100644 index 0000000..85d11cb --- /dev/null +++ b/sources/en/ryumanga/ryumanga_test.go @@ -0,0 +1,9 @@ +package ryumanga + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Ryumanga", "en") } diff --git a/sources/en/sanascans/sanascans_test.go b/sources/en/sanascans/sanascans_test.go new file mode 100644 index 0000000..49d47c0 --- /dev/null +++ b/sources/en/sanascans/sanascans_test.go @@ -0,0 +1,9 @@ +package sanascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Sana Scans", "en") } diff --git a/sources/en/sirenscans/sirenscans_test.go b/sources/en/sirenscans/sirenscans_test.go new file mode 100644 index 0000000..7f77a4a --- /dev/null +++ b/sources/en/sirenscans/sirenscans_test.go @@ -0,0 +1,9 @@ +package sirenscans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Siren Scans", "en") } diff --git a/sources/en/sleepytranslations/sleepytranslations_test.go b/sources/en/sleepytranslations/sleepytranslations_test.go new file mode 100644 index 0000000..144656c --- /dev/null +++ b/sources/en/sleepytranslations/sleepytranslations_test.go @@ -0,0 +1,9 @@ +package sleepytranslations + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Sleepy Translations", "en") } diff --git a/sources/en/tcbscansunoriginal/tcbscansunoriginal_test.go b/sources/en/tcbscansunoriginal/tcbscansunoriginal_test.go new file mode 100644 index 0000000..c6e863d --- /dev/null +++ b/sources/en/tcbscansunoriginal/tcbscansunoriginal_test.go @@ -0,0 +1,9 @@ +package tcbscansunoriginal + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "TCB Scans (Unoriginal)", "en") } diff --git a/sources/en/toonilyme/toonilyme_test.go b/sources/en/toonilyme/toonilyme_test.go new file mode 100644 index 0000000..428bc84 --- /dev/null +++ b/sources/en/toonilyme/toonilyme_test.go @@ -0,0 +1,9 @@ +package toonilyme + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Toonily.me", "en") } diff --git a/sources/en/toonitube/toonitube_test.go b/sources/en/toonitube/toonitube_test.go new file mode 100644 index 0000000..1609fdc --- /dev/null +++ b/sources/en/toonitube/toonitube_test.go @@ -0,0 +1,9 @@ +package toonitube + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "TooniTube", "en") } diff --git a/sources/en/topmanhua/topmanhua_test.go b/sources/en/topmanhua/topmanhua_test.go new file mode 100644 index 0000000..87fb94e --- /dev/null +++ b/sources/en/topmanhua/topmanhua_test.go @@ -0,0 +1,9 @@ +package topmanhua + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Top Manhua", "en") } diff --git a/sources/en/vanillascans/vanillascans_test.go b/sources/en/vanillascans/vanillascans_test.go new file mode 100644 index 0000000..50d74fc --- /dev/null +++ b/sources/en/vanillascans/vanillascans_test.go @@ -0,0 +1,9 @@ +package vanillascans + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Vanilla Scans", "en") } diff --git a/sources/en/yaoihub/yaoihub_test.go b/sources/en/yaoihub/yaoihub_test.go new file mode 100644 index 0000000..d89d9d8 --- /dev/null +++ b/sources/en/yaoihub/yaoihub_test.go @@ -0,0 +1,9 @@ +package yaoihub + +import ( + "testing" + + "goyomi/internal/sourcetest" +) + +func TestSource(t *testing.T) { sourcetest.Run(t, New(), "Yaoihub", "en") }