Use Niv to pin nixpkgs releases
Before using Niv, we were following channels meaning we can not reproduce CI jobs easily. In this change, we use Niv to pin these dependencies. We are also addding a tests/default.nix to be able to run these tests locally. For instance, to run the test extern.nix on the nixpkgs-19.09 release: nix-build tests/default.nix -A extern.nixpkgs_19_09 Fixes #178
This commit is contained in:
parent
6563abc1c4
commit
a53aa5ac9a
8 changed files with 249 additions and 32 deletions
|
@ -14,7 +14,9 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
import <nixpkgs/nixos/tests/make-test.nix> {
|
||||
{ pkgs ? import <nixpkgs> {}}:
|
||||
|
||||
import (pkgs.path + "/nixos/tests/make-test.nix") {
|
||||
|
||||
nodes = {
|
||||
server = { config, pkgs, lib, ... }:
|
||||
|
|
57
tests/default.nix
Normal file
57
tests/default.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
# Generate an attribute sets containing all tests for all releaeses
|
||||
# It looks like:
|
||||
# - extern.nixpkgs_19_09
|
||||
# - extern.nixpkgs_20.03
|
||||
# - extern.nixpkgs_unstable
|
||||
# - intern.nixpkgs_19_09
|
||||
# - intern.nixpkgs_20.03
|
||||
# - intern.nixpkgs_unstable
|
||||
|
||||
# Modify pkgs to run the tests on non KVM machines
|
||||
{ noKVM ? false }:
|
||||
|
||||
with builtins;
|
||||
|
||||
let
|
||||
sources = import ../nix/sources.nix;
|
||||
|
||||
releases = listToAttrs (map genRelease releaseNames);
|
||||
|
||||
genRelease = name: {
|
||||
name = name;
|
||||
value = import sources."${name}" {};
|
||||
};
|
||||
|
||||
genTest = testName: release:
|
||||
let
|
||||
pkgs = releases."${release}";
|
||||
noKVMPkgs = p: if noKVM
|
||||
then import ./lib/pkgs.nokvm.nix { pkgs = p; }
|
||||
else p;
|
||||
test = pkgs.callPackage (./. + "/${testName}.nix") { };
|
||||
in {
|
||||
"name"= builtins.replaceStrings ["." "-"] ["_" "_"] release;
|
||||
"value"= test {
|
||||
pkgs = (noKVMPkgs pkgs);
|
||||
};
|
||||
};
|
||||
|
||||
releaseNames = [
|
||||
"nixpkgs-19.09"
|
||||
"nixpkgs-20.03"
|
||||
"nixpkgs-unstable"
|
||||
];
|
||||
|
||||
testNames = [
|
||||
"intern"
|
||||
"extern"
|
||||
"clamav"
|
||||
];
|
||||
|
||||
# Generate an attribute set containing one test per releases
|
||||
genTests = testName: {
|
||||
name = testName;
|
||||
value = listToAttrs (map (genTest testName) (builtins.attrNames releases));
|
||||
};
|
||||
|
||||
in listToAttrs (map genTests testNames)
|
|
@ -14,7 +14,9 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
import <nixpkgs/nixos/tests/make-test.nix> {
|
||||
{ pkgs ? import <nixpkgs> {}}:
|
||||
|
||||
import (pkgs.path + "/nixos/tests/make-test.nix") {
|
||||
|
||||
nodes = {
|
||||
server = { config, pkgs, ... }:
|
||||
|
|
|
@ -14,7 +14,9 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
import <nixpkgs/nixos/tests/make-test.nix> {
|
||||
{ pkgs ? import <nixpkgs> {}}:
|
||||
|
||||
import (pkgs.path + "/nixos/tests/make-test.nix") {
|
||||
|
||||
machine =
|
||||
{ config, pkgs, ... }:
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
{ pkgs }:
|
||||
|
||||
let
|
||||
pkgs = (import <nixpkgs> { system = builtins.currentSystem; config = {}; });
|
||||
patchedMachinePM = pkgs.writeTextFile {
|
||||
name = "Machine.pm.patched-to-wait-longer-for-vm";
|
||||
text = builtins.replaceStrings ["alarm 600;"] ["alarm 1200;"] (builtins.readFile (<nixpkgs>+"/nixos/lib/test-driver/Machine.pm"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue