mirror of
https://codeberg.org/icewind/ugc-scaper.git
synced 2026-06-03 18:24:10 +02:00
flake rework
This commit is contained in:
parent
5e034d7bef
commit
2e3ef9dfd3
11 changed files with 718 additions and 566 deletions
56
.github/workflows/ci.yml
vendored
56
.github/workflows/ci.yml
vendored
|
|
@ -1,55 +1,17 @@
|
||||||
on: [push, pull_request]
|
name: "CI"
|
||||||
|
on:
|
||||||
name: CI
|
pull_request:
|
||||||
|
push:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
checks:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: cachix/install-nix-action@v20
|
- uses: cachix/install-nix-action@v26
|
||||||
- uses: icewind1991/attic-action@v1
|
- uses: icewind1991/attic-action@v1
|
||||||
with:
|
with:
|
||||||
name: ci
|
name: ci
|
||||||
instance: https://cache.icewind.me
|
instance: https://cache.icewind.me
|
||||||
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
authToken: "${{ secrets.ATTIC_TOKEN }}"
|
||||||
- run: nix build .#check
|
- run: nix flake check --keep-going
|
||||||
|
|
||||||
clippy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: check
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: cachix/install-nix-action@v20
|
|
||||||
- uses: icewind1991/attic-action@v1
|
|
||||||
with:
|
|
||||||
name: ci
|
|
||||||
instance: https://cache.icewind.me
|
|
||||||
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
|
||||||
- run: nix build .#clippy
|
|
||||||
|
|
||||||
msrv:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: check
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: cachix/install-nix-action@v20
|
|
||||||
- uses: icewind1991/attic-action@v1
|
|
||||||
with:
|
|
||||||
name: ci
|
|
||||||
instance: https://cache.icewind.me
|
|
||||||
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
|
||||||
- run: nix build .#msrv
|
|
||||||
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: check
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: cachix/install-nix-action@v20
|
|
||||||
- uses: icewind1991/attic-action@v1
|
|
||||||
with:
|
|
||||||
name: ci
|
|
||||||
instance: https://cache.icewind.me
|
|
||||||
authToken: '${{ secrets.ATTIC_TOKEN }}'
|
|
||||||
- run: nix build .#ugc-api-server
|
|
||||||
|
|
|
||||||
866
Cargo.lock
generated
866
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
16
Cargo.toml
16
Cargo.toml
|
|
@ -2,24 +2,24 @@
|
||||||
name = "ugc-scraper"
|
name = "ugc-scraper"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.67.0"
|
rust-version = "1.70.0"
|
||||||
description = "Scraper for ugcleague.com"
|
description = "Scraper for ugcleague.com"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
homepage = "https://github.com/icewind1991/ugc-scaper"
|
homepage = "https://github.com/icewind1991/ugc-scaper"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = "1.36.0"
|
tokio = "1.38.1"
|
||||||
reqwest = "0.11.24"
|
reqwest = "0.11.27"
|
||||||
scraper = "0.18.1"
|
scraper = "0.18.1"
|
||||||
thiserror = "1.0.57"
|
thiserror = "2.0.1"
|
||||||
time = { version = "0.3.34", features = ["parsing", "macros"] }
|
time = { version = "0.3.36", features = ["parsing", "macros"] }
|
||||||
steamid-ng = "1.0.0"
|
steamid-ng = "1.0.0"
|
||||||
serde = { version = "1.0.197", features = ["derive"], optional = true }
|
serde = { version = "1.0.214", features = ["derive"], optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread", "rt"] }
|
tokio = { version = "1.38.1", features = ["macros", "rt-multi-thread", "rt"] }
|
||||||
main_error = "0.1.2"
|
main_error = "0.1.2"
|
||||||
insta = { version = "1.35.1", features = ["json"] }
|
insta = { version = "1.41.1", features = ["json"] }
|
||||||
test-case = "3.3.1"
|
test-case = "3.3.1"
|
||||||
|
|
||||||
[profile.dev.package]
|
[profile.dev.package]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# ugc-scraper
|
# ugc-scraper
|
||||||
|
|
||||||
*We have ugc api at home*
|
_We have ugc api at home_
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
|
||||||
108
flake.lock
generated
108
flake.lock
generated
|
|
@ -1,63 +1,98 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"naersk": {
|
"crane": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1730060262,
|
||||||
|
"narHash": "sha256-RMgSVkZ9H03sxC+Vh4jxtLTCzSjPq18UWpiM0gq6shQ=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "498d9f122c413ee1154e8131ace5a35a80d8fa76",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flakelight": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1698420672,
|
"lastModified": 1730724080,
|
||||||
"narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=",
|
"narHash": "sha256-0dNZpQzIsN+KxbsBGCwRQUJPHrvEuu/x0sJq0Z7xSCg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "naersk",
|
"repo": "flakelight",
|
||||||
"rev": "aeb58d5e8faead8980a807c840232697982d47b9",
|
"rev": "aa5d58bd458e846e8dc7d160d9167b74d6976a41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "naersk",
|
"repo": "flakelight",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mill-scale": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"flakelight": [
|
||||||
|
"flakelight"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731105211,
|
||||||
|
"narHash": "sha256-NzpaQuPvMS2TcW3Mbhe6AEhtCzk/vQO523SFCz/sbes=",
|
||||||
|
"owner": "icewind1991",
|
||||||
|
"repo": "mill-scale",
|
||||||
|
"rev": "c38c7c897b81928b0548f4a9d8958af7bea02934",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "icewind1991",
|
||||||
|
"repo": "mill-scale",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708161998,
|
"lastModified": 1730883749,
|
||||||
"narHash": "sha256-6KnemmUorCvlcAvGziFosAVkrlWZGIc6UNT9GUYr0jQ=",
|
"narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "84d981bae8b5e783b3b548de505b22880559515f",
|
"rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-23.11",
|
"ref": "nixos-24.05",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"naersk": "naersk",
|
"flakelight": "flakelight",
|
||||||
"nixpkgs": "nixpkgs",
|
"mill-scale": "mill-scale",
|
||||||
"rust-overlay": "rust-overlay",
|
"nixpkgs": "nixpkgs"
|
||||||
"utils": "utils"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
|
||||||
"utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"mill-scale",
|
||||||
|
"flakelight",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708241671,
|
"lastModified": 1730255392,
|
||||||
"narHash": "sha256-zSulX9tP4R35Y8A842dGSzaHMVP91W2Ry0SXvQKD2BQ=",
|
"narHash": "sha256-9pydem8OVxa0TwjUai1PJe0yHAJw556CWCEwyoAq8Ik=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "d500e370b26f9b14303cb39bf1509df0a920c8b0",
|
"rev": "7509d76ce2b3d22b40bd25368b45c0a9f7f36c89",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -65,39 +100,6 @@
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705309234,
|
|
||||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
119
flake.nix
119
flake.nix
|
|
@ -1,115 +1,30 @@
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-23.11";
|
nixpkgs.url = "nixpkgs/nixos-24.05";
|
||||||
utils.url = "github:numtide/flake-utils";
|
flakelight = {
|
||||||
naersk.url = "github:nix-community/naersk";
|
url = "github:nix-community/flakelight";
|
||||||
naersk.inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
||||||
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
rust-overlay.inputs.flake-utils.follows = "utils";
|
|
||||||
};
|
};
|
||||||
|
mill-scale = {
|
||||||
outputs = {
|
url = "github:icewind1991/mill-scale";
|
||||||
self,
|
inputs.flakelight.follows = "flakelight";
|
||||||
nixpkgs,
|
|
||||||
utils,
|
|
||||||
naersk,
|
|
||||||
rust-overlay,
|
|
||||||
}:
|
|
||||||
utils.lib.eachDefaultSystem (system: let
|
|
||||||
overlays = [
|
|
||||||
(import rust-overlay)
|
|
||||||
(import ./overlay.nix)
|
|
||||||
];
|
|
||||||
pkgs = (import nixpkgs) {
|
|
||||||
inherit system overlays;
|
|
||||||
};
|
|
||||||
inherit (pkgs) lib callPackage rust-bin mkShell;
|
|
||||||
inherit (lib.sources) sourceByRegex;
|
|
||||||
inherit (builtins) fromTOML readFile;
|
|
||||||
|
|
||||||
msrv = (fromTOML (readFile ./Cargo.toml)).package.rust-version;
|
|
||||||
toolchain = rust-bin.stable.latest.default;
|
|
||||||
msrvToolchain = rust-bin.stable."${msrv}".default;
|
|
||||||
|
|
||||||
naersk' = callPackage naersk {
|
|
||||||
rustc = toolchain;
|
|
||||||
cargo = toolchain;
|
|
||||||
};
|
|
||||||
msrvNaersk = callPackage naersk {
|
|
||||||
rustc = msrvToolchain;
|
|
||||||
cargo = msrvToolchain;
|
|
||||||
};
|
|
||||||
|
|
||||||
src = sourceByRegex ./. ["Cargo.*" "(src|derive|benches|tests|examples)(/.*)?"];
|
|
||||||
|
|
||||||
deps = with pkgs; [
|
|
||||||
pkg-config
|
|
||||||
openssl
|
|
||||||
];
|
|
||||||
|
|
||||||
nearskOpt = {
|
|
||||||
pname = "ugc-scraper";
|
|
||||||
root = src;
|
|
||||||
nativeBuildInputs = deps;
|
|
||||||
};
|
|
||||||
in rec {
|
|
||||||
packages = rec {
|
|
||||||
check = naersk'.buildPackage (nearskOpt
|
|
||||||
// {
|
|
||||||
mode = "check";
|
|
||||||
});
|
|
||||||
clippy = naersk'.buildPackage (nearskOpt
|
|
||||||
// {
|
|
||||||
mode = "clippy";
|
|
||||||
});
|
|
||||||
test = naersk'.buildPackage (nearskOpt
|
|
||||||
// {
|
|
||||||
release = false;
|
|
||||||
mode = "test";
|
|
||||||
});
|
|
||||||
msrv = msrvNaersk.buildPackage (nearskOpt
|
|
||||||
// {
|
|
||||||
mode = "check";
|
|
||||||
});
|
|
||||||
inherit (pkgs) ugc-api-server;
|
|
||||||
default = ugc-api-server;
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells = let
|
|
||||||
tools = with pkgs; [
|
|
||||||
bacon
|
|
||||||
cargo-insta
|
|
||||||
cargo-edit
|
|
||||||
cargo-outdated
|
|
||||||
cargo-audit
|
|
||||||
cargo-msrv
|
|
||||||
cargo-semver-checks
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
default = mkShell {
|
|
||||||
OPENSSL_NO_VENDOR = 1;
|
|
||||||
nativeBuildInputs = [toolchain] ++ tools ++ deps;
|
|
||||||
};
|
|
||||||
msrv = mkShell {
|
|
||||||
OPENSSL_NO_VENDOR = 1;
|
|
||||||
nativeBuildInputs = [msrvToolchain] ++ tools ++ deps;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
outputs = { mill-scale, ... }: mill-scale ./. {
|
||||||
// {
|
extraFilesRegex = [ ".*\.html" ];
|
||||||
overlays.default = import ./overlay.nix;
|
nixosModules = { outputs, ... }: {
|
||||||
nixosModules.default = {
|
default =
|
||||||
pkgs,
|
{ pkgs
|
||||||
config,
|
, config
|
||||||
lib,
|
, lib
|
||||||
...
|
, ...
|
||||||
}: {
|
}: {
|
||||||
imports = [ ./module.nix ];
|
imports = [ ./module.nix ];
|
||||||
config = lib.mkIf config.services.ugc-api-server.enable {
|
config = lib.mkIf config.services.ugc-api-server.enable {
|
||||||
nixpkgs.overlays = [self.overlays.default];
|
nixpkgs.overlays = [ (import ./overlay.nix) ];
|
||||||
services.ugc-api-server.package = lib.mkDefault pkgs.ugc-api-server;
|
services.ugc-api-server.package = lib.mkDefault pkgs.ugc-api-server;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
12
module.nix
12
module.nix
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{ config
|
||||||
config,
|
, lib
|
||||||
lib,
|
, pkgs
|
||||||
pkgs,
|
, ...
|
||||||
...
|
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.services.ugc-api-server;
|
cfg = config.services.ugc-api-server;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.services.ugc-api-server = {
|
options.services.ugc-api-server = {
|
||||||
enable = mkEnableOption "ugc api server";
|
enable = mkEnableOption "ugc api server";
|
||||||
|
|
||||||
|
|
|
||||||
13
package.nix
13
package.nix
|
|
@ -1,9 +1,10 @@
|
||||||
{
|
{ rustPlatform
|
||||||
rustPlatform,
|
, openssl
|
||||||
openssl,
|
, pkg-config
|
||||||
pkg-config,
|
, lib
|
||||||
lib,
|
,
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
inherit (lib.sources) sourceByRegex;
|
inherit (lib.sources) sourceByRegex;
|
||||||
inherit (builtins) fromTOML readFile;
|
inherit (builtins) fromTOML readFile;
|
||||||
src = sourceByRegex ./api-server [ "Cargo.*" "(src)(/.*)?" "README.md" ];
|
src = sourceByRegex ./api-server [ "Cargo.*" "(src)(/.*)?" "README.md" ];
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
use insta::assert_json_snapshot;
|
use insta::assert_json_snapshot;
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
use std::fs::read_to_string;
|
use std::fs::read_to_string;
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
use test_case::test_case;
|
use test_case::test_case;
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
use ugc_scraper::parser::{
|
use ugc_scraper::parser::{
|
||||||
MapHistoryParser, MatchPageParser, Parser, PlayerDetailsParser, PlayerParser, SeasonsParser,
|
MapHistoryParser, MatchPageParser, Parser, PlayerDetailsParser, PlayerParser, SeasonsParser,
|
||||||
TeamLookupParser, TeamMatchesParser, TeamParser, TeamRosterHistoryParser, TransactionParser,
|
TeamLookupParser, TeamMatchesParser, TeamParser, TeamRosterHistoryParser, TransactionParser,
|
||||||
|
|
@ -8,16 +12,18 @@ use ugc_scraper::parser::{
|
||||||
|
|
||||||
#[test_case("player_76561198024494988.html", "player")]
|
#[test_case("player_76561198024494988.html", "player")]
|
||||||
#[test_case("player_76561198049312442.html", "player_classes")]
|
#[test_case("player_76561198049312442.html", "player_classes")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_player_html(input: &str, name: &str) {
|
fn test_parse_player_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = PlayerParser::new();
|
let parser = PlayerParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case("player_details_76561198024494988.html", "player_details")]
|
#[test_case("player_details_76561198024494988.html", "player_details")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_player_details_html(input: &str, name: &str) {
|
fn test_parse_player_details_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = PlayerDetailsParser::new();
|
let parser = PlayerDetailsParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
|
|
@ -28,8 +34,9 @@ fn test_parse_player_details_html(input: &str, name: &str) {
|
||||||
#[test_case("team_8157.html", "team_no_tz")]
|
#[test_case("team_8157.html", "team_no_tz")]
|
||||||
#[test_case("team_6929.html", "team_changed_name")]
|
#[test_case("team_6929.html", "team_changed_name")]
|
||||||
#[test_case("team_32437.html", "team_empty_name_change")]
|
#[test_case("team_32437.html", "team_empty_name_change")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_team_html(input: &str, name: &str) {
|
fn test_parse_team_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = TeamParser::new();
|
let parser = TeamParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
|
|
@ -37,24 +44,27 @@ fn test_parse_team_html(input: &str, name: &str) {
|
||||||
|
|
||||||
#[test_case("team_roster_history_7861.html", "team_roster_history")]
|
#[test_case("team_roster_history_7861.html", "team_roster_history")]
|
||||||
#[test_case("team_roster_history_2133.html", "team_roster_history_no_group")]
|
#[test_case("team_roster_history_2133.html", "team_roster_history_no_group")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_team_roster_history_html(input: &str, name: &str) {
|
fn test_parse_team_roster_history_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = TeamRosterHistoryParser::new();
|
let parser = TeamRosterHistoryParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case("team_matches_7861.html", "team_matches")]
|
#[test_case("team_matches_7861.html", "team_matches")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_team_matches_html(input: &str, name: &str) {
|
fn test_parse_team_matches_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = TeamMatchesParser::new();
|
let parser = TeamMatchesParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case("index.html", "seasons")]
|
#[test_case("index.html", "seasons")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_seasons_html(input: &str, name: &str) {
|
fn test_parse_seasons_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = SeasonsParser::new();
|
let parser = SeasonsParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
|
|
@ -64,24 +74,27 @@ fn test_parse_seasons_html(input: &str, name: &str) {
|
||||||
#[test_case("lookup_6v6.html", "seasons_6")]
|
#[test_case("lookup_6v6.html", "seasons_6")]
|
||||||
#[test_case("lookup_4v4.html", "seasons_4")]
|
#[test_case("lookup_4v4.html", "seasons_4")]
|
||||||
#[test_case("lookup_2v2.html", "seasons_2")]
|
#[test_case("lookup_2v2.html", "seasons_2")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_seasons_mode_html(input: &str, name: &str) {
|
fn test_parse_seasons_mode_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = TeamLookupParser::new();
|
let parser = TeamLookupParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case("match_116246.html", "match")]
|
#[test_case("match_116246.html", "match")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_match_html(input: &str, name: &str) {
|
fn test_parse_match_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = MatchPageParser::new();
|
let parser = MatchPageParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case("transactions_4v4.html", "transaction")]
|
#[test_case("transactions_4v4.html", "transaction")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_transaction_html(input: &str, name: &str) {
|
fn test_parse_transaction_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = TransactionParser::new();
|
let parser = TransactionParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
|
|
@ -91,8 +104,9 @@ fn test_parse_transaction_html(input: &str, name: &str) {
|
||||||
#[test_case("map_6v6.html", "maps_6")]
|
#[test_case("map_6v6.html", "maps_6")]
|
||||||
#[test_case("map_4v4.html", "maps_4")]
|
#[test_case("map_4v4.html", "maps_4")]
|
||||||
#[test_case("map_2v2.html", "maps_2")]
|
#[test_case("map_2v2.html", "maps_2")]
|
||||||
|
#[cfg(feature = "serde")]
|
||||||
fn test_parse_maps_html(input: &str, name: &str) {
|
fn test_parse_maps_html(input: &str, name: &str) {
|
||||||
let body = read_to_string(&format!("tests/data/{input}")).unwrap();
|
let body = read_to_string(format!("tests/data/{input}")).unwrap();
|
||||||
let parser = MapHistoryParser::new();
|
let parser = MapHistoryParser::new();
|
||||||
let parsed = parser.parse(&body).unwrap();
|
let parsed = parser.parse(&body).unwrap();
|
||||||
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
assert_json_snapshot!(format!("parse_{name}_html"), parsed);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue