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:
@@ -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"));
|
||||
|
||||
Reference in New Issue
Block a user