Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sqitch with MySQL 5.0.95 ? What are the dependencies on 5.1? #251

Closed
dgcgh opened this issue Aug 19, 2015 · 7 comments
Closed

Sqitch with MySQL 5.0.95 ? What are the dependencies on 5.1? #251

dgcgh opened this issue Aug 19, 2015 · 7 comments
Labels
Milestone

Comments

@dgcgh
Copy link

dgcgh commented Aug 19, 2015

Not so much an issue as a question about supporting antiquated databases.

I'd like to use Sqitch with an older MySQL installation which has a ways to go before we can upgrade it.
If I wanted to modify Sqitch to support this older database, what feature dependencies on 5.1 would I need to be aware of and work around?

@theory
Copy link
Collaborator

theory commented Aug 19, 2015

Honestly I don't remember. Try running prove -lv t/mysql.t against a 5.0 database with this patch and see what happens.

--- a/lib/App/Sqitch/Engine/mysql.pm
+++ b/lib/App/Sqitch/Engine/mysql.pm
@@ -105,7 +105,7 @@ has dbh => (
         # Make sure we support this version.
         my ($dbms, $vnum, $vstr) = $dbh->{mysql_serverinfo} =~ /mariadb/i
             ? ('MariaDB', 50300, '5.3')
-            : ('MySQL',   50100, '5.1.0');
+            : ('MySQL',   50000, '5.0.0');
         hurl mysql => __x(
             'Sqitch requires {rdbms} {want_version} or higher; this is {have_version}',
             rdbms        => $dbms,
--- a/t/mysql.t
+++ b/t/mysql.t
@@ -379,8 +379,8 @@ my $err = try {
             unless $dbh->{mysql_serverversion} >= 50300;
     }
     else {
-        die "MySQL >= 50100 required; this is $dbh->{mysql_serverversion}\n"
-            unless $dbh->{mysql_serverversion} >= 50100;
+        die "MySQL >= 50000 required; this is $dbh->{mysql_serverversion}\n"
+            unless $dbh->{mysql_serverversion} >= 50000;
     }

     $dbh->do('CREATE DATABASE __sqitchtest__');

@dgcgh
Copy link
Author

dgcgh commented Aug 19, 2015

for your edification and to my relief:

    ...
    ok 96 - live database
    1..96
    ok
    All tests successful.
    Files=1, Tests=96, 21 wallclock secs ( 0.04 usr  0.11 sys +  0.57 cusr  0.33 csys =  1.05 CPU)
    Result: PASS

this is the result of running against a MySQL 5.0.95 (community) version database with about a dozen databases and around a hundred tables.

@theory
Copy link
Collaborator

theory commented Aug 19, 2015

Ah, in that case, I suppose I just wan't able to lay my hands on 5.0 to test. I can drop the prereq. Do note these caveats from the 0.9991 changes:

 - Reduced minimum required MySQL engine from 5.6.4 to 5.1.0. Versions
   prior to 5.6.4 lose the following features:
   * Versions earlier than 5.6.4 is fractional second precision on
     registry `DATETIME` columns. Since the ordering of those timestamps
     is so important to the functioning of Sqitch, it will sleep in 100 ms
     increments between logging changes to the registry until the time has
     ticked over to the next second. Naturally, reverts and deploys will
     be a little slower on versions of MySQL before 5.6.4, but accurate.
   * Versions earlier than 5.5.0 lose the `checkit()` functions, which
     would otherwise be used to emulate CHECK constraints in the registry,
     as well as in user-created verify scripts, as recommended in the
     MySQL tutorial, `sqitchtutorial-mysql`.

@theory theory closed this as completed Aug 19, 2015
@theory
Copy link
Collaborator

theory commented Aug 19, 2015

Oh, could you paste the complete verbose output? I want to see that it actually ran the live database tests. Thanks!

@theory theory reopened this Aug 19, 2015
@dgcgh
Copy link
Author

dgcgh commented Aug 20, 2015

ah! I was wondering if the checkit() stuff would still work; hadn't tested that yet.

@dgcgh
Copy link
Author

dgcgh commented Aug 20, 2015

full verbose output:

root@bdefc75c52e2:/sqitch-0.9993# prove -lv t/mysql.t 
t/mysql.t .. 
ok 1 - require App::Sqitch::Engine::mysql;
ok 2 - config_vars should return three vars
ok 3 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql'
ok 4 - client should default to mysql
ok 5 - registry default should be "sqitch"
ok 6 - registry_uri should be correct
ok 7 - uri should be "db:mysql:"
ok 8 - registry_destination should be the same as registry_uri
ok 9 - mysql command should be std opts-only
ok 10 - Should have emitted a warning for no database name
ok 11 - An object of class 'App::Sqitch::Engine::mysql' isa 'App::Sqitch::Engine::mysql'
ok 12 - Create another mysql
ok 13 - client should be as configured
ok 14 - URI should be as configured
ok 15 - target name should be the URI
ok 16 - destination should be the URI
ok 17 - registry should be as configured
ok 18 - Sqitch DB URI should be the same as uri but with DB name "meta"
ok 19 - registry_destination should be the sqitch DB URL
ok 20 - mysql command should be configured
ok 21 - Create a mysql with query params
ok 22 - mysql command should be configured with query vals
ok 23 - Create a mysql with disabled query params
ok 24 - mysql command should not have disabled param options
ok 25 - Create a mysql with sqitch with options
ok 26 - client should be as optioned
ok 27 - registry should be as configured
ok 28 - Sqitch DB URI should be the same as uri but with DB name "meta"
ok 29 - registry_destination should be the sqitch DB URL sans password
ok 30 - registry should still be as configured
ok 31 - mysql command should be as optioned
ok 32 - App::Sqitch::Engine::mysql->can(...)
ok 33 - Create a mysql with sqitch with options
ok 34 - MYSQL_PWD should be "s3cr3t"
ok 35 - Call _run
ok 36 - Command should be passed to run()
ok 37 - MYSQL_PWD should be "s3cr3t"
ok 38 - Call _spool
ok 39 - Command should be passed to spool()
ok 40 - MYSQL_PWD should be "s3cr3t"
ok 41 - Call _spool with variables
ok 42 - Get variables file handle
ok 43 - Command should be passed to spool() after variables handle
ok 44 - Variables should have been escaped and set
ok 45 - MYSQL_PWD should be "s3cr3t"
ok 46 - Call _capture
ok 47 - Command should be passed to capture()
ok 48 - Create a mysql with sqitch with no pw
ok 49 - MYSQL_PWD should not exist
ok 50 - Call _run again
ok 51 - Command should be passed to run() again
ok 52 - MYSQL_PWD should not exist
ok 53 - Call _spool again
ok 54 - Command should be passed to spool() again
ok 55 - MYSQL_PWD should not exist
ok 56 - Call _capture again
ok 57 - Command should be passed to capture() again
ok 58 - MYSQL_PWD should not exist
ok 59 - Run foo/bar.sql
ok 60 - File should be passed to run()
ok 61 - MYSQL_PWD should not exist
ok 62 - Spool a "file handle"
ok 63 - Handle should be passed to spool()
ok 64 - MYSQL_PWD should not exist
ok 65 - Verify foo/bar.sql
ok 66 - Verify file should be passed to capture()
ok 67 - MYSQL_PWD should not exist
ok 68 - Verify foo/bar.sql again
ok 69 - Verifile file should be passed to run() for high verbosity
ok 70 - MYSQL_PWD should not exist
ok 71 - Run foo/bar.sql with vars
ok 72 - Variabls and file should be passed to run()
ok 73 - MYSQL_PWD should not exist
ok 74 - Spool a "file handle"
ok 75 - Get variables file handle
ok 76 - File handle should be passed to spool() after variables handle
ok 77 - Variables should have been escaped and set
ok 78 - MYSQL_PWD should not exist
ok 79 - Verbosely verify foo/bar.sql with vars
ok 80 - Variables and verify file should be passed to run()
ok 81 - MYSQL_PWD should not exist
ok 82 - Verify foo/bar.sql with vars
ok 83 - Verify file should be passed to capture()
ok 84 - App::Sqitch::Engine::mysql->can('_ts2char_format')
ok 85 - _ts2char_format should work
ok 86 - App::Sqitch::Engine::mysql->can('_dt')
ok 87 - 'Return value of _dt()' isa 'App::Sqitch::DateTime'
ok 88 - DateTime year should be set
ok 89 - DateTime month should be set
ok 90 - DateTime day should be set
ok 91 - DateTime hour should be set
ok 92 - DateTime minute should be set
ok 93 - DateTime second should be set
ok 94 - DateTime TZ should be set
ok 95 - App::Sqitch::Engine::mysql->can(...)
    # Subtest: live database
    ok 1 - Engine instantiated
    ok 2 - Database should not yet be initialized
    ok 3 - Initialize the database
    ok 4 - Database should now be initialized
    ok 5 - Registry should not need upgrading
    ok 6 - The release should be registered
    ok 7 - Registry should need upgrading
    ok 8 - Upgrade the registry
    ok 9 - Should have info output for upgrade
    ok 10 - Registry should no longer need upgrading
    ok 11 - The release should be registered again
    ok 12 - Create engine with alternate params
    ok 13 - No init, earliest change
    ok 14 - No init, no latest change
    ok 15 - Database should no longer seem initialized
    ok 16 - Initialize the database again
    ok 17 - Database should be initialized again
    ok 18 - Registry should not need upgrading
    ok 19 - Still no earlist change
    ok 20 - Still no latest changes
    ok 21 - Should die on existing schema
    ok 22 - Mode should be "engine"
    ok 23 - And it should show the proper schema in the error message
    ok 24 - Database error should be converted to Sqitch exception
    ok 25 - Ident should be SQL error state
    ok 26 - The message should be from the engine
    ok 27 - The DBI error should be in preview_exception
    ok 28 - Current state should be undef
    ok 29 - Should have no current changes
    ok 30 - Should have no current tags
    ok 31 - Should have no events
    ok 32 - Setting character_set_client should be set to utf8
    ok 33 - Setting character_set_server should be set to utf8
    ok 34 - Setting time_zone should be set to +00:00
    ok 35 - Setting group_concat_max_len should be set to 32768
    ok 36 - sql_mode should include ansi
    ok 37 - sql_mode should include strict_trans_tables
    ok 38 - sql_mode should include no_auto_value_on_zero
    ok 39 - sql_mode should include no_zero_date
    ok 40 - sql_mode should include no_zero_in_date
    ok 41 - sql_mode should include only_full_group_by
    ok 42 - sql_mode should include error_for_division_by_zero
    ok 43 - App::Sqitch::Engine::mysql->can('register_project')
    ok 44 - App::Sqitch::Engine::mysql->can('registered_projects')
    ok 45 - Should have no registered projects
    ok 46 - Register the project
    ok 47 - Should have one registered project, "engine"
    ok 48 - The project should be registered
    ok 49 - Register the project again
    ok 50 - Should still have one registered project, "engine"
    ok 51 - The project should still be registered only once
    ok 52 - Register a second project
    ok 53 - Should have both registered projects
    ok 54 - Both projects should now be registered
    ok 55 - Should get an error for defined URI vs NULL registered URI
    ok 56 - Defined URI error ident should be "engine"
    ok 57 - Defined URI error message should be correct
    ok 58 - Should get an error for different URIs
    ok 59 - Different URI error ident should be "engine"
    ok 60 - Different URI error message should be correct
    ok 61 - Should get an error for NULL plan URI
    ok 62 - NULL plan URI error ident should be "engine"
    ok 63 - NULL plan uri error message should be correct
    ok 64 - Register "groovy" again
    ok 65 - Should still have two registered projects
    ok 66 - Both projects should still be registered
    ok 67 - Should get error for an project with the URI
    ok 68 - Existing URI error ident should be "engine"
    ok 69 - Exising URI error message should be correct
    ok 70 - Should have "users" change
    ok 71 - The change should not be deployed
    ok 72 - The change should not be deployed
    ok 73 - Deploy "users" change
    ok 74 - The change should now be deployed
    ok 75 - The change should now be deployed
    ok 76 - Should get users ID for earliest change ID
    ok 77 - Should get no change offset 1 from earliest
    ok 78 - Should get users ID for latest change ID
    ok 79 - Should get no change offset 1 from latest
    ok 80 - A record should have been inserted into the changes table
    ok 81 - Should have no dependencies
    ok 82 - Change should not be required
    ok 83 - A record should have been inserted into the events table
    ok 84 - The tag should have been logged
    ok 85 - name_for_change_id() should return the change name with tag
    ok 86 - Get the current state
    ok 87 - 'committed_at value' isa 'App::Sqitch::DateTime'
    ok 88 - committed_at TZ should be UTC
    ok 89 - The rest of the state should look right
    ok 90 - Should have one current change
    ok 91 - Should have no current chnages for nonexistent project
    ok 92 - Should have one current tags
    ok 93 - Should have no current tags for nonexistent project
    ok 94 - Should have one event
    ok 95 - Log new tags for "users" change
    ok 96 - The tag should be the same
    ok 97 - Should now have no tags
    ok 98 - Log new tags for "users" change again
    ok 99 - The tag should be back
    ok 100 - Revert "users" change
    ok 101 - The change should no longer be deployed
    ok 102 - The change should no longer be deployed
    ok 103 - Should get undef for earliest change
    ok 104 - Should get undef for latest change
    ok 105 - The record should have been deleted from the changes table
    ok 106 - And the tag record should have been removed
    ok 107 - Should still have no dependencies
    ok 108 - Change should not be required
    ok 109 - The revert event should have been logged
    ok 110 - name_for_change_id() should no longer return the change name
    ok 111 - Current state should be undef again
    ok 112 - Should again have no current changes
    ok 113 - Should again have no current tags
    ok 114 - Should have two events
    ok 115 - Fail "users" change
    ok 116 - The change still should not be deployed
    ok 117 - The change still should not be deployed
    ok 118 - Should still get undef for earliest change
    ok 119 - Should still get undef for latest change
    ok 120 - Still should have not changes table record
    ok 121 - Should still have no tag records
    ok 122 - Should still have no dependencies
    ok 123 - Change should not be required
    ok 124 - The fail event should have been logged
    ok 125 - Current state should still be undef
    ok 126 - Should still have no current changes
    ok 127 - Should still have no current tags
    ok 128 - Should have 3 events
    ok 129 - Deploy the change again
    ok 130 - The tag again should be deployed
    ok 131 - Should again get users ID for earliest change ID
    ok 132 - Should still get no change offset 1 from earliest
    ok 133 - Should again get users ID for latest change ID
    ok 134 - Should still get no change offset 1 from latest
    ok 135 - Get the second change
    ok 136 - Only the first change should be deployed
    ok 137 - Set resolved ID in required depend
    ok 138 - Deploy second change
    ok 139 - Should still get users ID for earliest change ID
    ok 140 - Should get "widgets" offset 1 from earliest
    ok 141 - Should get no change offset 2 from earliest
    ok 142 - Should get "widgets" ID for latest change ID
    ok 143 - Should get "user" offset 1 from earliest
    ok 144 - Should get no change offset 2 from latest
    ok 145 - Should have both changes and requires/conflcits deployed
    ok 146 - Both changes should be deployed
    ok 147 - Should still have no dependencies for "users"
    ok 148 - Should have both dependencies for "widgets"
    ok 149 - Change "users" should be required by "widgets"
    ok 150 - Change "widgets" should not be required
    ok 151 - The new change deploy should have been logged
    ok 152 - name_for_change_id() should return just the change name
    ok 153 - Get the current state again
    ok 154 - 'committed_at value' isa 'App::Sqitch::DateTime'
    ok 155 - committed_at TZ should be UTC
    ok 156 - The state should reference new change
    ok 157 - Should have two current changes in reverse chronological order
    ok 158 - Should again have one current tags
    ok 159 - Should have 5 events
    ok 160 - App::Sqitch::Engine::mysql->can(...)
    ok 161 - Should have two deployed changes
    ok 162 - Should find one deployed since the first one
    ok 163 - Should find none deployed since the second one
    ok 164 - Should load change 1
    ok 165 - Should load change 2
    ok 166 - load() should return undef for uknown change ID
    ok 167 - Should load change with no offset
    ok 168 - Should load change with offset 0
    ok 169 - Should find change with offset 1
    ok 170 - Should find change with offset -1
    ok 171 - Should find undef change with offset 2
    ok 172 - Revert "widgets"
    ok 173 - Should now have one deployed change ID
    ok 174 - Should find none deployed since that one
    ok 175 - Log another change
    ok 176 - Should have both deployed change IDs
    ok 177 - Should find only the second after the first
    ok 178 - Should find none after the second
    ok 179 - Get the current state once more
    ok 180 - 'committed_at value' isa 'App::Sqitch::DateTime'
    ok 181 - committed_at TZ should be UTC
    ok 182 - The new state should reference latest change
    ok 183 - Should still have two current changes in reverse chronological order
    ok 184 - Should still have one current tags
    ok 185 - Should have 7 events
    ok 186 - Get the "fred" change
    ok 187 - Deploy "fred"
    ok 188 - Get the "barney" change
    ok 189 - Deploy "barney"
    ok 190 - Earliest change should sill be "users"
    ok 191 - Should still get "widgets" offset 1 from earliest
    ok 192 - Should get "fred" offset 2 from earliest
    ok 193 - Should get "barney" offset 3 from earliest
    ok 194 - Latest change should be "barney"
    ok 195 - Should get "fred" offset 1 from latest
    ok 196 - Should get "widgets" offset 2 from latest
    ok 197 - Should get "users" offset 3 from latest
    ok 198 - Barney should be in the current state
    ok 199 - Should have all four current changes in reverse chron order
    ok 200 - Should now have three current tags in reverse chron order
    ok 201 - Should have 9 events
    ok 202 - The limit param to search_events should work
    ok 203 - The offset param to search_events should work
    ok 204 - The limit and offset params to search_events should work together
    ok 205 - Should work to set direction "DESC" in search_events
    ok 206 - Should work to set direction "desc" in search_events
    ok 207 - Should work to set direction "descending" in search_events
    ok 208 - Should work to set direction "ASC" in search_events
    ok 209 - Should work to set direction "asc" in search_events
    ok 210 - Should work to set direction "ascending" in search_events
    ok 211 - Should catch exception for invalid search direction
    ok 212 - Search direction error ident should be "DEV"
    ok 213 - Search direction error message should be correct
    ok 214 - The committer param to search_events should work
    ok 215 - The committer param to search_events should work as a regex
    ok 216 - Committer regex should fail to match with "Simpsonized$"
    ok 217 - The change param to search_events should work with "users"
    ok 218 - The change param to search_events should work with "widgets"
    ok 219 - The change param to search_events should work with "fred"
    ok 220 - The change param to search_events should return nothing for "fre$"
    ok 221 - The change param to search_events should return match "(er|re)"
    ok 222 - The event param should work with "deploy"
    ok 223 - The event param should work with "revert"
    ok 224 - The event param should work with "fail"
    ok 225 - The event param should work with "revert" and "fail"
    ok 226 - The event param should work with "deploy", "revert", and "fail"
    ok 227 - The event param should return nothing for "foo"
    ok 228 - Create external plan
    ok 229 - Create external change
    ok 230 - Log the external change
    ok 231 - The project param to search_events should work
    ok 232 - The project param to search_events should work with external project
    ok 233 - The project param to search_events should match across projects
    ok 234 - Project regex should fail to match with "nonexistent"
    ok 235 - deployed_changes should not include external change
    ok 236 - deployed_changes_since should not include external change
    ok 237 - Earliest change should sill be "users"
    ok 238 - Latest change ID should not be from external project
    ok 239 - Should catch exception for invalid search param
    ok 240 - Invalid search param error ident should be "DEV"
    ok 241 - Invalid search param error message should be correct
    ok 242 - Should catch exception for invalid search params
    ok 243 - Invalid search params error ident should be "DEV"
    ok 244 - Invalid search params error message should be correct
    ok 245 - Get the "groovy" state
    ok 246 - 'groofy committed_at value' isa 'App::Sqitch::DateTime'
    ok 247 - groovy committed_at TZ should be UTC
    ok 248 - The rest of the state should look right
    ok 249 - Should find id for change_id only
    ok 250 - Should find id for change only
    ok 251 - Should find id for change + tag
    ok 252 - Should find id for change@HEAD
    ok 253 - Should find id for tag only
    ok 254 - Should find id for ROOT
    ok 255 - Should find id for FIRST
    ok 256 - Should find id for HEAD
    ok 257 - Should find id for LAST
    ok 258 - Should find id for project:ROOT
    ok 259 - Should find id for project:HEAD
    ok 260 - Should find nothing for unkonwn id
    ok 261 - Should find nothing for unkonwn change
    ok 262 - Should find nothing for unkonwn tag
    ok 263 - Should find nothing for change + unkonwn tag
    ok 264 - Should find nothing for change@ROOT
    ok 265 - Should find nothing for change + different project
    ok 266 - Should find nothing for tag + different project
    ok 267 - Create internal id only change
    ok 268 - Create internal id only dependency
    ok 269 - Internal id only depencency should not be satisfied
    ok 270 - Log internal id only change deployment
    ok 271 - Internal id only depencency should now be satisfied
    ok 272 - Log internal id only change reversion
    ok 273 - Internal id only depencency should again be unsatisfied
    ok 274 - Create external id only change
    ok 275 - Create external id only dependency
    ok 276 - External id only depencency should not be satisfied
    ok 277 - Log external id only change deployment
    ok 278 - External id only depencency should now be satisfied
    ok 279 - Log external id only change reversion
    ok 280 - External id only depencency should again be unsatisfied
    ok 281 - Create internal change + tag change
    ok 282 - Add tag internal @epsilon
    ok 283 - Create internal change + tag dependency
    ok 284 - Internal change + tag depencency should not be satisfied
    ok 285 - Log internal change + tag change deployment
    ok 286 - Internal change + tag depencency should now be satisfied
    ok 287 - Log internal change + tag change reversion
    ok 288 - Internal change + tag depencency should again be unsatisfied
    ok 289 - Create external change + tag change
    ok 290 - Add tag external @epsilon
    ok 291 - Create external change + tag dependency
    ok 292 - External change + tag depencency should not be satisfied
    ok 293 - Log external change + tag change deployment
    ok 294 - External change + tag depencency should now be satisfied
    ok 295 - Log external change + tag change reversion
    ok 296 - External change + tag depencency should again be unsatisfied
    ok 297 - Create internal change only change
    ok 298 - Create internal change only dependency
    ok 299 - Internal change only depencency should not be satisfied
    ok 300 - Log internal change only change deployment
    ok 301 - Internal change only depencency should now be satisfied
    ok 302 - Log internal change only change reversion
    ok 303 - Internal change only depencency should again be unsatisfied
    ok 304 - Create external change only change
    ok 305 - Create external change only dependency
    ok 306 - External change only depencency should not be satisfied
    ok 307 - Log external change only change deployment
    ok 308 - External change only depencency should now be satisfied
    ok 309 - Log external change only change reversion
    ok 310 - External change only depencency should again be unsatisfied
    ok 311 - Create internal tag only change
    ok 312 - Add tag internal @sigma
    ok 313 - Create internal tag only dependency
    ok 314 - Internal tag only depencency should not be satisfied
    ok 315 - Log internal tag only change deployment
    ok 316 - Internal tag only depencency should now be satisfied
    ok 317 - Log internal tag only change reversion
    ok 318 - Internal tag only depencency should again be unsatisfied
    ok 319 - Create external tag only change
    ok 320 - Add tag external @sigma
    ok 321 - Create external tag only dependency
    ok 322 - External tag only depencency should not be satisfied
    ok 323 - Log external tag only change deployment
    ok 324 - External tag only depencency should now be satisfied
    ok 325 - Log external tag only change reversion
    ok 326 - External tag only depencency should again be unsatisfied
    ok 327 - Create another external change
    ok 328 - Add tag external "meta"
    ok 329 - Log the external change with tag
    ok 330 - Delete the engine project tags
    ok 331 - name_for_change_id() should return "widgets" for its ID
    ok 332 - name_for_change_id() should return "outside_in@meta" for its ID
    ok 333 - Should have only the "engine" changes from current_changes
    ok 334 - Should get only requestd project changes from current_changes
    ok 335 - Should no longer have "engine" project tags
    ok 336 - Should get groovy tags from current_chages()
    ok 337 - Create change "hypercritial" in current plan
    ok 338 - Log change "hyper"
    ok 339 - No changes should require "hypercritical"
    ok 340 - Change "hypercritical" should require "fred"
    ok 341 - Change "hypercritical" should require "groovy:crazyman"
    ok 342 - Create a third external change
    ok 343 - Log change "elsewise"
    ok 344 - Change "fred" should be required by changes in two projects
    ok 345 - Change "groovy:crazyman" should be required by changes in two projects
    ok 346 - App::Sqitch::Engine::mysql->can(...)
    ok 347 - Begin work
    ok 348 - Should have started a transaction
    ok 349 - Finish work
    ok 350 - Should have committed a transaction
    ok 351 - Begin work again
    ok 352 - Should have started another transaction
    ok 353 - Rollback work
    ok 354 - Should have rolled back a transaction
    ok 355 - Rework change "users"
    ok 356 - Deploy the reworked change
    ok 357 - change_id_for() should find the earliest change ID
    ok 358 - Tag the plan "theta"
    ok 359 - Log new tag
    ok 360 - Rework change "users" again
    ok 361 - Deploy the reworked change
    ok 362 - Should find id for first instance of change
    ok 363 - Should find id for HEAD instance of change
    ok 364 - Should find id for second instance of change by tag
    ok 365 - Update script hashes
    ok 366 - Should have updated script hash for users
    ok 367 - Should have updated script hash for hypercritical
    ok 368 - Should have updated script hash for users
    ok 369 - Should have updated script hash for users
    ok 370 - Should have updated script hash for barney
    ok 371 - Should have updated script hash for widgets
    ok 372 - Should have updated script hash for fred
    ok 373 - Change ID and script hash should be b3a128
    ok 374 - Change ID and script hash should be f3b827
    ok 375 - Change ID and script hash should be ff1af1
    1..375
ok 96 - live database
1..96
ok
All tests successful.
Files=1, Tests=96, 21 wallclock secs ( 0.04 usr  0.11 sys +  0.57 cusr  0.33 csys =  1.05 CPU)
Result: PASS

@theory
Copy link
Collaborator

theory commented Aug 20, 2015

Looks good, thank you.

@theory theory added this to the v1.0.0 milestone Aug 20, 2015
@theory theory added the engine label Aug 20, 2015
@theory theory closed this as completed in 5dfaf66 Aug 20, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants