Repository: vacanza/holidays
Pull request #2080 (2024-10-25 16:37:23)

Update Spain holidays in 2025
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

Update Spain holidays in 2025.

## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [ ] New country/market holidays support (thank you!)
- [x] Supported country/market holidays update (calendar discrepancy fix, localization)
- [ ] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've run `make pre-commit`, it didn't generate any changes
- [x] I've run `make test`, all tests passed locally

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.rst
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


sonarcloud[bot]: ## [![Quality Gate Failed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-failed-20px.png 'Quality Gate Failed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2080) **Quality Gate failed**  
Failed conditions  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/failed-16px.png '') [5.6% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2080&metric=new_duplicated_lines_density&view=list) (required ≤ 3%)  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2080)


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/vacanza/holidays/pull/2080?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 100.00%. Comparing base [(`76a0fac`)](https://app.codecov.io/gh/vacanza/holidays/commit/76a0facb4be670df3f2bd1dfa62e1fece84fef2c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) to head [(`6c0fadf`)](https://app.codecov.io/gh/vacanza/holidays/commit/6c0fadf5a01a093d5a652bab07351cdc74aa372c?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff            @@
##               dev     #2080   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          191       191           
  Lines        11546     11546           
  Branches      1743      1743           
=========================================
  Hits         11546     11546           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/vacanza/holidays/pull/2080?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).


