2019-07-12 20:50:36 +02:00
|
|
|
(define-module (tests jobs-load-new-guix-revision)
|
2019-06-02 23:02:12 +02:00
|
|
|
#:use-module (srfi srfi-64)
|
|
|
|
#:use-module (ice-9 match)
|
|
|
|
#:use-module (squee)
|
|
|
|
#:use-module (guix utils)
|
2020-02-14 10:18:28 +01:00
|
|
|
#:use-module (guix store)
|
2019-06-02 23:02:12 +02:00
|
|
|
#:use-module (guix tests)
|
|
|
|
#:use-module (guix-data-service database)
|
|
|
|
#:use-module (guix-data-service model git-repository)
|
|
|
|
#:use-module (guix-data-service jobs load-new-guix-revision))
|
|
|
|
|
|
|
|
(test-begin "jobs-load-new-guix-revision")
|
|
|
|
|
2020-02-14 10:18:28 +01:00
|
|
|
(%daemon-socket-uri "/var/empty/doesnotexist")
|
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(with-postgresql-connection
|
2019-07-12 20:45:41 +02:00
|
|
|
"test-jobs-load-new-guix-revision"
|
2019-06-02 23:02:12 +02:00
|
|
|
(lambda (conn)
|
2020-02-24 22:16:41 +01:00
|
|
|
(check-test-database! conn)
|
|
|
|
|
2019-11-18 20:49:12 +01:00
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(test-equal "select-job-for-commit works"
|
|
|
|
'()
|
|
|
|
(select-job-for-commit conn "does not exist"))
|
|
|
|
|
2020-02-24 17:46:10 +01:00
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(test-equal "test job success"
|
|
|
|
#t
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
with-store-connection
|
|
|
|
(lambda (f)
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
channel->derivations-by-system
|
|
|
|
(lambda (conn store channel)
|
|
|
|
'((x86_64-linux
|
|
|
|
.
|
|
|
|
((manifest-entry-item . /gnu/store/foo.drv)
|
|
|
|
(profile . /gnu/store/bar.drv))))))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
2019-11-18 20:49:12 +01:00
|
|
|
(mock
|
2020-02-10 08:52:32 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-27 22:20:24 +01:00
|
|
|
setup-logging
|
|
|
|
(lambda (conn thunk)
|
|
|
|
(thunk)))
|
2020-02-10 08:52:32 +01:00
|
|
|
|
|
|
|
(mock
|
2020-02-14 10:18:28 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-27 22:20:24 +01:00
|
|
|
channel-derivations-by-system->guix-store-item
|
|
|
|
(lambda (store channel-derivations-by-system)
|
|
|
|
"/gnu/store/test"))
|
2020-02-10 08:52:32 +01:00
|
|
|
|
2020-02-11 09:56:24 +01:00
|
|
|
(mock
|
2020-02-27 22:20:24 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
extract-information-from
|
|
|
|
(lambda (conn store guix-revision-id commit store-path)
|
2020-02-14 10:18:28 +01:00
|
|
|
#t))
|
|
|
|
|
|
|
|
(mock
|
2020-02-27 22:20:24 +01:00
|
|
|
((guix-data-service model channel-instance)
|
|
|
|
insert-channel-instances
|
|
|
|
(lambda (conn guix-revision-id derivations-by-system)
|
|
|
|
#t))
|
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix channels)
|
|
|
|
channel-news-for-commit
|
|
|
|
(lambda (channel commit)
|
|
|
|
'()))
|
|
|
|
|
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
conn
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
"test-commit"
|
|
|
|
"test-source")
|
|
|
|
((id)
|
|
|
|
(process-load-new-guix-revision-job id)))))))))))
|
2019-11-18 20:49:12 +01:00
|
|
|
|
|
|
|
(exec-query conn "TRUNCATE guix_revisions CASCADE")
|
2019-08-05 21:45:40 +02:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(test-equal "test build store item failure"
|
|
|
|
#f
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
with-store-connection
|
|
|
|
(lambda (f)
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
2020-02-10 08:52:32 +01:00
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
channel->derivations-by-system
|
|
|
|
(lambda (conn store channel)
|
|
|
|
'(x86_64-linux
|
|
|
|
.
|
|
|
|
((manifest-entry-item . /gnu/store/foo.drv)
|
|
|
|
(profile . /gnu/store/bar.drv)))))
|
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-27 22:20:24 +01:00
|
|
|
setup-logging
|
|
|
|
(lambda (conn thunk)
|
|
|
|
(thunk)))
|
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
channel-derivations-by-system->guix-store-item
|
|
|
|
(lambda (store channel-derivations-by-system)
|
|
|
|
#f))
|
|
|
|
|
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
conn
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
"test-commit"
|
|
|
|
"test-source")
|
|
|
|
((id)
|
|
|
|
(process-load-new-guix-revision-job id))))))))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
2019-08-05 21:45:40 +02:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(test-equal "test extract information failure"
|
|
|
|
#f
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
with-store-connection
|
|
|
|
(lambda (f)
|
|
|
|
(f 'fake-store-connection)))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-14 10:18:28 +01:00
|
|
|
channel->derivations-by-system
|
|
|
|
(lambda (conn store channel)
|
|
|
|
'(x86_64-linux
|
|
|
|
.
|
|
|
|
((manifest-entry-item . /gnu/store/foo.drv)
|
|
|
|
(profile . /gnu/store/bar.drv)))))
|
2019-06-02 23:02:12 +02:00
|
|
|
|
2019-11-18 20:49:12 +01:00
|
|
|
(mock
|
2020-02-10 08:52:32 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-27 22:20:24 +01:00
|
|
|
setup-logging
|
|
|
|
(lambda (conn thunk)
|
|
|
|
(thunk)))
|
2020-02-10 08:52:32 +01:00
|
|
|
|
|
|
|
(mock
|
2020-02-14 10:18:28 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
2020-02-27 22:20:24 +01:00
|
|
|
channel-derivations-by-system->guix-store-item
|
|
|
|
(lambda (store channel-derivations-by-system)
|
|
|
|
"/gnu/store/test"))
|
2020-02-14 10:18:28 +01:00
|
|
|
|
|
|
|
(mock
|
2020-02-27 22:20:24 +01:00
|
|
|
((guix-data-service jobs load-new-guix-revision)
|
|
|
|
extract-information-from
|
|
|
|
(lambda (conn store git-repository-id commit store-path)
|
|
|
|
#f))
|
|
|
|
|
|
|
|
(mock
|
|
|
|
((guix channels)
|
|
|
|
channel-news-for-commit
|
|
|
|
(lambda (channel commit)
|
|
|
|
'()))
|
|
|
|
|
|
|
|
(match (enqueue-load-new-guix-revision-job
|
|
|
|
conn
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
"test-commit"
|
|
|
|
"test-source")
|
|
|
|
((id)
|
|
|
|
(process-load-new-guix-revision-job id))))))))))
|
2019-08-05 21:45:40 +02:00
|
|
|
|
2019-08-05 21:59:48 +02:00
|
|
|
(exec-query conn "TRUNCATE load_new_guix_revision_jobs CASCADE")
|
|
|
|
|
|
|
|
(test-assert "test duplicate job handling"
|
|
|
|
(with-postgresql-transaction
|
|
|
|
conn
|
|
|
|
(lambda (conn)
|
|
|
|
(enqueue-load-new-guix-revision-job
|
|
|
|
conn
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
"test-commit"
|
|
|
|
"test-source")
|
|
|
|
(enqueue-load-new-guix-revision-job
|
|
|
|
conn
|
|
|
|
(git-repository-url->git-repository-id conn "test-url")
|
|
|
|
"test-commit"
|
|
|
|
"test-source")
|
|
|
|
#t)
|
|
|
|
#:always-rollback? #t))))
|
2019-08-05 21:45:40 +02:00
|
|
|
|
2019-06-02 23:02:12 +02:00
|
|
|
(test-end)
|