PDF (Ebook) Test-Driven Development with Python. Obey the Testing Goat. Using Django, Selenium, and JavaScript by Harry J. W. Percival ISBN 9781491958674, 9781491958704, 1491958677, 1491958707 download
PDF (Ebook) Test-Driven Development with Python. Obey the Testing Goat. Using Django, Selenium, and JavaScript by Harry J. W. Percival ISBN 9781491958674, 9781491958704, 1491958677, 1491958707 download
com
DOWLOAD EBOOK
ebooknice.com
ebooknice.com
https://ebooknice.com/product/sat-ii-success-
math-1c-and-2c-2002-peterson-s-sat-ii-success-1722018
ebooknice.com
ebooknice.com
(Ebook) Test-Driven Development with Python by Harry J. W.
Percival ISBN 9781449364823, 1449364829
https://ebooknice.com/product/test-driven-development-with-
python-4911642
ebooknice.com
https://ebooknice.com/product/test-driven-development-with-
python-50194730
ebooknice.com
ebooknice.com
In this book, Harry takes us on an adventure of discovery with Python and testing.
It’s an excellent book, fun to read and full of vital information. It has my highest
recommendations for anyone interested in testing with Python, learning Django, or
wanting to use Selenium. Testing is essential for developer sanity and it’s a notoriously
difficult field, full of trade-offs. Harry does a fantastic job of holding our attention whilst
exploring real-world testing practices.
—Michael Foord, Python Core Developer and Maintainer
of unittest
Harry’s book is what we wish existed when we were learning Django. At a pace that’s
achievable and yet delightfully challenging, it provides excellent instruction for Django
and various test practices. The material on Selenium alone makes the book worth
purchasing, but there’s so much more!
—Daniel and Audrey Roy Greenfeld, authors of Two Scoops of
Django (Two Scoops Press)
WOW! eBook
www.wowebook.org
WOW! eBook
www.wowebook.org
SECOND EDITION
Test-Driven Development
with Python
Obey the Testing Goat: Using Django,
Selenium, and JavaScript
WOW! eBook
www.wowebook.org
Test-Driven Development with Python
by Harry J.W. Percival
Copyright © 2017 Harry Percival. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/insti‐
tutional sales department: 800-998-9938 or [email protected].
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Test-Driven Development with Python,
the cover image, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the author have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the author disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.
978-1-491-95870-4
[LSI]
WOW! eBook
www.wowebook.org
Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii
WOW! eBook
www.wowebook.org
Unit Testing a View 30
The Unit-Test/Code Cycle 32
7. Working Incrementally. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Small Design When Necessary 95
Not Big Design Up Front 95
YAGNI! 96
REST (ish) 96
Implementing the New Design Incrementally Using TDD 97
Ensuring We Have a Regression Test 99
vi | Table of Contents
WOW! eBook
www.wowebook.org
Iterating Towards the New Design 101
Taking a First, Self-Contained Step: One New URL 103
A New URL 103
A New View Function 104
Green? Refactor 106
Another Small Step: A Separate Template for Viewing Lists 107
A Third Small Step: A URL for Adding List Items 109
A Test Class for New List Creation 109
A URL and View for New List Creation 110
Removing Now-Redundant Code and Tests 111
A Regression! Pointing Our Forms at the New URL 112
Biting the Bullet: Adjusting Our Models 113
A Foreign Key Relationship 115
Adjusting the Rest of the World to Our New Models 117
Each List Should Have Its Own URL 119
Capturing Parameters from URLs 120
Adjusting new_list to the New World 121
The Functional Tests Detect Another Regression 123
One More View to Handle Adding Items to an Existing List 124
Beware of Greedy Regular Expressions! 125
The Last New URL 125
The Last New View 126
Testing the Response Context Objects Directly 127
A Final Refactor Using URL includes 129
WOW! eBook
www.wowebook.org
A Few Things That Didn’t Make It 152
WOW! eBook
www.wowebook.org
Git Tag the Release 199
Further Reading 199
12. Splitting Our Tests into Multiple Files, and a Generic Wait Helper. . . . . . . . . . . . . . . . 201
Start on a Validation FT: Preventing Blank Items 201
Skipping a Test 202
Splitting Functional Tests Out into Many Files 203
Running a Single Test File 206
A New Functional Test Tool: A Generic Explicit Wait Helper 207
Finishing Off the FT 211
Refactoring Unit Tests into Several Files 213
Table of Contents | ix
WOW! eBook
www.wowebook.org
But Have We Wasted a Lot of Time? 254
Using the Form’s Own Save Method 254
x | Table of Contents
WOW! eBook
www.wowebook.org
Storing Tokens in the Database 307
Custom Authentication Models 307
Finishing the Custom Django Auth 309
De-spiking 313
Reverting Our Spiked Code 315
A Minimal Custom User Model 316
Tests as Documentation 319
A Token Model to Link Emails with a Unique ID 320
Table of Contents | xi
WOW! eBook
www.wowebook.org
Getting the FT to Run the Management Command on the Server 378
Using Fabric Directly from Python 379
Recap: Creating Sessions Locally Versus Staging 380
Baking In Our Logging Code 382
Wrap-Up 382
WOW! eBook
www.wowebook.org
Tidy Up: What to Keep from Our Integrated Test Suite 426
Removing Redundant Code at the Forms Layer 426
Removing the Old Implementation of the View 427
Removing Redundant Code at the Forms Layer 429
Conclusions: When to Write Isolated Versus Integrated Tests 429
Let Complexity Be Your Guide 430
Should You Do Both? 431
Onwards! 431
25. The Token Social Bit, the Page Pattern, and an Exercise for the Reader. . . . . . . . . . . 453
An FT with Multiple Users, and addCleanup 453
The Page Pattern 455
Extend the FT to a Second User, and the “My Lists” Page 458
An Exercise for the Reader 459
WOW! eBook
www.wowebook.org
The Problems with “Pure” Unit Tests 466
Isolated Tests Can Be Harder to Read and Write 466
Isolated Tests Don’t Automatically Test Integration 466
Unit Tests Seldom Catch Unexpected Bugs 466
Mocky Tests Can Become Closely Tied to Implementation 467
But All These Problems Can Be Overcome 467
Synthesis: What Do We Want from Our Tests, Anyway? 467
Correctness 467
Clean, Maintainable Code 467
Productive Workflow 468
Evaluate Your Tests Against the Benefits You Want from Them 468
Architectural Solutions 469
Ports and Adapters/Hexagonal/Clean Architecture 469
Functional Core, Imperative Shell 469
Conclusion 470
Further Reading 470
A. PythonAnywhere. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
F. Building a REST API: JSON, Ajax, and Mocking with JavaScript. . . . . . . . . . . . . . . . . . . . 519
G. Django-Rest-Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Bibliography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
WOW! eBook
www.wowebook.org
Preface
This book is my attempt to share with the world the journey I’ve taken from “hack‐
ing” to “software engineering”. It’s mainly about testing, but there’s a lot more to it, as
you’ll soon see.
I want to thank you for reading it.
If you bought a copy, then I’m very grateful. If you’re reading the free online version,
then I’m still grateful that you’ve decided it’s worth spending some of your time on.
Who knows, perhaps once you get to the end, you’ll decide it’s good enough to buy a
real copy for yourself or for a friend.
If you have any comments, questions, or suggestions, I’d love to hear from you. You
can reach me directly via [email protected], or on Twitter @hjwp. You
can also check out the website and my blog, and there’s a mailing list.
I hope you’ll enjoy reading this book as much as I enjoyed writing it.
xv
WOW! eBook
www.wowebook.org
really sensible approach, a really good habit to get into—like regularly flossing your
teeth.
Then came my first big project, and you can guess what happened—there was a cli‐
ent, there were deadlines, there was lots to do, and any good intentions about TDD
went straight out of the window.
And, actually, it was fine. I was fine.
At first.
At first I knew I didn’t really need TDD because it was a small website, and I could
easily test whether things worked by just manually checking it out. Click this link
here, choose that drop-down item there, and this should happen. Easy. This whole
writing tests thing sounded like it would have taken ages, and besides, I fancied
myself, from the full height of my three weeks of adult coding experience, as being a
pretty good programmer. I could handle it. Easy.
Then came the fearful goddess Complexity. She soon showed me the limits of my
experience.
The project grew. Parts of the system started to depend on other parts. I did my best
to follow good principles like DRY (Don’t Repeat Yourself), but that just led to some
pretty dangerous territory. Soon I was playing with multiple inheritance. Class hierar‐
chies eight levels deep. eval statements.
I became scared of making changes to my code. I was no longer sure what depended
on what, and what might happen if I changed this code over here, oh gosh, I think that
bit over there inherits from it—no, it doesn’t, it’s overriden. Oh, but it depends on
that class variable. Right, well, as long as I override the override it should be fine. I’ll
just check—but checking was getting much harder. There were lots of sections to the
site now, and clicking through them all manually was starting to get impractical. Bet‐
ter to leave well enough alone, forget refactoring, just make do.
Soon I had a hideous, ugly mess of code. New development became painful.
Not too long after this, I was lucky enough to get a job with a company called
Resolver Systems (now PythonAnywhere), where Extreme Programming (XP) was
the norm. They introduced me to rigorous TDD.
Although my previous experience had certainly opened my mind to the possible ben‐
efits of automated testing, I still dragged my feet at every stage. “I mean, testing in
general might be a good idea, but really? All these tests? Some of them seem like a
total waste of time… What? Functional tests as well as unit tests? Come on, that’s
overdoing it! And this TDD test/minimal-code-change/test cycle? This is just silly!
We don’t need all these baby steps! Come on, we can see what the right answer is, why
don’t we just skip to the end?”
xvi | Preface
WOW! eBook
www.wowebook.org
Believe me, I second-guessed every rule, I suggested every shortcut, I demanded justi‐
fications for every seemingly pointless aspect of TDD, and I came out seeing the wis‐
dom of it all. I’ve lost count of the number of times I’ve thought “Thanks, tests”, as a
functional test uncovers a regression we would never have predicted, or a unit test
saves me from making a really silly logic error. Psychologically, it’s made development
a much less stressful process. It produces code that’s a pleasure to work with.
So, let me tell you all about it!
Outline
I’ve split this book into three parts.
Part I (Chapters 1–7): The basics
Dives straight into building a simple web app using TDD. We start by writing a
functional test (with Selenium), and then we go through the basics of Django—
models, views, templates—with rigorous unit testing at every stage. I also intro‐
duce the Testing Goat.
Preface | xvii
WOW! eBook
www.wowebook.org
Part II (Chapters 8–17): Web development essentials
Covers some of the trickier but unavoidable aspects of web development, and
shows how testing can help us with them: static files, deployment to production,
form data validation, database migrations, and the dreaded JavaScript.
Part III (Chapters 18–26): More advanced testing topics
Mocking, integrating a third-party system, test fixtures, Outside-In TDD, and
Continuous Integration (CI).
On to a little housekeeping…
xviii | Preface
WOW! eBook
www.wowebook.org
This element indicates a warning or caution.
Submitting Errata
Spotted a mistake or a typo? The sources for this book are available on GitHub, and
I’m always very happy to receive issues and pull requests: https://github.com/hjwp/
Book-TDD-Web-Dev-Python/.
O’Reilly Safari
Safari (formerly Safari Books Online) is a membership-based
training and reference platform for enterprise, government,
educators, and individuals.
Preface | xix
WOW! eBook
www.wowebook.org
Members have access to thousands of books, training videos, Learning Paths, interac‐
tive tutorials, and curated playlists from over 250 publishers, including O’Reilly
Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Profes‐
sional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press,
John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe
Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, and
Course Technology, among others.
For more information, please visit http://oreilly.com/safari.
Contacting O’Reilly
If you’d like to get in touch with my beloved publisher with any questions about this
book, contact details follow:
We have a web page for this book, where we list errata, examples, and any additional
information. You can access this page at http://bit.ly/tdd_py_2e.
To comment or ask technical questions about this book, send email to bookques‐
[email protected].
For more information about books, courses, conferences, and news, see O’Reilly’s
website at http://www.oreilly.com.
Facebook: http://facebook.com/oreilly
Twitter: http://twitter.com/oreillymedia
YouTube: http://www.youtube.com/oreillymedia
xx | Preface
WOW! eBook
www.wowebook.org
Prerequisites and Assumptions
Here’s an outline of what I’m assuming about you and what you already know, as well
as what software you’ll need ready and installed on your computer.
This book was tested against Python 3.6. If you’re on an earlier ver‐
sion, you will find minor differences (the f-string syntax, for exam‐
ple), so you’re best off upgrading if you can.
I wouldn’t recommend trying to use Python 2, as the differences are more substantial.
You’ll still be able to carry across all the lessons you learn in this book if your next
project happens to be in Python 2. But spending time figuring out whether the reason
your program output looks different from mine is because of Python 2, or because
you made an actual mistake, won’t be time spent productively.
xxi
WOW! eBook
www.wowebook.org
If you are thinking of using PythonAnywhere (the PaaS startup I work for), rather
than a locally installed Python, you should go and take a quick look at Appendix A
before you get started.
In any case, I expect you to have access to Python, to know how to launch it from a
command line, and to know how to edit a Python file and run it. Again, have a look
at the three books I recommended previously if you’re in any doubt.
Django
The book uses the Django framework, which is (probably) the most well-established
web framework in the Python world. I’ve written the book assuming that the reader
has no prior knowledge of Django, but if you’re new to Python and new to web devel‐
opment and new to testing, you may occasionally find that there’s just one too many
topics and sets of concepts to try and take on board. If that’s the case, I recommend
taking a break from the book, and taking a look at a Django tutorial. DjangoGirls is
the best, most beginner-friendly tutorial I know of. The official tutorial is also excel‐
lent for more experienced programmers.
Read on for instructions on installing Django.
JavaScript
There’s a little bit of JavaScript in the second half of the book. If you don’t know Java‐
Script, don’t worry about it until then, and if you find yourself a little confused, I’ll
recommend a couple of guides at that point.
WOW! eBook
www.wowebook.org
A Note on IDEs
If you’ve come from the world of Java or .NET, you may be keen to use an IDE for
your Python coding. They have all sorts of useful tools, including VCS integration,
and there are some excellent ones out there for Python. I used one myself when I was
starting out, and I found it very useful for my first couple of projects.
Can I suggest (and it’s only a suggestion) that you don’t use an IDE, at least for the
duration of this tutorial? IDEs are much less necessary in the Python world, and I’ve
written this whole book with the assumption that you’re just using a basic text editor
and a command line. Sometimes, that’s all you have—when you’re working on a
server, for example—so it’s always worth learning how to use the basic tools first and
understanding how they work. It’ll be something you always have, even if you decide
to go back to your IDE and all its helpful tools, after you’ve finished this book.
WOW! eBook
www.wowebook.org
Windows Notes
Windows users can sometimes feel a little neglected in the open source world, since
macOS and Linux are so prevalent, making it easy to forget there’s a world outside the
Unix paradigm. Backslashes as directory separators? Drive letters? What? Still, it is
absolutely possible to follow along with this book on Windows. Here are a few tips:
1. When you install Git for Windows, make sure you choose “Run Git and
included Unix tools from the Windows command prompt”. You’ll then get
access to a program called “Git Bash”. Use this as your main command prompt
and you’ll get all the useful GNU command-line tools like ls, touch, and grep,
plus forward-slash directory separators.
2. Also in the Git installer, choose “Use Windows’ default console”; otherwise,
Python won’t work properly in the Git-Bash window.
3. When you install Python 3, unless you already have Python 2 and want to keep it
as your default, tick the option that says “Add Python 3.6 to PATH” as in
Figure P-1, so that you can easily run Python from the command line.
Figure P-1. Add Python to the system path from the installer
WOW! eBook
www.wowebook.org
The test for all this is that you should be able to go to a Git-
Bash command prompt and just run python or pip from any
folder.
MacOS Notes
MacOS is a bit more sane than Windows, although getting pip installed was still fairly
challenging up until recently. Since the arrival of 3.4, things are now quite
straightforward:
• Python 3.6 should install without a fuss from its downloadable installer. It will
automatically install pip, too.
• Git’s installer should also “just work”.
Similarly to Windows, the test for all this is that you should be able to open a terminal
and just run git, python3, or pip from anywhere. If you run into any trouble, the
search terms “system path” and “command not found” should provide good trouble‐
shooting resources.
1 I wouldn’t recommend installing Firefox via Homebrew though: brew puts the Firefox binary in a strange
location, and it confuses Selenium. You can work around it, but it’s simpler to just install Firefox in the nor‐
mal way.
WOW! eBook
www.wowebook.org
normal mode, then write the file and quit with :wq<Enter>). You’ll then have joined
the great fraternity of people who know this ancient, revered text editor.
Or you can point-blank refuse to be involved in such a ridiculous throwback to the
1970s, and configure Git to use an editor of your choice. Quit vi using <Esc> followed
by :q!, then change your Git default editor. See the Git documentation on basic Git
configuration.
To test that you’ve got this working, open up a Bash console and you should be able
to run:
geckodriver --version
geckodriver 0.17.0
This program is subject to the terms of the Mozilla Public License 2.0.
You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.
If it doesn’t work, it may be that ~/.local/bin isn’t on your PATH (this would apply to
some Mac and Linux systems). It’s a good idea to have this folder on your path
because it’s where Python will install things when you use pip install --user.
Here’s how to add it in your .bashrc:2
echo 'PATH=~/.local/bin:$PATH' >> ~/.bashrc
Close your terminal and re-open it and see if the geckodriver --version works
now.
2 .bashrc is an initialization file for Bash that lives in your home folder. It gets run every time you start Bash.
WOW! eBook
www.wowebook.org
Setting Up Your Virtualenv
A Python virtualenv (short for virtual environment) is how you set up your environ‐
ment for different Python projects. It allows you to use different packages (e.g., differ‐
ent versions of Django, and even different versions of Python) in each project. And
because you’re not installing things system-wide, it means you don’t need root
permissions.
Virtualenv has been included in Python since version 3.4, but I always recommend a
helper tool called “virtualenvwrapper”. Let’s install that first (it doesn’t matter which
version of Python you install it for):
# on Windows
pip install virtualenvwrapper
# on macOS / Linux
pip install --user virtualenvwrapper
# then make Bash load virtualenvwrapper automatically
echo "source virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
virtualenvwrapper keeps all your virtualenvs in one place, and provides convenient
tools for activating and deactivating them.
Let’s create a virtualenv called “superlists”3 that has Python 3 installed:
# on macOS/Linux:
mkvirtualenv --python=python3.6 superlists
# on Windows
mkvirtualenv --python=`py -3.6 -c"import sys; print(sys.executable)"` superlists
# (a little hack to make sure we get a python 3.6 virtualenv)
3 Why superlists, I hear you ask? No spoilers! You’ll find out in the next chapter.
WOW! eBook
www.wowebook.org
Exploring the Variety of Random
Documents with Different Content
Florița, cum privì la ea, așa privì, încât ochii amândoi și cel de-a
dreapta, și cel de-a stânga, îi săriră din cap și căzură la Florița în
poale.
Baba Boanța mulțumì lui Dumnezeu, cumcă nu e silită să facă un
păcat mare, luă ochii cei de căprioară și-i duse, ca să spuie
cârciumăriței, cumcă i-a scos dela Florița din cap.
Florița rămase singură și părăsită… Ce să facă? – pornì, încotro o
duseră ochii și norocul.
Multe zile și multe nopți a pribegit Florița, așa singură, prin
codru, fără s’audă graiu pământesc, fără să vadă ființă omenească.
Numai din când în când i se ivià câte o fiară sălbatică în cale și asta
rămâneà însă privind din depărtare, îi urmà o bucățică de cale și apoi
se ascundeà în tufele dese. Florița mergeà cântând mai departe…
Unde, – nici ea singură nu știà… Mergeà… mergeà…
Intr’atâtea ș’atâtea zi, tocmai în revărsatul zorilor, pe când se
desveleà ziua din noapte, văzù cum că vede ceva, – așa ca ș’o casă,
zărindu-se printre frunzele copacilor. – Inaintea casei lucră un om
ghebos ceva, – nu știu ce – aplecat la pământ, dar lucrà, încât nici
cu trăsnetul n’ai fi putut să-l trezești dela lucru… Dar cum lucrà? –
nu ca altă lume – Toate le făceà întoarse și sucite, ca și omul adecă,
care nu pricepe lucrul, de care s’a prins. El lucrà la un puiu… Mai
înainte îl ciupelì și numai după aceea îl opărì cu apă feartă – mai
înainte îl drese și numai după aceea îl ciupelì și opărì…
Când Florița văzù, cât de necioplit mi se mișcà ghebosul, ea nu
se putù răbdà – ca să nu meargă să-l învețe și să-i ajute…
«Bun lucru, bădiță!» grăì Florița blând ca totdeauna.
Ghebosul privì îndărăt, când auzì, așa ca prin vis, vorba cea dulce
a Floriței, și când privì și văzù ce vede… poate acuma fiecare să știe,
ce trebue să fie atunci, când un ghebos privește în fața Floriței! –
Ghebosul scăpă și cuțitul, și puiul, și toate le scăpă din mână, – și
stà înaintea Floriței, încât i se păreà c’acuma nici nu e ghebos mai
mult… Dar nici Florița nu stà la flori și frunze! Ghebosul erà atât de
hîd, cât Florița de frumoasă: cu gura ca grapa, cu ochii ca ceapa, cu
nasul cârlig, cu părul pârlit…
«Ce ai de gând cu puiul?» – întrebă Florița – după ce-i mai trecù
amețeala.
«Am să-l frig pentru tovarăși» – răspunse ghebosul cam cu
jumătate de gură, ca omul, din care scoți vorba cu frică.
«Ce tovarăși? – îl întrebă Florica.
Ghebosul privi lung la Florica, ca un om care ar vreà să zică ceva
și nu știe, cum s’o scoață mai nimerit. «Vezi casa asta? – zise el dela
o vreme, mai cu inimă. – Asta e casa celor doisprezece hoți de
codru. Ei s’au dus la hoțit, și eu am rămas ca să le fac demâncat».
Așa e, doisprezece hoți, – hoți de codru și grozavi, cu căpitanul
lor cel înfricoșat au locuit în astă casă… Și știe toată lumea, cum că
hoții de codru se spală în toată dimineața cu sânge de copil
nebotezat, și sânge de fete mari, iar în față de om nu pot să
privească pentrucă simțesc junghi în spete, și’n cap și pe toate
laturile… Nu e minune dar, dacă Florița a cam tresărit, când a auzit
vorbe atât de mari:… Hei! dar Florița nu s’a înfricoșat – zău! nu s’a
înfricoșat, ci cu vorbă veselă și râs pe buze a zis către Ghebos:
«Un puiu pentru doisprezece hoți? Nici pe-o măsea n’are să le
ajungă».
«Vezi bine, că doară nu am eu atâta pricepere, răspunse
ghebosul făcându-se și el înțelept. Eri le-am fript un juncan, și ei
m’au bătut pentru c’a fost prea mult: astăzi știu că nu m’or bate».
«Iar azi te-or bate, pentrucă le-ai fript prea puțin… Aide ca să te
învăț eu ce, cum și cât să faci – zise Florița sărind sprintenă, cum erà
ea, peste pragul casei.
Acuma tăie patru pui și-i fierse, tăie doi purcei și-i fripse, făcù o
zămuță bună și caldă, și arătă ghebosului, cum are să facă de aici
înainte. «Eacă așa, dragul meu, și așa… și așa,» – îl învățà adecă
precum învață o maică bună și îngrijitoare.
Ca nu cumva să se întâmple ceva cu hoții, ghebosul spuse
Floriței, cumcă să-i spuie lui pe când are să fie gata cu mâncările, să
fugă cât o duc picioarele ca să nu cază în mânile hoților, – căci el
numai atunci va cântà din fluerașul cel mic, care chiamă pre hoți la
prânz.
Florița găti mâncarea, puse vasele pe masă, mai curățì, mai
netezì, făcù casa, încât numai de-un drag să șezi în ea, apoi se puse
la vorbă cu ghebosul, și vorbiră… vorbiră până ce uitară de hoți, de
flueriță, de toate.
In adâncul codrului hoții începură să flămânzească, să se supere
și, care de care mai cu greu gând la inimă, să pornească către casă…
Hei! ghebosule, ghebosule – mare necaz ți-ai făcut!
«Ce se simte aici?» întrebă Florița simțind ceva, ca și când ar fi
sânge, sau așa ceva…
«Vai! sărmanul de mine! strigă ghebosul înspăimântat, – vin
hoții! Fugi! – Ba nu fugì, căci n’ai vreme de fugă… Ascunde-te sub
pat.
Florița, – de frică ce să facă? – se ascunse sub pat. Iar cei
doisprezece hoți de codru veneau tot unul după altul, și încă din
depărtare s’auzeà, cum ziceau, că au să-l ucidă, să-l turtească, să-l
taie bucățele pre ghebosul… Cum nu? – când ei răbdau la foame…
ei… hoți ca dânșii!
Ghebosul le eșì în cale, ca să-i roage de ertare și să le spună,
cumcă le-a făcut mâncări bune.
«Să taci de loc – grăì căpitanul. – Nu-mi priește mâncarea până
ce nu mă spăl cu sângele tău, – după aceea intră în casă pentru ca
s’aducă cuțitul cel mare; iară ceilalți prinseră pe ghebos și-l făcură
nod.
Când căpitanul intră pe prag, el rămase stând uimit în loc: i se
părea că astă casă netedă și curată nu e a lui. «Măi oameni! grăì
către cei de afară, veniți încoace!»
«Ce-e?» întrebară cei deafară.
«Veniți, când zic!»
Când hoții pășiră pe prag, ei priviră încă mai uimiți decât
căpitanul la casa lor… Așà privind, le trecù de mânie, și iarăș le venì
foamea; se așezară unul după altul la masă.
Ghebosul, ca și omul care erà s’o pățească, se făcù sprinten, fugì
la vatră și intră cu mâncările în casă.
«Când căpitanul simțì mirosul aburilor din zeamă, «Măi! grăì către
ghebos, pentrucă mi-ai curățit casa, te lăsăm până după prânz»,
după aceea luă lingura, gustă din zeamă și o purtă prin gură.
«Ce mâncare e asta?» întreabă dupà aceea.
«Zeamă, cu cinste să fie zis, zeamă călduță, – răspunse
ghebosul.
«Bună mâncare! – grăì căpitanul… Luă după aceea lingura, dete
la fiecare hoț câte trei linguri și ce rămase își ținù sie.
Hoții își mâncară părticica și după aceea priviră, lingându-se pe
buze, la părticica căpitanului.
Ghebosul intră cu carnea cea de puiu.
«Ce-e aceasta? întrebă căpitanul.
«Puiu, puiu fript», răspunse ghebosul.
Căpitanul își tăie o bucățică, gustă și apoi grăì către ghebos:
«Măi! asta s’o fi adus tu mai înainte! – Pentrucă ne-ai făcut atât
de bune mâncări, noi cu toții te iertăm!» – După aceea luă cuțitul,
tăie la fiecare hoț câte o bucățică și ce rămase își ținù sie.
Hoții își mâncară bucățelele, după aceea începură să privească la
bucățile căpitanului lingându-se pe degete… Iară căpitanul dela o
vreme începù să resufle cu greu și să mănânce cu țârîita, numai de
ici de colea câte o bucățică, câte un fir, ca și omul, care ar mâncà și
nu poate mâncà de sătul ce e săracul.
«Frate căpitane – grăì unul dintre hoții cei flămănzi, – tu te-ai
săturat: dă-ne nouă, ce a rămas!»
«Ce? îi zise căpitanul, sau n’ați avut și voi: asta o țin pentru mine
– pentru ca s’o mănânc desară».
«Să nu fie supărare, grăì ghebosul, mai sunt încă și alte
mâncări».
«Auziți voi? zise căpitanul, celelalte sunt ale voastre».
«Ba nu! grăiră hoții, noi vrem să mâncăm din asta, căci asta e
bună!…
Vorbă din vorbă: hoții începură a se certà… Unii că asta, alții că
ceea; treaba stà rău, și dacă ghebosul n’ar fi intrat cu purceii cei
fripți în casă, zău nu cred că nu s’ar fi întâmplat un lucru nesfârșit.
Când însă mirosul fripturei le intră în nas, îndată se stâmpărară.
«Ce e aceea?» întreabă căpitanul.
«Purcel, purceluș fript!» răspunse ghebosul. Căpitanul gustă…
Așa ceva până acuma nici în vis n’a gustat.
«Măi prostule! – grăì către ghebos, acuma trebue să-l aduci tu pe
acesta? Să mi-l pui mie pe sară» – și dete puii la ceilalți hoți.
«Să ne dai purcel! grăiră hoții, ai zis că ce vine e al nostru».
«Ce? – sau n’ați zis voi, că puii să vi-i dau? zise căpitanul
mâniindu-se urât.
O vorbă nu zic mai mult!… Hm! aceea nu e glumă, când căpitanul
zice așa vorbe către tovarășii săi flămânzi… Poate acuma fiecare să
știe ce e aceea, când unsprezece hoți se bat cu căpitanul lor…
Sărmana de Floriță! dacă ar fi știut ea, cum că asta are să fie din
mâncările cele bune… Sburau, Doamne, săbiile, cuțitele și fel de fel
de lucruri, și se băteau hoții precum se bat nourii în capete și se
prăpădesc… Așa lucru n’a fost încă de când e lumea!
Și Florița?… Bun e sufletul bun! Doamne bun e!… bun ca și darul
și mâna lui Dumnezeu! Când hoții se băteau, sfărmau și prăpădeau
mai a perire, Florița nu se mai putù răbdà, ci eșì de sub pat și se
puse tocmai în mijlocul lor, și cum s’a pus, a stat acolo între ei, între
hoții cei înfricoșați, bătăuși și hoți de codru.
Ce-a fost după aceea, cum s’a făcut, cum s’a sfârșit; aceea e
acuma treaba lor… Oare Doamne… când vede cineva pe Florița, s’ar
mai puteà bate și supărà, iar mai puteà venì gând rău și
neîmpăcat?… Hoții steteră toți încremeniți și amuțiră, și scăpară
săbiile, cuțitele și fel de fel de lucruri ce aveau în mână: li se păreà
cum că a venit pedeapsa lui Dumnezeu asupra capetelor lor, ca să-i
tragă la socoteală pentru păcatele lor cele multe în răutatea lor cea
mare și înfricoșată și hoțească… Eară Florița le grăì în graiul ei cel
blând: «Nu vă supărați, bădișorilor, că, dacă doriți, iarăși vă fac
mâncările încă mai bune și mai călduțe decât cum au fost cele de
astăzi».
Hoților li se păreà, că cerul s’a dărâmat asupra lor și munții și
codrii, când auziră vorba Floriței.
POVESTE
fost ce a fost; dacă n’ar fi fost, nici nu s’ar povestì.
A fost odinioară un împărat, care avea trei fete, dintre
care cea mai mare erà frumoasă, cea mijlocie mai
frumoasă, iar cea mai tânără, Ileana, atâta de frumoasă, încât și
sântul soare se opria în cale, ca s’o vadă și să se desfăteze de
frumuseța ei.
Într’o zi împăratul primì carte și veste dela vecinul său, împărat
mare și puternic, – cumcă – eacă – nu-e bine, și are să se bată cu
dânsul pentru o mare pricină împărătească. Împăratul se puse la sfat
cu bătrânii țării, și, când văzură cumcă nu-e în cotro, poruncì
voinicilor să încalece pe armăsari, să-și apuce armele și să se
pregătească de bătaia cea grozavă ce-avea să se facă și să fie.
Înainte de a încăleca și el însuși, împăratul chemă pe fiicele sale
la sine, le grăì vorbe blânde și părintești și dete apoi la fiecare câte o
floare frumoasă, câte o păsărică veselă și câte un măr fraged. «A
cărei floare se va veștejì, a cărei păsărică se va întristà și a cărei măr
va putrezì despre acea voi ști, că nu ș’a păzit credința», grăì
împăratul cel înțelept, încălecă apoi pe cal, zise «sănătate bună» și
pornì cu voinicii săi în calea cea mare.
Când cei trei feciori ai împăratului vecin primiră veste, că
împăratul a pornit în cale și că el s’a depărtat de a casă, ei se
înțeleseră între sine și încălecară, ca să meargă la cetatea cea cu trei
fete de împărat, să răpească credința fetelor și să-i facă împăratului
supărare. Cel mai bătrân dintre feciori, voinic și viteaz, și frumos,
merse înnainte, ca să vază ce-e și cum, – și apoi să aducă veste și să
spuie.
Trei zile și trei nopți a stat voinicul pe sub ziduri fără ca vre una
din fete să se fi arătat la fereastră. În crepetul zorilor de a patra zi el
perdù răbdarea, își întărì pe inimă și bătù la fereasta celei mai mari
dintre fetele de împărat.
«Ce-e? – cine-e? – și ce vrea? – întrebă fata trezită din somnul
cel mai dulce.
«Eu sunt, surioară! – grăi feciorul de împărat, – voinic împărătesc
ce stau de trei zile cu dragoste la tine la fereastă».
Fata cea de împărat nici nu se apropie de fereastră, ci grăì cu
glas înțelept.
«Mergi pe calea, pe care ai venit: flori să-ți crească în cale, și
spini să-ți rămână pe urmă».
Peste trei zile și trei nopți feciorul de împărat earăși bătu la
fereastră. Acuma fata de împărat se apropie de fereastră și grăì cu
glas blând.
«Ți-am zis să mergi pe calea, pe care ai venit: spini să-ți crească
’n cale, și flori să-ți rămână pe urmă».
Încă trei zile și trei nopți stete feciorul de împărat la fereastra
fetei. In crepetul zorilor de-a zecea zi, adecă după ce au trecut de
trei ori câte trei zile și de trei ori câte trei nopți, el își netezì părul și
bătù, acuma d’a treia oară, la fereastră.
«Ce e? – cine e? și ce voiește? întrebă fata de împărat – acuma
mai răstit decât în celelalte rânduri.
«Eu sunt surioară! – grăì feciorul de împărat. De trei ori câte trei
zile stau cu dor la tine la fereastră: vreau să-ți văd fața, să-ți privesc
în ochi și să aud cum curg vorbele de pe buzele tale».
Fata de împărat deschise fereastra, privì cu supărare la voinicul
cel frumos, apoi grăì cu glas neauzit:
«Eu ți-ași privì în față și ți-așì grăì o vorbă: mergi însă mai ’nainte
la sora mea cea mijlocie – și numai după aceea vină la mine».
«Am să trimit pe frate-meu cel mijlociu, grăì feciorul de împărat.
Să-mi dai însă o sărutare, pentru ca să-mi fie calea mai ușoară». Și
nici n’a zis bine până-ce și fură un sărutat dela fata cea frumoasă.
«Să n’ai parte de altul! – zise fata de împărat ștergându-se pe
buze cu mâneca cea țesută cu altițe… Mergi pe calea, pe care ai
venit: flori să-ți crească în cale și flori să-ți rămână pe urmă».
Feciorul de împărat merse la frații săi, le spuse – cum și ce, – și
cel mijlociu pornì în cale.
După-ce feciorul cel mijlociu stete de nouă ori câte nouă zile și de
nouă ori câte nouă nopți la fereastra fetei celei mijlocii și bătù de a
treia oară la fereastra ei, ea deschise fereastra și îi grăì cu glas
drăgostos:
«Eu ți-aș privì în față și ți-ași grăì o vorbă: să mergi însă la sora
mea cea mai tânără, și numai după aceea vino la mine».
«Am să trimit pe frate-meu cel mai tânăr, grăì feciorul de
împărat. Să-mi dai o sărutare ca să pot merge mai iute». Și nici nu
zise până ce și fură un sărutat.
«Să nu ai parte de altul; – grăì și această fată… Mergi în calea,
pe carea-i venit: flori să-ți crească în cale, și flori să-ți rămână pe
urmă.
Feciorul cel de împărat merse la frații săi, le spuse – cum și ce, –
și, acum de-a treia oara, pornì feciorul de împărat, – cel mai tânăr
fecior de împărat. Când el sosì la cetatea cea cu trei fete, Ileana stà
la fereastră, și, cum stà, ea îl văzù și’i grăì cu glas vesel:
«Cel voinic frumos cu față de împărat, – ce cale ți-ai ales de mâni
așa de înfocat?»
Când feciorul de împărat văzù fața Ilenei și auzì vorba ei, el stete
locului, privì la ea și apoi grăì cu glas voinicesc:
«Am pornit la soare, ca să-i fur o rază, să-i încredinț sora și s’o
duc acasă să mi-o fac mireasă. Acum surioară mă opresc în cale să
privesc la tine, în raza feței tale și să-ți zic o vorbă și să-ți fur o
vorbă.
Ileana îi răspunse cu înțelepciune: «De ți-ar fi năravul cum îți
este vorba, de ți-ar fi și sufletul cum îți este fața, mândre și
frumoase, blânde drăgostoase; te-aș chema în casă, te-aș pune la
masă și te-aș ospătà și te-aș sărutà».
Feciorul de împărat sărì de pe cal când auzi aceste vorbe, apoi
grăì cu glas voinicesc:
«Că-mi este năravul cum îmi auzi vorba, că-mi este sufletul
precum îmi vezi fața: lasă-mă în casă, pune-mă la masă: și, din zori
în seară rău să nu’ți pară». Și nici nu-și grăì vorba – până-ce și sărì
pe fereastră și peste fereastră în casă și în casă la masă și la masă
tocmai în frunte, unde ședea împăratul când erà mire.
«Ei! stăi! – grăi Ileana. Să văd mai înainte – ești ce-ar fi să fii – și
numai dup’aceea să grăim vorba și să gustăm poama și să începem
dragostea. Poți tu face să ’nflorească din brusture trandafir?
Ba! – grăì feciorul de împărat.
– Atunci floarea ta este scaiul! – zise Ileana cea înțeleaptă. Poți
tu face, ca să cânte liliacul în glas frumos?»
«Ba! – grăì feciorul cel de împărat.
«Atunci zioa ta e noaptea! – zise Ileana cea înțeleaptă. Poți tu
face să rodească măr pe earba lupului?»
«Pot!» – grăì feciorul de împărat.
«El să fie poama ta! – zise Ileana cea frumoasă și șireată. Așază-
te la masă».
Feciorul de împărat se așeză la masă. Ei dar Ileana – e Ileana cea
șireată! El nu se așeză încă bine – și iată – că și căzù, cu scaun cu
tot, în pivnița cea adâncă, în care erà ascunsă comoara împăratului.
Acuma Ileana începù să strige «primejdie» și când se adunară
toți argații, ca să vade ce e și pentru ce, ea le spuse, că a auzit
troncote prin pivniță și se teme cum că a intrat cineva în pivniță, ca
să fure comoara împăratului. Multe vorbe n’au făcut argații, ci de-loc
deschiseră ușa cea de fer și intrară în pivniță și aflară pe feciorul cel
de împărat și cu rușine îl duseră la judecată.
Ileana spuse judecata:
«Douăsprezece fete pedepsite să’l scoață afară din țară și, când
vor ajunge cu el la marginea țării, fiecare să-i dea câte un sărutat».
Așà s’a poruncit; așà s’a întâmplat.
Când feciorul cel de împărat a sosit acasă la frații săi, li-a spus
toată întâmplarea și, după ce li-a spus-o, mare supărare a intrat în
sufletele lor. Ei au trimis dară vorbă la cele două mai mari fete de
împărat, ca ele să facă ce vor face, ca să trimită cumva pe Ileana la
curtea împăratului celui cu trei feciori, pentru ca ei să se poată
răsbuna asupra ei – pentru batjocura ce a pus pe capul lor. Când cea
mai mare fată de împărat primì cuvântul feciorilor de împărat, ea se
făcù bolnavă, chemă pe Ileana la sine la pat și îi spuse, că ea numai
așà se va puteà însănătoșà, dacă Ileana îi va aduce mâncare de pe
vatra feciorilor de împărat.
Ileana de dragul surorii sale le făcea toate: ea luă dar cofița și
pornì către curtea celor trei feciori de împărat, ca să meargă să
ceară sau să iee și să aducă.
Sosind la curte, Ileana intră în ruptul sufletului în cuhnea
împărătească și grăì către bucătarul cel mare.
«Pentru numele lui Dumnezeu! – n’auzi tu cum te strigă
împăratul? – mergi iute, ca să vezi – ce e și pentru ce și care
pricină!»
Bucătariul își luă picioarele pe umere și se depărtă – ca și la
poruncă împărătească adecă. Ileana rămase singură în cuhne, își
umplù vasele de bucate, vărsă apoi pe jos toate bucatele cele
scumpe ce stau la foc și după aceea se ferì din cale.
După-ce feciorii de împărat înțeleseră și despre această
batjocură, ei se supărară încă mai tare decât ce-au fost până acuma,
trimiseră din nou vorbă la cele două surori și se pregătiră din nou la
răzbunare. Abea primì sora cea mijlocie cuvântul voinicilor, ea se
făcù bolnavă, chemă pe Ileana la sine la pat și îi spuse, că numai așa
se va însănătoșà, dacă va gustà din vinul ce se află în pivnițele
feciorilor de împărat. Ileana pentru sora sa le făceà toate: luă dar
cofița și pornì ca să meargă – și să vină. Sosind la curte, ea intră în
ruptul sufletului în pivniță și grăi către pivnițariul cel mare:
«Pentru numele lui Dumnezeu! – n’auzi tu cum te strigă
împărăteasa? – fugi și vezi cum, ce și pentruce pricină!»
Pivnițariul își luă picioarele pe umere și se depărtă ca și la
porunca împărătesei adecă. Ileana își umplù vasele cu vin, vărsă ce-
a rămas, prin pivniță, și apoi porni către casă.
Feciorii de împărat trimiseră, acuma d’a treia oară, veste la cele
două fete de împărat, ca ele să trimită pe Ileana cum n’au trimis-o
încă. Fetele de împărat se făcură acuma amândouă bolnave,
chemară pe sora lor la sine și îi spuseră, că ele numai atunci se vor
însănătoși, dacă Ileana le va aduce două mere dela feciorii cei de
împărat.
«Dragi surorile mele, – grăì Ileana către ele, pentru voi mă duc și
în foc și în apă; cu atât mai bucuros la voinicii cei împărătești». Iși
luă după acea cofița și pornì, ca să meargă, să afle, să ià, să aducă
și să scape pe dragele surorile sale dela moarte.
După ce-a înțeles feciorul de împărat cel mai tânăr, cumcă Ileana
are să vină la el în grădină, ca să fure merele cele de aur, el poruncì
că, dacă va auzi cineva vaete în grădină, nimeni să nu cuteze să
intre, ci să lase pe cel ce s’ar văità, ca să se vaete în pace. Luă după
aceea cuțite mari și săbii și sulițe și fel de fel de lucruri – și le
ascunse în pământ, pe sub mărul cel cu poame de aur; le ascunse
așa, că numai vârful ascuțit le ieșeà din pământ. După ce au gătit
tot, el se ascunse într’un tufiș așteptând sosirea Ilenei.
Ileana sosì la poarta grădinii, și când ea văzù leii cei mari ce stau
pară la intrare, le aruncă câte o bucățică de carne: leii începură a se
bate, iar Ileana merse la măr, pășì încet printre cuțite, săbii, sulițe și
alte lucruri și se suì în pom.
«Să-ți fie de bine surioară, grăi feciorul de împărat acuma. Imi
pare bine, că te văd la casa mea».
«A mea să fie bucuria! – răspunse Ileana, – că am voinic
împărătesc și frumos și viteaz de tovarăș. Aide, suie-te în pom și-mi
ajută să culeg mere pentru dragele surorile mele, că le-au cerut cu
limbă de moarte».
Feciorul de împărat nici nu doreà mai mult, el aveà de gând ca să
tragă pe Ileana din pom între cuțite. «Ești bună tu, Ileano, grăi el, fii
dar încă mai bună și-mi dă mâna de mă ajută în pom!»
«Rău e gândul tău, – își gândì Ileana, – dar parte să ai de el!» îi
dete apoi mâna, îl ridică pe tulpină până la cracuri, îl lăsă apoi ca să
cadă între cuțite și săbii și sulițe și fel de fel de lucruri ce erau gătite
spre pierzarea ei. «N’ați! grăì după aceea, să știi și tu ce ai avut de
gând».
Voinicul cel rău la suflet începù să strige și să se vaete: hei! dar
nimeni nu veneà să-i ajute, ci-l lăsau ca, după porunca lui, să se
vaete în pace și să sufără și să rabde usturările cele grozave.
Ileana își luă merele, le duse acasă, le dete la surorile ei, se
întoarse după aceea la curtea împăratului și le spuse argaților, ca să
meargă să scape pe domnul lor din primejdia cea mare.
Feciorul cel de împărat, batjocorit ca vai de el, trimise după cea
mai vestită vrăjitoare din țară, ca să vină, să-i facă leac și să-i
vindece ranele. Ileana s’a fost dus însă mai înainte la vrăjitoare și i-a
dat bani mulți pentru ca s’o lase pe ea, pe Ileana, să meargă în locul
vrăjitoarei. Așa ajunse Ileana ca vrăjitoare la curtea împăratului: ea
poruncì apoi, ca să se ià pielea unui bivol și să se pună trei zile și trei
nopți în murătură sărată, și după aceea s’o scoată și să învelească în
ea pe feciorul cel rănit. Usturările feciorului de împărat se făcură încă
mai strașnice, durerile lui încă mai nesuferite. Când el văzù dar cum
c’acuma nu e bine, trimise după un popă, ca, înnainte de ce-ar murì,
să-și ușureze sufletul și să se împărtășească. Dar Ileana nici acuma
nu dormea; ea merse la popa, îi dete mulți bani și făcù, ca el să o
trimită pe ea în locul său. Așa ajunse Ileana ca popă la curtea
împăratului.
Când Ileana ajunse la patul feciorului de împărat, el erà pe pragul
morții; nu mai erau în el decât trei răsuflări.
«Fătul meu, grăì Ileana popită, m’ai chemat la tine, ca să-ți
mărturisești păcatele. Gândește dar la ceasul morți și spune-mi, ce-ți
zace la inimă. Ești supărat pe cineva ori ba?
«Ba! pe nimeni! grăì feciorul de împărat, pe nimeni afară de
Ileana, fata cea mai tânără a împăratului vecin. Și o urăsc cu dor și
dragoste, vorbì mai departe feciorul de împărat. Dacă ar fi să nu mor
și să mă însănătoșesc, mă duc s’o pețesc la împăratul, și dacă n’o
pierì în noaptea cea dintâiu, atunci ea să-mi fie soție credincioasă și
după lege».
Ileana ascultă aceste vorbe, zise încă și ea puține și apoi merse
acasă. Aici înțelese că surorile ei plâng și se vaietă pentru că au fost
simțit că împăratul are să sosească acasă dela lupta cea mare.
«Bucurie s’aveți, le zise Ileana, când auziți, că taica nostru cel
bun are să vină acasă întreg și sănătos».
«Hei! că noi ne-am bucurà, răspunseră surorile, dacă nu ne-ar fi
veștejit floarea, nu ne-ar fi putrezit mărul și nu ni s’ar fi supărat
păsărica; dar acum e vai și amar de capul nostru».
Când Ileana auzì astfel de vorbe, ea merse la sine în casă și află
că floarea e încă aburită de rouă, că pasărea e flămândă și că mărul
numai nu zice: «mănâncă-mă, surioară». Ca să le ajute dar dragilor
surorilor ei, ea dete la una dintre ele floarea, la alta dete păsărica,
iar sie-și ținù numai mărul cel fraged. Așa așteptară sosirea
împăratului celui aspru la poruncă.
Impăratul, îndată ce sosì acasă, intră la fata cea mai mare și o
întrebă de floare, de păsărică și de măr. Ea îi arătă numai floarea; și
asta erà însă pe jumătate veștejită. Impăratul nu zise nimic, ci merse
la fiică-sa cea mijlocie. Asta-i arătă numai păsărica; și asta erà însă
pe jumătate întristată. Impăratul iarăși nu zise nimic, ci merse fără
vorbă la fiică-sa cea mai mică, la Ileana cea înțeleaptă.
Când împăratul văzù mărul pe dulapul Ilenei, el erà să-l mănânce
cu ochii, de frumos ce erà. – «Unde ai pus floarea și ce ai făcut
păsăruica?» întrebă el pe Ileana.
Ileana nici nu răspunse, ci fugì la surorile sale și aduse o floare
proaspătă și o pasăre veselă.
«Mare să crești, fata mea! – grăì împăratul, acum văd că ți-ai
păzit credința.»
De la Ileana împăratul iarăși merse la fiică-sa cea mijlocie și apoi
la cea mai mare. După ce el le întrebă de cele trei lucruri ce le-a
încredințat, ele își aduseră cu grabă pasărea, floarea și mărul dela
Ileana. Hei! dar bunul Dumnezeu nu rabdă minciuna: la ele floarea
erà veștedă, pasărea erà tristă și numai mărul erà proaspăt, fraged,
rumen și îmbietor la față.
*
Când împăratul văzù acestea, el înțelese toată treaba: poruncì
dar, ca pe cele două fete mai mari să le îngroape pân’ la sinișori în
pământ și așà să le lase ca să vestească asprimea pedepsei
împărătești. Iar pe Ileana o lăudă și sărută și multă vorbă bună și
împărătească făcù cu ea, zicându-i: «Mult noroc să ai, fata mea, căci
tu ți-ai păzit credința.»
După ce feciorul cel mai tânăr al împăratului vecin s’a
însănătoșat, el încălecă și pornì, ca să vină și să pețească pe Ileana.
Impăratul cel bătrân, tata Ilenei, îi zise cu vorbă părintească, când el
își spuse gândul, care l-a făcut să pornească în cale: «Fătul meu,
voinice, mergi și întreabă pe Ileana; cum ea dorește, cu ajutorul lui
Dumnezeu, așa are să fie.»
Iar Ileana nu zise nici o vorbă, cì lăsă, ca voinicul cel pățit să o
sărute. Atunci împăratul pricepù toată treaba și grăì: «Dragi copiii
mei, bag sama așa a fost dat, ca voi să vă fiți soț și soție; să vă fie
dară de bine!»
Multă vreme n’a trecut pănă ce Ileana se cunună cu feciorul cel
voinic și frumos și viteaz și împărătesc, și li se făcù o nuntă, încât i-a
mers vestea în șapte țări… Hei! dar Ileana n’a uitat vorba și gândul
cel rău al feciorului de împărat: ea știà cum că în cea dintăi noapte
după cununie are să o primejduiască. – Poruncì dară, ca să se facă o
păpușă de zahăr tomai atât de mare cum erà ea însuși…, cu față, cu
ochi, cu buze, cu toată făptura Ilenei… Și când păpușa fù gătită, ea
o ascunse în patul, în care ea aveà să se culce în acea noapte.
Sara, când cuscrii și corinteii s’au fost așezat la odihnă și Ileana
s’a fost culcat în pat, feciorul de împărat grăì către mireasa lui:
«Dragă Ileană, să mai aștepți puțintel, că eu vin îndată.» Eșì
după aceea din casă.
Ileana nu se gândì mult, ci sărì din pat, lăsă păpușa cea de zahăr
în locul său și se ascunse sub o perdea ce stà la capul patului.
Ileana nici nu se ascunsese bine pănă ce feciorul cel de împărat
și intră în casă cu o sabie ascuțită în mână.
«Să-mi spui acuma, Ileană draga mea, grăì el, tu m’ai aruncat pe
mine în pivniță?»
«Eu!» grăì Ileana de sub perdea.
Feciorul de împărat dete odată cu sabia peste sinișorii păpușii.
«Tu m’ai scos cu batjocură din țară, întrebă el de-a doua oară.
«Eu», grăì Ileana.
Feciorul cel de împărat dete peste față.
«Tu mi-ai vărsat mâncările? întrebă feciorul de împărat de-a treia
oară.
«Eu», grăì Ileana.
Feciorul de împărat dete cu spada de sus în jos.
«Tu mi-ai vărsat vinul?» întrebă feciorul de împărat de-a patra
oară.
«Eu», grăì Ileana.
Feciorul de împărat dete cu spada odată cruciș și odată curmeziș.
– Iar Ileana începù a răsuflà aburi de moarte.
«Tu m’ai aruncat în cuțite?» întrebă feciorul de împăràt de-a
cincea oară și mai în urmă.
«Eu», grăì Ileana.
Feciorul de împărat împunse acuma cu sabia în inima Ilenei,
începù apoi să dea în toate părțile, și cruciș, și curmeziș, și în lung, și
în lat, să dea din toate puterile ce aveà, încât îi curgeau lacrămile
pârău. Când se apropiară zorile de ziuă, el începù să plângă din
toată inima. – Odată îi sărì o bucățică de zahăr în gură.
«Hei! Ileană! dulce ai fost vie, dar dulce ești și moartă!» zise el
plângând încă mai tare.
«Dulce zău!» grăì Ileana, eșind de sub perdea, «dar pe de-o sută
și de o mie de ori mai dulce am să fiu de aci înainte.»
Feciorul de împărat stete împietrit de bucurie când văzù pe Ileana
întreagă și sănătoasă. El o cuprinse în brațe, și de aici înainte trăiră
mulți ani fericiți și împărățiră peste țară cu pace și cu noroc.
DOI FEȚI CU STEA IN FRUNTE
POVESTE
fost ce a fost; dacă n’ar fi fost, nici nu s’ar povestì.
A fost odată un împărat. Impăratul acesta stăpânea o
lume întreagă, și în lumea asta erà un păcurar4) bătrân și
o păcurăriță, care aveau trei fete: Ana, Stana și Lăptița.
Ana, cea mai în vârstă dintre surori, erà frumoasă, încât oile
încetau a paște când o zăreau în mijlocul lor; Stana, cea mijlocie, erà
frumoasă, încât lupii păzeau turma când o vedeau pe dânsa stăpână;
eară Lăptița, cea mai tânără soră, albă ca spuma laptelui și cu păr
moale ca lâna mielușeilor, erà frumoasă, – mai frumoasă decât
snrorile sale împreună – frumoasă, cum numai dânsa erà.
Intr’o zi de vară, când razele soarelui erau mai stâmpărate, cele
trei surori se duseră ca să culeagă căpșune în marginea codrilor.
Pe când ele culegeau căpșunele, îndată se aude un șir de
tropote, ca și când ar venì și s’ar apropià o turmă de călăreți. Erà
cine erà; erà tocmai feciorul împăratului venind ca să meargă cu
prietenii și cu curtenii săi la vânat.
Tot voinici frumoși, crescuți în șelele cailor; dar cel mai frumos și
pe cel mai infocat armăsar erà… cine altul putea să fie?… făt-voinic
feciorul de împărat. Focul cailor se stămpără în zărirea celor trei
surori și călăreții deteră în pas mai încetișor, până ce, veniți și sosiți,
se simțiră duși.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebooknice.com