1
0
mirror of https://github.com/e107inc/e107.git synced 2025-10-14 06:24:56 +02:00
Commit Graph

13 Commits

Author SHA1 Message Date
Deltik
d69217d6f0 Un-hard-coded database name and table prefix in e_db_pdoTest
Also corrected a typo that switched an expected and actual
assertion arguments.
2019-02-11 21:56:44 -06:00
Nick Liu
c72b08616b Refactored E107Base suite cleanup into "Preparer" classes
Now works with the best of both worlds:

* Barebones cleanup in slow Windows environments
* Git snapshots in other Git environments
2018-09-12 12:54:15 -05:00
Cameron
0fca5840f2 Disabled VCS modification. Added fixed hash folder name and cleanup before/after tests. 2018-09-09 18:20:20 -07:00
Nick Liu
3af03f1f5e Greatly improved robustness of E107Base
Fixed irreversible data loss bug when preparing the app path repo
for tests

OLD BEHAVIOR
Remove untracked files from the working tree before and after
every test suite. The intention was to remove files that could
have been created by the tests, but this also removes all other
untracked files, including third-party plugins and themes.

NEW BEHAVIOR
There is now a triple locking mechanism protecting the state of
the app repository before tests are run so that after tests have
run, all file contents are restored to how they were before the
tests have run.

There are three locks, each guarding a different part of the
original repo:

* file
* commit
* stash

When the file lock is present, E107Base knows that any other file,
tracked, untracked, or ignored, was created by the tested code.

The file lock is checked into the commit lock, which saves all
tracked and untracked files in the form of a commit. This way,
uncommitted code can be tested without manually making a commit that
includes the untracked files.

The stash lock saves all ignored files in a Git stash. Ignored files
go in a stash instead of in the commit lock because they can be a
confounding variable affecting the outcome of tests. They are usually
user-configurable only and may not represent tested states.

When the saving is complete, E107Base will have access to tracked and
untracked files but not ignored files. The tests are run in this
configuration.

After each test suite runs, the repo is reset and cleaned to return
the files to the same state they were in before the test suite began.

Then, the locks are undone first by rolling back the commit lock,
which restores the originally uncommitted tracked and untracked
files. Next, the stash lock is popped, restoring the originally
ignored files. Finally, the file lock is removed, signifying that the
repo is back to its original data before the test suite was run.

In case of an ungraceful exit, at least one of the locks would be
left in the repo. The next time E107Base runs, locks are checked, and
if one or more are present, the repo is restored before the locks are
reestablished.

If the `git` command is inoperative, only the file lock is operative
and does nothing more than signify a test that is in progress or has
exited unexpectedly. Data protection is silently unenforced. This can
lead to unexpected tracked, untracked, and ignored file modifications
that will not be rolled back after a test suite has run.
2018-09-09 01:18:09 -05:00
Nick Liu
ee7808b7bf Major improvements to Deployer system (backwards-incompatible)
Deployers, a concept unique to this repository, are now more separated
from Codeception modules.

This commit adds NoopDeployer, LocalDeployer, and SFTPDeployer to
address the three deployment target types in use by testers today.

The changes are backwards-incompatible because the structure of
config.sample.yml has changed, and all testers need to change their
config.yml or config.local.yml to continue testing. The reason for this
change is that the section "manual" no longer makes sense now that
Deployers are on a spectrum of automation levels.

The subsections under "manual" have been broken out into the root level.

The "db_dump" section has been merged into the new "db" root section.

There is a new "fs" root section used by the SFTP Deployer.

Other changes, enhancements, and bugfixes:

* cPanelDeployer no longer downgrades to "manual" mode when credentials
  are missing or an unsupported component is requested. It now throws an
  exception.
* Deployer::unlinkAppFile() was implemented for acceptance tests out of
  necessity because the app requires a configuration file to be deleted
  before re-running the app's installer.
* If a Deployer subclass does not implement the unlinkAppFile() method,
  tests that depend on the method will be skipped gracefully.
* DeployerFactory now has a better autoload mechanism.
* A logical error in lib/config.php prevented missing nested array items
  from using their default values.
* The Base Helper no longer pointlessly caches the DelayedDb module
* _bootstrap.php serializes the config.yml params into a global constant
  so that the DeployerFactory can freely access the information.
2018-08-15 23:04:59 -05:00
Cameron
3ddf17de3f Admin login and signup simulation tests added. 2018-03-08 17:49:37 -08:00
Deltik
8b07f620f1 Reworked E107Base::cleanVCS() to use proc_open()
Maybe works on Windows now?

Author doesn't know; author coded this on Linux.
2018-02-20 21:05:18 -06:00
Deltik
63386970d6 Test environment consistency fixes
git-clean in E107Base now runs first in _beforeSuite() so that tainted
files are not uploaded in Acceptance tests

E107Base::revokeLocalE107Config() now checks for file existence before
unlinking. XXX: Could remove this method if cleanVCS() proves reliable

Acceptance won't try to write an e107_config.php because the tests
themselves populate the configuration file
2018-02-20 14:36:24 -06:00
Deltik
9563f8f797 Fixed bug: _reconfigure()'d modules forgot config
Apparently, reconfiguring only applies to one test. This commit makes
all tests' modules reconfigured.

Introduced command to clean local app repo

InstallCest actually installs e107 now
2018-02-20 13:23:39 -06:00
Deltik
eed4b6b10e Reenforced proper module access
\Helper\DelayedDb public methods shouldn't be used as Actor methods
2018-02-19 15:17:31 -06:00
Deltik
dbaa444977 Generated e107_config.php supports remote SQL 2018-02-15 06:00:07 -06:00
Deltik
34c8bf8afb Increased compatibility down to PHP 5.6
Removed dependencies installed by Composer
2018-02-12 15:10:27 -06:00
Deltik
b18ef3f830 Ready for testing!
e107 is now ready for fully automated testing on all three test suites:

* Acceptance
* Functional
* Unit

New features:

* cPanelDeployer adds a cPanel Remote MySQL access host
* e107 database dump importer
* Unit tests now load e107

Fixes:

* Test prefixes now only use characters valid for MySQL/MariaDB without
  escaping
* Refactored a bunch of things
* All existing tests pass now

Changes:

* Deployers now provided by \Helper\DeployerFactory
* Added Twig templating for generating e107_config.php for testing
* cPanelDeployer now outputs to codecept_debug()
2018-02-12 13:17:17 -06:00