Skip to content

Commit

Permalink
ci: run integration tests also against PostgreSQL database.
Browse files Browse the repository at this point in the history
  • Loading branch information
php-coder committed Oct 22, 2019
1 parent ecad9fa commit 29587cd
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 5 deletions.
11 changes: 10 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
dist: xenial
language: java

# @todo #1034 Travis CI: run tests on PostgreSQL
env:
matrix:
- SPRING_PROFILES_ACTIVE=test
- SPRING_PROFILES_ACTIVE=travis
- SPRING_PROFILES_ACTIVE=postgres
global:
- MAVEN_OPTS='-Xss256k'
#- secure: "fBav56BzY+A+Vs1g9YSfo1oLDCO1rFrXl49lJkOA5/XpnsKEEs4lI2RcOzz0wiJKXFNgcliiAJWoYMI8Esqz+lkyFWan4ij5Co0UzJcytDuY+2o+jaqwx45DuDYPogABzT+hWjLCxQLLG46gUkChzT8kcvOOn6JxC7Ff8q5MnoM="

# @todo #1054 Ensure all integration tests to pass on PostgreSQL
jobs:
allow_failures:
- env: SPRING_PROFILES_ACTIVE=postgres

# @todo #1054 Unify PostgreSQL version/configuration between Travis and docker-compose
before_script:
- if [ "$SPRING_PROFILES_ACTIVE" = 'travis' ]; then
mysql -u root -e 'CREATE DATABASE mystamps CHARACTER SET utf8;';
Expand All @@ -26,6 +32,8 @@ before_script:
fi;
sudo apt-get -qq update;
sudo apt-get install -y shellcheck;
elif [ "$SPRING_PROFILES_ACTIVE" = 'postgres' ]; then
psql -U postgres -c 'create database mystamps;';
fi

script:
Expand Down Expand Up @@ -76,6 +84,7 @@ cache:

services:
- mysql
- postgresql

branches:
except:
Expand Down
7 changes: 4 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,12 @@
</dependency>