Patch:
diff --git a/holidays/countries/spain.py b/holidays/countries/spain.py
index 06bd29d1..435d8364 100644
--- a/holidays/countries/spain.py
+++ b/holidays/countries/spain.py
@@ -46,8 +46,9 @@ class Spain(
      2020: https://www.boe.es/buscar/doc.php?id=BOE-A-2019-14552
      2021: https://www.boe.es/buscar/doc.php?id=BOE-A-2020-13343
      2022: https://www.boe.es/buscar/doc.php?id=BOE-A-2021-17113
-     2023: https://www.boe.es/diario_boe/txt.php?id=BOE-A-2022-16755
+     2023: https://www.boe.es/buscar/doc.php?id=BOE-A-2022-16755
      2024: https://www.boe.es/buscar/doc.php?id=BOE-A-2023-22014
+     2025: https://www.boe.es/buscar/doc.php?id=BOE-A-2024-21316
     """
 
     country = "ES"
@@ -105,7 +106,7 @@ class Spain(
             # Assumption Day.
             self._add_assumption_of_mary_day(tr("Asunción de la Virgen"))
 
-        if self._year != 2014:
+        if self._year not in {2014, 2025}:
             # National Day.
             self._add_holiday_oct_12(tr("Fiesta Nacional de España"))
 
@@ -143,7 +144,7 @@ class Spain(
         if self._year in {2010, 2021}:
             self._move_holiday(self._add_assumption_of_mary_day(tr("Asunción de la Virgen")))
 
-        if self._year == 2014:
+        if self._year in {2014, 2025}:
             self._move_holiday(self._add_holiday_oct_12(tr("Fiesta Nacional de España")))
 
         if self._year in {2015, 2020}:
@@ -176,7 +177,7 @@ class Spain(
         if self._year in {2010, 2021}:
             self._move_holiday(self._add_assumption_of_mary_day(tr("Asunción de la Virgen")))
 
-        if self._year == 2014:
+        if self._year in {2014, 2025}:
             self._move_holiday(self._add_holiday_oct_12(tr("Fiesta Nacional de España")))
 
         if self._year in {2015, 2020}:
@@ -209,7 +210,7 @@ class Spain(
         # Asturia Day.
         self._move_holiday(self._add_holiday_sep_8(tr("Día de Asturias")))
 
-        if self._year == 2014:
+        if self._year in {2014, 2025}:
             self._move_holiday(self._add_holiday_oct_12(tr("Fiesta Nacional de España")))
 
         if self._year in {2015, 2020}:
@@ -275,7 +276,7 @@ class Spain(
             # Santa Maria of Africa.
             self._add_holiday_aug_5(tr("Nuestra Señora de África"))
 
-        if self._year not in {2011, 2012, 2015, 2018}:
+        if self._year not in {2011, 2012, 2015, 2018, 2025}:
             # Ceuta Day.
             self._add_holiday_sep_2(tr("Día de Ceuta"))
 
@@ -328,7 +329,7 @@ class Spain(
         if self._year == 2021:
             self._move_holiday(self._add_assumption_of_mary_day(tr("Asunción de la Virgen")))
 
-        if self._year == 2014:
+        if self._year in {2014, 2025}:
             self._move_holiday(self._add_holiday_oct_12(tr("Fiesta Nacional de España")))
 
         if self._year in {2015, 2020}:
@@ -438,7 +439,7 @@ class Spain(
             # Extremadura Day.
             self._move_holiday(self._add_holiday_sep_8(tr("Día de Extremadura")))
 
-        if self._year == 2014:
+        if self._year in {2014, 2025}:
             self._move_holiday(self._add_holiday_oct_12(tr("Fiesta Nacional de España")))
 
         if self._year in {2015, 2020}:
@@ -480,7 +481,7 @@ class Spain(
 
         self._add_holy_thursday(tr("Jueves Santo"))
 
-        if self._year != 2014:
+        if self._year not in {2014, 2025}:
             self._add_easter_monday(tr("Lunes de Pascua"))
 
         if self._year == 2015:
@@ -492,7 +493,7 @@ class Spain(
         if self._year in {2011, 2016, 2022}:
             self._move_holiday(self._add_christmas_day(tr("Natividad del Señor")))
 
-        if self._year in {2013, 2014, 2019, 2020}:
+        if self._year in {2013, 2014, 2019, 2020, 2025}:
             self._add_christmas_day_two(tr("San Esteban"))
 
     def _populate_subdiv_mc_public_holidays(self):
@@ -502,7 +503,7 @@ class Spain(
         if self._year in {2013, 2019}:
             self._move_holiday(self._add_epiphany_day(tr("Epifanía del Señor")))
 
-        if (self._year <= 2021 and self._year != 2017) or self._year == 2024:
+        if (self._year <= 2021 and self._year != 2017) or self._year in {2024, 2025}:
             self._move_holiday(self._add_saint_josephs_day(tr("San José")))
 
         self._add_holy_thursday(tr("Jueves Santo"))
@@ -539,7 +540,7 @@ class Spain(
         if self._year in {2010, 2011, 2014}:
             self._add_corpus_christi_day(tr("Corpus Christi"))
 
-        if self._year in {2011, 2016, 2022, 2024}:
+        if self._year in {2011, 2016, 2022, 2024, 2025}:
             self._add_saint_james_day(tr("Santiago Apóstol"))
 
         if self._year == 2020:
@@ -579,7 +580,7 @@ class Spain(
         if self._year in {2011, 2016, 2022}:
             self._move_holiday(self._add_christmas_day(tr("Natividad del Señor")))
 
-        if self._year in {2022, 2023}:
+        if self._year in {2022, 2023, 2025}:
             # Eid al-Fitr.
             self._add_eid_al_fitr_day(tr("Fiesta del Eid Fitr"))
 
@@ -652,7 +653,7 @@ class Spain(
             self._move_holiday(self._add_christmas_day(tr("Natividad del Señor")))
 
     def _populate_subdiv_vc_public_holidays(self):
-        if (self._year <= 2022 and self._year != 2017) or self._year == 2024:
+        if (self._year <= 2022 and self._year != 2017) or self._year in {2024, 2025}:
             self._add_saint_josephs_day(tr("San José"))
 
         if self._year in {2011, 2016, 2017, 2022}:
@@ -702,11 +703,13 @@ class SpainIslamicHolidays(_CustomIslamicHolidays):
         2022: (JUL, 9),
         2023: (JUN, 29),
         2024: (JUN, 17),
+        2025: (JUN, 6),
     }
 
     EID_AL_FITR_DATES = {
         2022: (MAY, 3),
         2023: (APR, 21),
+        2025: (MAR, 31),
     }
 
 
diff --git a/snapshots/countries/ES_AN.json b/snapshots/countries/ES_AN.json
index 886b39e4..4a962b1f 100644
--- a/snapshots/countries/ES_AN.json
+++ b/snapshots/countries/ES_AN.json
@@ -906,7 +906,7 @@
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
+    "2025-10-13": "Monday following National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_AR.json b/snapshots/countries/ES_AR.json
index 90e405a1..9c777783 100644
--- a/snapshots/countries/ES_AR.json
+++ b/snapshots/countries/ES_AR.json
@@ -906,7 +906,7 @@
     "2025-04-23": "Saint George's Day",
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
+    "2025-10-13": "Monday following National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_AS.json b/snapshots/countries/ES_AS.json
index ad7be9c5..9e718564 100644
--- a/snapshots/countries/ES_AS.json
+++ b/snapshots/countries/ES_AS.json
@@ -906,7 +906,7 @@
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
     "2025-09-08": "Asturia Day",
-    "2025-10-12": "National Day",
+    "2025-10-13": "Monday following National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CB.json b/snapshots/countries/ES_CB.json
index 108fd389..b2232d95 100644
--- a/snapshots/countries/ES_CB.json
+++ b/snapshots/countries/ES_CB.json
@@ -969,7 +969,6 @@
     "2025-07-28": "Cantabria Institutions Day",
     "2025-08-15": "Assumption Day",
     "2025-09-15": "Our Lady of the Bien Aparecida",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CE.json b/snapshots/countries/ES_CE.json
index c584355d..be2553af 100644
--- a/snapshots/countries/ES_CE.json
+++ b/snapshots/countries/ES_CE.json
@@ -908,11 +908,9 @@
     "2025-04-17": "Maundy Thursday",
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
-    "2025-06-06": "Eid al-Adha (estimated)",
+    "2025-06-06": "Eid al-Adha",
     "2025-08-05": "Santa Maria of Africa",
     "2025-08-15": "Assumption Day",
-    "2025-09-02": "Ceuta Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CL.json b/snapshots/countries/ES_CL.json
index b75e9c98..e8e663c3 100644
--- a/snapshots/countries/ES_CL.json
+++ b/snapshots/countries/ES_CL.json
@@ -906,7 +906,7 @@
     "2025-04-23": "Castile and Le\u00f3n Day",
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
+    "2025-10-13": "Monday following National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CM.json b/snapshots/countries/ES_CM.json
index e17b44d0..55a6f2d9 100644
--- a/snapshots/countries/ES_CM.json
+++ b/snapshots/countries/ES_CM.json
@@ -967,7 +967,6 @@
     "2025-05-31": "Castilla-La Mancha Day",
     "2025-06-19": "Corpus Christi",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CN.json b/snapshots/countries/ES_CN.json
index 8c34dc4d..03e7601f 100644
--- a/snapshots/countries/ES_CN.json
+++ b/snapshots/countries/ES_CN.json
@@ -892,7 +892,6 @@
     "2025-05-01": "Labor Day",
     "2025-05-30": "Day of the Canary Islands",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_COMMON.json b/snapshots/countries/ES_COMMON.json
index 4df7fa08..f6dc5beb 100644
--- a/snapshots/countries/ES_COMMON.json
+++ b/snapshots/countries/ES_COMMON.json
@@ -733,7 +733,6 @@
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_CT.json b/snapshots/countries/ES_CT.json
index 1eba92c7..ef154a7b 100644
--- a/snapshots/countries/ES_CT.json
+++ b/snapshots/countries/ES_CT.json
@@ -1033,7 +1033,6 @@
     "2025-06-24": "Saint John the Baptist",
     "2025-08-15": "Assumption Day",
     "2025-09-11": "National Day of Catalonia",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_EX.json b/snapshots/countries/ES_EX.json
index 0776b83f..e2807917 100644
--- a/snapshots/countries/ES_EX.json
+++ b/snapshots/countries/ES_EX.json
@@ -906,7 +906,7 @@
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
     "2025-09-08": "Extremadura Day",
-    "2025-10-12": "National Day",
+    "2025-10-13": "Monday following National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_GA.json b/snapshots/countries/ES_GA.json
index 4b4f3c44..f57952ea 100644
--- a/snapshots/countries/ES_GA.json
+++ b/snapshots/countries/ES_GA.json
@@ -969,7 +969,6 @@
     "2025-05-17": "Galician Literature Day",
     "2025-07-25": "Galician National Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_IB.json b/snapshots/countries/ES_IB.json
index b1e7f959..bb9c85a7 100644
--- a/snapshots/countries/ES_IB.json
+++ b/snapshots/countries/ES_IB.json
@@ -965,14 +965,13 @@
     "2025-03-01": "Day of the Balearic Islands",
     "2025-04-17": "Maundy Thursday",
     "2025-04-18": "Good Friday",
-    "2025-04-21": "Easter Monday",
     "2025-05-01": "Labor Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
     "2025-12-25": "Christmas Day",
+    "2025-12-26": "Saint Stephen's Day",
     "2026-01-01": "New Year's Day",
     "2026-01-06": "Epiphany",
     "2026-03-01": "Day of the Balearic Islands",
diff --git a/snapshots/countries/ES_MC.json b/snapshots/countries/ES_MC.json
index 30465aa1..0f2785aa 100644
--- a/snapshots/countries/ES_MC.json
+++ b/snapshots/countries/ES_MC.json
@@ -962,12 +962,12 @@
     "2024-12-25": "Christmas Day",
     "2025-01-01": "New Year's Day",
     "2025-01-06": "Epiphany",
+    "2025-03-19": "Saint Joseph's Day",
     "2025-04-17": "Maundy Thursday",
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
     "2025-06-09": "Murcia Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_MD.json b/snapshots/countries/ES_MD.json
index 13a8833a..65f5b9ec 100644
--- a/snapshots/countries/ES_MD.json
+++ b/snapshots/countries/ES_MD.json
@@ -904,8 +904,8 @@
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
     "2025-05-02": "Madrid Day",
+    "2025-07-25": "Saint James' Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_ML.json b/snapshots/countries/ES_ML.json
index f6046718..87c23bc2 100644
--- a/snapshots/countries/ES_ML.json
+++ b/snapshots/countries/ES_ML.json
@@ -901,12 +901,12 @@
     "2024-12-25": "Christmas Day",
     "2025-01-01": "New Year's Day",
     "2025-01-06": "Epiphany",
+    "2025-03-31": "Eid al-Fitr",
     "2025-04-17": "Maundy Thursday",
     "2025-04-18": "Good Friday",
     "2025-05-01": "Labor Day",
-    "2025-06-06": "Eid al-Adha (estimated)",
+    "2025-06-06": "Eid al-Adha",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_NC.json b/snapshots/countries/ES_NC.json
index f79329e6..a7db4763 100644
--- a/snapshots/countries/ES_NC.json
+++ b/snapshots/countries/ES_NC.json
@@ -907,7 +907,6 @@
     "2025-05-01": "Labor Day",
     "2025-07-25": "Saint James' Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_PV.json b/snapshots/countries/ES_PV.json
index baa2486b..1e6063c9 100644
--- a/snapshots/countries/ES_PV.json
+++ b/snapshots/countries/ES_PV.json
@@ -967,7 +967,6 @@
     "2025-05-01": "Labor Day",
     "2025-07-25": "Saint James' Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_RI.json b/snapshots/countries/ES_RI.json
index cea96798..3ea8e085 100644
--- a/snapshots/countries/ES_RI.json
+++ b/snapshots/countries/ES_RI.json
@@ -967,7 +967,6 @@
     "2025-05-01": "Labor Day",
     "2025-06-09": "La Rioja Day",
     "2025-08-15": "Assumption Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",
diff --git a/snapshots/countries/ES_VC.json b/snapshots/countries/ES_VC.json
index aa757b08..5ca966ef 100644
--- a/snapshots/countries/ES_VC.json
+++ b/snapshots/countries/ES_VC.json
@@ -964,13 +964,13 @@
     "2024-12-25": "Christmas Day",
     "2025-01-01": "New Year's Day",
     "2025-01-06": "Epiphany",
+    "2025-03-19": "Saint Joseph's Day",
     "2025-04-18": "Good Friday",
     "2025-04-21": "Easter Monday",
     "2025-05-01": "Labor Day",
     "2025-06-24": "Saint John the Baptist",
     "2025-08-15": "Assumption Day",
     "2025-10-09": "Valencian Community Day",
-    "2025-10-12": "National Day",
     "2025-11-01": "All Saints' Day",
     "2025-12-06": "Constitution Day",
     "2025-12-08": "Immaculate Conception",


Test patch:
diff --git a/tests/countries/test_spain.py b/tests/countries/test_spain.py
index f94e00d3..ea9b0aab 100644
--- a/tests/countries/test_spain.py
+++ b/tests/countries/test_spain.py
@@ -229,6 +229,19 @@ class TestSpain(CommonCountryTests, TestCase):
             "2024-12-25",
         )
 
+    def test_fixed_holidays_2025(self):
+        self.assertNonObservedHoliday(
+            "2025-01-01",
+            "2025-01-06",
+            "2025-04-18",
+            "2025-05-01",
+            "2025-08-15",
+            "2025-11-01",
+            "2025-12-06",
+            "2025-12-08",
+            "2025-12-25",
+        )
+
     def test_islamic(self):
         self.assertNoHolidayName(
             "Fiesta del Sacrificio-Eidul Adha", Spain(subdiv="CE", years=2009)
@@ -970,6 +983,53 @@ class TestSpain(CommonCountryTests, TestCase):
         }
         self._assertVariableDays(2024, province_days)
 
+    def test_variable_holidays_2025(self):
+        province_days = {
+            (FEB, 28): {"AN"},
+            (MAR, 1): {"IB"},
+            (MAR, 19): {"MC", "VC"},
+            (MAR, 31): {"ML"},
+            (APR, 17): {
+                "AN",
+                "AR",
+                "AS",
+                "CB",
+                "CE",
+                "CL",
+                "CM",
+                "CN",
+                "EX",
+                "GA",
+                "IB",
+                "MC",
+                "MD",
+                "ML",
+                "NC",
+                "PV",
+                "RI",
+            },
+            (APR, 21): {"CT", "NC", "PV", "RI", "VC"},
+            (APR, 23): {"AR", "CL"},
+            (MAY, 2): {"MD"},
+            (MAY, 17): {"GA"},
+            (MAY, 30): {"CN"},
+            (MAY, 31): {"CM"},
+            (JUN, 6): {"CE", "ML"},
+            (JUN, 9): {"MC", "RI"},
+            (JUN, 19): {"CM"},
+            (JUN, 24): {"CT", "VC"},
+            (JUL, 25): {"GA", "MD", "NC", "PV"},
+            (JUL, 28): {"CB"},
+            (AUG, 5): {"CE"},
+            (SEP, 8): {"AS", "EX"},
+            (SEP, 11): {"CT"},
+            (SEP, 15): {"CB"},
+            (OCT, 9): {"VC"},
+            (OCT, 13): {"AN", "AR", "AS", "CL", "EX"},
+            (DEC, 26): {"CT", "IB"},
+        }
+        self._assertVariableDays(2025, province_days)
+
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2023-01-06", "Epifanía del Señor"),