<!--
Isn't being used by default but can be activated by overriding the following properties:
- spring.datasource.url (jdbc:postgresql://localhost:5432/mystamps)
Required for "postgres" profile (see src/main/resources/application-postgres.properties).
Perhaps, you would need to override the following properties as by default it's
configured for TravisCI environment:
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- spring.datasource.driver-class-name (org.postgresql.Driver)
-->
<dependency>
<groupId>org.postgresql</groupId>
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/ru/mystamps/web/feature/image/ImageConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ public ImageDao imageDao() {

}

@Profile("test")
// @todo #1054 Introduce profiles for image persistence strategies
@Profile({ "test", "postgres" })
@RequiredArgsConstructor
public static class DbStrategyConfig {

Expand Down
124 changes: 124 additions & 0 deletions src/main/resources/application-postgres.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
spring.profiles: postgres

# Details about MySQL configuration on Travis CI: https://docs.travis-ci.com/user/database-setup/#postgresql
spring.datasource.url: jdbc:postgresql://localhost:5432/mystamps
spring.datasource.username: postgres
spring.datasource.password:
spring.datasource.driver-class-name: org.postgresql.Driver
spring.datasource.initialize: false

# @todo #1054 Extract part of spring.messages configuration to a common profile
spring.messages.cache-seconds: -1
spring.messages.fallback-to-system-locale: false
spring.messages.basename: \
ru/mystamps/i18n/Messages, \
ru/mystamps/i18n/ValidationMessages, \
ru/mystamps/i18n/SpringSecurityMessages, \
ru/mystamps/i18n/MailTemplates

# @todo #1054 Extract part of Thymeleaf configuration to a common profile
spring.thymeleaf.mode: HTML
spring.thymeleaf.prefix: /WEB-INF/views/
spring.thymeleaf.suffix: .html
spring.thymeleaf.cache: true

# @todo #1054 Introduce "mailgun-mock" profile
mailgun.endpoint: http://127.0.0.1:8888/mailgun/send-message
mailgun.password: secret

# @todo #1054 Introduce profiles for liquibase contexts
liquibase.contexts: scheme, init-data, test-data
liquibase.change-log: classpath:/liquibase/changelog.xml

logging.level.: INFO
logging.level.ru.mystamps: INFO
logging.level.ru.mystamps.web.support.spring.security.SessionLocaleResolverAwareFilter: INFO
logging.level.liquibase: WARN
logging.level.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping: WARN
logging.level.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping: WARN

app.use-cdn: false

# @todo #1054 Extract list of exclusions to a common profile
# Full list of autoconfiguration classes:
# http://docs.spring.io/spring-boot/docs/1.5.x/reference/html/auto-configuration-classes.html
# The difference between test profile is that we don't need H2ConsoleAutoConfiguration
spring.autoconfigure.exclude: \
org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration \
, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration \
, org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration \
, org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration \
, org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration \
, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration \
, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration \
, org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration \
, org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration \
, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration \
, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration \
, org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration \
, org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration \
, org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration \
, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration \
, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration \
, org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration \
, org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration \
, org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration \
, org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration \
, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration \
, org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration \
, org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration \
, org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration \
, org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration \
, org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration \
, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration \
, org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration \
, org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration \
, org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration \
, org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration \
, org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration \
, org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration \
, org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration \
, org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration \
, org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration \
, org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration \
, org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration \
, org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration \
, org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration \
, org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration \
, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration \
, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration \
, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration \
, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration \
, org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration \
, org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration \
, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration \
, org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration \
, org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration \
, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration \
, org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration \
, org.springframework.boot.autoconfigure.session.SessionAutoConfiguration \
, org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration \
, org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration \
, org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration \
, org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration \
, org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration \
, org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration \
, org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration \
, org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration \
, org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration \
, org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration \
\
, org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration

1 comment on commit 29587cd

@0pdd
Copy link

@0pdd 0pdd commented on 29587cd Oct 22, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to GitHub. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20191021-11-hjam9k/php-coder/mystamps && pdd -v -f /tmp/20191022-4433-68b595 [1]: + set -e + set -o pipefail + cd /tmp/0pdd20191021-11-hjam9k/php-coder/mystamps + pdd -v -f /tmp/20191022-4433-68b595 My version is 0.20.5 Ruby version is 2.6.0 at...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20191021-11-hjam9k/php-coder/mystamps && pdd -v -f /tmp/20191022-4433-68b595 [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20191021-11-hjam9k/php-coder/mystamps
+ pdd -v -f /tmp/20191022-4433-68b595

My version is 0.20.5
Ruby version is 2.6.0 at x86_64-linux
Reading /tmp/0pdd20191021-11-hjam9k/php-coder/mystamps
667 file(s) found, 141 excluded
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/src/test/resources/empty.jpg is a binary file (0 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/src/main/resources/test/test.png is a binary file (1813 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/src/main/scripts/ci/ansible/mystamps_rsa.enc is a binary file (1680 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/src/main/webapp/favicon.ico is a binary file (1078 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/docs/diagrams/parse-page-failed.png is a binary file (34429 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/docs/diagrams/parse-page.png is a binary file (128360 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/docs/diagrams/download-page.png is a binary file (68065 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/docs/diagrams/import-series.png is a binary file (126994 bytes)
/tmp/0pdd20191021-11-hjam9k/php-coder/mystamps/docs/diagrams/create-import-request.png is a binary file (68473 bytes)
Reading vagrant/provisioning/roles/mystamps-app/files/mystamps.service...
Reading vagrant/provisioning/roles/mystamps-app/defaults/main.yml...
Reading vagrant/provisioning/roles/mystamps-app/templates/mystamps.conf...
Reading vagrant/provisioning/roles/mystamps-app/templates/application-prod.properties...
Reading vagrant/provisioning/roles/mystamps-app/templates/mystamps-send-logs...
Reading vagrant/provisioning/roles/mystamps-app/tasks/main.yml...
Reading vagrant/provisioning/roles/mystamps-app/handlers/main.yml...
Puzzle 399-f88baadc 0/DEV at vagrant/provisioning/roles/mystamps-app/handlers/main.yml
Reading vagrant/provisioning/roles/mystamps-user/tasks/main.yml...
Reading vagrant/provisioning/roles/mystamps-nginx/files/test/my-stamps.ru.key...
Reading vagrant/provisioning/roles/mystamps-nginx/files/test/my-stamps.ru.crt...
Reading vagrant/provisioning/roles/mystamps-nginx/defaults/main.yml...
Reading vagrant/provisioning/roles/mystamps-nginx/tasks/main.yml...
Reading vagrant/provisioning/roles/mystamps-nginx/handlers/main.yml...
Reading vagrant/provisioning/roles/mystamps-backup/defaults/main.yml...
Reading vagrant/provisioning/roles/mystamps-backup/templates/remote-backup.sh...
Reading vagrant/provisioning/roles/mystamps-backup/templates/mystamps-backup-db...
Reading vagrant/provisioning/roles/mystamps-backup/templates/mystamps-backup-remote...
Reading vagrant/provisioning/roles/mystamps-backup/templates/my.cnf...
Reading vagrant/provisioning/roles/mystamps-backup/tasks/main.yml...
Puzzle 705-eb60edc9 0/DEV at vagrant/provisioning/roles/mystamps-backup/tasks/main.yml
Reading vagrant/provisioning/vagrant.yml...
Reading vagrant/provisioning/bootstrap.yml...
Reading vagrant/Vagrantfile...
Reading vagrant/requirements.yml...
Reading pom.xml...
Puzzle 971-32d95143 0/DEV at pom.xml
Puzzle 1057-d01039f1 0/DEV at pom.xml
Puzzle 1060-542e4feb 0/DEV at pom.xml
Reading Dangerfile...
Puzzle 1060-a747d278 0/DEV at Dangerfile
Puzzle 536-9dc7e60f 0/DEV at Dangerfile
Reading src/test/resources/logback-test.xml...
Reading src/test/wiremock/mappings/mailgun/send-message.json...
Reading src/test/wiremock/mappings/series/response-404.json...
Reading src/test/wiremock/mappings/series/empty-jpeg-file.json...
Reading src/test/wiremock/mappings/series/response-400.json...
Reading src/test/wiremock/mappings/series/not-image-file.json...
Reading src/test/wiremock/mappings/series/response-301.json...
Reading src/test/wiremock/__files/series/sales/import/logic/empty.html...
Reading src/test/wiremock/__files/series/sales/import/logic/existing-seller.html...
Reading src/test/wiremock/__files/series/import/request-logic/catalog-numbers-in-description.html...
Reading src/test/wiremock/__files/series/import/request-logic/new-seller.html...
Reading src/test/wiremock/__files/series/import/request-logic/simple.html...
Reading src/test/wiremock/__files/series/import/request-logic/existing-seller.html...
Reading src/test/groovy/ru/mystamps/web/feature/participant/ParticipantServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/country/CountryServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/site/SuspiciousActivityServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/site/CronServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/site/SiteServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/collection/CollectionServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/category/CategoryServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/account/UserServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/account/UsersActivationServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/image/FilesystemImagePersistenceStrategyTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/image/TimedImagePreviewStrategyTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/image/ImageServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/image/DatabaseImagePersistenceStrategyTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/importing/TimedSeriesInfoExtractorServiceTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/importing/SeriesInfoExtractorServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/importing/sale/SeriesSalesImportServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/importing/SeriesImportServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/sale/SeriesSalesServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/StampsCatalogServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/SeriesServiceImplTest.groovy...
Reading src/test/groovy/ru/mystamps/web/feature/series/CatalogUtilsTest.groovy...
Reading src/test/groovy/ru/mystamps/web/common/PagerTest.groovy...
Reading src/test/groovy/ru/mystamps/web/common/SlugUtilsTest.groovy...
Reading src/test/groovy/ru/mystamps/web/common/LocaleUtilsTest.groovy...
Reading src/test/java/ru/mystamps/web/tests/Random.java...
Puzzle 687-994e661c 0/DEV at src/test/java/ru/mystamps/web/tests/Random.java
Puzzle 769-4310f3c0 0/DEV at src/test/java/ru/mystamps/web/tests/Random.java
Puzzle 738-13880c1a 0/DEV at src/test/java/ru/mystamps/web/tests/Random.java
Reading src/test/java/ru/mystamps/web/tests/DateUtils.java...
Reading src/test/java/ru/mystamps/web/service/TestObjects.java...
Puzzle 734-10236b8a 0/DEV at src/test/java/ru/mystamps/web/service/TestObjects.java
Reading src/test/java/ru/mystamps/web/feature/series/importing/extractor/JsoupSiteParserTest.java...
Reading src/test/java/ru/mystamps/web/support/spring/security/ContentSecurityPolicyHeaderWriterTest.java...
Reading src/test/javascript/DateUtilsSpec.js...
Reading src/test/javascript/CatalogUtilsSpec.js...
Reading src/test/robotframework/participant/creation/logic.robot...
Reading src/test/robotframework/participant/creation/validation.robot...
Reading src/test/robotframework/participant/creation/misc.robot...
Reading src/test/robotframework/country/access.robot...
Reading src/test/robotframework/country/creation/logic.robot...
Reading src/test/robotframework/country/creation/validation.robot...
Reading src/test/robotframework/country/creation/misc.robot...
Reading src/test/robotframework/selenium.utils.robot...
Reading src/test/robotframework/site/misc-admin.robot...
Reading src/test/robotframework/site/change-lang/logic.robot...
Reading src/test/robotframework/site/misc-anonymous.robot...
Reading src/test/robotframework/site/csp/report-logic.robot...
Reading src/test/robotframework/site/misc-user.robot...
Reading src/test/robotframework/collection/access.robot...
Reading src/test/robotframework/collection/remove-series/logic.robot...
Reading src/test/robotframework/collection/estimation/access.robot...
Reading src/test/robotframework/collection/estimation/logic.robot...
Reading src/test/robotframework/collection/add-series/logic.robot...
Reading src/test/robotframework/collection/add-series/validation.robot...
Reading src/test/robotframework/category/access.robot...
Reading src/test/robotframework/category/creation/logic.robot...
Reading src/test/robotframework/category/creation/validation.robot...
Reading src/test/robotframework/category/creation/misc.robot...
Reading src/test/robotframework/account/activation/logic.robot...
Reading src/test/robotframework/account/activation/validation.robot...
Reading src/test/robotframework/account/activation/misc-anonymous.robot...
Reading src/test/robotframework/account/activation/misc-user.robot...
Reading src/test/robotframework/account/authentication/logic.robot...
Reading src/test/robotframework/account/authentication/validation.robot...
Reading src/test/robotframework/account/authentication/misc-user.robot...
Reading src/test/robotframework/account/registration/logic.robot...
Reading src/test/robotframework/account/registration/validation.robot...
Reading src/test/robotframework/account/registration/misc-anonymous.robot...
Reading src/test/robotframework/account/registration/misc-user.robot...
Reading src/test/robotframework/series/sales/import/logic.robot...
Reading src/test/robotframework/series/sales/import/validation.robot...
Reading src/test/robotframework/series/sales/validation.robot...
Reading src/test/robotframework/series/sales/misc.robot...
Reading src/test/robotframework/series/import/access.robot...
Reading src/test/robotframework/series/import/validation.robot...
Reading src/test/robotframework/series/import/request-logic.robot...
Puzzle 749-2a40850f 0/DEV at src/test/robotframework/series/import/request-logic.robot
Puzzle 857-719bea28 0/DEV at src/test/robotframework/series/import/request-logic.robot
Reading src/test/robotframework/series/similar/logic.robot...
Reading src/test/robotframework/series/access.robot...
Reading src/test/robotframework/series/creation/validation-admin.robot...
Reading src/test/robotframework/series/creation/misc-admin.robot...
Reading src/test/robotframework/series/creation/logic-admin.robot...
Reading src/test/robotframework/series/creation/logic-user.robot...
Reading src/test/robotframework/series/creation/misc-user.robot...
Reading src/test/robotframework/series/creation/validation-user.robot...
Reading src/test/robotframework/series/add-image/logic.robot...
Reading src/test/robotframework/series/add-image/validation.robot...
Reading src/test/robotframework/series/search/validation.robot...
Reading src/test/robotframework/series/search/logic-anonymous.robot...
Reading src/test/robotframework/series/search/logic-user.robot...
Reading src/test/robotframework/auth.steps.robot...
Reading src/test/robotframework/togglz/access-user.robot...
Reading src/test/robotframework/togglz/access-anonymous.robot...
Reading src/test/robotframework/togglz/misc.robot...
Reading src/main/resources/ru/mystamps/i18n/MailTemplates.properties...
Reading src/main/resources/ru/mystamps/i18n/Messages_ru.properties...
Reading src/main/resources/ru/mystamps/i18n/Messages.properties...
Reading src/main/resources/ru/mystamps/i18n/MailTemplates_ru.properties...
Reading src/main/resources/ru/mystamps/i18n/SpringSecurityMessages.properties...
Reading src/main/resources/ru/mystamps/i18n/SpringSecurityMessages_ru.properties...
Reading src/main/resources/ru/mystamps/i18n/ValidationMessages_ru.properties...
Reading src/main/resources/ru/mystamps/i18n/ValidationMessages.properties...
Reading src/main/resources/test/spring/test-data.properties...
Reading src/main/resources/application-test.properties...
Reading src/main/resources/application-travis.properties...
Reading src/main/resources/application.properties...
Reading src/main/resources/sql/collection_dao_queries.properties...
Reading src/main/resources/sql/suspicious_activity_dao_queries.properties...
Reading src/main/resources/sql/users_activation_dao_queries.properties...
Reading src/main/resources/sql/image_dao_queries.properties...
Reading src/main/resources/sql/site_parser_dao_queries.properties...
Reading src/main/resources/sql/country_dao_queries.properties...
Reading src/main/resources/sql/series_sales_dao_queries.properties...
Reading src/main/resources/sql/series_import_request_dao_queries.properties...
Reading src/main/resources/sql/user_dao_queries.properties...
Reading src/main/resources/sql/series_dao_queries.properties...
Reading src/main/resources/sql/stamps_catalog_dao_queries.properties...
Reading src/main/resources/sql/category_dao_queries.properties...
Reading src/main/resources/sql/transaction_participants_dao_queries.properties...
Reading src/main/resources/application-postgres.properties...
ERROR: src/main/resources/application-postgres.properties; puzzle at line #42; Space expected at 43:2; make sure all lines in the puzzle body have a single leading space.
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/yegor256/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/yegor256/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:66:in `rescue in block in xml'
/app/objects/git_repo.rb:63:in `block in xml'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/tempfile.rb:295:in `open'
/app/objects/git_repo.rb:62:in `xml'
/app/objects/puzzles.rb:36:in `deploy'
/app/objects/job.rb:38:in `proceed'
/app/objects/job_starred.rb:33:in `proceed'
/app/objects/job_recorded.rb:32:in `proceed'
/app/objects/job_emailed.rb:35:in `proceed'
/app/objects/job_commiterrors.rb:36:in `proceed'
/app/objects/job_detached.rb:48:in `exclusive'
/app/objects/job_detached.rb:36:in `block in proceed'
/app/objects/job_detached.rb:36:in `fork'
/app/objects/job_detached.rb:36:in `proceed'
/app/0pdd.rb:358:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1011:in `route_eval'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:990:in `block in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1097:in `block in dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/logger.rb:15:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/common_logger.rb:33:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/handler/webrick.rb:86:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:140:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:96:in `run'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/server.rb:307:in `block in start_thread'

Please sign in to comment.